From 778b05bf9f6d7acf6d5f20987eab568273f4abd3 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 11 Sep 2007 08:33:06 +0000 Subject: [PATCH] =?UTF-8?q?Importaci=C3=B3n=20inicial=20=20=20-=20Mustangp?= =?UTF-8?q?eak=20Common=20Library=20-=201.7.0=20=20=20-=20EasyListview=20-?= =?UTF-8?q?=201.7.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.Mustangpeak@2 60b41242-d4b9-2247-b156-4ccd40706241 --- .../Common Library/CBuilder/MPCommonLibC5.bpk | 100 + .../Common Library/CBuilder/MPCommonLibC5.cpp | 26 + .../Common Library/CBuilder/MPCommonLibC5.res | Bin 0 -> 1536 bytes .../CBuilder/MPCommonLibC5D.bpk | 94 + .../CBuilder/MPCommonLibC5D.cpp | 22 + .../CBuilder/MPCommonLibC5D.res | Bin 0 -> 1536 bytes .../Common Library/CBuilder/MPCommonLibC6.bpk | 161 + .../Common Library/CBuilder/MPCommonLibC6.cpp | 17 + .../Common Library/CBuilder/MPCommonLibC6.res | Bin 0 -> 1536 bytes .../CBuilder/MPCommonLibC6D.bpk | 154 + .../CBuilder/MPCommonLibC6D.cpp | 17 + .../CBuilder/MPCommonLibC6D.res | Bin 0 -> 1536 bytes .../Delphi/MPCommonLibD10.bdsproj | 658 + .../Common Library/Delphi/MPCommonLibD10.dpk | 42 + .../Common Library/Delphi/MPCommonLibD10.res | Bin 0 -> 1536 bytes .../Delphi/MPCommonLibD10D.bdsproj | 658 + .../Common Library/Delphi/MPCommonLibD10D.dpk | 40 + .../Common Library/Delphi/MPCommonLibD10D.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD11.dpk | 43 + .../Delphi/MPCommonLibD11.dproj | 629 + .../Common Library/Delphi/MPCommonLibD11.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD11D.dpk | 41 + .../Delphi/MPCommonLibD11D.dproj | 647 + .../Common Library/Delphi/MPCommonLibD11D.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD4.dpk | 39 + .../Common Library/Delphi/MPCommonLibD4.res | Bin 0 -> 692 bytes .../Common Library/Delphi/MPCommonLibD4D.dpk | 34 + .../Common Library/Delphi/MPCommonLibD4D.res | Bin 0 -> 692 bytes .../Common Library/Delphi/MPCommonLibD5.dpk | 41 + .../Common Library/Delphi/MPCommonLibD5.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD5D.dpk | 38 + .../Common Library/Delphi/MPCommonLibD5D.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD6.dpk | 42 + .../Common Library/Delphi/MPCommonLibD6.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD6D.dpk | 39 + .../Common Library/Delphi/MPCommonLibD6D.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD7.dpk | 43 + .../Common Library/Delphi/MPCommonLibD7.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD7D.dpk | 40 + .../Common Library/Delphi/MPCommonLibD7D.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD9.dpk | 42 + .../Common Library/Delphi/MPCommonLibD9.res | Bin 0 -> 1536 bytes .../Common Library/Delphi/MPCommonLibD9D.dpk | 40 + .../Common Library/Delphi/MPCommonLibD9D.res | Bin 0 -> 1536 bytes .../1.7.0/Common Library/Docs/Licence.txt | 22 + .../Docs/Unicode Compatibility.txt | 33 + .../1.7.0/Common Library/Docs/Whats New.txt | 140 + .../1.7.0/Common Library/Include/AddIns.inc | 30 + .../1.7.0/Common Library/Include/Debug.inc | 6 + .../1.7.0/Common Library/InstallLogD11.txt | 618 + .../Common Library/Lib/D10/MPCommonLibD10.bpl | Bin 0 -> 303616 bytes .../Common Library/Lib/D10/MPCommonLibD10.dcp | Bin 0 -> 600020 bytes .../Common Library/Lib/D10/MPCommonLibD10.dcu | Bin 0 -> 2733 bytes .../Lib/D10/MPCommonLibD10D.bpl | Bin 0 -> 44544 bytes .../Lib/D10/MPCommonLibD10D.dcp | Bin 0 -> 43076 bytes .../Lib/D10/MPCommonLibD10D.dcu | Bin 0 -> 3462 bytes .../Lib/D10/MPCommonObjects.dcu | Bin 0 -> 53145 bytes .../Lib/D10/MPCommonUtilities.dcu | Bin 0 -> 107737 bytes .../Lib/D10/MPCommonWizardHelpers.dcu | Bin 0 -> 39452 bytes .../Lib/D10/MPCommonWizardTemplates.dcu | Bin 0 -> 3288 bytes .../Common Library/Lib/D10/MPDataObject.dcu | Bin 0 -> 63771 bytes .../Common Library/Lib/D10/MPResources.dcu | Bin 0 -> 3827 bytes .../Common Library/Lib/D10/MPShellTypes.dcu | Bin 0 -> 91704 bytes .../Lib/D10/MPShellUtilities.dcu | Bin 0 -> 252359 bytes .../Lib/D10/MPThreadManager.dcu | Bin 0 -> 39185 bytes .../Common Library/Lib/D11/MPCommonLibD11.bpl | Bin 0 -> 304128 bytes .../Common Library/Lib/D11/MPCommonLibD11.dcp | Bin 0 -> 599823 bytes .../Common Library/Lib/D11/MPCommonLibD11.dcu | Bin 0 -> 2735 bytes .../Lib/D11/MPCommonLibD11D.bpl | Bin 0 -> 44544 bytes .../Lib/D11/MPCommonLibD11D.dcp | Bin 0 -> 36575 bytes .../Lib/D11/MPCommonLibD11D.dcu | Bin 0 -> 3492 bytes .../Lib/D11/MPCommonObjects.dcu | Bin 0 -> 53133 bytes .../Lib/D11/MPCommonUtilities.dcu | Bin 0 -> 107817 bytes .../Lib/D11/MPCommonWizardHelpers.dcu | Bin 0 -> 32987 bytes .../Lib/D11/MPCommonWizardTemplates.dcu | Bin 0 -> 3249 bytes .../Common Library/Lib/D11/MPDataObject.dcu | Bin 0 -> 63775 bytes .../Common Library/Lib/D11/MPResources.dcu | Bin 0 -> 3827 bytes .../Common Library/Lib/D11/MPShellTypes.dcu | Bin 0 -> 91704 bytes .../Lib/D11/MPShellUtilities.dcu | Bin 0 -> 252204 bytes .../Lib/D11/MPThreadManager.dcu | Bin 0 -> 39171 bytes .../MustangpeakComponentInstaller.dll | Bin 0 -> 167936 bytes official/1.7.0/Common Library/Setup.ini | 54 + .../1.7.0/Common Library/Source/Compilers.inc | 493 + .../Common Library/Source/MPCommonObjects.hpp | 454 + .../Common Library/Source/MPCommonObjects.obj | Bin 0 -> 39287 bytes .../Common Library/Source/MPCommonObjects.pas | 1862 + .../Source/MPCommonUtilities.hpp | 364 + .../Source/MPCommonUtilities.obj | Bin 0 -> 75658 bytes .../Source/MPCommonUtilities.pas | 5065 +++ .../Source/MPCommonWizardHelpers.hpp | 695 + .../Source/MPCommonWizardHelpers.obj | Bin 0 -> 28918 bytes .../Source/MPCommonWizardHelpers.pas | 1054 + .../Source/MPCommonWizardTemplates.hpp | 82 + .../Source/MPCommonWizardTemplates.obj | Bin 0 -> 631 bytes .../Source/MPCommonWizardTemplates.pas | 76 + .../Common Library/Source/MPDataObject.hpp | 521 + .../Common Library/Source/MPDataObject.obj | Bin 0 -> 45565 bytes .../Common Library/Source/MPDataObject.pas | 2354 ++ .../Common Library/Source/MPResources.hpp | 62 + .../Common Library/Source/MPResources.obj | Bin 0 -> 4372 bytes .../Common Library/Source/MPResources.pas | 111 + .../Common Library/Source/MPShellTypes.hpp | 1387 + .../Common Library/Source/MPShellTypes.obj | Bin 0 -> 25961 bytes .../Common Library/Source/MPShellTypes.pas | 3466 ++ .../Source/MPShellUtilities.hpp | 1312 + .../Source/MPShellUtilities.obj | Bin 0 -> 164338 bytes .../Source/MPShellUtilities.pas | 9151 +++++ .../Common Library/Source/MPThreadManager.hpp | 405 + .../Common Library/Source/MPThreadManager.obj | Bin 0 -> 26230 bytes .../Common Library/Source/MPThreadManager.pas | 1542 + .../1.7.0/Common Library/Source/Options.inc | 15 + official/1.7.0/Common Library/unins000.dat | Bin 0 -> 29097 bytes official/1.7.0/Common Library/unins000.exe | Bin 0 -> 683832 bytes .../CBuilder/Demos/BCB5/DemoBCB5.bpr | 113 + .../CBuilder/Demos/BCB5/DemoBCB5.cpp | 22 + .../CBuilder/Demos/BCB5/DemoBCB5.res | Bin 0 -> 876 bytes .../CBuilder/Demos/BCB5/Unit1.cpp | 31 + .../CBuilder/Demos/BCB5/Unit1.dfm | 28 + .../EasyListview/CBuilder/Demos/BCB5/Unit1.h | 28 + .../CBuilder/Demos/BCB6/Basic/DemoBCB6.bpr | 115 + .../CBuilder/Demos/BCB6/Basic/DemoBCB6.cpp | 21 + .../CBuilder/Demos/BCB6/Basic/DemoBCB6.res | Bin 0 -> 876 bytes .../CBuilder/Demos/BCB6/Basic/Unit1.cpp | 31 + .../CBuilder/Demos/BCB6/Basic/Unit1.dfm | 28 + .../CBuilder/Demos/BCB6/Basic/Unit1.h | 28 + .../Demos/BCB6/TaskPanel/TaskPanelProject.bpr | 118 + .../Demos/BCB6/TaskPanel/TaskPanelProject.cpp | 37 + .../Demos/BCB6/TaskPanel/TaskPanelProject.res | Bin 0 -> 876 bytes .../CBuilder/Demos/BCB6/TaskPanel/Unit1.cpp | 38 + .../CBuilder/Demos/BCB6/TaskPanel/Unit1.dfm | 62 + .../CBuilder/Demos/BCB6/TaskPanel/Unit1.h | 29 + .../CBuilder/Demos/BCB6/TaskPanel/Unit2.cpp | 17 + .../CBuilder/Demos/BCB6/TaskPanel/Unit2.dfm | 37 + .../CBuilder/Demos/BCB6/TaskPanel/Unit2.h | 23 + .../CBuilder/Demos/BCB6/TaskPanel/Unit3.cpp | 17 + .../CBuilder/Demos/BCB6/TaskPanel/Unit3.dfm | 50 + .../CBuilder/Demos/BCB6/TaskPanel/Unit3.h | 24 + .../TaskPanel/TaskPanelProject.bdsproj | 261 + .../BDS 4.0/TaskPanel/TaskPanelProject.cpp | 36 + .../BDS 4.0/TaskPanel/TaskPanelProject.res | Bin 0 -> 4396 bytes .../Demos/BDS 4.0/TaskPanel/Unit1.cpp | 38 + .../Demos/BDS 4.0/TaskPanel/Unit1.dfm | 57 + .../CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.h | 29 + .../Demos/BDS 4.0/TaskPanel/Unit2.cpp | 17 + .../Demos/BDS 4.0/TaskPanel/Unit2.dfm | 64 + .../CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.h | 27 + .../Demos/BDS 4.0/TaskPanel/Unit3.cpp | 17 + .../Demos/BDS 4.0/TaskPanel/Unit3.dfm | 47 + .../CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.h | 25 + .../EasyListview/CBuilder/EasyListViewC5.bpk | 97 + .../EasyListview/CBuilder/EasyListViewC5.cpp | 24 + .../EasyListview/CBuilder/EasyListViewC5.res | Bin 0 -> 1536 bytes .../EasyListview/CBuilder/EasyListViewC5D.bpk | 95 + .../EasyListview/CBuilder/EasyListViewC5D.cpp | 25 + .../EasyListview/CBuilder/EasyListViewC5D.res | Bin 0 -> 1536 bytes .../EasyListview/CBuilder/EasyListViewC6.cpp | 17 + .../EasyListview/CBuilder/EasyListViewC6.res | Bin 0 -> 1536 bytes .../EasyListview/CBuilder/EasyListViewC6D.bpk | 154 + .../EasyListview/CBuilder/EasyListViewC6D.cpp | 18 + .../EasyListview/CBuilder/EasyListViewC6D.res | Bin 0 -> 1536 bytes .../EasyListview/CBuilder/EasyListviewC5G.bpg | 25 + .../EasyListview/CBuilder/EasyListviewC6.bpk | 161 + .../EasyListview/CBuilder/EasyListviewC6G.bpg | 25 + .../Delphi/EasyListviewD10.bdsproj | 658 + .../EasyListview/Delphi/EasyListviewD10.dpk | 40 + .../Delphi/EasyListviewD10.identcache | Bin 0 -> 319 bytes .../EasyListview/Delphi/EasyListviewD10.res | Bin 0 -> 1536 bytes .../Delphi/EasyListviewD10D.bdsproj | 658 + .../EasyListview/Delphi/EasyListviewD10D.dpk | 43 + .../EasyListview/Delphi/EasyListviewD10D.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD11.dpk | 41 + .../EasyListview/Delphi/EasyListviewD11.dproj | 622 + .../EasyListview/Delphi/EasyListviewD11.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD11D.dpk | 44 + .../Delphi/EasyListviewD11D.dproj | 634 + .../EasyListview/Delphi/EasyListviewD11D.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD4.dpk | 37 + .../EasyListview/Delphi/EasyListviewD4.res | Bin 0 -> 692 bytes .../EasyListview/Delphi/EasyListviewD4D.dpk | 40 + .../EasyListview/Delphi/EasyListviewD4D.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD5.dpk | 39 + .../EasyListview/Delphi/EasyListviewD5.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD5D.dpk | 40 + .../EasyListview/Delphi/EasyListviewD5D.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD6.dpk | 39 + .../EasyListview/Delphi/EasyListviewD6D.dpk | 41 + .../EasyListview/Delphi/EasyListviewD7.dpk | 40 + .../EasyListview/Delphi/EasyListviewD7.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD7D.dpk | 43 + .../EasyListview/Delphi/EasyListviewD7D.res | Bin 0 -> 1536 bytes .../EasyListview/Delphi/EasyListviewD9.dpk | 40 + .../EasyListview/Delphi/EasyListviewD9.res | Bin 0 -> 876 bytes .../EasyListview/Delphi/EasyListviewD9D.dpk | 43 + .../EasyListview/Delphi/EasyListviewD9D.res | Bin 0 -> 876 bytes .../Demos/Basic/Interfaced (Jim)/Data.txt | 18 + .../Demos/Basic/Interfaced (Jim)/Unit1.dfm | 2195 ++ .../Demos/Basic/Interfaced (Jim)/Unit1.pas | 464 + .../UserInterfaceDataProject.dpr | 13 + .../InterfacedPartOneProject.dpr | 17 + .../Demos/Basic/Interfaced Part One/Unit1.dfm | 72 + .../Demos/Basic/Interfaced Part One/Unit1.pas | 149 + .../Demos/Basic/Interfaced Part One/Unit2.pas | 158 + .../InterfacedPartTwoProject.dpr | 17 + .../Demos/Basic/Interfaced Part Two/Unit1.dfm | 85 + .../Demos/Basic/Interfaced Part Two/Unit1.pas | 157 + .../Demos/Basic/Interfaced Part Two/Unit2.pas | 223 + .../Demos/Basic/Simple/SimpleProject.dpr | 16 + .../EasyListview/Demos/Basic/Simple/Unit1.dfm | 72 + .../EasyListview/Demos/Basic/Simple/Unit1.pas | 107 + .../Demos/Basic/Virtual/Unit1.dfm | 75 + .../Demos/Basic/Virtual/Unit1.pas | 158 + .../Demos/Basic/Virtual/VirtualProject.dpr | 16 + .../Context Menus/ContextMenuProject.dpr | 13 + .../Demos/Context Menus/README-WIN.TXT | 39 + .../Demos/Context Menus/Unit1.dfm | 9417 +++++ .../Demos/Context Menus/Unit1.pas | 151 + .../Demos/DemoBuildProjectGroup.bpg | 86 + .../OLEDragDropExplorerProject.dpr | 13 + .../DragDrop/OLE DragDrop Explorer/Unit1.dfm | 1981 ++ .../DragDrop/OLE DragDrop Explorer/Unit1.pas | 223 + .../OLE DragDrop/OLEDragDropProject.dpr | 13 + .../Demos/DragDrop/OLE DragDrop/Unit1.dfm | 1983 ++ .../Demos/DragDrop/OLE DragDrop/Unit1.pas | 222 + .../Demos/DragDrop/VCL DragDrop/Unit1.dfm | 544 + .../Demos/DragDrop/VCL DragDrop/Unit1.pas | 228 + .../VCL DragDrop/VCLDragDropProject.dpr | 13 + .../Demos/Fulldemo/FullDemoProject.dpr | 15 + .../EasyListview/Demos/Fulldemo/Unit1.dfm | 2830 ++ .../EasyListview/Demos/Fulldemo/Unit1.pas | 2164 ++ .../EasyListview/Demos/Grid/GridProject.dpr | 13 + .../1.7.0/EasyListview/Demos/Grid/Unit1.dfm | 172 + .../1.7.0/EasyListview/Demos/Grid/Unit1.pas | 186 + .../EasyListview/Demos/Hints/HintProject.dpr | 13 + .../1.7.0/EasyListview/Demos/Hints/Unit1.dfm | 3493 ++ .../1.7.0/EasyListview/Demos/Hints/Unit1.pas | 262 + .../ImageCustomDrawProject.dpr | 13 + .../Demos/Image CustomDraw/Unit1.dfm | 8583 +++++ .../Demos/Image CustomDraw/Unit1.pas | 259 + .../Demos/Image CustomDraw/XPSearch.bmp | Bin 0 -> 2102 bytes .../Demos/Image CustomDraw/XPSearch_Small.bmp | Bin 0 -> 568 bytes .../Demos/Item CustomDraw Advanced/Donkey.bmp | Bin 0 -> 4678 bytes .../ItemCustomDrawProjectAdv.dpr | 13 + .../Demos/Item CustomDraw Advanced/Unit1.dfm | 61 + .../Demos/Item CustomDraw Advanced/Unit1.pas | 371 + .../Item CustomDraw/ItemCustomDrawProject.dpr | 13 + .../Demos/Item CustomDraw/Unit1.dfm | 615 + .../Demos/Item CustomDraw/Unit1.pas | 87 + .../ScrollButton/ScrollButtonProject.dpr | 13 + .../EasyListview/Demos/ScrollButton/Unit1.dfm | 91 + .../EasyListview/Demos/ScrollButton/Unit1.pas | 75 + .../Shared Demo Data/DatamoduleImagelists.dfm | 5863 ++++ .../Shared Demo Data/DatamoduleImagelists.pas | 47 + .../Demos/Sorting/SortingProject.dpr | 16 + .../EasyListview/Demos/Sorting/Unit1.dfm | 297 + .../EasyListview/Demos/Sorting/Unit1.pas | 216 + .../Demos/TaskPanel/ReplacePanel.dfm | 73 + .../Demos/TaskPanel/ReplacePanel.pas | 48 + .../Demos/TaskPanel/SearchPanel.dfm | 104 + .../Demos/TaskPanel/SearchPanel.pas | 59 + .../Demos/TaskPanel/TaskPanelProject.dpr | 15 + .../EasyListview/Demos/TaskPanel/Unit1.dfm | 218 + .../EasyListview/Demos/TaskPanel/Unit1.pas | 59 + .../Demos/Taskband/TaskbandProject.dpr | 13 + .../EasyListview/Demos/Taskband/Unit1.dfm | 1318 + .../EasyListview/Demos/Taskband/Unit1.pas | 120 + .../ThumbScroller/ThumbScrollerProject.dpr | 13 + .../Demos/ThumbScroller/Unit1.dfm | 121 + .../Demos/ThumbScroller/Unit1.pas | 162 + .../1.7.0/EasyListview/Design/Compilers.inc | 493 + .../Design/EasyCollectionEditor.dfm | 553 + .../Design/EasyCollectionEditor.hpp | 188 + .../Design/EasyCollectionEditor.obj | Bin 0 -> 19828 bytes .../Design/EasyCollectionEditor.pas | 635 + .../Design/EasyCollectionEditorD4.dfm | Bin 0 -> 14993 bytes .../Design/EasyCollectionEditorD4.pas | 624 + .../EasyListview/Design/EasyListviewReg.dcr | Bin 0 -> 6836 bytes .../EasyListview/Design/EasyListviewReg.hpp | 141 + .../EasyListview/Design/EasyListviewReg.obj | Bin 0 -> 10287 bytes .../EasyListview/Design/EasyListviewReg.pas | 251 + official/1.7.0/EasyListview/Docs/Licence.txt | 18 + .../EasyListview/Docs/Mustangpeak.net.url | 5 + .../Docs/Unicode Compatibility.txt | 33 + .../1.7.0/EasyListview/Docs/Whats New.txt | 360 + .../1.7.0/EasyListview/Include/AddIns.inc | 30 + official/1.7.0/EasyListview/Include/Debug.inc | 6 + official/1.7.0/EasyListview/InstallLogD11.txt | 563 + .../Lib/D10/EasyCollectionEditor.dcu | Bin 0 -> 25771 bytes .../EasyListview/Lib/D10/EasyLVResources.dcu | Bin 0 -> 849 bytes .../EasyListview/Lib/D10/EasyListview.dcu | Bin 0 -> 773573 bytes .../EasyListview/Lib/D10/EasyListviewD10.bpl | Bin 0 -> 573952 bytes .../EasyListview/Lib/D10/EasyListviewD10.dcp | Bin 0 -> 781515 bytes .../EasyListview/Lib/D10/EasyListviewD10.dcu | Bin 0 -> 2695 bytes .../EasyListview/Lib/D10/EasyListviewD10D.bpl | Bin 0 -> 72192 bytes .../EasyListview/Lib/D10/EasyListviewD10D.dcp | Bin 0 -> 36504 bytes .../EasyListview/Lib/D10/EasyListviewD10D.dcu | Bin 0 -> 4501 bytes .../EasyListview/Lib/D10/EasyListviewReg.dcu | Bin 0 -> 11266 bytes .../EasyListview/Lib/D10/EasyScrollFrame.dcu | Bin 0 -> 16969 bytes .../Lib/D10/EasyTaskPanelForm.dcu | Bin 0 -> 13651 bytes .../Lib/D11/EasyCollectionEditor.dcu | Bin 0 -> 22275 bytes .../EasyListview/Lib/D11/EasyLVResources.dcu | Bin 0 -> 849 bytes .../EasyListview/Lib/D11/EasyListview.dcu | Bin 0 -> 774391 bytes .../EasyListview/Lib/D11/EasyListviewD11.bpl | Bin 0 -> 574976 bytes .../EasyListview/Lib/D11/EasyListviewD11.dcp | Bin 0 -> 781545 bytes .../EasyListview/Lib/D11/EasyListviewD11.dcu | Bin 0 -> 2746 bytes .../EasyListview/Lib/D11/EasyListviewD11D.bpl | Bin 0 -> 73216 bytes .../EasyListview/Lib/D11/EasyListviewD11D.dcp | Bin 0 -> 31906 bytes .../EasyListview/Lib/D11/EasyListviewD11D.dcu | Bin 0 -> 4575 bytes .../EasyListview/Lib/D11/EasyListviewReg.dcu | Bin 0 -> 10140 bytes .../EasyListview/Lib/D11/EasyScrollFrame.dcu | Bin 0 -> 16969 bytes .../Lib/D11/EasyTaskPanelForm.dcu | Bin 0 -> 13651 bytes .../MustangpeakComponentInstaller.dll | Bin 0 -> 167936 bytes official/1.7.0/EasyListview/Setup.ini | 59 + .../1.7.0/EasyListview/Source/Compilers.inc | 493 + .../EasyListview/Source/EasyLVResources.hpp | 36 + .../EasyListview/Source/EasyLVResources.obj | Bin 0 -> 673 bytes .../EasyListview/Source/EasyLVResources.pas | 40 + .../EasyListview/Source/EasyListview.hpp | 6934 ++++ .../EasyListview/Source/EasyListview.obj | Bin 0 -> 690633 bytes .../EasyListview/Source/EasyListview.pas | 29101 ++++++++++++++++ .../1.7.0/EasyListview/Source/EasyRes.res | Bin 0 -> 4160 bytes .../EasyListview/Source/EasyScrollFrame.hpp | 186 + .../EasyListview/Source/EasyScrollFrame.obj | Bin 0 -> 15523 bytes .../EasyListview/Source/EasyScrollFrame.pas | 439 + .../EasyListview/Source/EasyTaskPanelForm.hpp | 138 + .../EasyListview/Source/EasyTaskPanelForm.obj | Bin 0 -> 13231 bytes .../EasyListview/Source/EasyTaskPanelForm.pas | 301 + .../1.7.0/EasyListview/Source/Options.inc | 22 + official/1.7.0/EasyListview/unins000.dat | Bin 0 -> 42042 bytes official/1.7.0/EasyListview/unins000.exe | Bin 0 -> 683832 bytes 329 files changed, 129110 insertions(+) create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC5.bpk create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC5.cpp create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC5.res create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.bpk create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.cpp create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.res create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC6.bpk create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC6.cpp create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC6.res create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.bpk create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.cpp create mode 100644 official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD10.bdsproj create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD10.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD10.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD10D.bdsproj create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD10D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD10D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD11.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD11.dproj create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD11.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dproj create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD11D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD4.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD4.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD4D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD4D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD5.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD5.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD5D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD5D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD6.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD6.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD6D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD6D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD7.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD7.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD7D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD7D.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD9.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD9.res create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD9D.dpk create mode 100644 official/1.7.0/Common Library/Delphi/MPCommonLibD9D.res create mode 100644 official/1.7.0/Common Library/Docs/Licence.txt create mode 100644 official/1.7.0/Common Library/Docs/Unicode Compatibility.txt create mode 100644 official/1.7.0/Common Library/Docs/Whats New.txt create mode 100644 official/1.7.0/Common Library/Include/AddIns.inc create mode 100644 official/1.7.0/Common Library/Include/Debug.inc create mode 100644 official/1.7.0/Common Library/InstallLogD11.txt create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.bpl create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.dcp create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonLibD10D.bpl create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonLibD10D.dcp create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonLibD10D.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonObjects.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonUtilities.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonWizardHelpers.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPCommonWizardTemplates.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPDataObject.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPResources.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPShellTypes.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPShellUtilities.dcu create mode 100644 official/1.7.0/Common Library/Lib/D10/MPThreadManager.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonLibD11.bpl create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonLibD11.dcp create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonLibD11.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.bpl create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.dcp create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonObjects.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonUtilities.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonWizardHelpers.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPCommonWizardTemplates.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPDataObject.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPResources.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPShellTypes.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPShellUtilities.dcu create mode 100644 official/1.7.0/Common Library/Lib/D11/MPThreadManager.dcu create mode 100644 official/1.7.0/Common Library/MustangpeakComponentInstaller.dll create mode 100644 official/1.7.0/Common Library/Setup.ini create mode 100644 official/1.7.0/Common Library/Source/Compilers.inc create mode 100644 official/1.7.0/Common Library/Source/MPCommonObjects.hpp create mode 100644 official/1.7.0/Common Library/Source/MPCommonObjects.obj create mode 100644 official/1.7.0/Common Library/Source/MPCommonObjects.pas create mode 100644 official/1.7.0/Common Library/Source/MPCommonUtilities.hpp create mode 100644 official/1.7.0/Common Library/Source/MPCommonUtilities.obj create mode 100644 official/1.7.0/Common Library/Source/MPCommonUtilities.pas create mode 100644 official/1.7.0/Common Library/Source/MPCommonWizardHelpers.hpp create mode 100644 official/1.7.0/Common Library/Source/MPCommonWizardHelpers.obj create mode 100644 official/1.7.0/Common Library/Source/MPCommonWizardHelpers.pas create mode 100644 official/1.7.0/Common Library/Source/MPCommonWizardTemplates.hpp create mode 100644 official/1.7.0/Common Library/Source/MPCommonWizardTemplates.obj create mode 100644 official/1.7.0/Common Library/Source/MPCommonWizardTemplates.pas create mode 100644 official/1.7.0/Common Library/Source/MPDataObject.hpp create mode 100644 official/1.7.0/Common Library/Source/MPDataObject.obj create mode 100644 official/1.7.0/Common Library/Source/MPDataObject.pas create mode 100644 official/1.7.0/Common Library/Source/MPResources.hpp create mode 100644 official/1.7.0/Common Library/Source/MPResources.obj create mode 100644 official/1.7.0/Common Library/Source/MPResources.pas create mode 100644 official/1.7.0/Common Library/Source/MPShellTypes.hpp create mode 100644 official/1.7.0/Common Library/Source/MPShellTypes.obj create mode 100644 official/1.7.0/Common Library/Source/MPShellTypes.pas create mode 100644 official/1.7.0/Common Library/Source/MPShellUtilities.hpp create mode 100644 official/1.7.0/Common Library/Source/MPShellUtilities.obj create mode 100644 official/1.7.0/Common Library/Source/MPShellUtilities.pas create mode 100644 official/1.7.0/Common Library/Source/MPThreadManager.hpp create mode 100644 official/1.7.0/Common Library/Source/MPThreadManager.obj create mode 100644 official/1.7.0/Common Library/Source/MPThreadManager.pas create mode 100644 official/1.7.0/Common Library/Source/Options.inc create mode 100644 official/1.7.0/Common Library/unins000.dat create mode 100644 official/1.7.0/Common Library/unins000.exe create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.bpr create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.res create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.bpr create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.res create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.bpr create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.res create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.bdsproj create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.res create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.h create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.dfm create mode 100644 official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.h create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC5.bpk create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC5.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC5.res create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.bpk create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.res create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC6.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC6.res create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.bpk create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.cpp create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.res create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListviewC5G.bpg create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListviewC6.bpk create mode 100644 official/1.7.0/EasyListview/CBuilder/EasyListviewC6G.bpg create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10.bdsproj create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10.identcache create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10D.bdsproj create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD10D.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD11.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD11.dproj create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD11.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dproj create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD11D.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD4.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD4.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD4D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD4D.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD5.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD5.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD5D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD5D.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD6.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD6D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD7.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD7.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD7D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD7D.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD9.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD9.res create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD9D.dpk create mode 100644 official/1.7.0/EasyListview/Delphi/EasyListviewD9D.res create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Data.txt create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/UserInterfaceDataProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/InterfacedPartOneProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit2.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/InterfacedPartTwoProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit2.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Simple/SimpleProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Basic/Virtual/VirtualProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Context Menus/ContextMenuProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Context Menus/README-WIN.TXT create mode 100644 official/1.7.0/EasyListview/Demos/Context Menus/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Context Menus/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/DemoBuildProjectGroup.bpg create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/OLEDragDropProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/VCLDragDropProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Fulldemo/FullDemoProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Grid/GridProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Grid/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Grid/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Hints/HintProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Hints/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Hints/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Image CustomDraw/ImageCustomDrawProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Image CustomDraw/XPSearch.bmp create mode 100644 official/1.7.0/EasyListview/Demos/Image CustomDraw/XPSearch_Small.bmp create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Donkey.bmp create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw/ItemCustomDrawProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/ScrollButton/ScrollButtonProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.pas create mode 100644 official/1.7.0/EasyListview/Demos/Sorting/SortingProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Sorting/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Sorting/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.dfm create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.pas create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.dfm create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.pas create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/TaskPanelProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/Taskband/TaskbandProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/Taskband/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/Taskband/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Demos/ThumbScroller/ThumbScrollerProject.dpr create mode 100644 official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.dfm create mode 100644 official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.pas create mode 100644 official/1.7.0/EasyListview/Design/Compilers.inc create mode 100644 official/1.7.0/EasyListview/Design/EasyCollectionEditor.dfm create mode 100644 official/1.7.0/EasyListview/Design/EasyCollectionEditor.hpp create mode 100644 official/1.7.0/EasyListview/Design/EasyCollectionEditor.obj create mode 100644 official/1.7.0/EasyListview/Design/EasyCollectionEditor.pas create mode 100644 official/1.7.0/EasyListview/Design/EasyCollectionEditorD4.dfm create mode 100644 official/1.7.0/EasyListview/Design/EasyCollectionEditorD4.pas create mode 100644 official/1.7.0/EasyListview/Design/EasyListviewReg.dcr create mode 100644 official/1.7.0/EasyListview/Design/EasyListviewReg.hpp create mode 100644 official/1.7.0/EasyListview/Design/EasyListviewReg.obj create mode 100644 official/1.7.0/EasyListview/Design/EasyListviewReg.pas create mode 100644 official/1.7.0/EasyListview/Docs/Licence.txt create mode 100644 official/1.7.0/EasyListview/Docs/Mustangpeak.net.url create mode 100644 official/1.7.0/EasyListview/Docs/Unicode Compatibility.txt create mode 100644 official/1.7.0/EasyListview/Docs/Whats New.txt create mode 100644 official/1.7.0/EasyListview/Include/AddIns.inc create mode 100644 official/1.7.0/EasyListview/Include/Debug.inc create mode 100644 official/1.7.0/EasyListview/InstallLogD11.txt create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyCollectionEditor.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyLVResources.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListview.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.bpl create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.dcp create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.bpl create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.dcp create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyListviewReg.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyScrollFrame.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D10/EasyTaskPanelForm.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyCollectionEditor.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyLVResources.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListview.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.bpl create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.dcp create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.bpl create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.dcp create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyListviewReg.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyScrollFrame.dcu create mode 100644 official/1.7.0/EasyListview/Lib/D11/EasyTaskPanelForm.dcu create mode 100644 official/1.7.0/EasyListview/MustangpeakComponentInstaller.dll create mode 100644 official/1.7.0/EasyListview/Setup.ini create mode 100644 official/1.7.0/EasyListview/Source/Compilers.inc create mode 100644 official/1.7.0/EasyListview/Source/EasyLVResources.hpp create mode 100644 official/1.7.0/EasyListview/Source/EasyLVResources.obj create mode 100644 official/1.7.0/EasyListview/Source/EasyLVResources.pas create mode 100644 official/1.7.0/EasyListview/Source/EasyListview.hpp create mode 100644 official/1.7.0/EasyListview/Source/EasyListview.obj create mode 100644 official/1.7.0/EasyListview/Source/EasyListview.pas create mode 100644 official/1.7.0/EasyListview/Source/EasyRes.res create mode 100644 official/1.7.0/EasyListview/Source/EasyScrollFrame.hpp create mode 100644 official/1.7.0/EasyListview/Source/EasyScrollFrame.obj create mode 100644 official/1.7.0/EasyListview/Source/EasyScrollFrame.pas create mode 100644 official/1.7.0/EasyListview/Source/EasyTaskPanelForm.hpp create mode 100644 official/1.7.0/EasyListview/Source/EasyTaskPanelForm.obj create mode 100644 official/1.7.0/EasyListview/Source/EasyTaskPanelForm.pas create mode 100644 official/1.7.0/EasyListview/Source/Options.inc create mode 100644 official/1.7.0/EasyListview/unins000.dat create mode 100644 official/1.7.0/EasyListview/unins000.exe diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.bpk b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.bpk new file mode 100644 index 0000000..c940a78 --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.bpk @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.cpp b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.cpp new file mode 100644 index 0000000..95e9082 --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.cpp @@ -0,0 +1,26 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USERES("MPCommonLibC5.res"); +USEPACKAGE("vcl50.bpi"); +USEUNIT("..\Source\MPCommonObjects.pas"); +USEUNIT("..\Source\MPCommonUtilities.pas"); +USEUNIT("..\Source\MPDataObject.pas"); +USEUNIT("..\Source\MPResources.pas"); +USEUNIT("..\Source\MPShellTypes.pas"); +USEUNIT("..\Source\MPShellUtilities.pas"); +USEUNIT("..\Source\MPThreadManager.pas"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.res b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5.res new file mode 100644 index 0000000000000000000000000000000000000000..277543de35d3b2bdf3e7d980c7407dba1d328184 GIT binary patch literal 1536 zcmb7DyKWOf6g{>V85(dwMT3P9LKMhIX{Z8X$Zo_Vh#gvic`$(Ca6UwhdCwi7r=Fy|Y zVv(k&>1hQgTHw*=MM$*3&4~$XcoeD{o`&IZ!oNIz6sgeWYoFQtCe8WnQ=31E!Y~sl za22XV#Yu@PbsQTMcqlk+?@xXmS9P5H8ZPm}sNyg2brIhf`bQ}7$S9*}=k*(tD#8_9 z2ZUhpQgFpPB_IhWn~Trk|Y79-ulNb zQ7YQvd7ZX-e~EgPx~b8eE&tM1wnVAlcs|1{y9}U5&9aMlg8SIUQ|bfkaQ9Mu7xEe! z=yn79D&!S45EpN$v-T~;%?*a?V;6f|AL2Pr+cv|V&9}v~$d};fZ;9trZrr=vlp`ge zx*KcS<*U8eMT{dHV2mNQxR0>U$YZ?5gse}N)58Wky-VF-4N}oHMr*Lw2@d%^2IPNW z*8^JnMS@$F<6|l!@9@&*nlk4Bea8j2hx256ZlByEvP;e#+-7#KKEKo%Tke>-M=KTF zu=yVoA6itZow82pc8E9hbmHnPc`wKq;1&H2xgX&zEAisEJ9!M5n&kC$i&aj*&FC4q z6GnT_-s6=D!C6Y*bbeYx37HkpC1P}xHJwr*cl`89#-_Ltx~9Mfw=X7yWK I2)+k@02SJ1%>V!Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.bpk b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.bpk new file mode 100644 index 0000000..59d5668 --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.bpk @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.cpp b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.cpp new file mode 100644 index 0000000..45acd82 --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USERES("MPCommonLibC5D.res"); +USEPACKAGE("vcl50.bpi"); +USEPACKAGE("MPCommonLibC5.bpi"); +USEUNIT("..\Source\MPCommonWizardHelpers.pas"); +USEUNIT("..\Source\MPCommonWizardTemplates.pas"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.res b/official/1.7.0/Common Library/CBuilder/MPCommonLibC5D.res new file mode 100644 index 0000000000000000000000000000000000000000..277543de35d3b2bdf3e7d980c7407dba1d328184 GIT binary patch literal 1536 zcmb7DyKWOf6g{>V85(dwMT3P9LKMhIX{Z8X$Zo_Vh#gvic`$(Ca6UwhdCwi7r=Fy|Y zVv(k&>1hQgTHw*=MM$*3&4~$XcoeD{o`&IZ!oNIz6sgeWYoFQtCe8WnQ=31E!Y~sl za22XV#Yu@PbsQTMcqlk+?@xXmS9P5H8ZPm}sNyg2brIhf`bQ}7$S9*}=k*(tD#8_9 z2ZUhpQgFpPB_IhWn~Trk|Y79-ulNb zQ7YQvd7ZX-e~EgPx~b8eE&tM1wnVAlcs|1{y9}U5&9aMlg8SIUQ|bfkaQ9Mu7xEe! z=yn79D&!S45EpN$v-T~;%?*a?V;6f|AL2Pr+cv|V&9}v~$d};fZ;9trZrr=vlp`ge zx*KcS<*U8eMT{dHV2mNQxR0>U$YZ?5gse}N)58Wky-VF-4N}oHMr*Lw2@d%^2IPNW z*8^JnMS@$F<6|l!@9@&*nlk4Bea8j2hx256ZlByEvP;e#+-7#KKEKo%Tke>-M=KTF zu=yVoA6itZow82pc8E9hbmHnPc`wKq;1&H2xgX&zEAisEJ9!M5n&kC$i&aj*&FC4q z6GnT_-s6=D!C6Y*bbeYx37HkpC1P}xHJwr*cl`89#-_Ltx~9Mfw=X7yWK I2)+k@02SJ1%>V!Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.bpk b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.bpk new file mode 100644 index 0000000..981edfa --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.bpk @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=1 +Item0=..\Source;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\projects\lib;..\Source;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=1 +Item0=$(BCB)\projects\Intermed + +[HistoryLists\hlFinalOutputDir] +Count=1 +Item0=$(BCB)\projects\Bpl\ + +[HistoryLists\hIBPIOutputDir] +Count=1 +Item0=$(BCB)\projects\Lib + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.cpp b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.cpp new file mode 100644 index 0000000..287da75 --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.res b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6.res new file mode 100644 index 0000000000000000000000000000000000000000..277543de35d3b2bdf3e7d980c7407dba1d328184 GIT binary patch literal 1536 zcmb7DyKWOf6g{>V85(dwMT3P9LKMhIX{Z8X$Zo_Vh#gvic`$(Ca6UwhdCwi7r=Fy|Y zVv(k&>1hQgTHw*=MM$*3&4~$XcoeD{o`&IZ!oNIz6sgeWYoFQtCe8WnQ=31E!Y~sl za22XV#Yu@PbsQTMcqlk+?@xXmS9P5H8ZPm}sNyg2brIhf`bQ}7$S9*}=k*(tD#8_9 z2ZUhpQgFpPB_IhWn~Trk|Y79-ulNb zQ7YQvd7ZX-e~EgPx~b8eE&tM1wnVAlcs|1{y9}U5&9aMlg8SIUQ|bfkaQ9Mu7xEe! z=yn79D&!S45EpN$v-T~;%?*a?V;6f|AL2Pr+cv|V&9}v~$d};fZ;9trZrr=vlp`ge zx*KcS<*U8eMT{dHV2mNQxR0>U$YZ?5gse}N)58Wky-VF-4N}oHMr*Lw2@d%^2IPNW z*8^JnMS@$F<6|l!@9@&*nlk4Bea8j2hx256ZlByEvP;e#+-7#KKEKo%Tke>-M=KTF zu=yVoA6itZow82pc8E9hbmHnPc`wKq;1&H2xgX&zEAisEJ9!M5n&kC$i&aj*&FC4q z6GnT_-s6=D!C6Y*bbeYx37HkpC1P}xHJwr*cl`89#-_Ltx~9Mfw=X7yWK I2)+k@02SJ1%>V!Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.bpk b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.bpk new file mode 100644 index 0000000..3da29ee --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.bpk @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=1 +Item0=..\Source;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\projects\lib;..\Source;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=1 +Item0=$(BCB)\projects\Intermed + +[HistoryLists\hlFinalOutputDir] +Count=1 +Item0=$(BCB)\projects\Bpl\ + +[HistoryLists\hIBPIOutputDir] +Count=1 +Item0=$(BCB)\projects\Lib + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.cpp b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.cpp new file mode 100644 index 0000000..287da75 --- /dev/null +++ b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.res b/official/1.7.0/Common Library/CBuilder/MPCommonLibC6D.res new file mode 100644 index 0000000000000000000000000000000000000000..277543de35d3b2bdf3e7d980c7407dba1d328184 GIT binary patch literal 1536 zcmb7DyKWOf6g{>V85(dwMT3P9LKMhIX{Z8X$Zo_Vh#gvic`$(Ca6UwhdCwi7r=Fy|Y zVv(k&>1hQgTHw*=MM$*3&4~$XcoeD{o`&IZ!oNIz6sgeWYoFQtCe8WnQ=31E!Y~sl za22XV#Yu@PbsQTMcqlk+?@xXmS9P5H8ZPm}sNyg2brIhf`bQ}7$S9*}=k*(tD#8_9 z2ZUhpQgFpPB_IhWn~Trk|Y79-ulNb zQ7YQvd7ZX-e~EgPx~b8eE&tM1wnVAlcs|1{y9}U5&9aMlg8SIUQ|bfkaQ9Mu7xEe! z=yn79D&!S45EpN$v-T~;%?*a?V;6f|AL2Pr+cv|V&9}v~$d};fZ;9trZrr=vlp`ge zx*KcS<*U8eMT{dHV2mNQxR0>U$YZ?5gse}N)58Wky-VF-4N}oHMr*Lw2@d%^2IPNW z*8^JnMS@$F<6|l!@9@&*nlk4Bea8j2hx256ZlByEvP;e#+-7#KKEKo%Tke>-M=KTF zu=yVoA6itZow82pc8E9hbmHnPc`wKq;1&H2xgX&zEAisEJ9!M5n&kC$i&aj*&FC4q z6GnT_-s6=D!C6Y*bbeYx37HkpC1P}xHJwr*cl`89#-_Ltx~9Mfw=X7yWK I2)+k@02SJ1%>V!Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD10.bdsproj b/official/1.7.0/Common Library/Delphi/MPCommonLibD10.bdsproj new file mode 100644 index 0000000..80840c1 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD10.bdsproj @@ -0,0 +1,658 @@ + + + + + + + + + + + + MPCommonLibD10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Mustangpeak Common Library Runtime Package + + + + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD10.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD10.dpk new file mode 100644 index 0000000..78a9ee2 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD10.dpk @@ -0,0 +1,42 @@ +package MPCommonLibD10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl; + +contains + MPShellTypes in '..\Source\MPShellTypes.pas', + MPCommonUtilities in '..\Source\MPCommonUtilities.pas', + MPResources in '..\Source\MPResources.pas', + MPCommonObjects in '..\Source\MPCommonObjects.pas', + MPDataObject in '..\Source\MPDataObject.pas', + MPShellUtilities in '..\Source\MPShellUtilities.pas', + MPThreadManager in '..\Source\MPThreadManager.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD10.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD10.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.bdsproj b/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.bdsproj new file mode 100644 index 0000000..9890224 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.bdsproj @@ -0,0 +1,658 @@ + + + + + + + + + + + + MPCommonLibD10D.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Mustangpeak Common Library RunTime Package + + + + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.dpk new file mode 100644 index 0000000..461e7a8 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.dpk @@ -0,0 +1,40 @@ +package MPCommonLibD10D; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library RunTime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + designide, + vclactnband, + vclx; + +contains + MPCommonWizardHelpers in '..\Source\MPCommonWizardHelpers.pas', + MPCommonWizardTemplates in '..\Source\MPCommonWizardTemplates.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD10D.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD11.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD11.dpk new file mode 100644 index 0000000..14af691 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD11.dpk @@ -0,0 +1,43 @@ +package MPCommonLibD11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + vcl; + +contains + MPShellTypes in '..\Source\MPShellTypes.pas', + MPCommonUtilities in '..\Source\MPCommonUtilities.pas', + MPResources in '..\Source\MPResources.pas', + MPCommonObjects in '..\Source\MPCommonObjects.pas', + MPDataObject in '..\Source\MPDataObject.pas', + MPShellUtilities in '..\Source\MPShellUtilities.pas', + MPThreadManager in '..\Source\MPThreadManager.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD11.dproj b/official/1.7.0/Common Library/Delphi/MPCommonLibD11.dproj new file mode 100644 index 0000000..620fec8 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD11.dproj @@ -0,0 +1,629 @@ + + + {48f18c2d-197c-40e4-a189-ca4fd63c17c0} + MPCommonLibD11.dpk + Debug + AnyCPU + DCC32 + ..\Lib\D11\MPCommonLibD11.bpl + + + 7.0 + False + False + 0 + RELEASE + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + 7.0 + DEBUG + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + Delphi.Personality + Package + + + False + True + False + + + Mustangpeak Common Library Runtime Package + True + False + True + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VCL for the Web Design Package for CodeGear RAD Studio + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + + + MPCommonLibD11.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD11.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD11.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dpk new file mode 100644 index 0000000..aade557 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dpk @@ -0,0 +1,41 @@ +package MPCommonLibD11D; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library DesignTime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + designide, + vclactnband, + vclx; + +contains + MPCommonWizardHelpers in '..\Source\MPCommonWizardHelpers.pas', + MPCommonWizardTemplates in '..\Source\MPCommonWizardTemplates.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dproj b/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dproj new file mode 100644 index 0000000..ba2984e --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.dproj @@ -0,0 +1,647 @@ + + + {000b998f-e17e-4ca4-8fbc-9cfd5a6868cf} + MPCommonLibD11D.dpk + Release + AnyCPU + DCC32 + ..\Lib\D11\MPCommonLibD11D.bpl + + + 7.0 + False + False + 0 + RELEASE + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + 7.0 + DEBUG + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + Delphi.Personality + Package + + + False + True + False + + + Mustangpeak Common Library DesignTime Package + True + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VCL for the Web Design Package for CodeGear RAD Studio + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + + + MPCommonLibD11D.dpk + + + + + + + MainSource + + + + + + + + + + + + diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD11D.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD4.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD4.dpk new file mode 100644 index 0000000..547cb35 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD4.dpk @@ -0,0 +1,39 @@ +package MPCommonLibD4; + +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + vcl40; + +contains + MPShellTypes in '..\Source\MPShellTypes.pas', + MPCommonUtilities in '..\Source\MPCommonUtilities.pas', + MPResources in '..\Source\MPResources.pas', + MPCommonObjects in '..\Source\MPCommonObjects.pas', + MPDataObject in '..\Source\MPDataObject.pas', + MPShellUtilities in '..\Source\MPShellUtilities.pas', + MPThreadManager in '..\Source\MPThreadManager.pas'; + +end. \ No newline at end of file diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD4.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD4.res new file mode 100644 index 0000000000000000000000000000000000000000..9f17e8aa86a5a9810e0e8618459b153652cef6f3 GIT binary patch literal 692 zcmZ9KJx;?w5QSeN7o>Adg%F~kKt^&yMUj9M2@ymhw~+R}tTd&j#NI z9Wz=FLozGW$jQG`P0rK8!sARCi#ej@6_1*$X3mnn?vG7yK-$=hY(u(bE^yB5HZ8yC z^vXKst~v@%HUBN`g<3^zO`TG0ffss)5p=fPj6{wn`mMM&SW=0Nz)p5Cq-&Dbbjzvj zKAdg%F~kKt^&yMUj9M2@ymhw~+R}tTd&j#NI z9Wz=FLozGW$jQG`P0rK8!sARCi#ej@6_1*$X3mnn?vG7yK-$=hY(u(bE^yB5HZ8yC z^vXKst~v@%HUBN`g<3^zO`TG0ffss)5p=fPj6{wn`mMM&SW=0Nz)p5Cq-&Dbbjzvj zK0v@6g{sAd3IwHbRjNm5D{@9DF&o;QNI`g%BJ8? zaZ_jm4MHdXLi+`Q{my^Q3Gn$8SdDd&Saf0d z4;7zR#)Qi}|8Yp>!3o?sm>sZX)N-OJ>=kk=3(n@#Gg zkXIC-GkQzuOW#swF3(g&Y+{S+GrZ<$T`O#9y#mi7-;%#CB%f2UxOcfKM@o|FEDCk` zp@vO#(83PtsGz{ThHYl9!=ORdSLNi8=cLQjJbRFiZZliJSsU2pV9)x}W!ehfGt!CcbIf}~Mj7uIx68eSDm(GwxEpZ}xizWl`xZ350e45Q$Zas&2hQG^ z=@7h2nR}WuJN@kJH+3#|_fk#nz<0Q&jTW_U-_`hQ0(bPE;3ljysz&DIx0p}0v@6g{sAd3IwHbRjNm5D{@9DF&o;QNI`g%BJ8? zaZ_jm4MHdXLi+`Q{my^Q3Gn$8SdDd&Saf0d z4;7zR#)Qi}|8Yp>!3o?sm>sZX)N-OJ>=kk=3(n@#Gg zkXIC-GkQzuOW#swF3(g&Y+{S+GrZ<$T`O#9y#mi7-;%#CB%f2UxOcfKM@o|FEDCk` zp@vO#(83PtsGz{ThHYl9!=ORdSLNi8=cLQjJbRFiZZliJSsU2pV9)x}W!ehfGt!CcbIf}~Mj7uIx68eSDm(GwxEpZ}xizWl`xZ350e45Q$Zas&2hQG^ z=@7h2nR}WuJN@kJH+3#|_fk#nz<0Q&jTW_U-_`hQ0(bPE;3ljysz&DIx0p}c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD6D.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD6D.dpk new file mode 100644 index 0000000..278c606 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD6D.dpk @@ -0,0 +1,39 @@ +package MPCommonLibD6D; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library DesignTime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + dclstd, + designide; + +contains + MPCommonWizardHelpers in '..\Source\MPCommonWizardHelpers.pas', + MPCommonWizardTemplates in '..\Source\MPCommonWizardTemplates.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD6D.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD6D.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD7.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD7.dpk new file mode 100644 index 0000000..6b42426 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD7.dpk @@ -0,0 +1,43 @@ +package MPCommonLibD7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + vclx; + +contains + MPShellTypes in '..\Source\MPShellTypes.pas', + MPCommonUtilities in '..\Source\MPCommonUtilities.pas', + MPResources in '..\Source\MPResources.pas', + MPCommonObjects in '..\Source\MPCommonObjects.pas', + MPDataObject in '..\Source\MPDataObject.pas', + MPShellUtilities in '..\Source\MPShellUtilities.pas', + MPThreadManager in '..\Source\MPThreadManager.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD7.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD7.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD7D.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD7D.dpk new file mode 100644 index 0000000..e205d5d --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD7D.dpk @@ -0,0 +1,40 @@ +package MPCommonLibD7D; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library DesignTime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + designide, + vclactnband, + vclx, + rtl, + vcl; + +contains + MPCommonWizardHelpers in '..\Source\MPCommonWizardHelpers.pas', + MPCommonWizardTemplates in '..\Source\MPCommonWizardTemplates.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD7D.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD7D.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD9.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD9.dpk new file mode 100644 index 0000000..d47b6fc --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD9.dpk @@ -0,0 +1,42 @@ +package MPCommonLibD9; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl; + +contains + MPShellTypes in '..\Source\MPShellTypes.pas', + MPCommonUtilities in '..\Source\MPCommonUtilities.pas', + MPResources in '..\Source\MPResources.pas', + MPCommonObjects in '..\Source\MPCommonObjects.pas', + MPDataObject in '..\Source\MPDataObject.pas', + MPShellUtilities in '..\Source\MPShellUtilities.pas', + MPThreadManager in '..\Source\MPThreadManager.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD9.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD9.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD9D.dpk b/official/1.7.0/Common Library/Delphi/MPCommonLibD9D.dpk new file mode 100644 index 0000000..28dbb92 --- /dev/null +++ b/official/1.7.0/Common Library/Delphi/MPCommonLibD9D.dpk @@ -0,0 +1,40 @@ +package MPCommonLibD9D; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Mustangpeak Common Library DesignTime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + designide, + vclactnband, + vclx; + +contains + MPCommonWizardHelpers in '..\Source\MPCommonWizardHelpers.pas', + MPCommonWizardTemplates in '..\Source\MPCommonWizardTemplates.pas'; + +end. diff --git a/official/1.7.0/Common Library/Delphi/MPCommonLibD9D.res b/official/1.7.0/Common Library/Delphi/MPCommonLibD9D.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Docs/Licence.txt b/official/1.7.0/Common Library/Docs/Licence.txt new file mode 100644 index 0000000..95907ba --- /dev/null +++ b/official/1.7.0/Common Library/Docs/Licence.txt @@ -0,0 +1,22 @@ +Mustangpeak Common Library + + The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the +License at + +http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an +"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed or +implied. See the License for the specific language governing rights +and limitations under the License. + + Alternatively, you may redistribute this library, use and/or modify it under the terms of the +GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. +You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. + + + + diff --git a/official/1.7.0/Common Library/Docs/Unicode Compatibility.txt b/official/1.7.0/Common Library/Docs/Unicode Compatibility.txt new file mode 100644 index 0000000..57dea23 --- /dev/null +++ b/official/1.7.0/Common Library/Docs/Unicode Compatibility.txt @@ -0,0 +1,33 @@ + +To enabled Unicode this this library open the + + ${Install}\Source\Options.inc + +file and search for the following: + + +// ----------------------------------------------------------------------------- +// Use unicode-aware inplace editors. This implementation uses Troy Wolbrink's +// TNT controls, which can be found at: www.tntware.com + +{.$DEFINE TNTSUPPORT} + + +Then uncomment the TNTSUPPORT define like this: + + +{$DEFINE TNTSUPPORT} + +Now open the package for the library and recompile. The compile will warn you to add the Tnt +package to the library. Say yes. The package will compile, save and exit. + + +************* IMPORTANT ******************* +YOU MUST ADD THE TNT PACKAGE TO THE REQIRES CLAUSE IN THE MPLIBRARY DPK PACKAGE FILE AND RECOMPILE THE PACKAGES. . DO NOT JUST UNCOMMENT OUT THE TNTSUPPORT DEFINE AND RECOMPILE + + +You will now have access to Unicode methods and the library will be Unicode enabled. + + + +Jim diff --git a/official/1.7.0/Common Library/Docs/Whats New.txt b/official/1.7.0/Common Library/Docs/Whats New.txt new file mode 100644 index 0000000..71d09ea --- /dev/null +++ b/official/1.7.0/Common Library/Docs/Whats New.txt @@ -0,0 +1,140 @@ +Sept 3, 2007 Version 1.7.0 + - Fixed possible uninitialized variable warning + - Added UpsideDownDIB function to detect if a DIB is top-down or bottom-up + - Fixed Transparency issue with Vista and GIF89 + - Fixed problem with thumbnail extraction + - Fixed system String memory leaks that have been in TNamespace for years. + - Added Stream Copying routines to MPCommonObjects.pas + - Added helper for ProgressTheme in MPCommonObjects.pas + - Added FixFormFont to MPCommonUtilities.pas + - Added FillGradient to MPCommonUtilities.pas + - Fixed bugs in MPDataObject.pas + - Added IsSpecialVariable and SpecialVariableReplacePath to MPShellUtilities.pas to allow using variables such as %apppath% and %desktop% in the combobox edit box + - Fixed bug in Graphics Blending routine. + - Fixed problems with image extractions + - More fixes for thumbnails + - Fixed bug where Threaded Shell Execute was not waiting for the DDE exchange to occur before returning. Caused executing of file objects to not finish and fail. + - Added a CreateProcess wrapper to simplify calling the call. + - Fixed bug in ShortenTextW + - Added dynamically linked functions for NTFS Volume access + - Added function to mimic the C macro for CTL_CODE + - Fixed bug in the TNamespace.ShowContextMenu method + - Fixed bug(s) in the TWideHDrop.AssignFilesW method + - Add SHGetKnownFolderPath definition for Vista + - Added the FOLDERID_ and KF_FLAG_ constants for SHGetKnownFolderPath + - Added new global TNamespace: ProgramFilesFolder + - Fixed bug in MPThreadManager.pas that could cause the application to not shut down + - Added implementation of FindFirstFileEx + - Cached the Browsable property in TNamespace + - Added ShellExecuteEx for ANSI and UNICODE + - Added Alex's RegisterNSE and UnregisterNSE changed to handle Unicode or ANSI + - Added ExecShellEx for a wrapper for ShellExecuteEx + - Added ANSI/Unicode function for ExpandEnviromentString called WideExpandEnviromentString. + - Fixed bug in the new ExecShellEx function + - Fixed incorrect testing of column counts. Causes AV's in some cases + - Added functionality to fix Threaded Details in VirtualShellTools + - Fixed app closing issue, when pumping messages you must call PostQuitMessage when WM_QUIT is encountered or the app won't close. + - Fixed problem with showing column details beyond column 5. + - Changed TTntStringList to TWideStrings in the HDrop DataObject wrapper + - Added TCommonHDrop.FileNames(FileList: TWideStrings); overload method if TNT Unicode Controls is available. + - Added a few "const" modifiers to passed parameters to pass by reference instead of putting the entire large record on the stack + - Made use of WideMessageBox consistent throughout package + - Some refactoring of CommonSupports function, saves a reference increment/decrement + - Added FindBrowseableRootPIDL and IsParentBrowseable functions to the MPShellUtilities.pas file. + - Fixed bug that would cause calling the 'pastelink' context menu verb from functioning + - Fixed bug in the new FindBrowseableRootPIDL method + - Moved Shell Menus from VSTools to Common Library + - Finally found bug with EasyListview/D2007 and Vista + +March 18, 2007 Version 1.6.0 + - Changed TEasyThread so it could be used without the TEasyThreaManager + - IMPORTANT: Some will hate it some will love it but I found a way to move VirtualShellUtilities into the common library so TNamespace can be used without the Shell Components. It is Unicode enabled by using TntControls and the {$DEFINE TNTSUPPORT} like most other Mustangpeak libraries. CommonLibrary, EasyListview and VSTools 2.0 all must be updated and rebuild, along with VirtualShellUtilities changed to MPShellUtilities in your projects. Also a number of the strings that went with VirtualShellUtilities in VirtualResources.pas are now found in MPResources.pas so this unit may need to be added to your projects as well. + - Added a few more utility functions in MPCommonUtilities.pas + - Fixed bug in DataObjectSupportsShell function, did not include the FileDescriptor formats to work with Outlook, Notes, etc. + - Added a few missing Windows Shell Defines to MPShellTypes.pas + - Added Disk Size and FreeSpace utility function to MPShellUtilities.pas + -Added Dynamically linked exports of PathMatchMaskA and PathMatchMaskW + - Fixed bug that would create new threads during shut down. + - Added a Delphi friendly implemenation of SHBrowseForFolder to MPShellUtilities.pas + - Added dynamically loaded import to GetCurrentDirW for applications to use. + - Fixed wrong value for FILE_ATTRIBUTE_REPARSE_POINT + - Added TNamespace.ReparsePoint and TNamespace.SparseFile the correspond to FILE_ATTRIBUTE_REPARSE_POINT and FILE_ATTRIBUTE_SPARSE_FILE + - CHANGE: Changed VST_UseModalDialogs to MP_UseModalDialogs. + - Added MP_UseSpecialReparsePointOverlay global option in MPShellUtilities.pas to show an overlay on ReparsePoints. + - Added a check in the TCommonThread object to check if OLEInitialize succeeded so OLEUninitialize won't be called unless it was property initialized. This can cause the lockups on shut down. + - Added parameter to EnumerateFolderEx to help with freezing of VT drawing if Explorer shows a dialog. + - Added Utility function for IsWinVista, WideIncrementalSearch, WidePathMatchSpec, and WidePathMatchSpecExists, WideGetTempDir + - Added Utility function DataObjectContainsPIDL to test if a particular PIDL is contained in the DataObject + - Added definitions for XButton support + - Fixed race issue with the CommonThread. If you had AV's in the IDE (or application) on shut down this will fix it. + - Fixed bug in WideStrLCopy + - Added ShadowBlendBits to support the Windows Vista shadowed thumbnails for folders. + - Added support for MP_ThreadedShellExecute to launch programs in a separate Thread + - Fixed bug that would cause an AV in TNamespace.InternalSubItems. + - Fixed bug that would keep application from shutting down. Thread would not shut down. + - Fixed bug in File size formating + - Fixed TNamespace.GetSizeOfFileKB, it showed "KB" instead of "1KB" for small files + - Fixed bug with AddContextMenuItem + - Fixed possible recursion problem if a ReparsePoint was encountered + - Added FindNextFileW_MP define + - Fixed published property in DataObject class + - Fixed upsidedown gif file extraction of thumbnails + - Added WideStripLeadingBackslash function + - Fixed bug with DirExistsVET + + +Nov 23, 2006 Version 1.5.0 + - Hopefully fixed bug with Threads hanging. Added a new Callback type global thread. Allows + for a method in an object to be called back when the thread task finishes. + + +Nov 12, 2006 Version 1.5.0 + - Made the package Unicode aware with use of TnTControls {DEFINE TNTSUPPORT} + - Moved many more shell defines into the packages + - Added FileGroupDescriptorA, FileGroupDesriptorW, and FileContents wrappers for Shell data transfer + - Updated IDataObject implementation to support copying the data object contents (obsure use in VSTools) + - Added Unicode capability to TCommonHDrop format (with {DEFINE TNTSUPPORT}} + - Moved TWideStringDynArray and TIntegerDynArray into MPCommonUtilities.pas and changed the name to + TCommonWideStringDynArray and TCommonIntegerDynArray for issues with CBuilder + - Moved TEasyVAlignment type into MPCommonUtilities.pas and renamed it to TCommonVAlignment type + - Added a number of Wide API functions that are loaded dynamically (as not to give Win9X issues) + - Added more utility functions + - Resorted the interface section function alphabetically + - Defined a new type in MPCommonObjects.pas: + TCommonImageIndexInteger = type Integer; + this is the type that all ImageIndex parameters have been changed to. This allows for the designtime + object inspector to have images in the pulldowns for the image indexes. "This WILL BREAK YOUR + APPLICATIONS". Do a search on "ImageIndex" and any event with an "xxxxIndex: Integer" change to + "xxxxIndex: TCommonImageIndexInteger" + - Moved the PIDL struture types into MPCommonObjects.pas + - Moved and renamed a few Explorer ContextMenu types into MPCommonObjects.pas + TEasyShellContextMenuAction becomes TCommonShellContextMenuAction + TEasyShellContextMenuExtension becomes TCommonShellContextMenuExtension + - Fixed bug in the TEasyThread on shut down - + - Created a new design time package + +Oct 8, 2006 Version 1.2.0 + + - Added missing define to allow VSTools2 to compile under BDS4 + - Moved more common code into Library + - Minor fixes + - Fixed problem with Compilers.inc and BDS2006 + - Cleaned D7 package + - General Cleanup. + - Reworked the ShellTypes to hopefully be more BCB friendly + - Added new common functions + - Fixed CommonThread. Possibility it could hang on shut down. + - Fixed AV on shut down of thread. Freed PIDLMgr before finished using it + - Added Shell Definitions for ICategories and associated flags/interfaces for Grouping + - Added DataObjectSupportsShell function + + +July 30, 2006 Version 1.0.0 + + - Reworked ShellTypes package to be more BCB friendly + - The CommonThread has changed. If you are using the thread + or responding the a message sent by the thread request then + DO NOT FREE the Msg.Request object now. Call Msg.Request.Release. + This is because when a request is not created if the Window parameter + is nil then it is interperted as the request is to be Broadcast to + all registered windows. \ No newline at end of file diff --git a/official/1.7.0/Common Library/Include/AddIns.inc b/official/1.7.0/Common Library/Include/AddIns.inc new file mode 100644 index 0000000..8274c22 --- /dev/null +++ b/official/1.7.0/Common Library/Include/AddIns.inc @@ -0,0 +1,30 @@ + +// The packages must be rebuilt to make the changes in this file active + + + +// ----------------------------------------------------------------------------- +// +// TNT (TMS) Unicode Controls +// +// If you are using Tnt Unicode controls use this define to enable unicode support +// in the VSTools package. +// +// If using TNT you MUST include the TNT package for your specific compiler in the +// Requires section of this package. It may be possible to compile without doing +// this but you WILL eventually have strange crashes in your application that will +// be difficult to understand. The best way to do this in my opinion is to create +// a new folder in the package install directory called "Delphi_TNT" (or CBuilder_TNT) +// and copy all the files from the Delphi (or CBuilder) folder into it. Now open the +// VirtualShellToolsDx.dpk (or bpk) file in the "Delphi_TNT" (or CBuilder_TNT) based on your compiler +// version in a text editor. In the "Requires" section add "TNTUnicodeVcl_Rx0", where +// the "x" is the version of Delphi you are using. Open the dpk (bpk) file in your +// IDE. Select the menu option Projects>Options>Directories/Conditionals>Conditional +// and enter TNTSUPPORT. Compile the package, then open the VirtualShellToolsDxD.dpk (or bpk) +// and compile and press the Install button. +// Now when you update the packages you won't have to redo all this. Just install +// the update then compile the packages in the "Delphi_TNT" (or CBuilder_TNT) folders +// an you are done. +// +//{$DEFINE TNTSUPPORT} + diff --git a/official/1.7.0/Common Library/Include/Debug.inc b/official/1.7.0/Common Library/Include/Debug.inc new file mode 100644 index 0000000..f5f13c5 --- /dev/null +++ b/official/1.7.0/Common Library/Include/Debug.inc @@ -0,0 +1,6 @@ + +// {$DEFINE LOG_VCL_CMDRAG} // Create a "VCL Drag.log" file for CM_DRAG + +// {$DEFINE TEST_RTL} // Tests RTL by inverting the tests for RTL, make LTR system return true for RTL and vice-versa + +//{$DEFINE MEMORYTRACK} // Tracks memory allocations and Creation/Deletion of ICoolItem and ICoolGroup objects diff --git a/official/1.7.0/Common Library/InstallLogD11.txt b/official/1.7.0/Common Library/InstallLogD11.txt new file mode 100644 index 0000000..da521cc --- /dev/null +++ b/official/1.7.0/Common Library/InstallLogD11.txt @@ -0,0 +1,618 @@ +*************************************** +BEGIN: Unregistering Component Package +*************************************** + +Reading Extra Paths from Setup.ini + T:\Componentes\Mustangpeak\Common Library\Source + +Cleaning Known Package Registry Entry + +Reading Packages: +$(BDSCOMMONDIR)\Bpl\MPCommonLibD11D.bpl +$(BDSCOMMONDIR)\Bpl\EasyListviewD11D.bpl +$(BDSCOMMONDIR)\Bpl\MPCommonLibD11D.bpl +$(BDSCOMMONDIR)\Bpl\EasyListviewD11D.bpl +TntUnicodeVcl_Design110.bpl +$(BDS)\bin\applet100.bpl +$(BDS)\bin\dcl31w100.bpl +$(BDS)\bin\dclstd100.bpl +$(BDS)\Bin\vclimg100.bpl +$(BDS)\bin\dclact100.bpl +$(BDS)\bin\dclbde100.bpl +$(BDS)\bin\dcldb100.bpl +$(BDS)\bin\dbx100.bpl +$(BDS)\bin\dclemacsedit100.bpl +$(BDS)\bin\dclmlwiz100.bpl +$(BDS)\bin\dclsmpedit100.bpl +$(BDS)\bin\dclmcn100.bpl +$(BDS)\Bin\dclmid100.bpl +$(BDS)\bin\dcltee7100.bpl +$(BDS)\Bin\dclib100.bpl +$(BDS)\bin\dclado100.bpl +$(BDS)\bin\dcldbx4100.bpl +$(BDS)\bin\dcldbxcds4100.bpl +$(BDS)\Bin\dclIndyCore100.bpl +$(BDS)\Bin\dclIndyProtocols100.bpl +$(BDS)\bin\dclsmp100.bpl +$(BDS)\bin\dclie100.bpl +$(BDS)\Bin\dclwbm100.bpl +$(BDS)\Bin\dclnet100.bpl +$(BDS)\bin\dclbcbsmp100.bpl +T:\Bpl_D11\MPCommonLibD11D.bpl +T:\Bpl_D11\EasyListviewD11D.bpl +T:\Bpl_D11\cfpack_D2007.bpl +T:\Bpl_D11\dclcxBarEditItemD11.bpl +T:\Bpl_D11\dclcxExtEditorsD11.bpl +T:\Bpl_D11\dclcxEditorsD11.bpl +T:\Bpl_D11\dclcxLibraryD11.bpl +T:\Bpl_D11\dclcxGridD11.bpl +T:\Bpl_D11\dclcxPageControlD11.bpl +T:\Bpl_D11\dclcxSchedulerD11.bpl +T:\Bpl_D11\dclcxTreeListD11.bpl +T:\Bpl_D11\dclcxVerticalGridD11.bpl +T:\Bpl_D11\dcldxBarD11.bpl +T:\Bpl_D11\dcldxBarDBNavD11.bpl +T:\Bpl_D11\dcldxBarExtDBItemsD11.bpl +T:\Bpl_D11\dcldxBarExtItemsD11.bpl +T:\Bpl_D11\dcldxLayoutControlD11.bpl +T:\Bpl_D11\dcldxNavBarD11.bpl +T:\Bpl_D11\dcldxPSCoreD11.bpl +T:\Bpl_D11\dcldxRibbonD11.bpl +T:\Bpl_D11\cxIntl5D11.bpl +$(ProgramFiles)\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D10.bpl +T:\Bpl_D11\GUISDK_D2007.bpl +T:\Bpl_D11\dclfsTee11.bpl +T:\Bpl_D11\dclfrx11.bpl +T:\Bpl_D11\dclfrxADO11.bpl +T:\Bpl_D11\dclfrxBDE11.bpl +T:\Bpl_D11\dclfrxcs11.bpl +T:\Bpl_D11\dclfrxDB11.bpl +T:\Bpl_D11\dclfrxDBX11.bpl +T:\Bpl_D11\dclfrxe11.bpl +T:\Bpl_D11\dclfrxIBX11.bpl +T:\Bpl_D11\dclfrxTee11.bpl +T:\Bpl_D11\dclfs11.bpl +T:\Bpl_D11\dclfsADO11.bpl +T:\Bpl_D11\dclfsBDE11.bpl +T:\Bpl_D11\dclfsDB11.bpl +T:\Bpl_D11\dclfsIBX11.bpl +T:\Bpl_D11\PNG_D2007.bpl +T:\Bpl_D11\PngComponentsD2007D.bpl +T:\Bpl_D11\SpTBXLibDsgn_d11.bpl +T:\Bpl_D11\tb2kdsgn_d11.bpl +T:\Bpl_D11\tbxdsgn_d11.bpl +T:\Bpl_D11\cxIntlPrintSys3D11.bpl +$(BDS)\bin\bcbie100.bpl +T:\Bpl_D11\PluginSDK_D11D.bpl +$(ProgramFiles)\EurekaLog 6\Delphi11\ExceptionExpert11.bpl +T:\Componentes\jvcl\lib\d11\JvAppFrmD11D.bpl +T:\Componentes\jvcl\lib\d11\JvBandsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvBDED11D.bpl +T:\Componentes\jvcl\lib\d11\JvCmpD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCoreD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCryptD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCtrlsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCustomD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDBD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDlgsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDockingD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDotNetCtrlsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvEDID11D.bpl +T:\Componentes\jvcl\lib\d11\JvGlobusD11D.bpl +T:\Componentes\jvcl\lib\d11\JvHMID11D.bpl +T:\Componentes\jvcl\lib\d11\JvInterpreterD11D.bpl +T:\Componentes\jvcl\lib\d11\JvJansD11D.bpl +T:\Componentes\jvcl\lib\d11\JvManagedThreadsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvMMD11D.bpl +T:\Componentes\jvcl\lib\d11\JvNetD11D.bpl +T:\Componentes\jvcl\lib\d11\JvPageCompsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvPluginD11D.bpl +T:\Componentes\jvcl\lib\d11\JvPrintPreviewD11D.bpl +T:\Componentes\jvcl\lib\d11\JvRuntimeDesignD11D.bpl +T:\Componentes\jvcl\lib\d11\JvStdCtrlsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvSystemD11D.bpl +T:\Componentes\jvcl\lib\d11\JvTimeFrameworkD11D.bpl +T:\Componentes\jvcl\lib\d11\JvUIBD11D.bpl +T:\Componentes\jvcl\lib\d11\JvValidatorsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvWizardD11D.bpl +T:\Componentes\jvcl\lib\d11\JvXPCtrlsD11D.bpl +$(BDS)\Bin\dclintraweb_90_100.bpl +$(BDS)\bin\dclwebsnap100.bpl +$(BDS)\bin\dclsoap100.bpl +$(BDS)\bin\dcloffice2k100.bpl +$(BDS)\bin\dclofficexp100.bpl +$(BDS)\bin\bcboffice2k100.bpl +$(BDS)\bin\bcbofficexp100.bpl + +Stripping off path and extension +MPCommonLibD11D +EasyListviewD11D +MPCommonLibD11D +EasyListviewD11D +TntUnicodeVcl_Design110 +applet100 +dcl31w100 +dclstd100 +vclimg100 +dclact100 +dclbde100 +dcldb100 +dbx100 +dclemacsedit100 +dclmlwiz100 +dclsmpedit100 +dclmcn100 +dclmid100 +dcltee7100 +dclib100 +dclado100 +dcldbx4100 +dcldbxcds4100 +dclIndyCore100 +dclIndyProtocols100 +dclsmp100 +dclie100 +dclwbm100 +dclnet100 +dclbcbsmp100 +MPCommonLibD11D +EasyListviewD11D +cfpack_D2007 +dclcxBarEditItemD11 +dclcxExtEditorsD11 +dclcxEditorsD11 +dclcxLibraryD11 +dclcxGridD11 +dclcxPageControlD11 +dclcxSchedulerD11 +dclcxTreeListD11 +dclcxVerticalGridD11 +dcldxBarD11 +dcldxBarDBNavD11 +dcldxBarExtDBItemsD11 +dcldxBarExtItemsD11 +dcldxLayoutControlD11 +dcldxNavBarD11 +dcldxPSCoreD11 +dcldxRibbonD11 +cxIntl5D11 +RemObjects_Everwood_D10 +GUISDK_D2007 +dclfsTee11 +dclfrx11 +dclfrxADO11 +dclfrxBDE11 +dclfrxcs11 +dclfrxDB11 +dclfrxDBX11 +dclfrxe11 +dclfrxIBX11 +dclfrxTee11 +dclfs11 +dclfsADO11 +dclfsBDE11 +dclfsDB11 +dclfsIBX11 +PNG_D2007 +PngComponentsD2007D +SpTBXLibDsgn_d11 +tb2kdsgn_d11 +tbxdsgn_d11 +cxIntlPrintSys3D11 +bcbie100 +PluginSDK_D11D +ExceptionExpert11 +JvAppFrmD11D +JvBandsD11D +JvBDED11D +JvCmpD11D +JvCoreD11D +JvCryptD11D +JvCtrlsD11D +JvCustomD11D +JvDBD11D +JvDlgsD11D +JvDockingD11D +JvDotNetCtrlsD11D +JvEDID11D +JvGlobusD11D +JvHMID11D +JvInterpreterD11D +JvJansD11D +JvManagedThreadsD11D +JvMMD11D +JvNetD11D +JvPageCompsD11D +JvPluginD11D +JvPrintPreviewD11D +JvRuntimeDesignD11D +JvStdCtrlsD11D +JvSystemD11D +JvTimeFrameworkD11D +JvUIBD11D +JvValidatorsD11D +JvWizardD11D +JvXPCtrlsD11D +dclintraweb_90_100 +dclwebsnap100 +dclsoap100 +dcloffice2k100 +dclofficexp100 +bcboffice2k100 +bcbofficexp100 + +Reading Packages to remove +MPCommonLibD11 +MPCommonLibD11D + +Stripping off path and extension +MPCommonLibD11 +MPCommonLibD11D + +Scanning for previously installed packages.... +Deleting bpl file: T:\Bpl_D11\MPCommonLibD11.bpl +File deleted +Deleting dcp file: T:\Bpl_D11\MPCommonLibD11.dcp +File deleted +Deleting bpl file: T:\Bpl_D11\MPCommonLibD11D.bpl +File deleted +Deleting dcp file: T:\Bpl_D11\MPCommonLibD11D.dcp +File deleted + + +Known Package Registry Entry Cleaned + +Cleaning Disabled Package Registry Entry + +Reading Packages: +$(BDS)\bin\bcboffice2k100.bpl +$(BDS)\bin\bcbofficexp100.bpl +$(BDS)\bin\dcloffice2k100.bpl +$(BDS)\bin\dclofficexp100.bpl +$(BDS)\Bin\dclintraweb_90_100.bpl +$(BDS)\bin\dclwebsnap100.bpl +$(BDS)\bin\dclsoap100.bpl + +Stripping off path and extension +bcboffice2k100 +bcbofficexp100 +dcloffice2k100 +dclofficexp100 +dclintraweb_90_100 +dclwebsnap100 +dclsoap100 + +Reading Packages to remove +MPCommonLibD11 +MPCommonLibD11D + +Stripping off path and extension +MPCommonLibD11 +MPCommonLibD11D + +Scanning for previously installed packages.... +Disabled Package Registry Entry Cleaned + +Cleaning Package Cache Registry Entry + +Reading Packages: + +Stripping off path and extension + +Reading Packages to remove +MPCommonLibD11 +MPCommonLibD11D + +Stripping off path and extension +MPCommonLibD11 +MPCommonLibD11D + +Scanning for previously installed packages.... +Package Cache Registry Entry Cleaned + +Reading Search Path Registry Entry +C:\Archivos de programa\EurekaLog 6\Delphi11 +C:\Archivos de programa\Borland\Delphi11\lib +$(BDSUSERDIR)\Imports +C:\Archivos de programa\Borland\Delphi11\Imports +C:\Archivos de programa\Borland\Delphi11\Lib\Indy10 +C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Dcp +T:\Bpl_D11 +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10 +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse +$(Everwood)\Bin +C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10 +C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source +C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers +C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10 +C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source +T:\Componentes\FastReport 4\LibD11 +T:\Componentes\Developer Express VCL\Lib\D11 +T:\Componentes\PngComponents\Source +T:\Componentes\jvcl\lib\D11 +T:\Componentes\jvcl\common +T:\Componentes\jvcl\Resources + + +Writing Search Path Registry Entry +Removing extra characters and blank lines +Formatting..... +$(ProgramFiles)\EurekaLog 6\Delphi11 +$(BDS)\lib +$(BDSUSERDIR)\Imports +$(BDS)\Imports +$(BDS)\Lib\Indy10 +$(BDSCOMMONDIR)\Dcp +T:\Bpl_D11 +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10 +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\RODX +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse +$(Everwood)\Bin +$(ProgramFiles)\RemObjects Software\Data Abstract for Delphi\Dcu\D10 +$(ProgramFiles)\RemObjects Software\Data Abstract for Delphi\Source +$(ProgramFiles)\RemObjects Software\Data Abstract for Delphi\Source\Drivers +$(ProgramFiles)\RemObjects Software\Pascal Script for Delphi\Dcu\D10 +$(ProgramFiles)\RemObjects Software\Pascal Script for Delphi\Source +T:\Componentes\FastReport 4\LibD11 +T:\Componentes\Developer Express VCL\Lib\D11 +T:\Componentes\PngComponents\Source +T:\Componentes\jvcl\lib\D11 +T:\Componentes\jvcl\common +T:\Componentes\jvcl\Resources +Writing to Key: Software\Borland\BDS\5.0\Library Value: Search Path +Search Path Registry Entry written + +Reading Browse Path Registry Entry +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\VCL +C:\Archivos de programa\Borland\Delphi11\source\Win32\rtl\common +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\RTL\SYS +C:\Archivos de programa\Borland\Delphi11\source\Win32\rtl\win +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\WEBSNAP +C:\Archivos de programa\Borland\Delphi11\source\ToolsAPI +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\IBX +C:\Archivos de programa\Borland\Delphi11\source\Win32\Internet +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\PROPERTY EDITORS +C:\Archivos de programa\Borland\Delphi11\source\Win32\soap +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\XML +C:\Archivos de programa\Borland\Delphi11\source\Win32\db +C:\Archivos de programa\Borland\Delphi11\source\Indy10\Core +C:\Archivos de programa\Borland\Delphi11\source\Indy10\System +C:\Archivos de programa\Borland\Delphi11\source\Indy10\Protocols +C:\Archivos de programa\Borland\Delphi11\source\database\src\pas\dbx\driver +C:\Archivos de programa\Borland\Delphi11\source\database\src\pas\dbx\vcl +T:\Componentes\jvcl\common +T:\Componentes\jvcl\run + + +Writing Browse Path Registry Entry +Removing extra characters and blank lines +Formatting..... +$(BDS)\SOURCE\WIN32\VCL +$(BDS)\source\Win32\rtl\common +$(BDS)\SOURCE\WIN32\RTL\SYS +$(BDS)\source\Win32\rtl\win +$(BDS)\SOURCE\WIN32\WEBSNAP +$(BDS)\source\ToolsAPI +$(BDS)\SOURCE\WIN32\IBX +$(BDS)\source\Win32\Internet +$(BDS)\SOURCE\WIN32\PROPERTY EDITORS +$(BDS)\source\Win32\soap +$(BDS)\SOURCE\WIN32\XML +$(BDS)\source\Win32\db +$(BDS)\source\Indy10\Core +$(BDS)\source\Indy10\System +$(BDS)\source\Indy10\Protocols +$(BDS)\source\database\src\pas\dbx\driver +$(BDS)\source\database\src\pas\dbx\vcl +T:\Componentes\jvcl\common +T:\Componentes\jvcl\run +Writing to Key: Software\Borland\BDS\5.0\Library Value: Browsing Path +Browse Path Registry Entry written + +*************************************** +END: Unregistering Component Package +*************************************** + + +*************************************** +BEGIN: Compiling Component Package +*************************************** +Validating Output Folders +Creating temp compile folder +Folder Created: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Config.ini -JP Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\COMMON~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" MPCommonLibD11.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + MPCommonLibD11.dpk(1) MPCommonLibD11.dpk(31) MPCommonLibD11.dpk(33) MPCommonLibD11.dpk(33) MPCommonLibD11.dpk(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(14) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(91) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(501) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(1013) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(1525) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(2037) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(2549) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(3061) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(3467) + MPCommonLibD11.dpk(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(450) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(469) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(72) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(73) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(74) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(75) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(76) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(77) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(78) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(79) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(80) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(82) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(83) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(94) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(96) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(97) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(98) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(99) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPResources.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPResources.pas(112) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(101) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(501) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(14) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(35) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(45) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(56) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(57) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(58) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(59) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(60) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(61) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(63) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(445) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(485) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(12) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(35) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(41) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(42) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(47) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(48) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(49) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(57) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(501) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(1013) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(1525) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(2037) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(2355) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(447) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(507) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1019) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1531) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1863) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(574) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(1013) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(1525) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(2037) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(2549) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(3061) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(3573) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(4085) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(4597) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(5066) + MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(438) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(457) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(53) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(54) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(56) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(57) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(58) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(59) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(60) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(61) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(62) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(63) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(64) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(65) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(66) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(67) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(388) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(388) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(390) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(999) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(1511) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(1543) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(68) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(69) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(77) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(80) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(82) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(84) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(507) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1019) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1528) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1531) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(2043) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(2555) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(3067) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(3579) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(4091) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(4603) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(5115) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(5627) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(6139) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(6651) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(7163) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(7675) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(8187) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(8699) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(9152) + MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(42) MPCommonLibD11.dpk(43) +29837 lines, 1.50 seconds, 617 bytes code, 0 bytes data. + + +Compiling C++Builder Files + +Config.ini -JL Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\COMMON~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" MPCommonLibD11.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + MPCommonLibD11.dpk(1) MPCommonLibD11.dpk(31) MPCommonLibD11.dpk(33) MPCommonLibD11.dpk(33) MPCommonLibD11.dpk(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(14) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(91) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(501) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(1013) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(1525) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(2037) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(2549) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(3061) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellTypes.pas(3467) + MPCommonLibD11.dpk(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(450) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(469) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(72) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(73) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(74) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(75) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(76) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(77) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(78) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(79) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(80) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(82) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(83) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(94) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(95) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(96) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(97) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(98) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(99) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPResources.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPResources.pas(112) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(101) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(501) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(14) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(32) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(33) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(35) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(45) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(56) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(57) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(58) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(59) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(60) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(61) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(63) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(445) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(485) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(12) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(35) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(41) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(42) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(47) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(48) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(49) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(57) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(501) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(1013) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(1525) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(2037) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPDataObject.pas(2355) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(447) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(507) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1019) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1531) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonObjects.pas(1863) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(574) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(1013) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(1525) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(2037) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(2549) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(3061) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(3573) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(4085) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(4597) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonUtilities.pas(5066) + MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(438) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(457) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(53) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(54) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(55) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(56) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(57) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(58) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(59) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(60) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(61) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(62) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(63) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(64) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(65) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(66) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(67) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Options.inc(16) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(388) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(388) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(390) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(487) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(999) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(1511) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPThreadManager.pas(1543) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(68) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(69) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(77) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(80) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(82) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(84) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(507) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1019) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1528) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(1531) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(2043) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(2555) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(3067) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(3579) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(4091) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(4603) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(5115) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(5627) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(6139) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(6651) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(7163) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(7675) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(8187) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(8699) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPShellUtilities.pas(9152) + MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(40) MPCommonLibD11.dpk(42) MPCommonLibD11.dpk(43) + ..\Source\MPShellTypes.pas(1849) Warning: W1025 Unsupported language feature: 'dispinterface' +29837 lines, 1.73 seconds, 165308 bytes code, 4304 bytes data. + + +Found compiled BPL file: T:\Bpl_D11\MPCommonLibD11.bpl + + +Config.ini -JP Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\COMMON~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" MPCommonLibD11D.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + MPCommonLibD11D.dpk(1) MPCommonLibD11D.dpk(31) MPCommonLibD11D.dpk(32) MPCommonLibD11D.dpk(33) MPCommonLibD11D.dpk(34) MPCommonLibD11D.dpk(36) MPCommonLibD11D.dpk(36) MPCommonLibD11D.dpk(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(483) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(35) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(42) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(45) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(45) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(46) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(47) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(59) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(60) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardTemplates.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardTemplates.pas(77) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(62) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(502) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(1014) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(1055) + MPCommonLibD11D.dpk(38) MPCommonLibD11D.dpk(38) MPCommonLibD11D.dpk(40) MPCommonLibD11D.dpk(41) +1728 lines, 1.00 seconds, 897 bytes code, 0 bytes data. + + +Compiling C++Builder Files + +Config.ini -JL Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\COMMON~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" MPCommonLibD11D.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + MPCommonLibD11D.dpk(1) MPCommonLibD11D.dpk(31) MPCommonLibD11D.dpk(32) MPCommonLibD11D.dpk(33) MPCommonLibD11D.dpk(34) MPCommonLibD11D.dpk(36) MPCommonLibD11D.dpk(36) MPCommonLibD11D.dpk(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(483) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(34) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(35) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(36) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(37) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(38) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(39) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(40) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(42) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(43) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(44) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(45) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(45) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(46) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(47) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(59) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(60) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardTemplates.pas(1) T:\COMPON~1\MUSTAN~2\COMMON~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardTemplates.pas(77) + T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(62) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(502) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(1014) T:\COMPON~1\MUSTAN~2\COMMON~1\Source\MPCommonWizardHelpers.pas(1055) + MPCommonLibD11D.dpk(38) MPCommonLibD11D.dpk(38) MPCommonLibD11D.dpk(40) MPCommonLibD11D.dpk(41) +1728 lines, 1.05 seconds, 16640 bytes code, 112 bytes data. + + +Found compiled BPL file: T:\Bpl_D11\MPCommonLibD11D.bpl + + + +Adding Package BPL to Registry +Adding: T:\Bpl_D11\MPCommonLibD11D.bpl +*************************************** +END: Compiling Component Package +*************************************** + +*************************************** +BEGIN: Registering Component Package Paths +*************************************** + +*************************************** +END: Registering Component Package Paths +*************************************** + diff --git a/official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.bpl b/official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.bpl new file mode 100644 index 0000000000000000000000000000000000000000..b880b4a57130d3677dd23845cd81f75a47c61431 GIT binary patch literal 303616 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 JP5y7S{a==^eV_mU literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.dcp b/official/1.7.0/Common Library/Lib/D10/MPCommonLibD10.dcp new file mode 100644 index 0000000000000000000000000000000000000000..afec950156bdfa180a14d75ea85e0b78b6c488af GIT binary patch literal 600020 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 ^ejfM-Y0I;m}tv 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

BZmJni=uwN*fz-fjDiQJIZ&>D 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 T8TNc4kz)os*dt%#XPNaE%&c>B literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPCommonObjects.dcu b/official/1.7.0/Common Library/Lib/D10/MPCommonObjects.dcu new file mode 100644 index 0000000000000000000000000000000000000000..e11222ab29badb94d79d363d99a3ab703d440c43 GIT binary patch literal 53145 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPCommonUtilities.dcu b/official/1.7.0/Common Library/Lib/D10/MPCommonUtilities.dcu new file mode 100644 index 0000000000000000000000000000000000000000..c47203b071ab1a518d5ca2cc6c63b0a9169437b1 GIT binary patch literal 107737 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 Z-{TVUKa?lrN(CR6`!#$_t{dWm{|n69(_#Ps literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPCommonWizardHelpers.dcu b/official/1.7.0/Common Library/Lib/D10/MPCommonWizardHelpers.dcu new file mode 100644 index 0000000000000000000000000000000000000000..01674cb1263e222844c9225ba5ec38941dc4b757 GIT binary patch literal 39452 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPDataObject.dcu b/official/1.7.0/Common Library/Lib/D10/MPDataObject.dcu new file mode 100644 index 0000000000000000000000000000000000000000..fb0091786b447128c12865b37a12950b03d6f4ba GIT binary patch literal 63771 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPResources.dcu b/official/1.7.0/Common Library/Lib/D10/MPResources.dcu new file mode 100644 index 0000000000000000000000000000000000000000..d0fdcaced0e425776db34a81438b339f8f08e4b6 GIT binary patch literal 3827 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

rXCZwW;IK0Zyd6Ql5)Sh2ho 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 RsYCBtY*mv2Ww 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%0DXJLlc{ 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPThreadManager.dcu b/official/1.7.0/Common Library/Lib/D10/MPThreadManager.dcu new file mode 100644 index 0000000000000000000000000000000000000000..11b34063b9da0cb9878773bcf4ba73b71537c8e4 GIT binary patch literal 39185 zcmcG%4_s8&nLm8y&Ye3mckcXynPC_h94xqMl?5YNNi_??5J^Q*Ktnb}ComwEKZ;;w zTT`ggl}_l!ZtW-Z)op3(Zf)0XNouyVwXZZW4ZCH3F)7`+DNSwHHrC=w8}e!!@clmL z-a8D4+1=Fa-)V@37#O|1uVnp*4r`g8C5Gijf_xUFShQ**SP z!=4+e%@_CCw(jd_YE!9xv1LcTurCM>m2I8vbtB;9m@dbhLNYk!GHohu#=%Xlsv_MC0gh656FRFKIfkFVa!B z=Nv(OacHz5(%IaxDbiXGw5R%&py>?DJ(m{fq#?o%wVHK7p@p?*AX2gv5fFG z&Q(!ctEgY4?s%awsqijs{9-ua?QSqtJycy*(wTbU$p*QM zY~S7xsf#}R$ZNBWav|ys#V~XG>Q8>_F_>A^Xeqf=a~C(Wqmb8{{xVwB-X7`dPha`X zMyV3jtqojAOJR{Zp72krUTw6O9Vmxkn$&4z`NZ?lMhVJ`ws&x1Gl;43y9c)g8lAe( zntFz5@X4A8MXgpMupd^+W2h9@{InV(XrH3+ej2y9<&`z!bf30>OW)xVin^Q=d<*t2ZM^l(mvnjn+-NEAPDj4<7_-XH#o^+lLQe9Of$3ihSaW zn|5v~;icp%1eW6VrjDk%NOL8oIi}*<&;IA322;t-t=m-^vAS$a6{nVVRupY7D(68$ z+B{b_Z{8lRtlnHjh(-^0r{=c04@K)S722aM(bkTxP|)2dR_@yR!GAdXtGq_@maXCK z+qZ7#mBa?{@`MJi;_cz0s_?GL>dK1nmXdJEx2UnA`o8K-lVAG!*Bfoc&20yw>Hsf% zb)&b@TM})Kc0?Bp?7MFr|5l?+#!}n1m%h0dZTTb%AB2?Cmf?+!sie%NNHe^7vG(qV zqFVEc_NF#yuIr^cDOCt4n;>h+u8QqtTep{0)$A%O*&Mzz{L4JVrv;eJTX%*ltCoEm zxb%g%jbUJSZP~iLylC?ZqPVNIisOn)S=f40*+ZMa`dQM_U95{XZru^qSbv=;f(x5h zm6eBg6+`;6;-bx$iNq78(6Fc)Di^BZ=I1~CaHGAl^T57nYrU#q$1QwsrCt+1H0Nbj| zs(ua=qZ#5ybw^V(HIr$nC~B?W($vgDqp7kv8r{d|i3QWTstti?sxDafWt-U4E{F9*bYYlQ0rDIqn zT04#ur8P9#a^?UH-rN7wm^N3>S=j4^NbYQ-JAq(xTckc(f04i`3E(Yl9Zd}gp%gw} zBBUn)xgEJa1g&WO8lk-j zt#=|QA!h-HA1`dVtuxx*6<_ZEjnL@{E$_-#ezuU}uC(qyi6SY{a;i^7&(`nblhRWev5d zsc}!V{Y|P_JNEI~fsUV3)zPu9s;MO&wXPCOQTtNYqraz~WUcqM_KtH@PjoL;=AWuM zjr%R!@<2y>Ti2U_HyCs7%YV7>@*|D5I!Ymtfg%u=|N6(*F_V!{gN|l0rV2uXR(~k% z%tLVVIY5rOR2DTupKz1~=R z*88;vrL1yKw7I#ot+_th{^WtDcO#+Xkg~eA){S2q_*!F9e zH#!qX6h2h+@wLhpUEliD{}Jl);~RCcE`Kf`|2Qh@0u9!msLM}Spnrqf+`9WV2;=MNyFkrNQ8} zfAEv6=AAovRgAsQCf-G~WouPgX<2ytC)o~_C=Eo`s`<}l7Ci7JlO#aUb(5ds$}cVExUFWl~wI332!c{Nf2};Uld_` zb%=V7aEz@^did2xR{E-F?ZrVt9Y3geB2xDu%J7b{7w=y&@aRfc)y{IY;r8hMP6Xg% zY|X=`);^Y<6z!-lZEA<>wes86&W=yA<@w(*KTguS=dk3S9Ql3~DWFT$lU2SYP3`K2 z>lpib?AeaTSL)de$wkra7%O`-w{7<_ukPIQ9kfXXuQPpqrY!vD^u=4aEz@l ze5bl~S(@529W{{!7clw8eZ#NqV=Dt(f<%CHFrG9o>b}_-_Bzf4<$lETHpE4CgxgGsD9* zA7^nJ-%WCiy>#^r^HI{Y+KsNqc~XA-`~R`^6Qt>T(i~%-zah;YTj@`O-A7 zr~4d#qNsESikh*;H!w$a=AR_1AZF=I_A1O{zjD$qNSf))g1Esh=woZUpojS+Gm9-tGO_TOmJMekLEhmY+|7*ikTvDdjg_3mh@ZKJ!{8e-9K zEP=y3HA9pW8k@avtY`;M(Yxl-b%WqyBckYGnIieOkCjMEO=Ye1(L+Awu;{+lz&yVU znM#`@jR$;8mO`ej&Gp3_8<_uRAqhpCd^NC=*F$D4<8NT4w?dMd_oI9>WaTl2`fgyG z-l|*fi%T*uKPF**$PTeg6S99UjGQQpE`UP{iL_WYuq{2mulvyQ?0YO23)j5*-L@O7 z`J|^+)pi4Gg_Qba@{li1a9y=JmuKF4`G~9j?T_6|Wk-)4YS)d|zEJhoIJY#JEf1WR^t$1G2&04ADcaP~U8`!~HnP$z2`E->_ z+VmqgAM-$AnrqW2XY>vhh^0@p4-@lkg4?LGhhQ=SKm+^CY^GD&P^gD~(R$8Zx6E=2 z*t<;>ARzyOB{S~!hlqc~48PYFO)fs?|4zuz#2rtUR|dmuo#FhfL|=nxE7Q&P5YuS^ z$~>alV;MW>LgNCx@%&6I2Oh{*vu?JRTCP92R1*e+mFC=HDJiT-=doZ!;6W!D-K>dN zRGnOwz~X&z&ss)GDc4yn7z0@7S!y?n5}VnR>*v@c1n%`x$WQ^@@R+G{n;)EV^hY#m zyy<59h~d744%Vc%*0)(Ic}{6_=Yc&5k+7TnCAI%`ygk_|?nwyYWGX2%=XXhDt^N1l zKDS-frQ1*3m&du2;?cfWZ@<9(Nz;1Ek5bFhg)RH_mJ7@jkJX2%*uRy7sHPyf5w$B4(8MBP&V<9fpd{a3X&HR6f2HgCJBZPvoJ6MEZ)Q=<*f-4lBL z2(^A7u{8^cRneAxKDLxpdR6DMKnC?hQg_52;u4z21#PGFwvM^PqY{UI*ewP`2Rwid z)bf1Hr4`qpD9ptiOmVFFcP04RAx1Y_V$J_o_6daNC-s%*Nj+^?EIf;l$SP4xe$u&I zA5B6gKbQE0i1EXS%Xc#dkJR_#5#JAG5D%;M8J$N1d-7IDDbn1KPI($w{mqbbD{M)R zmo)@{Z^c846jJcm`a?M7|+fSc(Zk>=Vyjmiac*oy+kQ?kLlQiU1EmmykR6T4B<>rAO=>xWyT?LPJ(S*=#*_$Tu+f%zO&S5!AI z-Rvde{`fNqyh*ecozeVBp)-oF%&$;uy8sWkTQ;!i)Y;4rGddgfL&dHsd54kji9=-3- zqPoD!SFatRVXr_vmkCcfv{7Jxb}Lg-&*d7}#+#Y48VV^VYGCW$(!1i0re_{l-^#e7 znM(1QY6Z#6!$4r6m^shEa#>^`UbY@Ej{&ZliOK_^2@i7wbpw4@K`lZhzNUN_d7gRY9E-EMAE3DReEgs!Uaq6x! z8zp9M$0GwdqL#ryrUIRhe&VCH(q-b$4-u@ZTjP(V)#pyw=M&pJG44x=a}B;EXS&t7 zrcF+5%FSs6SuIU7GGka5VsWM4)%B04>sOxgEHcZ{bK>Upowxxgl+^0|EIwuQe&+kk zzffleV_bijGg8RP58c$g=vuPvex3E=_Mk0UYvhS$N}paJhTn_p4g3~lVTW~Ii$~iz zTVQ&3vvFeg?{V?Cc@shzPt_q{pU!mgc|FH89!!5sjQ=h!=K}lA-&qdm+%p$Hl$*EQ z{uLcgDaQ^yt*^FEvxL>QT}WJQvBc7Xc!u+T+PNH-TkOzJOOfU;iM`ZM^D_zkkP{5+ zte}WRS=|-NKS6vh;p9jY7)N_pRn$=KV>$7K%*R%VcSY)iINp8}-H+(qV`*Qsdmgye zRb30($Eg3>1^ru!T2-P3mNYl15K47}U)DR)y-4paF$0WeZ!bF1Kg*P74jt2Na*Vus zlJhv`T&}OZcOMzYlhe0NQ=ezwM0RsjXL0nuN=~Oa`=fN~q9(nIu#cxG)5O0X8Oq)K zA*sniar?bl#Roe@tS(8_;Kxzk6g0R_7+DC%c=~QyV(qN1 zoP`FAj2RePMav}n>@xoU1fWrD?mR98pnJeW}LI%!y;gS8V05c^LWR%_6@ z;x2=5+Q?2BA7{dh5j~zUGNT1Ono22+W`c}9^EmZxCxG;*iU|t(%h!R{Qgz0aVR$ln zEYJ~BDL*p=6g_Uxpmh&1u&@7ZX|rX>$Sn7>inB)L_e{nZOTmFjU|qy%>oLYseH+Z! zBVZk#L*NLFr~iyOz`aaIh^1ALM!-TibkSjEO+dyDEHybhP=wy52L+)21D9S1++r`$}q(IY-{(r{Qq z5xGtUmr7J)sYxK})rkc1AdOFvr6_@FQ+TbVHi7MNy@ipSMyDyalqb-f&}k&q%b9Rc?RXmz>82ZqQ)xaW zY*eYLE!7FkPHAK`3Cy9r898GN-9no26?N!&P4O~ zar2+nFgbJfJwY}+qrvm|u|5+@RAB}!g9*Z%)riy?*?OzA-7*Ft_Od;rB!s|L*-Fb= z@byW)4Trlwf}Zc0?D9xZ0WP%N@kqyQ*c%Gt97tT<4 zRF!_rGL|6N$#P0`Y`Ktd8Q~Pf8!ROkfmAY@6Y-QJzJ7UF9k*Me@J3 zHGbp;n^^E*nzuaYTxBj*;{{_&5mvA2U}x#p&EdJDTKv+%gW!5iN6Xsq5#boiLWrHz zF$rq`Te=))U^>E7N(c0arUl`X#c|418yMQ zI#Mo;pZGHNcqUL@9c3xq-q}iP28NOiM5>OUbY^6dfT95J-{xah#TjLsz{?k5`avs>A)WR z@J93$K?`BMz04n_aYZum#thB6G972u6Fre#F}{v$Ku0*VyiVU5i$W8Pa+{8K&3TX- z@w-K_mnf<=ioC#kxSXg3CzI7=om(Di^rj|NP2y5@UKg1X){t7A2(t>>wU zmM}#079zKos4cJ4mg$6O5!H$0gh{9KyG?{TyC#h?A^&ij+{iy#G(_S8lx?E?W50$$ z@Z(Q4kt&rj?0wf9Cp;d*pjLW**N z5WPA=QXk)d*(rke>2PaY2S|~|3DvKol*H!?XgERG<8f@_$v?1Dggv2Q^Q?0|EpXeqyrPDbV#&4bcisedzaR+sJNsH%#=2=%04SQOr68ZEM zmZ>6^Cwku*oyM_X3D7&fmdNp}PMwgDtyj6$n1+b2gk&L36c4QW0&ln46Q;*GoiOo) zlL-%~4Bb|D0`0I)Yu00{E?{b+BG2n&`06bGfeNCBPB>#3O)$+!oKjtSX>k*>)UGEj zlL^Ycs8d?zHawcTrxKMjs?pUIl4X(NT{GgzA5Zn3{3TMoDJ<3pS;R0&i#4`d$#csp z|6M^BZT8smZ3uN^oYj-g96g*}5Lvba*Sn-4^tpOLkgO8T)o~4xI9F38nyZ&JOkPra zpmW^`%heH&S;rETJ)t$BOk>)}o>T{MbVw*YXqn-oIF2nYMj^6QmeS^Z{6LH`ABld2 zw>|1yr2wJMkGA$MAR|Ct)sbc(anu$Cd_UmVbhsUG{xAT)>T1Vc%hviOl_;oDu z3g2QXWJcOn*_oUd#gw2Bj5)hdZkfY87 z{ZE@o|0WHQsDG1%^l#NLd1hTvf=^ZY73-A*rQ3BnTcX}{+N;*93AApVR?^g{lU=i3 zOCa;=WXe3P>co@Q$pqq5oftg1l6A5v>r?_+P$!$e$C$QGClF<7L~5#f>>VWBCXrd5 zg!dan?){0@nKZ*X*}Tayr`qJHvqEXaV6mgogDlfv71Mtz;aQQbw21o}KaOA`a`Y9v z*;C|h35U%{*7hL1(Q)x?6nT4|4zwe`pf5w~rvX`qklN@-OR08bi~P(0&nVCkIacI6 z+N#8EtTrR**`TAGK+R`)!%YN5i3HjjubpAs2ogb9Cy@SMy zG+H6AkP%O{FwHAh|{)eL9I#*Pu3V5Y(Ds z%6^@|K6lWMrw2gyk#3LcX!jg?j>7;M>4Zj-hu?Ve6jgO!eN_)4CdTzYpwliqI9Z)Y zbxNl)>;5i#L~g+X`7kHM`G-cMMuewZgwlN$F9HG{C>z{rK*(9dy)TIVVH($I-u!82 z&O#5qAO=QgRA+R8`PMl@xU)J=O=J^}1SCu;KczJE~2sA<7W!YU_rLamHr;zZYNHhjdA`L-s1Tw?~8wc zaFJg&-2HQgg-6{ul$!TPLMQ&wK$a&0{)qDY?_z1grjE>uV&+6zC@f>wsQWnrRhY$O zUZtY`=+8xd^}r=w1U@Iu-SW=i?k(!tKUzq&;k|xi!R5Uda!#;6PU!XjABBDoujg{V z2mXH|`a&sp1Aw16{n3B(e^0_Coez31;TCn?g`(^R0KXjkqyHB9p^4_WcYO)%y=0xk zF}8aVVLlDme=Gw3?}8khkZ)O0(oLcd{4tHqZtY%=yZ$Y@#4KOUPx$!mjh-9If9>j8 zfAQOHlysru!2dx(|B9Y|Xq@n%mP`E}`2VihM}Ov2}*wpRX}R_-&Vmrey+rad=H#1 z_T7W#qu?J$Ht<{LlKV!VH4IYuE&BKpeIx=n>V^Lqb>$AuEB5cPn|JKQF!oya&)s&(>%(yaO(#$GD5thvKOLF}cY zZ*(|0Vf|lo$dMP7*h}E@LS^jr{$izqRE=UphL{!VUvU+AUq?^u8MHx>QmH)F5O zNkBwDj1%>T-&F_EAHG$w$7Nt_FRP3J7-M%TJhAX^oc~mPv!Ty*xeI`S{wa^9lm=!MSYMZn)M)YQUZNTk0)+4up$aK%)}q#;E~SLPJg4laK!eBvrZZoHvawAFI9-yQR*WLDK$9 z%B39R3vDD~1qK|}vTo{AlNS?nP{G`&|fcHcvm z*bll7-(h!8#vfqhs!T^-yagTd4v$s;K^=Jap$gXN8Qu!F`1X33@LNyegOl*V`Ss#` zul7~=ImiODN~#)BCwN>rz&HToZRSyg0PQ}M#X1xej$BwCN5%?Oy~l3Rq?^PD)tMRF zW%*$58z1!+-}esettyGLE&X8U4TK{V5}yihlfKA}RBpO4cxPG%s;DJu40S$V{RfJo znylT2|G=J%kAn0Cg@GmgbiV}mss|oJE~dWJCVJqp@=kiQUE@Byvy9;Q6=rC2(-ZBH z_OADM!ywpjew&Ejo@hwTghDOg6?!5X!tspyQl@&;=w*DNdiA>|czhY^AbPbYtyvp? zM;25jz2*GTnYYCVFfYQY;WOhHAlQ2T%1fpYnJ&EbX@y=5pneOBOeK|P8T`y-aEQ8 z7l&fSAzC5$gzx@H7VEV47i(VgQgN0cHrsz-`LF~je|MTDcI9)%SfNGrsv{SiM{Z?& zxY7B1_fint$?7e_4PHI>Cm2OZ&ty5&{1MzDxT3h4aN!F`Y(K6}TsSmm_q}o5_nhH+ z(sROf$8*N(@^j*K={eJN;W;Vx0$*jw28bOiK&!@%?n4T~ z`aAOCTd~)ja&=ydT$} z;VQjJ=Kkqh={D6{j2K5*DmI zDp+my7cayrEWNLGc<&qS+r*~^&5ONkyQ&@@@2v4)_k#2J?H1?rg_iff68k>HnYTD# z5D7U}Rb3D4r)GHfPOuX5r+cP^hz>_yqyPaQ!vY-s%{3{-wf07?0v8PKU2N0b}H)Pr7DWLL}c#^zkTE*7WQNq zY`PC^Vx4A!-Mns&6{ohPVP_H?cgvbf-cAi&!{l$$w^&Ol0HQ~hoqC2qGUyt$5Ea31{$N5q#8b%b}~BP7|K zpZaSeDzf0E)@6L70LwjX)G{^+8X44u~g@g|` zmnu3^Lrc${m%;F(uW5G=4Odkl@;cu9db*zJT~CU`EP5$Ed4R%%-p$yXhBIMd}rG+B`fy(*v;NM&ZAF3(C#M-q0Nt@bl)4XAI#rv zcw;|kIC5wW>yVBdTE{v?1Ww^O!_hZ7)9xFM?euG2UHCEi$jAJNXwUF#Mx-F$1k-Pc z&^#YCrsy)Q1!ioTR&+iOasEwJi&@JA9;H>_e`UROmOk2sIrDwYGJDT7Bsuf0Zp}DE1R~ zhXc$pT7=X&77q^d62;QB{nh$TFjoF~%#5jYCLU2Z7eo&f*fyQDc=QeH&d`g?C0Vmlr5RYo@zzG(M78>H4`u65*h9 z{gEfJ!SHbA6|vG>-d2l9rRzYeFQ$E^>-tOAs;spj`Cjo4k-yqS*~%NSf9|=~1JOI= zo@+nv#@%||^BwpayPg><$E5Sea_{U|dmW*{k16V@*d7aO`&Wwml(Bdy-NMe80&4l& zeVFCpceQYI*5%?0!nnXvcIVP641 z3a=RZ%_E2W2m$BOdqTfzg6`%mcvcd=`GZ0QRi>rt@4G8iKT6xbhb)DNjC~swB zP6|be@oIX%ez7+1gZNNCw!}o8RWU#RR~-V(eh}A_A5tVps>l2|euIiv9cKOx;Vo^r z9h*?l$3xw!`yPzoPl32oh;555`2ykQh*inry?%}NdXx96&pXXx_l>GhZn+;N`qF*0 zs&yZt@cP$iPv;ZZ08vyfVI4^*%o~JilQSUH7IMQL${hHIPFv9*{x?-J%%Gh|4!@Dq zX^nNh3C@P=n_{)Uh!y+E2~)_?u*)qLX)&{E^Z5EQpm~?jL?9Oa1#I$WMXVS`(cmg; ze)Q16^%2qin$gL_^Ely`IF5Au_=;_IWlZZB4A zbR^L6Z*kSo76^zV7v}G+=N~HcmEVf}9uklV=10NT5d~}c?w-DErKgPC$ve7;FS$0w zO)k{427V*)pPeKB7X(b*_iw^*PbMb-^y8qoz;9{-&tt4_TKH!7`p;tjGnOW}2OrvE zp%`vKrs1<02Q2!L5+4Y}jumR_0neLv&W%bJywLgi@E_vR(_8HlTItaYr+9x*`@vrA zb=3o%y?+nls#tL@@2g@EHKtGY&blKXK?3GXOviBy24@npV#VwFO0wugt|SYm1Nc;U zTNGTp>fxV${+a%*?}9B**p#asp`2C4yX4z;+PdREwRhyW8r8R{nHK8$iq{``aXB(H z{OLQf!j5h4l%~5nHz7GJnalDDv?9+)v$cxqyz-p$#);sn*R;y9#|x1J!VGhhL03KB zQb*9a=6~9jI&E$r{Yva#br<8C>8o*r>_M|d45Iu0w#wMQYg13_jVAgg-WNYZd>Nf+ z&Ku`Rd*elT()OI|mFD?>Khx6UkRF68Ar4X#65}g#VuWwS*SGnr2+_sn=w3mj(K3Ns zY9{Xk1Z}akV3^6++Qf?2-l@!u4~CvB>Lb*H$z1Hx0^HX*k-9)=$eZ(~%}zC&(ivg3 z>eS0RQ+2)T5$Bnn>FKte&-ZRmjmmBZc!{-iXaPOxdaBTfihPpxh zib3~h-jX)5U!Z{%S82fxhq1-#JncL33dcN>fO&+s>N|3QV;)PuJf>m3#WA}RFuOGj zP3>55eFCOl!_WpUR=lV02t7dQKk^lPs&NUAL0-9bkz?cXrD9_et5ikQjoo+TGn^BMK13)&XvFYY);sXJj z-^41_vEa#!N>qG^4~U$mzqnbAuW?uUI*fou-=^b4POdrkb-sBfn_(#n1F1$H_58mx zgH)^1FII|kr-zRk!&|j499d1R3k)Soi(})Cc$FJuoyxX!%~YO%VJn&F)X(jR$B13 zL5sl(q#aic%1yY^EqFWM8U;TdMfi?~L>nXrp;?n~f& zB9U{Bf?wjHeJKB(ZQYiM7H_A1ZIs9#3?GWe~!hm6@KuE8eUdU3gNjhnI*{C>qTsp&PGcimz%S!OmPK=rSG#l48Tq|&`#+8RF zA6Egc4Y-PMg>lt_z6IBLDcxXsK*6`0(aT!iTTsX~1YCy0=CummynydFh74X@ZU{ia z{QoGxF!V5DzF)ytDbd9`bU|ayRq{oPQh;lNC>mCC9mqnhB%|!WB@2hmRF;)6@Oi+y z0V8}K@Oc^@ccomEgmoT6f#?^i1)uPML#Yuxrn5#_Sietc5CXQqs#<3O;hl7Jlp#ExE<7+QCfy{tfRtmS)2(PY(zqo{VJo^6$4FJpHO5LcGNu?%o zy!G3KQ_=%?tC&m|Iml|Wdd-MQLg{Tmsg>YreuR z?U6nqyq>O{!pLfb48tjDB}TXr_ob@;hm`ZuItprF?*fSn(V$--UJR7lxxUI|MXjw-@0Gw^~m3NM9*qxT#3V-R~i z!dpuXM}5Lx8Fh#7>yUEToQpomhsgR%gwI#+#S#Qc}2Cnz+7SGj3@ z%4PF1Q2I4$kKwYJ!rxM;O%~dbpd>a7D3jRa-XSp%qdVaHCc2odA%ab18xd5|{B2L~qQ`4MvW)3s0Z3=E+w~Ck)f_gfQsB zq+f=0Nwx@cB}__1@GI$pA}$rMe8&HChzcf1mXL&qY!MWBtt1GNkc7D-iw;>tyMW-w zELA|UR0stmVLj-U3F)Y>#M-EcYoTqwAW0=+mhx>OL^V;yn(W8521~a^bb$9V-b$1u zl#_(}g=LCGNRkC`_kkDs7FUYPWLa2?o?M{Fz<;7>ffN=YM|n_KE<6BA7xjowKiUwL zAMMleo3jj25?6`KIE5l)xTb_Gg|l@D=|E&zToxLj1C3mYR+2I>4s3=MJDnyR|CyEl(1D*<2b=e_95OfU%`_Rhqw&2JTmq`lvWq=o{H%Umc$hZW- zfeVd=9S}GEpXh_46pCkkne3CjyBGCnI=s^)+ z8i9;QDn?B63I3#XDBc4(LsCF?2mui#at83G@i|0?D*)L&65cN=t&x_A9x(|CPe4kS zS7CWT%>w4P97zvD4iB*O-%8NAq^z!4x!*O~DVv!}*u$V})~)-qJw_$C6e-;vBVX!N{d$ zWJqX?9PWP15}I`$aScY60Zl?a8YBOtyB{*`KyTzuif9pi&~5rG3~q6V5^0I+EopX@ z1ee8(^S}n_;u@6UUVQd*%Lxv+oCkVI$0syS&H&lgNDqr4MTW`!&}BNfFD1A7t&kLw zav>+p9%u)Sk%g&1E~&K=rwOV#FHfY70aoDtV-Co9eWd)BF&dEvbj7`aogN$vn zbwA12Va0_Lne$4{F~;)kBEBVX*uEVnCIt@VZ~Co~Ao$Yzvn0IZ%2aD=F?Aa8{cn?X zBBjg7B)qZKkdm2lgNZXnJAQ3`m|%8mjq^&N2fuP=ZtH-z%ikI3H8O>Ht#1EJ>ZyP= zEu7XzT(Yfs>HSn#VO^b$V+oI#Z;j%ovQ2W2JYt)&*E-zJR44X$E}_8MWzToiI(i)g zjx&zKL2SD{(gv$lu9eGe)k>E#tPI%C+T9Lp?LA_VwcI)>mpQJuuDVX845pk;>B~4y zqLo=^tlMOqu1KuhIxU-QcuknVYODiBL4eK_=9)3qT5nrZ<*-~X-?oo?t$_ifD6ojt zL1T&d99O+GiWG1(gk+Q#70|>jvK-6%Jc#-FPjSz)o4uP!EGv z7sJoL2d!tUXRR~NGsO9{HHmpG8O~Qs$?sIyGp+PpuUc7p@TCS0Y1@SC@Cl=n|M09FjzqD%UuNj2?+)%Kgq0PAq;i#?|tat=icnGD%#G-wJIV=}haZzpI);pXiLJ)C&N~AnOP+jQ9+5}oOY*o}ZL77l*!J7bks9;R zV?e@fOg`tERq*@34RQ_f*&yf3R&sDEixpwK@O)*X7ms=EEmZ=fQBSiBwtDOE*UZ|61rAD2%MWB{5P1w@kA3Apft z>!Q&jvjKS++|IeqyKrJAupxQOh-o`4s}Qt44+#8eM4lifW6q3yusD)8Yl6l<#Fo&w(KV%Z_8F&x#P0?O!7!__L6JF&15s!#z71IC>Sk> z5Vk9*%ObPduDT|ONwsalC?>HQTaWvk`)ty9QaJgN=dx#m_ZUl>G1l0kwocnw+hyAd zrCgazTH&1_cdoTfCQp!%5!)weaz<=rO27S-{hWQm9`PSeo1iYDU^zj~+=MP1B5SeD zcqWW43)^q&a-a81ppvApPTPokI_Y-OOj5sZ!iaCrciFhNb=mrD$8CeQbGGxg5!<+J z!gdvGdpHnf8m5-ncHA&I9+e885AY|s|Qfd*h_ zY^QCeqzUrO(>DAgcLY0&0g(7`QW^>kUT82DcgWzu%Gje zE}5o*&e%W%pWciaVcSo%24%)J0P(jV4BM^}#H1LMOh{RQh^!Q(_Y=&jn3UU~+Kw2E zqZ~l&idFGKr&S2YIMo5ft=N?nfb76Bs@zT)$`~i8S8*#-fIcEIx00DY6`UYws^V4b z=;Kj|d6m^}gLjIcK_ykG0rW9}rQ&q@aft<$TK5LH{BDtDDuWo(6B5f-P9&XKGGVOu zuocQ#_mI2R6Y)enO`aCdeorU5Y7p6K#e~8hyrx*`f!KQmman7=G!gQZqU4(7CSaQd zR)AhwJ#2##bmzMx?lJdO_fYb9@_=U$_L5E%Rc-UF{RLXQp zO(2?fEo~~zo}QVWo&Gdsbmy>)e3}CHIs1sc$Px8>Q%5pBL(7~BFr=uU&#J^xe-HWA zFczRFMvbKAoc(aHg<$9H!}e>?4AzEWaGFdzMbHsQejJnmL`(bGl=JD6>E{W45#4!H z?P9vbM(klnm%o5SAGKe!&tN#nN-o;B`3)Iif{r19X-db_6p4-6i!%0S>?i2Beav2i zVJ@|>F?)Yne(+p|UCeT@ar;C{zF*HJ?cy>IyKKLla^7!Btxi3W+Mn(Y76i-CaJhv| z*r!uE17|aWLMwD}%|4z|OTt~#jJy)j)PBZs$q^Lx0Y7E0_IDC~%6`pm!k|_O?3$fN z+9@QBK}VTm(mCz4yTk5Y&pA&SkxtvE>^;y*j>M+y<&F~>69m1DJaY=8&z0D;eKh@c z`Za>iAosKe?BW`U-L}(Sp_ayJaLm}VAue_}Gxk1$;NabniNRu}F*xl00fN~bCPxim z>kwRF@&}OF;Uc8!zs5@3Q|v})&`o=hSNr&;0I+EbR16!2ZquH({pL^2OVA) zEzh@;C{7i52U5oUc)%mGd`HC5=NN$&hN+_>#|Fn>hLDMCQOA0`dK03A1mr{ zP&Sw9y0|0~>I|*GW&&~05ecmpv61R^3}O>>)^X0!63Qb$pJNo_jXNeB`$PFyqFBG9 z+CA+qpdzM>BjPNgd3_2k*3ei7LBHB{+IO7qjn1Z=ODXcNCB#`U8FAIPyWCAlw6xz& z3MQ9P(~ID}O+>`Bhwdj?rXADnTB-{X>conDTBb89vLxn4A=|max!RfM%y$+zDHkTz znedAq@2Gd1?~1P{B|9}QH80RY99SVuzlgKiZB2=!O#8#>T^xLvK3klr(DuFp|ld9G28EpUzTdlA|bI_x@0=&);)T|* z*D2R&*Eo4ildIEp*wyPg?iz4iCR_^&r(6@9UyJJszjwN>YWHi}eUje~<5ZD4>UB-? z`*GK8ejjjEk#i5Y&Mp~RGD*5-Q#AB(*My6<Io@Rg^S z5bI8-Hl=xqCyTm+bPu~*+?ghbQ|@kZcOq+igbY#Rt_`_y3I;Dk*6!t#E$TiT`~peY z>HZ?!dfY2WSe8eUop6u4FT3+iF!lfhqsoN)QDQad9!g2&3{Jbl{x1_~2ubVT5sOjx zJ2Vj{-K$gbQ#Pc8Q)*Jm{nhC$q5Yu^ocC9V{9MxIq%g0Rk;GHjuY8qS-%i@bq19YR z*p~bQK~s}!IW%Iz)XPsUN-j^{mRybGtTs8498Hdrv<1oGi*DsFOdd)e#)k4@@?o;iX|2Ln|I^7`-b>zz zl;i$0{$T3rKtW(It%pWNJJ8W&1I~kIj2Dw9ecRH;(r40Zmh|zSth}emWV?1h&Y|C< z?ya5yUK!+{XZYt?QtSp#*mI7m_RuiZu@UoJplo1%emp`X)%J@dYOkl?a{^nrF@ia( z&c5uvMBsCt^PVxj_pFB|E_(93->050d0wR3WzS_!p7riqZXS7OJYnxt%A~(9FdaCT zekSA0lG@M}A~|h;i5hsl*QmxOiT4U`o;TlH=6#tkW!`Cy`Ddy`y|+p1E^nr9MlJMs z4HAd+cuiC|?CrtkC~3yn@9jzHOF8S$4`c^Ng8dn%me?ig!An&A-V@#+udbjfJL_95 z;a_eV^{()B`nr6leP?~=d{aI{%IcIn3I8D1sCTt*n{Pi*S9~kr-uXm5=5_lrefhpJ zpw9cofSU9b5cMT*5eN2azzq^S;F9+?_*rqBSR`SL*_0uyonh`@ zLn#risfm;(x{sxdr{GoKGscOO{hW1k)-`t**XWN3oasMG@>8029Eou+$MjLlh`-0* zPlJy5_oH~6icxrk*)lh%}eIDK_+MMfm!oP@>VjQL_*TP3=Nu z4An7W988U*Hl-d;?Ij9QeI|lCfm$@+IJpw#3t@Co3otc5mwG<+GL29!-PjS zaVAr#)<9EwcCaX;CgY6IE85AI0~-rm;b+&=G$aDiLH2DfU7#~?IM5py2%H7YwZK%sl=c&{Ms{F^ z+OG%{1!|#~g0!NvZD|HG+9Qhb3jWDE56eT#Q-Q(28MHU0S<~!5;YFIrJp<(diU_G` zcB&QxwxO4)Krk(rT)8|jk^WOEbfVXv>4o1?;V`5?-bE`hI2NV-oTLe+p*JAI$e6rl zn(L{kvmR{DGO6nPOvW{LHqupgI&CCvJZ%LP&mdzSNy93PAUK@XpI#8m&uGfHl2Nn- zYc61;X>RN$$}+k#tV>#!8a^?>EUz_xxOjACw+BB z-V*H35WWl2tJ8QXQ$d;uhvg8iK2 zIFYQ#$j{i2QIv6l%fO4+*g=W;8D+3WSH>x#t@RI*U^Unwo+iQwQ2R5^ayCPR>B~5g zagGZ8D4gf;i}Yy^jS_SuV?1Mw>LVGKsQoB3GMRzE0G}DnSiNN2jOjTBq6vVfGHz$g zWO$d1b1x(4wj~psxt7N*>ONy41p;EKt8jU1Rt3dzYS_GHbM+&K3GR528 z=AQ-&ggCXNgF2=>(n@varB7$a#h2Yd9&sm@9HJRKcZ8D3!R}BJam29(*Jl}aPa^7( zP%5==3B5zu&d_I~(grb?zIt0EKFY#su?)p>v5>J`woUX|s_|U9M(n0)Exs8L5fw{R zT*D&bn%P?M*lZM6lSt9A6XjpeW}9}q*uIVVrXE4gGhG!dd8XCI*?d#4akjt|VwQayi%b=yldwsW z!lrezWu|qkoIv~7Hj_iDHaRTYOq*wGOnCO_Vznk5`Gd07E!>`*vkl4j518dAZ?6B&|3 zVc4`|_MGY6+4BU>Wg{lVauMuDOj~9z;u=-KV*p)%rkvRcwR#2B zE2hxwRkaJ`e8~7D;hJgr>?D*nrOJndk4>90W^bGJk$lMXm;uYx43uS%{Ie#>&#V#` z#x7-9ym++jma-(TbpLFsR7f%gC7&fz@=4j!7nYONq_0Z((wHzCmZk+uSPH^&(u62& zkW7-iLAorVYB0~1Nf)4LwoUTM98=nO&Snp zYo*=rtE7nZu%!u)%A?Z5Qj_%9Yzs-@V*ByEj{VZ3vz@9?UEp~bLiI>D+45YWSMsrb zd{<&X3P=Oe#@Sw6{kR6C3aMABU<1-#!1e;R7c`%i`XRz8=?fu@XGnU&a!&fVJPgT( zrN5gUmcAjKlYTloglibrd6n$4)XXkRCuc87ugGH%+%hJe6=uhz87g^2!0|CbiewDg z0Yh#eT#+2JS8-jFdW1*N)r_=Uwwt$DW}t`}=_txKXYJ;9EGDyCkWA)mBWiXLAE_c> z8}RlL^AJ_9h_eQ>*92IR39vB}sv9J*z=zw+XNuP>NnZ1^*;Ml~7Bm;S@Xsx+Fqg0u z=1F6=rMbquP8`kjn8P*O-GwU~7zk4H<#ON3D6c3v8q2fThJ;BDI)5I~&Ed-&|M$ z3wD|nsna|m%pNvFOS!DatXO&h>oH^E;p$U`I&NNNIbnWOI${3m>~UNJ1a@s4G<&4e z=9TQU`Oxejt~2ItQZ*JVhUH2)hjrwvS)Lujbq?3Cxsbf(JO+KVpF{kzG&0OaAP>``1V*?ZVtvLE>O6o_B4pJRK(|wyT?M?dG;_xrJu#=n&fG7MT^LTWryG2r9Pt7`u`4eLv?ucbGx6exKj#_x+7t z-shfkp65L0Ip;j*+;h)4H}_VX60RtUL5WiQenn}5n|`Uv1kG`-zhR29&#a8Oc+ZHx zU(yto^Y=>{8w<+HYvZeHs+QK2tcYLXs&&RMa>UoTD&t+1rH-2T;_}Mm>qn1FxZzxE z|8IubtcsEoHbQx8_P;Xqbla8tcZ>=Pzd+dp&BT&+6lL zN1ZKHQ6@PZtDOk$Sp_Lcpw&T{VX}BdSvaX&i#TNrJR3Rg+R&WIc%>!I5=1dY;ScGE zcy11jmx|m@T2xz$5TzMeS9Wvww$OM8@lGn&7)sqhN6H=W9TYE>;yJWGULX=SFD-Q#D( z1IwTv)eZXX{DF8{tp6*2{g>NX(-qb0zdVOAi!p;Sm2n#56vhT2!+Zj(XwlN-OY-K#kc!aT;(aX4>v59dH<8H=XjL$IcWZbTYb3J~BaVO(;#%+vS z8MjEZElU+g{C>aBldAR2KGka%U&BXjYdGQjS^acnd%EIxjcocD_Ck2RM}SYXAiTlr zGHITx;n`)f?Vy-8@mqx5=9B$=gV%YnxC8f3QjpjQ7e{iDr*U_>5=a+uuja&@mvXE; z#Df1go45w9WeR(z;wG5x0XHE{2Uh40j1Cj51dL<+-g z;$@1WdJENVdyzWdq*{$F!xRV@)-o)N;7N*{e9S%G%oqcF(tsd6t0UBuC*tAhf4Ba- zFju6w8v=BVXgJ{-CN_|KNBpW)zGajO~mk8QU0-Gqy4wWo#aVUcTSY z*u=PpaW~^G#%CCJGHz$w#<-Pn3*$z{O^llv>loKEu4Z&HRx?&GmNAwxE@Yg?IES%- z(Z-m=n8ldEn94YfaSCI~Ae_wiNsNh%35@ZKaf2|H?_(Ivj3!1Sqk&Oj>~H0Iz}U;! z!`RIz7&{o-8Ba2{F&<}ZWjs0vkMMmnqnB|%W0S#M&V%9(iBT_l zqh36A@MGhsLs2ijb?{^Js6#%otrYp7F#G(M?~(Mdi?i)T#qQjG^}lM5C+tdyn=MVH`!ZQcH4wh zrPM#U)E)01X4;*uxMJ$3n}LdR)DA+Mc;P$0KiPZh+_|N0bJ-$9_jNXbSy$hD$e8oC zrt>Vu48~N(X^c}CQy3>RCNU;5CNRb`#xce+#xR;0O^ilH1Ea#&&o-iuv6r!jv71pa zb}+Uxo@8uetY*H)`M#C$DB}@Eaa_|&2V*xn(s~Me))r=L4WsIea3mNAz&S5NIv@zx| zW-(?krZP@roWhvGIGHhtF_AHWF`hAwF_tlg(adOKG%^|(6~=xp|31cE#vaCQM#0#@ z*v@#8v5oOKV=LoP#v_c)j9$k5j7^Mt7-Hf{!pJCj|xSequ<5tEk zjE#(&88#7)!Pvpr&Ulisjqx~RE8|hdZJgd##x0DEjGGxZF>Yk6V_eI) znsFCn(|elU_b~2e+{O3|<4(ryjN2HuGHzjPWZcZSiE$%i9phTY)r?NYYQ_r2GR9KI zg^cqU=P(v9+8A>fvlufNQyHf*PGL-8oXnWSn8=vG7|$5T7|R&LXl67q8W|0Y3S&R( zzmKt(v4^pnQ80Eewlkh&Y-2pm*vfd6@d#rxqnB|%V-sV$E*E1TV=rS5V>hEYnt z!nm7pKjTrxBaH2g-4gpQOI4!AWZN7ywdJ+W%&H2^%uhkf4f{NXW<@cpD*q~(!|i1i zd5e~X;ZZj!0W?veG}rfnQCQFWz6tZre=GXo1IofjAN@QphzR4yQlcA~Z7*|FRAeu% zsw~B5HSE)~r?Z9PkJ94jlvgfKlLTK5O)wUMA&nzJX%v+^RwYqhJ{g*16iE8CG^~}b z71!Aq@S{g~0LoSmhm!>gE^sk|bMuJH7E+m?f*|S}anl;&#OR6M=GJZ%M zhl9d@x#4}Seky~opUbb0v6nH1wJ-bzPJ zMai1%Qb(n;d`Y>ZM$1Tgg~|PDYxHA}E8e_!3;$`#waHR0SX1q&#mfzU<3i#yIy>K0 zSy{5E!ckCCyIiC6tZs-bYmII)gYv!M-6532G<|Oa?db4H*PTRFq?bib)Ek;`q1O<_ zvu0Tq%(50N$hG6IHW3pQ?4Of1D>rSHj8Cs20`U>MI4vJTJ^c`wZ!E~pfdG`pvBCU6Q;=pa$hHh2 zTbey(@?_0FB%hfDHYot-GlZWltstv7FMlS>9zvIsooSW1)p$k+%VEnaw&p_^<{6@k z^kT}clszO*mb@9(Sq0KRgjZ%-ep*gWp3W;ozBHRH$6AngO~KIMpLVuI7j&n~j&OTn*$_qoEa*TX}~ zCBtgT%h%ddNV(YZ^9t+*dHKvUBrNlm1^L#D>>1B3o{n zJu_|2nLM-d(u3P|h}`z9?4qlIFf+P#+m$?x~~LM0BIGgXpf$fmc}Xxd>@c;z?DS z&!A1-NVMDA`}d#U-5TvNE8Aa-y7GdMM448(2I)qh(a%YttM4mYH?9S}+pmV`-Keuh z+Nm0SMom?9K}pS0hcnAjQO&)hdS!9ug=xp4>#28qKeja_eeUDxbo!E|_9|D+Vn-1D zJ>TB;;TV_tmXt>_(ZC`#UY z^T&lqO+&bDq8%MPe!D&q!?Uo>r@nsZ!i(OHesT=5yXM)qLI@+Za!$M!w1dXJ$%z<5 zhJBRR^G40-W6}3M1?sXJ-VC88sT)f*T1!=hYel84rfOw52HR3(gDqU7#~q74kc1lg z%=8^0v~v8kooGjAr@5R}mZ}xi6%MCXzKgDWSy{ELHTtQaBGva=7llx=u1*r|m=N0Q zx4|#WJJb95FK;*&{qn;YuHTuNa|W^MjhzhI$m}#rU~Ig5@{U#CZ$XL~L!?NRqA`bP zj7)QV4DQ0Vr-jY9XEsuL@hmCT5lw8i#Z^;-k!5jJ&GPcfr5WWlj>XQZnl(~Mm#ldB zmn$E9EBe6+;PKII$Ip!?{s4;Tlpdj9i+li!Sfx(g38w>>v1 zgzN&6x1Z?71kt5cS9?k7VIPH#&qGLKK#KZ*9cWEKwAc3$WyyJ_xBv9_*690w4kf+z zab*bQI8as--5BlZA=~L#QRJvuB*j&J-fi4%do%hGlTvrM_sfP5N~*o8cNft{h0@ka zVsC!^#b+fZOVcQbcH{u9B&$pE{kP-wH=^rp8CE;YdPthlGR^qwK{slE?)nZe3j4$P zN4{u6k?eLMo4%W#3L%tre$F5|P0se8q&Yu5TY^%~Mxrwfq*r@=0er$*N9Mh@_?u(V zPhN=x@9(}VBtfctM+Va+Zzj4CzNbI$e)*m34HuQZzvT5Lp>!mul8p3*Yw1ayEd22G zm;Ju8=tO&_OCg#_jpq7(O6IG!V?B*ijz#}fg?M{^RuUqf%vV_uP4Z;igq1FM?&&8fAw?-CDqnBL>H~otqHMuBeG6CUOMNBoTuXte!JON`AG=za1eV^ zm93zU7+1gzIuk1i9eLHx@~TQK?a~&OZ9$9+7A>jbC_Iy4cQ~D}Ahq!b$#+zOOv|}O zTw73;je$u`rNcRfNUNM>96+3GHI5~Y8a;x&tg6Pj*yTJwkj5+!&vL9nUKTrQYbU_p zDj#aI@U&Y~fr*L&^uc7m&O=aPts~o-w`2+Y9d=iBHJD9=x81d<)>-a!IURv?oFz3* z8~W{WI#o{9(yH{5%2IHOfnQo_X|}bX%2FcppI%ZErA5prFR5@<=R210Jw>XjSX5FI zi||=hwi2?aTJBi@l4};!QdR9hMpirX9krDBXn4=4%Bou7ATh?`jx}Ko$|}^cYF5e0 z@}(tI3YL<}#hA@;l!lZY%FXt(RAqR~5am`oj0&u=8sVtZXO?TNwDm_UADIuJD^^p6 zu=Ui=cN6_sZ9XNfwzg_XYWVReA1-iB? z=5}RHnsa{YZ$1)_dHyiM7D9KCYzK)qq$*<~3oGR6(kTByube`OZQ(5QjO@Hwk_XXI$3`;IkI(=#Oabi$p|m+^ zbMp$dq=`(=Ek$okLHxjc9{Mnu$B8R8SYki>GJSvHj*m-xcb*Q>p{Dx^qKlGaH*GEu zv|7RabXRre?^3SLed)!&FPT^34((6KoHRb8(FW+!YHCWf;lYRTZ#M3!-FeHtJ2v>Q z8~ODuXC&O%p~+jAZLM&uK%0>A=83BAn3FH(ZTijUw$oRhjtU{8p_l57yAgUZ7sxcp za$0H}FoUFRDhV1ok~*4E0;Hl0lmL~8>Ma1>z}%`fy(s5a`**D|zw(o}qwgP$Zldgl zcS6!6ldpOkiFQObHGeyn-AYk+8~!Kfkq=v=)tfO&j254UkQqUS`bTS`4z`=s`No5v zj2Y#NI2Lhi)S*#F)Pq>gWPnWk4nO`TOvmy&{FvQ%hd;ilVn@2Nm!{X$@if6E?r#fv ziGL;H`#QgQS9^(%bo`f>@jRiEv5s*w<5r2ZjM=Kx;9nIkMWOmTOK~Wxlz1f*eice7 z?kGf2CgLhoDwXB9st}_RaV&7Hz`qjQl_H$zZIWBHq;o3ez*_if%WrLnS*tkVrzq4s z2kzq)yHX~la4L%x7vj*b4;iDm#YDJC)@o#(N^utWtdLw3d2dHLcLd!RC~FjwfPPdH za>2P2ah6DVNK#GKG^FE%yyeOwnWir57=&Bk??5^vEm07kG|09X_qF(^`D*D?KAe!B zeiSc5$wPkPL*%4dXF)2If6^NLsGX-VW-;b7+8Jq1glh0iMY9K#|H9paP1{ks^h6riqquTM!^~6I!UgZ$kk4+$>i!F*A?Uv zkTTl_JPvFI zwgPtnj{>&=j{r9Un}O9pFR%c(A2;}B z!A?t6^%{2OR;|>1>D3lYc?LF3-~}7FYzA?3R6!<~mpHA?#j=kh!$&`wyd(^vP`zHF zi76OhLNA#lVFJa*Z%D$%qxBgHhVD++Ws0J?z6rSA3ApT+>Y!Q?D zR@t?s2$CDG^dL18)51wanX<5gMaVBFBYEj& zmtrsuw>xM%RAhlx_+#;q&E=k5X>yh<&CJWsO)Ib#SfYpLI!eo3E6CGcFe4W;@P)Zy zky#ibU;rMOjzPbpq*5u9vP(56o8eZyCn?>r1@hhF|2FY3%r}r&X)7^RM{n@-^v*5- zB~BOWn76(2Gt@(>IqjYQ47mIO*NDpz>OI-{&r39X>?#d^pQurtR6(jL{)I8bBXAcR zau*kJXAZfG54kf1--QMlf`b+s8Z+cTrOO5am83tm5I0# zaXpIrr*OT1>maT-as2~V7p^{B!x85$;JvsWz-3U-@2**L*PR{CjD3s#th{&PgX$E- ziHAS^2G_9+gh2@T8xy9XSA)#pFwJYA@dfit%|P1$ANo1r9{jr>ekcQ_0tHEJZ}(Ez zS6q7An^UT_y?FSoU4oHs8QLeVGF<)TXo1U8l})&e6}Vpk8;y9)xCE{(@YmXFI8vC5 zW@H5JN4uqwOf{a+iJMU zt~BCm&4oX%EVw%u&tnNK73I~7s!D1~wIihNE_IO?fru zY13qflfzYU$PTA$Fio+fu~7}cZ%CRB(CELuAh+%}a)wr8evDpPYmpr%`hHxiT^N(# z8t5}7gFDs1@dcUX6^C3|uES!FLK5r>q0UeLae4BJ|zG zX#2QKTpzP&0EPO$5&R-UJV}BfMQiN)0ohF1T1ozpY}NBIwzwT_99QZBj3*WXOH!4w zdRr-@#Y%EzP-6mkMh+1`vJ5FD^0XZ^=lbpWk#dp^60kdDgUquu8>Hl=DwnXFm@6z_ zTv9Q_m=yg#$^F9-Nz@^;QF_a{^ROD>)M^UA;D_weTG*t)d6>X?&}JKJf(O)%TfsZ> z91%#iHl(YB4v6JkT-?la%RL$4B=-;15z>9iI!*3*KxzNirz*OM&#shHLm4$COLMBK zsvC2_H(>t<1(HldDj9X9Zn_aqP>O5fvhihm5Kp}DH^1K|Ucuidr|eEwT82@0Sp9Um zQKBC9`V^&>>SyxxlS(Tp=vlPBxdS^t)DP627OP)rI1#mRKQh>GDr(~%pm-eib)z?G zPyBguQ#fX>iTt~s15d3`Dj$NqNqN>^NcU${tp$p3XiLOMaBN{Bw~GE*oEHIO;*49-i{R9i{cziP}HsSD=zHW z>l4SvDazEgwatO2%ZHHw1&l(PzRm{x?dpko(dx$@6!p{jK6`z0x7wEM#a_onYO^ST zlm#sL_ivHpu55TO3-bP#=6yZ9?+o&OQ}ezM-kXEGn>24jvbQUIcUXOM%x%8LC5Les z0=5#`42M&V)Uh2-HBl#ZIMqydzNnYR$02J=+~#vcLfIl-(vOTc>Bq#Qc|J_?EpbP< z?FRQuBewOpEzqjTZ86K8i%3&Fl>FL0dddrOWuPS-M) zu4OD;%NXcoeQLA23;SvNP`@y|N;3h4WnaMlXp@I6*6&b%x{-{Dk{N|$aBK4vwy8c; zk7$pzO>Qj0$lYcVb6Tm8oK?xk3d>q0kLyd_m#Wqto45q~TFLwQfH!t}j*NOy*<>*w zk+47&*^3C0!he|RNC{Hx`YI6m9zsa~@#&isY6%VPm7)D2K~}FTD3Gexcd~K~8%!jSrR9lvv zT|05&CWySr`duI|PlAWc>3EsbRY)! z@_*rMJ^%IV`jn`RZzC^MA-*yw3aXH`m#l%=pC6<4%xXBbHa;`?geSLKGZIt$#i*9u zVg^J^4YT%IX1PA8xAw;PK~)ICelZ)(384@NTg!l;AvUzelf_w`*pvSr5kEmmw-1eXVYrEKu=n$(1V(kg2{!--EV{PAu>?u-D zzRteCLc?8bh;*Ix+0{0(v!sK*9mi=QuA-(+wu#5N9{g4+j_Sd(DDe;M#6~<)p>qOq zViQ-RL7|?HR$Ea}&ka`;FdL}qzX!3%0+Eaxg}A=XUyvA|lTEyB?%esb|GTKT;h6JU zHC*jedm_Fr5~~o8wu7&a^<+#9Q~NyglEc(*io^o;ze~*M3QzW{hmn^6{Z9wzZf3c6_rrY?yf>a$9|`9J za3V!$3>6TWzNG$6lj4f6Uu{;LBanSNblnvR$5=RE%DRR@tFUMmldPjuJN>H7fXrT| zeh@LiF78L;RC^jutsm!cP7G5&oM9Jtve#W-XxT$K1<_rp(cLa1MVtcVcu9dFHC(~cu{CX9p+hkahUp1rd*c&k+=T4CZhhBBK7eHl0eQNiKUcKUN}_q6v|vz zO}JDI^%ulsKsmYJOXWPPE2k0lm+K`JhEcT}#XC6Bfc!9Sa9fOW%n*(-!`Zu5=y$ek z2S(enba5UGBkU}6W)lW$%ct-EI*7Mxh0C_6kB}^zUH2e4X=OhO)kb z2R7>ZxXzx%E`<{t@V^O9VH$tfB`b0rYL^}Y-+)~@5A8X`E~SB3?1rS$F0GO>ybm3O z*d-~496NwD)rZ3($!>}Jg}6g=uz;~1=m zeE}}l$$0(ZGick_*|`@?ut{1D9k@KHCkXBY9;U)Xj_U(ChH+5PENoDEn+)VF()S?- z_cM*e_#4f@lYN(ZJZYC>5_Et4;x435Tra_cl&(iKAbkk7sR?6KYY&Y!V00fu^+oqg z9El@$px2QU(*6+f4ig@S&-9jVA zq=`RfOuFPSs^dA@mOc5z-p?a&7MXzHO(}DsSPz6oN%<5%erZrl!AoU=2|1 zyj+}2R#LgN+EKEc{PC(FKBs(9O-ap~dD>FkdBHDdCRLZzf(P-shIm;p?XFFzP0Fb% zDb1{@k~3>^J}|zr${C+ct2Jr4fuj`hWqG#3!mIxd3^RA3%&ADHW1cQ}T-|{p!^l7@ zverP6nFNgmP-H7rtFVcGp<%%&p%uhSdTJaf?!EM6D+d;T`77AJmV69_kHJ_BjIyi- zvkmn=qgrH8VX=Lpks|4ZekB-5-j9PfJs*mPVJq?eA7=w}{VNbH1JS5%9EXB^o$peh z9D|}4p~tmGDvL1~L+x`SVv`qtMA%FJAC<+`gUZ5QveJRIQu@s786_dh;Ruz(`zQyt zQI{bjR1lxtrWXXXZ}yL^_Zn?w;qi(h%F+7VRy0IBv#fwy?V))PN%}Mp_j(5~u=k z!URjc$@*=eEZ%|$QmW5nL(TpR3S+>?eTh&isjHxVUuO~pQb~QwB_+p6G`gw3)1Wvn zkxlkmv@;tj#$p=IwaVxBxgz~0ML}y#_UdEDLiKYDHotJDOUh}8??>a)9s?$2V#M|y zygHC6VnxU21z3H1Bi&&9F#$Di#w^!6a`2&#eQmL^XBwcGc5RXm68YV*mM*AJA zAwi4<3$@KX-{77X#G?L?A*>+5kmZh0R~hMnW+t(+8dP{*-RdsbYLI;0L44D|*NtJ8 z45+36#8q<=jN-4)9M2hxYd zzu}ex>BAxu6xukA#))Y8r=;%l>st)aaUFD=8sWu1YSq7!ytK)eUr)trSn`}t#n6}6 z;9om&M)DWxJMc;minmh6v*x)zRa>+&fo<02IDTNhKzrtt(j?ZO_OHJToT(?8+OsYe zw%%hiWU6mOyoP^osbeEr)kAt!f-bb7y-~fz5b-zlAZnQ2_hI~9EJrhVFhVn>*`uh9 z_d;H>c#|+=tBqsm&Jeg`iEW}BrZseI^AegsU~F?0Dr@lArfXcM|IZi|q9+&ULFM8C z{0X$NpMt*}^VG{`^eJL?eMMb0ih~C3(xwE>mmHTB6n1%`ZcYZxmz>y5=Jl-eC5dPm zF!ME(w+P82F!1>|j4gS88pv`WPemx+kSUXHDK-q&Q4nGLBgGD6Y9ttI;~&&oU#B@V z^hz1pFY6!dKjaOXGNCan>dt9YQ*K`O+@L6Us+5mu5o$OUW5BjZtMWbuBzokzh#YK3 zdSFMU*RO{Kx&ijEOU6WdACrRW+9ICzgHk?bTwsxQrA2JkqjV+X<>*Y;=L63#%kbc* z+2-p@bmb?Xz?^2U1-(!)&55+)Q8J?b^OIy3Cs0$vG#3qzW}BgNvm9SP@CvHHZ}Eo) z{X8JL5&VecBPhz(`OiO*Mrc4ZQ2qn+M{gqz^$%kf=`ujmdjIg@bKvU}H(=~U2fIbV zDDx~*jC2y=zXQVa3=#;2gFx>zK1M}6=cLl7=)i*~mHNO?b`xIoPQK1dN&JCsVm#!e zyhX^o4U>68{r*nx&&l4B>2@g8z}e!IMpL$TRbMWYB!UgmD0_`geXmms&8w>-M3d+4ASeU zCJ#gVQtIU6{`^B2E)8C!VlUcw%xSD|?h$_@R+!$PL6n%Ur9x;t-lk)=fdPuT~}b%!(*sJK0JmE zHjm*&wa`45hK!zR8=j)yg4;9w7Sq(z>qn~=vxq}MO|_WrdaZt4jN%-I)1BOtr=E7v zJhrKc^wl*C0~@6dW@`Q+v(kt(aT=61x#p#1p)7|k!ezwtFjY^xDWcFc_0al}&|sLw zG?*dSVOj!nP*f|529?hJV1Uv=HpPXzXu{k;q6Fp}+fej0v4Y;W9~oQM`_xl(S{2oL z)uA_+fA2t(nv zcGs`#R-Dr@yRE*fRjc;B+aa|00OhJ;&YMPVWI?of?}bt>{Rs=R)89zDzy{?(5Q3Aq zAGDOgdw{;qO%S>ZgGZDZ#?mMw{06V_KsjO_fyS@&V7LTyq`fPa=-Q*lYv*J%#bgre z$i5VWP|TC}kV>5+)d(q|vFkhxMGN~y45D?7)Z9kNjYYf$gd|!Q%F);P#UBu@hYTJG z#XqlxnFDR+5kw2LnV-;&)?Ds~b5L{9>K|-2Y9M97KahnxF-tYZV=;;Xuf7`%G; zp^K2`m(e+9be@?BD(~0Zc>7-SQWQomC}bg6aPk?wfKc1IhP@o280rGXd^qA!#>UEw z#mJ1|Q4t58#UMX}^^JMX_kXWtN^jG1anEh~IXJa8t+#9BM$I*=g(eh1Dn%q4=S5=- z$GblHl14t?qwdvv4S4QG&8Cv3_K7An-{`Txw~E>!ra4_Bo)1IOpnpO)MGe`21ycym zLpa7tl%}5UlKRzS6=(EpHP<*>{Tu9ct7?hy+v&Yfpsgd$gu!v*{Px(OI3(9w0V&EaX(4|df&Brhin3KJb^%myLYSyj3Zu9T^FJ%@1 zdb{e|JFOf=xdGg0_}5>*&J^Za1&oosU)!S2Vah>!OnTZx^PJkHoQxsS1VQc>wC9qK2Kp{@+>JBo_yo7-U5)+WSA=IYm;X$jI5^^zfB$<&O57*`@q zNx~KDnn+IwaK*V|;4;A#?-~i08Lk9bY2*vZ#09rg8Pm9*UWEo&!fg66oA!5q*M%N~ zUoA3uVm7Ep(N(RKgC_J+;p$g2&=-n-KZCBKZ=C^N@2Ich6{qZowf2YXQJ-LFqRdgQ z^m3YS#L!TwqfxQPic;k|O|uD!@@+1j{!EJV=hO`4``9>HVJGPk#VQO*rx!zqt_ixI z8tb=D#v9uak~Q8XoYIdPl<5X!pm&y#1D&vZ4@r}x-;+IWvt!J30xs>*-6lSg?p`t< zla}iiP>$ALl_9ccF$Y3Ca%x(AU0nPWRV_Aj=ObLw>;R3gGvar!bOXbqpUO~3P%lG2 z1trb9_JzDZ#9W>FZ*BT@iMx;7$;|gUK6BTjFLsD8M+}DIfTC z?--G&d6%lzcAJPqn&Q@-$nbD^{}okj`8wi%0-37+x#En)hzTta6z@=sBPxu$xCwND zO!mucAi{n`@O4g<*`UW5ZJ0OEKIa=-tf%Su2(q5WJ2ecEVan9W{-UJ1b*B~Q`BeDM z$mCO&CAlwsQIV5#vLdJ<1W*I zQQHnsRaB2dFVABvUEk+lpWun{sxwV>Yk!HI0p~AMJO(d>^%QJ~QQt(gM^S%amRitW z(Bk#yJne+dHjH0U&>d9Jf=B5nZ>^wvsh|&A+XyH^dr?_>JccBf!iuPU?sX@N#g%Z< zlbl#Vm6jgx=*}0ogYibs_J&yXTWzRMg9~1;5if>gAQ3dY?;6vY`XoKRey4~9a0H6{ zE3i{BCK0cp{rftvMwonZ{SMjDh8JjK$*;}Ek4EHjG)gV$msNq5L=!pnG^FpLNBhe? z(@xPKHKQrUCRWqnTf5O8Zo(jKR|b{RU8s7g7`dBxwMGZX3N+Wy$oSM2}iPvs8 zsaZ<|WFi1FIUd6)6h%wMhWIc!yiL$N$d26TUW)=+V*tdeYm9(6*-3O=uq;fA<;g*W zLNi1^juJrsp?TLMrsAAQuju%(pdC^EcnS%w>tp@}8{#~V*?IN z#c;x?-Qy)$&W1SI@m;x0LDj+Rpw4vfPUug(3T@Lfm);x328v}Xf)QUlgcx}FrH-d< zUVBm56k&#!uXDo=sPP|KM?>X=4{T6X!p|%JDw!xZN>%?yrT4!2Uw&`@%rErfgL#d_ zbk+<5UQ=PJ3^Vg;WPP9Ut_e{aKLMvK=XF`m)%7AgYGVs-J4=vCy)Z{@B(+J$x6%7Kf#Bd>?k3;FA%7}orgh0`WnP`o@CogY@b35 zM3)6+=zKKf&do`>E~c^?#3NSn=%H5^rJCWHPvTMB?!j@pQ94-KKyjyNaj(p=4o~Q8rMfbg;~X`Pp^%ep&s=VVX!KmCA}Y&6F>C1i%gnRga8$Ynl)H} z1)2Z@NpL?Dc)pp0Op{IeSB+k&RUga^NhBV8f=UA8c*Id#J(esHgL)EBJz6C8(i#y5g7*}FKBdk^AaF4MfcMJgv{1FMA;BKw(k z^!)$jS#%n`i{X$0Qzgr=)?f+r@qk}4xDC^jSIL)Mh6ETa3<3|+1TmE5b|#qMHbYs8 z2SY>~{upePlXhEk(u^J=Ec&5jMw@M0hU8`Yx7k%wg1X*Vs40WXOcJ zqRqS+gXYXWbYSqemMpe}k*7NW0@10oE}S3Zs5M96&QGOF*o)&}M) zKSFgAU*k`Z9y>YZYh}vUamoYpmHTO2t-t?598$ydRk{{itluiyTYCB01v+>gI%x1l z-G7SOHtt`>eYuxfAw7;_JwqlMvi^$f7BUKQkox3Goh1?710r-saIGcsBSeln6`d+t zjR}2UKy!Zpp;Yl0@bYz5KMvJ>g&~kW(s=YS8d1|LCW?kJ7|n;$o74ToP_9ATj|l>8 zE+!5!scp%@TA&qLTj~BdkJIoH4$Txi+bJeOXU_L80~*6DVOG)*k&h!^O-hV zGHw9lfX!AAPqW!lIVp!&Eu@g4ZFW9J0I=E1i3J($`~P1V?NU5l4K~`lUJWwZQxRdn zXk&d5+3Ztq{|K8ciy#r|In!p}60q6t!)AZPc@DPOlK2~Fbts!X>khrRG@DKFY{HEJ zx!8g~XSLadprc~U&koZ8uK_61tfn$7M(h1YDh zKOk(d&A!D`aCm5&JsinNgYpVkNSoaRdqXxmh6En4*_Rr4-pM0I)KCI12%h(>^j&m-VQ>k;#MUu&t5NEg92cUk`Iz*_nyaHV3K zvVNf0Le|p%^+Bz6o@Fh)2?Gwa!%CVgxKQ#4yc>Rp+7-ON$5s_>Mgh~TBUA-XR3Yz$ z4Iq=Hv`04A^H3;3lUKR8a!q16@`QBKbPsfERt~ z1n0ltJ}j0uH_4NRva!>9H68f0)FHnkScksluEu7>3;tEth2GD@{S-tn;4$!A`>XcH zr7F{K&BIlI%Wx6)*x`!76^E+=ei^_VTm`uH;Jy^N7FRReM{(ug>cG{Fs~1-(t^|ZT zfopLk!JUF@Bix&DZNaq-*G^o!a2>~W64x}u=?7L2Ew0f8SR{votmv#I>uS|Yd5jG8 zlxjd0v9&4JrY*$Nw#3&eO5=9Kj~-cI!&W@GVU)&Z^n(KZgo8<15kIh3pHIaEH+hcE z;62uZY3U>;^WCXR#6?_oa(h?Mk)&yh11FFTN7^RDjacXDBQ_2#y~b$64kpEyoXObryR9mBmnAaGszr(mblP? zqq0^%I4u%ldlCKo#VZ_X6&1AGwRR1}UBMbR!9Q^NqFK91$Dw9Ru_d;$6j|Zp)J76L z=xWNBN5QG>gL5n?aaA}kph)0rmwbcI=pugDsJPfszS2=jM}!Z~HuBQA0r}SVEDqLx zATPCHlnFz9DzY>5kHW^{N=5Jw?epHfBUPc(mrnaT;5z{kZX;adAkw69Bn@Jm4(ivzBG5N#XS8xI6+60QVXIk*(WPeS|*Tq(Gk5hn&1hwCJ0 z_TYX$t^~M~a22Hck-UJTHLYY(mzTphT2aUI3gjVlLN0j@2$N^v=HH6h(? zz@4~u;o6LABd!AQGvV5dD+kwc_{{_M1GfPCK-brZdtf;JO^8_i5IEt|5A3j%RIV(k zr50IJRnbU#44mZ=5=0t50&R{y!#-f_;+@uzs+{Xb;faXwL-nTaew;waH6=r<{F)SY zC(a2|z4O2)^6U{PnX}cJ#`YhOu@B*~kTLcL`i3K0Q0^B(@2D>caPNY<;9+P7R}{-m z#+B@|=^n^C*pmc_Ig52h-QENm{TJ-k{T@d+tw{bMUC!GYyr+E{5+qBnZ@MN4xfvqO zJtXH4L6rX46gv6dR9&PYk-{m(ACi;y1nWhb>sWy^YPCh+S@PIt)oTNvK$)Kzfs#3! zh>gd8K*nB#$3VtDd|~QbeQ~mrg`qYp1u#`C#FHfhA2K^t&b7lasJ*)m=+~<~w!hcL% zRGxwCte*jy2I^l5_(YyH0;O^`5i$NjXhd`YI>*2fly;n|8b-PdCw-BO_#}&cMM*^k zIdbS!@zHR|!Hm2c+{u{k8_2f}?$tr}#CH+yHvyYr5eN4#bdHkVzbyPc`j^XKn{lP! zia{S@z!irp1=ryIB?j@65U=7=*c9MATu!(L&Zg-88EPU@HtV&Gvt8RrGDe=^O*!#G zO4E>byMB5C?UQ$o+(9V*J`vBc)8pBTQ0$XlaqLAXo`x63EewXGDNTr$3tEja#Oich}D$25V_>5nIfy zLi_`>b2N!~0Ys9^{-ZYk1NBU<*Y8(jwo;tES{&Trh3<|-XikKWRA^D*#@{0@$PuLZ zpB_bdz)Wx}0#ZGg_4QbfW1S)Gi=ubF31SPL?(p1Qd&>HDs&j>>;RsZTCs}%XBTV%) zta7K^hu&Xqfhq8LQo5jYcYkP5|TVj1>R9+wR4kv6Hyyz@?eZq@usR6}CN{s> zKq+*HMQ(JcN5 zzIRO&O+30#Filc6IoIW zM}H(%z?Qi0nSMvu#h~>SxbZ(!hQBiZ+Itkrum671MEwE!tK9WdycWBMoOnBH_CI(M zevm&FIX{J@p!d;mz7D5Nq@l2J1Kkd^MYWy;#zIZiUZz!Z_J~m*+DWRDZ9)3UcQLeZ z1*@!H$DXkkaTJQK!>8F(rXH9FF0PRz3%R;3oqAwlz=vF2=BWot$p>qP-S?1d0oM_^ z80Kra2_Zw1_>yHx5w;|pCxvcqAXOq4hs7}IaVL6_0Ik|~(?e8h&Uu?8qHaV7srTM> zFkDf(2W;O;c%T$cKyaw$N*w%AT=zAtg4p4~=Y|4z58>|5VW?O>F;CMLy_ch913|p5 zB3`uO>Kbq(i5d|Fdnrg|J?gzwrIs8(n&A|WZ&Bpmtfkm^ucg=Hu@tV?L5&|e&JpTDy?Ze)mOVkBMdg+e+J*Ti{@2>CfL4BuPC^*{$e9-{S5EJoy;!TtvxS}mxM|nlYTQbiJt6Ps<5k{;N7OQBK zz`HSi1vj^&-aGYngt6G?X!R%R-}HCIV=o`hO+nIR)Z58Ey)##oA}thexcZ%C>g~pL z2JE7HPdzNhUDOUqE;<8Zg(iu79}45Bl`x&jgpw~T`x73zwV8QOVc%Y;1se>+rPN`} z?;{OdXhDjVl;V5hLIfjoE#hm`)|sxr?pv(&D}dazI#blbF?b&urAa#ja6kzipHotsL5{zBRtBtAjChHV}r zZ@$D0s#;gLT(M$Ov3R9LyicB3qIa=P&D2(RnP{!C^J?&j!jUDTU_OY`Yv^$$-Pi{I z`Y~!tgbxcjV-m!lshe)ORVy#~PNo;q&_0xYysD>`0!=;rXh2i6-q?*csJ^WYfG$A# zSuSkTgkD64)c<#3UBwvaV0|oB6C&vcQA3E!eE}}TW&7c#?G3yPAx7jv?LiAS%YKOn z7$io$RM>~3qiRBw4#D)AVi{8ObyiSd@J?$~pur!Xq#B3H2-PIY3b~yO zZeOt+qG)>|uueD%N}<~ND~z(R1p9-NKe8xOQD>R`gA55v<6j`5-# zCm?_tv(~#khr1zcOObejnSqDcfm)-t#PRUwmbgsgM7D@lQGWm#$0G~TMRxyqGfa+l zq8QSWJCLy{L8}8XzDB%g9T|L2`R{}1hs6?T2XyOWvG(c9aO~!d%9Oiw@1bVbHp}(3 zygQ24MixoZf!S4(_Nuec-V&hoL2q6nlrk67N_;7HOqXefR1Ti?kj#?$sfz1M?PM8} z)wrboCM9Z%mv%@ts)wRp8XMM1X%`|{ffjMXdGTLS)zG&^z0?vx73)>;4q3alsF#wL zV7Z`RqXU}Rpy^9K1)6Ks<66VUdRGj;sR69N5Q8Wit*z9yz|iR|Xn8*I0wSO#kmzU! zSoSN81wBi>x=MQzT==-&49NFh_+kmG&Zmv4gRJ_0lHu=uA2z$0xpoH_q&s<$_{i5OB1d^=r7Kv}9LK{wkZvmEWS)n>Uq_d(hz zV~TpwkZ`LUFOffu7&L!0Zg`XJp+~T0dB8*q#EYD({l52R^9ulBb1 zs1~Y<6h{bJ(VMo&^vO)fajF&{3pdd~W&Av74Drnbh>wNZ0~DHEy^ss@1}yQ3qy+4e zl`=bjjd!{clajAP-z0z0_*;i1@Pj8dgWIpxSEFyB0#EvlUf?uCgeLzg3O6vO^3e_@ z6P;AGJ_S{Ywg~c)=W3)ZzCadf=@i-}x^AD$C*Q~{m;>E!GLiu?KEyzDuYk_i`PnZ} zQ$E*h0JWvrn_zQ-ip%{LjkrsDo;Kvekt4~Wp`&;aH`GS=|=7+yAVi~t3V zn&(of4iw}mEp4#@@qC>Llqwy%hO=ry(j*gg7pLji5l|0&uOq%%nsja&B{dOVWDwyT zHFT;KU_mT5%T%AM3ZzQyqo`PaSaTqN20iG^k73+$suC7%RlIsw&Kb->V9=;ap56yq zkwrw*pBUV&SVs}75?h(%49`dp~=r`vHwn$)Y&@h`i+)ry@ zF*`xo=R2 zxvY&tst1J_%epzFXi$i$tdB#c4GKvtGd!i`=h8tT)5>Bv#5gEqa#14RTow@9I{G0|6jFbR$yeG!Ph zEwmCyUy7n1eXXZNei^7n-aF-YejFij9Lj2Z#is&%=o>&a;7eZvQt(wD`Wn(A{H1HP zq^EByl_L%MQEWZ#D)`curs(@q^rJ5p)#8g(6s~=ND%6ko*CGY_zEuVO>3piC&r->o zzU4%}*%+o$S0`>jmoIyCUt_@UvQR(ju0<65sE3#BcDA&JfdT$EG~#ZdXWDBj;2JK@ zBWTqI_wOQ*CQ5_mA225jt-6DRi%P)1-jS)5FU|{a= zJg`I0(1S9j#UbK%NZy@^qsC-^Vnk?Ae?o_rV0wV-cu7oD0ZG3rmn_h8B%_a>a%>9)1LpZ zv0HonDG7cn$CV8yT-QMAlua07^elxyZFnk#Bs~}_xbKX?>w&|f_gYx(UeBEd+Apep z@2QoJ`et*0w`?x*jKOx$Y5Ai$ff)vMj+|$t%{_GYuJ|h=h)0kTZSEm2l&=v5A={na zJ-3h~`drAT80fcTrqeubi`a@r{d@!*e)zI}pF!*)^!pey(dRy%0tG9#5l9@E&k&uSF-d_X&*}>F56hypytmd( zr>8Z=If@_2zCqL4F%3cDZU;VtmP)Rv7`!!Qkn1|Qv={%25vsk?pGz*ecp#4`E!42k+WpGTm!Hh2o8qVEwpWUmnqT#dfQfj)-5Sf_mlkNTyhxTC&M`_7#f0#YRv zmqqqT`j_s4V^i-(-@ZE+|4GC~$vA_L3o`ugc+CPY`hH^xdO`Z~Up(ZdFZF5P@+*Za zU*^b;Ub{v~R<2hj;eNG@siF2=MxCA{yy*vd4y8HzQeY0aEBJ;So{#ipgT?sZx}~h7 zMy?>HMnONA9RH@)bR}9}bX@2xuPCRLxiNnP?Rb50TnMp2qm{(uJd+shxPa*OMPfv* zErHHhQyEyotbcBja7Z3oiO0Z)CgjTTUGElv3pvO8R?VazS57kj7jw3vB zajAp8Qb$N@mTB=@_}7LJV-LQhhH!iOPwTjWT{gMZ7g+a2@ETBB5B-m z%B9XCEnp;KlvFIv$9E0K3^>zDm*qzV-BNx=mpZMLrPd0Z*@|Uuqe`8{RW+sQ_*B($ zbEy-b(XNqhYQMD*DZd~m-%&!}#zvyE8))y^rE-nkUZ8#Q0Dp&9-)_KdIdhk zms?e;RVFI2UId#LFIs`6#&k%qGp(Y!tb{zUe%)5S+EF1r#=s+&R{Ph;+t|SbX_cjx zs*0hia^vbhBmML6ZDD*D+)=3+2weq%dgDZ-;kC66sK*Gv8N-#%5pZyIAulYnx0N`{ z&Q^gM+bJD<=T`EhKPTZ4jU54w+}fq|O>f!OYDcqAzGJC<KBM~x71fUNc7 z;2KLFt@WRWV_@_%a{KnhQN(b#F&_vOkiokR*H~QiTu5U8`f9LKNmAnBhb1G@-y-|` z3iciF&p~fF5PN`6KDaCeFP%>e^T~yODgIG^tfhdnA~-A!zJudupvQJ`|E@3r&CrLIGbQF}HOy9uqpGs}WBzA4u009GvC0Zq?Y>{Nsr& zz3Dt***M=Awed-?Sq8=Iv57lMNJDVEh6>er9|E8}Oxk~pG@)EP%Ct#WFBT5GAze+n zSXH;u;>0FRru|YTsQRCXPxokKlkSL+lw~ke!Z#i z8*P%JtV!21-b=TLBs2`n)-`yL=Tp|N!=g6c56e=w?i(y>LSi_C0yRmbBQ+dKLH8+i ze?9J(nRg_SyAp2fGslw0407SvU8+lKk&OSR(_}U5(CUUm26u?*Od!NKaute!!~N%q z?Xz(V&M1gL1@NwT4H-mbZQ2NSA_dVKyz3{FZ6@Zfeu;rvPW6Kt!W;c0MW4uzl8YXG zq2;Ox`5T<83esLsuIAxh&(&7AgEBHjW~5!q$Tkwn+Af?FXFzzZ+`4AVWJW?+;+wfh zU^JE47Lvaow~!{>CB3$jR~jWb496;AEh^^a3wy;4#JmuPY*HRtC@*O9`e_#+LCk%_ zkQwo7a3j{TiT@HeIR9b}()&>VjDWO>qY;(bU_9fcKpM?mizf>5)7(eBo<2kePVMc|0>D9 zPedb_=-o1%XNw>;4mXt(gmRuk?>9c+biz2D_Mmj=yeH8IQkW=ANs3=mQkanR2^Cxe z3i?bY*}D%qR>TfOr*tWOUuQC<`-#3snbV|&GMuW$r?Bkk%ewL~!-_;d0bTv{tUss2 z+TTEAq{)e3i4`^e@#HVRxKyUTeG5$0bOhKjA^Sb3=>0r}cjb_I2CFIX)Hw8sQn$!u!EqktLakpHLLY(kp%gk3e4EhM?58WM2PLsO9x?#PD^_ zz+KlTn8ecF^~<(E3FCkX&g~PDQ(;-gem%EfMKW#yDeKsCJDgI-R|cm$6C{Cjr*pc0 z1o}GPEEqz^fi!=@X*LZ`Gkze=>jG)M0M9^P{~Da;Ye;(EcN1ZcG2dBAqaGLW5(sTvV{0g3deAWl2ISe6`PZ!YF`DlJ{KJRYcg&8|- z4EDrsINeW>hx-XSj|{6sw-I5%GDL?mZ2Z1u+d-R5fQgoM24sXf=?=O3eIEkgkqEGEW1M3p-*nk0Z0mNy3Wh z}|`YExTA` zqKn3h)aU{+jVv6^@m`DJU6*-Tv{ftT#CRR{echjlpsDjsQ4dU) z4s+Dz6gY^b84^alh*$0{VwmQ<6`$oO>^?y&hT^V1j9o}4tm4D}sJ^QYKbCyx>O(l@ z`-HXQ!`Du%Yx@<5TG6?H9vgj5;QxxY4-bkP^H3hdd$$%wyr0sXl6UI~D~7|8_t6v9 zqanPHoUk4t-usDnwa&Zggth6!iv8gIk6FyyHo)5&#Cy*P>mKI4`-F9O2=84dthnb~-?h?@rVypyN%Ff; z`oXJC`Wbxii-aGZjQhYAW8xS%zkm~mG9#^V2&1RJTgR*46P3_NM(DK^Eb zWa6I{bKM2X0{kVvxyo9^(8h{G$IC^$B2fKMyc{K4nWfC+cnN1s*N&7)9-39wc+%8H zBIdejrrx3agv9wjw7m;p)Wx;w1 z+dHmvPY)0A9pKzWP`yil3v01A`O<7ZN9&J_4L^k(k?4zvD8o3=t7x&I7d&a|_VH(B~X92-7*t`^Tsv?%&=YIJmwfGmgb5_A2KcV20TtN*Z9Y zeK;P$sb3SxHvAcue==J|Qpx@2n%?2f#uj@-?N0B%Cl)9rB>v(x? z=S8CcSdtNXGoc)tle?mssw?&P5@}O2q?D;V7)i*J5~5)*1Qt6zx#U=>%@SqlE$op7DbT_+t4e4k~G~*8abuHCQOF8$d_fGW;u(-`?F;7xw=26?T zn;HdB3VkCL&9J;c+Rb^=ZVsp)-bf~m&mcS*AG+06ye{=T?OU3U-K8GI*{A8;N*>a5 z&IK|UYMy2^oql?_wL%u5$7rPAm&~l?uut%)PM2N_J6rO8T=MQ6F59r_&@{8jDfgsKl%S!7vbxkJ?l$L(1Nac>THHHZr@w&ozSW0p>^nPoM&Q+e z^N_v^^%h<*3k=M1zA9xYYI5Fhp?m%YL3h7_Zj*uT{s_9=j1#`qzmGxpdzDRBu+TjU zx`Hfk*J^tM51=DX*kbn#SiAa^%@W8)J2B_DVrtP5IMFsh_T9try#q?MP2u}g`7NAA z`5-U=!-~jTj1Rycu|a*nc)+hKFrP-oE}(&$1KwvB=#LRY{SBSIdG*Fop$pxqXC{^Atw>^8X5ej0aLXeGj(4$Ym8 z{@i(lXyHyrf9~8P5pbuY4|kRcHVU#o%ANfdciIi^9BpzwAQR+zYAxV=Kt04)n}~O- zk)%ek^{w9Dk5QYxkch*=sCLb$!!e9HER50tf%%7F)QBeMZq2AYGD^)+=fE#nn3F(^ zJqO{9bm?6*5a>}{+^@Uz1c(WST=-(%jY+3P>2P>fG0W{W%WftS!+{z+F0DXFZ+wZH`0Px0Dk!hqqk z6KA;sjSU3hP0SpQwZE^$?jPWvofz50eXaQX0 z7F&R1T>u^0SQ06~1-by@*9FL+0O3pied^81WcdPqS7?5F2Cuy?o3(A4?S-%`(h2NR z)4-_=`XBS(Tyo;3Nj)h31CKFPrd>>jnC)8ynw7&Bi3#W+brh#dy{kJiy;qvW7u1Y2 zi#VW-?JMErBbt*k@upckAUrdgg&YiZsSn9sTE+KCTe(fwwGq)_MpO|IX%zGD$R1dW z2F%tx6>y_b42GoM|JI?6`4OI;Cp6zD{-(x4{;HqrLWol{S?*yDC4e~4*bb_Gtzy?ga+;te^cXB{;C}kpq;vGZ+vbvpntbuX07XnaULC?<&0?i8Fa?>bCf0<3=Kn# zh`Hr*jjkV|)>vdICfcO1Sv#eY%=H)T*A?@Kc1nX&=V+&N4`VOnr{YIXi`U<7^*z49 z(B|vO^?pM`WMpPGcnP*km*BE#8>R{RuOY`}rbq#LWll8jk_j4U!UQ9X%D46~MT)Z4 zYaZ~?v&q}{TFqJgxIiSQXAI|7Ia;VDLxpIMC45~Nfo_Cl;R&)ByibjkxY84%;;e?u zIieJ-!l9Mnhr}^k%>zEtBNvfPWLfby07%kde1oB!gS!8!i6?Y;b4bb0ef zi=H^O=L-N9`P*@Cg9|oqlE2H>9N&Gr=y-En{eW-p56K3-VQ(os(?*{3|CReJhB1#i zpk9Z1RqE878_6=pwz>{DQycNfhYyT~{K@jNYM^>27!`N5mxTLHT2xmD6V#$pswgpcjF4&wh(wQSG{z z&YlcUR)2s?kbj6?tdBja_sC2p;cv@VU7aWW!#k*#y)YgIadtf!SDz{{B*|ZA zz!6K04J|TPQ*Q1W{tWVkC2v#OVCaYZWzKCKvov*ed7cK1Kr%m;{z-_=J2_0pwEPOM7QZfn90$!F(ir9?K~)wf{fM$c{WQIL@xVhEd%;XC-sJ}Q)f$Fuc~~> zt21z0qMZ95oX2*gOL^#XH+fH}6JKbMNR4rR@hfx;u#$AQm*dsk7zmv&OXiHa@;rdE`x6(Nx z{N9eIvZ5n~kr$EPsJXYL7a9Eisemnw1+z&urJCPfiCh&M`Ib(p`8`)6*T+Um{wBY( zBywYHtv7swjiZaNDBLIlJ7gO*_6^03P5DPgxBB<2`$(3!XZ>>Xt(WidjGFb!ZPH#HzwrkzZ}xre zs!KlgJPYkMPh7S+e?l_0`dM2^b<}h^%1$~Ko@BMfQKKAX?>QE}w{5MYt~u%`JLXt; z%<)09W5EE&ciZib4_mYbd()(EIhPbj2j&_dmLqZ9Siq5KHbMkq~nF>UVs@d zI6gS$Sg_mi%8QN~n`1$X+d~n+hXt@q09o#xtA`U>jL1o}#sB?1 zV-ah5>WuTUHv{A&xe0$>yYm&yjIE_1|K6>t*Bwy=!zITo~p7^-& zBzqIB1E1?jNa*x`7~mqh=o_iNmWM@w=6zkclt4Q2Ky;<4109Xs@iq|3vDE1vfdcg z*ZSEdp;G_RFQJlKq534$Asl&Esz_k7(^2Ffk|`A-S%fr|KCFhz*ZDAdyiyn8zEwR4 z#14@$Qq)XI$U1|#N8%pGJI%+;*yCzIB=)%ajARmf*o;+5Nme?oQisi0?o>P~bCxz| zhw*8bkAZ(1Fn;H5@f=sb*B%y?gs@*}Pm9HrLS~!y6hUIPU$#tl>qW|)e&;g*XN%vt z%>)~7UIdv8U_pR&OnczDOm5pb8F=nO8;g|BDZ8vY|DpZ7 z!_B22HTpH~%7C|HoVQ(WQkk!>|7=eP@>K0HeOqRyI`O$6I6*@rMQLfIpP#PaPv?Kk-5)|A~IrL5!( zls%)10=K%pgm0SwI1{^O8bm#z&Lzw6?U9-rZc%XD=E;xdeN9Z>R+VIH)Vl+_5?V)$&g#W|0LlLO9s2!WiF!L^=S5Jd7&@nJb}?A+kz z=FxVVajpTsH*?Cf}Zf2^ijEaS2i7I*vAbqnURqtxBTuF^{PX9_F-@^vfTR! z@QZve#syZNpr*V@QUkXmF|g=ZbDnRty?4zwOzPK6hN{wyjwed(VqMf8KHH3NM&A%eLSE0w8z86=oU<5WwKOxn{I+b_?4xq;Yk_yf6t?uAvTx5Gslea8b^7}Y1sR;(S8Ganiau0P+&2H*_}1(J zuGZ{1QTeTPDBBsN`Uj_Q0P*4Hu-+GYLmYv{hwB(NXdlTN2w-^{F@ zXJC_?gGw?}b$*6F70S~BlQSXwn?%XX)2<%Xp!SIWhvH8NpQGviQ6y6H<4zrCQXOa( zvOA+p{w#1pxXLAptGUV9AMg8KqHVRvh1^8n_YgVSY4?3E)pVx%TGH4x(05MwT8^H% z-lTfQPDB!SQhn#)$m+z}jXS6lgnDWte2w<$dhET-W=lvQ(6F6VAK-^R+5J9-Givr$ ztQr_!bebEOk!s}M#sTs)VVLlaTIHVd@U^C21D^v-LLSknP%~Jk)Zy_squ5ymQ<>m5 zAN@7jv4Ql`OYIgwtNnqP?s+eXOx0s^)Nl@-_1XtUZGi#h2!g3a5gXz z7NqEungzYI#V7&7f^SAi&~V|C)`j@t(Ue2#NIH86iqg+^H$h)=5uM=P{YQY-Tb|XL6I7iOwTZ zRvFj?=jivXf(p*Fqc|)3;=BMjf%qg-2tRecL3k9WoU@oMrchn7s$vdfg#b$?!I(_+ zZv6Go6lmqR*gkdanUi1_||Tap{`~RhZEt zBC>aB^19U15GG_!01o>XAyYvl+%?yVqs09l5FxJg1B(NJeF@y)GU)~7(llYm1qd`v zk}A!|%_bsLC2;EM@aRFBENtmSE^vFh}?HiUannlr?tN zB+l`V^rz_iUi!&4WKC9L=BgBt3RwsUk#KTXy&=My^t$W177sIb7Qp>Y;)s~Zyg-&x z!quHt34PbKurq1%OsR|)b+~Z_;QA7mZZ!{JoRzjjmNrHRSRmMRp8#xMM{`u;g_i}D z;%;iZi=h`_bWO>R5xqt@rhRG?P79G5@GZi@BMA&Vhl!3l#bKpJRu*kWjM%Js%K!5?9@6MUcj$@ zb&=k-&GB8=Y%oJ+T1QcDluKZXh5p_V5-0WyqTMi)2$UWh=TxIgk26v9m!1gyOfaq2 zn7mHkbFI{S;BvU`38!@3d zwS+lAI|i(pf^d3kk~V^AD(d7$BnWSPErzp);0n~JN6s_YItEO^(DnFa#ikRzDS8%+ z!BmuJW1r+Bi<=VEC4XeU-=#L7*2Cbjlv}1zdaA)ZxU!lAq7XuXajURegZM@GX~i4_ z*8T`^(hr`}ggkw&^aF}02hy=#` z6$H#9z}P9Cg-iDIZ{&MxLOWu9sl-u+DSVq|$FVdtys0F&XIxLN46g*0RKnvYtV)pC8GU9v37LDySaOj}O z23)P`XQYnsYOl_uTm2Sf!BC-~jNWY;d({5sVsotCtdo~kI!;B|(ye9?$_W#1wNYBG zCRcZY%&e&CS}=9(7)u)UGs5eTfX5+6;PN!w@ut#Fm8s!6cT5&INxwWD#xC-$h`-h= z11YY=d8lNE!d{MEd{>zM3Q)eTc<(}Ho+iSN&XJ5|4Os1y;nt~)jL(sbuaLv&M#j4| zoU9Ei8RL<)M#hqUxtU%3wK}{0Cq2%BKsl=}ivX$)cxe!C@(qR(`5S)AtQMks`A7dl z7De6P!>#oUOaFl~Y3y72@bohAYrWrG9IqBey~7qKs^X~EJnkp=E|~q(B=~+X z3&D4H#WsRzgwhDs6qrqZ9XXpVAXhp=DKqYFH5@2ims1M7R`r%ds@HW!e*b`cB3(Kj zw1TLPZ!olRWDLIz9l)T~`iox7!mYJpazrQYQm^op68!5^s|1XXm`i~7r9q73rJa(+ zML_AJpmcp!JJ#dH2FTl8*+sGkAIC_hcVeK`nDCct%&Z_uaA27731L+hFxHJ0;I$?o z0^oLmaau6CPq0owV6XRhrR_5cU3!epJ6a?|=`q<+c|}L6%2XmjIDnRe_)cU`Jpl*$kR+f6=t zIQ&=~y(1*bxI`q3CT7=wSLp`Ur7{2!nd%ZyEmONyst)T^Q;p=3z)T){RO_(t))KCN zJWEP#mNt`g!O*t}iU`*YCV_GeRud382diyLID}#1K>k3Q?f~pm%rw&r*#+~f?4TE{!^B4K-o`8# zlYo1WHG!S1EOF{f&6Hv~d0JwWEFv^bj;9<0&l3P`y*N>#zXjYtaf~61RV55wrr_n! zUuxjMgLC1pdTg@{=JK3fpLw!zfkvp?s%MZtJAx|@tus_(&;|#nK_H`^A48iEQ-zi1 ztD))SHp*DD_maS+28zs($Ru@QIC&ph^PLEmOydHDZU8mFJ^{33m%6VfHwdI$=JE)lYf(GfYbu4P*{)v|JwRsftRRwb05 zmCX};)K%bbGlImAlHZUy7l*4-doS)C(M5R)lv_QZQsE0<8E7HBpiw7>kv>tQB&}3j zrGziOSRJGONVkP5cBxmPdtFN*np)7LCv=Xc=iB}0`K{plT6zKvnG>NWd|8x`C0|O& zccdXTWNwBKlLQ$j^!z?%YQF@giJZ0fMp{9TLh6BYD7X>02-eGhGVUz0OtP*)}=@s%gT4(PpQ39KVfOOgMgA_6bos>bY#sn?IdDEHHQ zMhk2KuuQhn#C@%#Bb(WJkm^#OF&IktABIW`7z@GS)=2YkP$p>}A%eO8Kq94iu!vxc zLt=9lJ&aNgCBljOqMTq2!QjL|(6fMag~5$)0_l-%S0cFw)gyd#VU7yJUbc*9rx}fUXR-5 zRQ;xeLv_j2a8lOX?z$xPCr5AZo^T%aPjh=D!+y~}>l-b{Nw$b=Vk=T5IFBbVs~(Uy z)B8}khA{(GQvCupNE^{#2v}1ZlQ~awMKZny%z2Kd^G8bYVk0tQBjj8PBC&sdTO&1n zFMN{;%15M<=C_#qgQ0uyg%!M)nR2WiBo!xXA;R*qc#Gx8a!9|Pq|eG|9_9eI1Wb^! zB&g+l7VVh8S)+D?sh<2w4{5o(nx^rSj~T4E25YT^Fm57#Y^p+1%9Xwe>KbvrJZ|Tn zPub|*V+-t?tA5@Ib;-1_zY3YWT9crD+@ckgBwtVZs_#b%SE+HDleY%|=Kk9uBng`( zJEP7a?;*+0)Khhdc@TjDk4uOt@T+Pj2#xaQQQlY8_4q5ZfiZ3?-}aFdtgCXmgjgqP z1HjNqq+pfeYo1HP|eP$OxGBCHj-t zt4HoC8BY#Uk^|9_Q0K3MkKy%@VL87-I5YtwXC$07Tl!LI={r+t>F*byku2?*;7#R% z?E^PrK)(lYOkUQ=)!Mrv^d2z^tww25uM<+uWd{1bdCx;Hp)`QGr=-A+hAotVIt>}2 zxn}5(bSP@VKMB|Nr-9*x3C$3;moAtqgk2_tsq7|CZVwisa%liqfAo@+34wAIHw4U9 zVdOz}U}wS$XGU>+kb#1A71G{|kLvgvIl9yzNr@B-D&cojc4_$sSvLx~0~vL;FHnb8Nqt)qt3tisS)SPjEb)G#U>Ib2q;(x0Af-2*MEeb+sJ6t;P8maS@T%z&kzlA%l-(^Q)f z$pSlO{pu|ts0ii_o;q_Z;YR6Fp=(53z;jydXAENR88?^IJX znRsaqP5?wisnoZ6PxcF?ViY8h^hK6L_N=9D+S}EPLrt}G9Y|vAX6Xm z6((L{x0tAQrD^qW^x}!ai46eAP^5k+j$&nJ2n|m(Cs#qT)cojH+i*&XPW28hU8W=A zC{`~a>LU{5a`KTjp$jojCpSy4WC#80{no4Kl|o}MLL-9tfch;7)EI-RuwMY+0w<~B2$N!7F0g8p7Nq7X^Da#)`)iQI z{*MqAUH6if+NbY$k|PZCJ2V3?!n#D$d!u_8R2veD7h@)7o)QKZ(y^GuOwAVjFC@d zX|7cMF2!PQM4w9)n-MuP4GS+77Vc9QQeuOJqi{)^{f@!DZZ%6B>S6MU>0MjF8ev*H zlmtUUuP`mL&u7%LMaSiX&P>OOK6LyNBnBNn!zFa=P{owSV{L+Bb`_ZO*B(2m2YR@b^rY1v(2nNf0a9{Qt zI@ATY`0nVGa$P0CrHpuX6~q~mp;o}36(FOWH^tyueU2{}Z-mp&FOP{?^$z=q^sm2D z1A!tk+HYiVMEqC|lEFgB;MWvQGMFFD;9bOuQL6Cy{mUfunREmVut1w>_sP<#dFRu( z=d(KR{<~lu2)LATx4Mpe`5HvHG!Yn}+m)t=tIBNZkU$tktQ6Ezl`M^ROT{gh1mOF# zd^ujg7N#V546jT50xgwk=$Z}8KhB{-45LY~=T;F_JUa3qf+OIGy%T1q(O*Fh5~o=p-;po8JzlH|i8L4oFY}_<+CKn9+WWEah5cK`=qT9l zB4Biji@v0+i7{n$9S-xo=`(VR6E?(l^*a8DklI5J0ZiRYV3V`i&_{NI zhbmH2b>MD8?fSD0WSyVDU}ze?a4Q--Q)sQg%IdnDqsMrPD9S2+4$ffvb;H$Fb(vw2BK1~(&&#$_tKZr{v3aVPcK8c2=U*MWiWJ; zP-Q4Vly6;&VtEr&9gIc9T(iDhQ|)mk}&W zYQrG{Lx~?e2osrjUf9$q7@O{sWX8VphfomEp$t2jf21;21X^PO+J(f5rpC|N4I?ML zuf6*VauSyjEIB<$$75qU%g9BjZ@N#C7`ga#E)q&E&u%4`VUkM}U?Bhz9(_(pn;He$ zXhumy21DmjJTVxGuC=UdIYtheUq#(weqw4jbJHzOF|TVTStI5qqChn@N&;DqgLXB5 zQn2(n^#|ED^`{0|`aB_8@x(}K>dB=h4})lII8Lbd8}$sl@d3evc|}vv`$ojHA4&z6 zRt}Fz+2yLN#EVjk%ro9wQgJ90RNGXPdfu^ppLc8xf?SohwIb;|(H~gM;nnZ)>J>&l zVAHr(gKaTQxAOl>@-emPbHE-&6b#uYP0T~&SL^5#s;XOf_ZEM{^c*wo?L>-lGGgq7 z*|zPp7~W@qO~KG#1nzBv$AtEOt6aBHX+b8>Erw@~uo%vmp_}IAW}QBdu;X5@n>lgtU=jje`v7 zTSX)YhCZNmN#8Qti=q5#le{YtD=5a={;=vVaw6#!ND~*>hv^UQdBP=zo=KHMWbG)OTx4^IYM7$^S+);NlOLW%%FV zZfO63MgIkecbI?Y9RI}h^`V}cX^>_0y>N5;_!_DCl+1dfb)Rg`9ZIj|HGPy2C&KoXY;9!_0EsO z-wrr;QLI)MYwF}Vn^;UG#!84D5AlrB)JXf+j++<~!UGYTKR|4*f=1>`Hf;XY@0nh#5kfTujNj zcbmo)r^BrJdYA!GJgdJ9&wwZ%3#MPc!c=q|j5SO|b)Pv(pAqXx-c(oqqGSFdshQQC zVl{8PoqgvyRtv9ez}Y14s&}eYG$FBA*rudNL4?wY<=XPyS8X`&gVO35%HLgO9~~68{t*9`IPAC!QxOpASyjJ2j3w6n9DF z)Oc@_Z&!SH;M4?;HSS6z$jW=c=p60~@YvV&fN!l=@-{Dtmdwn%p>aZjRI-p@*VL>P zXIhk+$oo(FNhf*jNx%OjuRZDapX5cTG*1$%CAPKty(gpW$H{-usaCtj9EXd`a3yD4 zTm&N-@OboQCdgmnB8xiUjGO7+2ZqE8W%A zldhOhQC%%_sp8pxiOaUFji4O2ZG)h^(LnjCM)@8B0F-I0$#clsIA|S3&2Gb)aQkmg z^v6*zTDBddm+QlGoZ;1b4|_j0lq7YYCDRZ|Y#{uGa7V-Y(1}5o*7}wbq8+yz4xTc7 zgd)mex5WvSU8EOfS^b1Ck!m?W>2h9naj%T}tb%sU%=&!UElr;D;`Y2R z==Dlz25_^tG4{)l+HbC(NSwJC2MOddPUphGd_?c@Ea!>469cb@69PRTUjC?|xpsae z^NeL!3);6QWQuFYofDJJU8NL1)N+Demii@~TAnoPjC4Hh}>-7LJND8H2&>1-;9 zXCe@r=UGOcY>MW6Njm4kcpS>yGAOUO6H#WS)nG~4MJ}u{Vv!e%h6Id$aFs~f_T_aI)wS7vl z8ZB8hCm;*PIgeXQf$Z*TE}kc47G2_)%9mP;fsyqk3Uy2`m-?K?z}*>^g)V({`!N0v z_I$|S6i-;l_q@%@l#V*f$lGxb$~i}f?euACDB8OJL0gp8J&u|PhKisd+=(({D6o;c zineni1SMWCM@RQ8YBQ~N%zUzkIg#Vf&Au-C-QVt~anIq8}YtLzlENn z&@d|6rv^D1q&|GjpZio|-8U{3kE8JJ((qfxRC>;Axx7kGF|8{d{inDda+kj=_F_n;l;#+qj4G7tL4s-_$PXqRC9A_u z`{AO_Bl9~q1r7+e_9I4g4m1N)itDvp>y!3dI_>BSN$c*L_JMwBi)Z^2O^2J+JQj1At&9LcjEE>Al=IrGT5o5J4~pA|Ly zNM73E3yA4R(zFqOt^`@}LqSt+*YR6~_H#EK8PIX%!x870$1Ji25s~z`5yA0aLygU* zB-c}ae4EA1KeH~ojyNgQJr@~;TILY%h2lLj-@Yk4TE}iMW9tWtH_3`Un6#0I!$mRa z>qj1OrX6;Vl)%9{);Ur-X1L;D(gUXf55Zso4Mg9Z-W|?4n6%jf5m?RS3je$!u4ByOX0qi{dmTwz@gBa(uA6C?Ap7CGH2Hf| z+Up@5crfWH1LSZ;rd=9TFGj@XFP(4tp-Z<3KmzhcqSdWPX{x$ESZ{q|?<94dMAC-) z$C^mSSx81`xU@~ambB=c2Hr?};Ae~Q7|O3duIGW%lbLTQ`yDtnay@~1O_*bR^Z10-+;kaIWb)jON*?mU@(Dn0$&F6z|B zk5uxA^7VQx#I9sQ>uVV)b2>u~v8=_UT$!M~-c)wqMQYUnNMq<2+zpXx^E=4r&$!dp z+OGc#0j?v?PBVU0|M*QtyfWkG^^d=c0IYx>XSlrmHqik^Hr|~FO_;Ik9<%Kdqd_?u zWPCZ8B>ux*yY#6e2_0jeF{77_&{b&=t{!7hJ~C=kST3&PWPGA-V-e7^d+Sqs>+L4& zDuMkDJ(L@#I7H7WcioUvUwhFr&O3$#yq;YfVP zn96Zx=S%)$9N6Qz6hMNj&ERE&jo`LirmCISAIYUBM3SWFxLi9+kUAogXowlnmYZs% zqTBUPmFCY)KaxvC|5Ryhx#^NB@SHU#m$r*`U5afZmVfHMPV{iI92fWH4(H;&@#AxB z+g9;M?Ri@_-FtPkcO|!?wJARymMSJ-1K6gj@yHUJnuJ5uFkQJ29my6rYu%gj&3fLO zA2@Pq-@3QNS4@H|D?y5&X;b4Y|3{=%m!6KmabM6sArLe#1O(0h`F()nsk>6%{H}24 z*DkNgpO%|ZTT{IZt2~wZ9>6M(dBI=3)OGP}m)aku1Z=f=rY!C(RtLmq zSh#F@tB3chfLiM{Rw1&z$;Il(yFI-KkYcsjOy}K+m$g0VsPYhT=2O`=c?tG`$Fptn zkZL|(c}BMD_t`diUUn;Ac}jLEU;2tH6aVT`OMC21a&dmbd($?3jAAhQkV<`&Ps+NNKqT`w;EHtia5NjAzOF3DIe7MGBs7T}8LP>+yHFyy6F;ja0?4UglEv)(i> zsjTA}bXQ$fZC#aTrA%2kHEXlA17km{WJcK%cm2|`ayM_VS1&9pztdG$TW*W951i%x zuGd}fIj6)mEq}TdY2Y%WY^j&$*fxxukR$Jt=hZG*Qd?uh=U3J7n0r-ijm}K|qysd} z?WriJs;l=*tI?mCUeC~I&~#o$C&W?YGH?`?)s)@gt_w6blQj0;p?HJjGw=)%LQf}o zor&6viG67;>F1woqx=zi0D&J*z;|%B>b+wjjxC;Fm=TVOz-bOhi*R z9sTG`qcO(*>m+{a|B&vr&>PF+uW0-mB)@@Q0U-2!8TlLg(Hcv)xE~{4)}*W3zq(Dg zTx+!9vERr-Tmc#rk`j+Ar`i7bGIhVO>JVq1VumGI2T|b3+Shzv^EH@j{jQH|k?@OgXLkILD;g67w2%%?6>ZpR6~dq!h=YFyS;=A7{G3V!w7+rAROFgDniSD+ zc9iIeHcyi8MH}nUTmagqAo0bO3+Vh!jgl0jv^na>EL^fJkP>Kom>~avFgqOn0mgE( zu|9b-t2w2t-#59&^EZ$^R?P%bo)aA2H@K3@zGZ8iw!tyT>dEVLwcQ5T844|l_n!!O@5Pk z#a?bBN0+GRy`sW@KBjZ`^TZfUo^2!UbYM0VsfCMyG7~0{ko%v>F8m(G;pTgYa=y*# zSdR!P2YC)O(AAq%NVk5l1o7Ewi(}`x4clgYNqQPuwR)8N{5Rz9*gO^VZEF4FF!6?w zlTJcI^0UC%T5lK=*K|X=Yc@7FH;jbm*tGP}68tyV18w>xQHLrZyO{3TM){$NI@b16 zbJPUl*Oz`yMNopZD_k~iyPrve*kL2rZ7%+(dZAdVXQax82Ao{A*4kT)@`{B^6bxLxYoQHTse*RJ3>S6219ea&OB(=j3g+4*V*uV5J`8UL7N_0hoX zc6s+@L>}j$4#0`4fKh{A>FF)F$@{*Z>{k#Hsg7+V1hZiC5FQLI1T_4f&MaU3#~Tq+ z^LqzN1#ngP=OS{Tb?g2fEPg(>arGF!c+v^KU>Mw%Iek9gl56LopDnGeL2Yx_&nw~< z{<4}omb%OClyK&M8Pls4)|J(*oL5}ytt)rW>o+$tZumFw$(UDC>CP}lB;!W^h3*WG zyKYHUO_|4Ck+IOdsJ70XQNb*3?-l{ar$8Y-=PooY31qL4nE);rANT{tClAuLdZ{IS9+XMxIqo0Z6S?F#G$A;CCH^s=p9whz8>!QQum4E8FOYZqL&dJ4DAFq{17}g-xFZW@ZFVR^QK8#UMy(N z0?wbuzCng*GbjVy+PgAs-oZ_IG@WlD=34VI24Azo z*LCjlI~-51-9>47GaEyEOkG77hq988I6#kLhSz2rcmb1%WPXGB4dpk2-#7S;;rC5` z+{$wn)@8$>3 zWl-IPeAayb144mCTFR+q=?8d`rL3_15&i|&y9$H8H}Cd+HemU(-pu>1zCOoR%j9Bov5D8zF+;rR-n| zBj1jSl)P<>0n4GQy|7{@@}M9^$=#cm^TcKCT_hBGIEFI@#iO>Q;^qicThX*0&Xul%td3 z3u4e4Fch*9pkgGxC}i+LInBhDdi5#kO)c^qqJSbVJuYCLBCU_X+Ic+WKzfVFIF)OO zjKzAhewNr4t279vO|4xqnjPJC`V%c^VpN#FCr*9J>u`>h9BpU2n4?YFd+Ni+z24Lv z3z%cVwBG?MS#s(LTX5f9cH0`KMqOz0>Nj3GIrp1qFT{!hqihmLK0u1?-NBd0M=mpJ zMT3&9Cbo|GD=#&Khhw53qFXop43{1^B7Nd5$TIuHG|&Y@SHCQMLi9LZxP(eU!yWi8 z?rrLlhfLDs6!>8sp$C{jkrEz?Fi2>3-1}nz%Cl!-Zho&%+?wdS5Leh|co!Sq61)I$ zO3R;{!GmY^8y2Ui4-ie{@2Xq|mT zpp9G3uCRFq_*P7@>1XESpN!)*y;0nPI%gzp`)@SC?7LHZcaMyXPT#&S0X1cR9%@P^ zQ(d)N@EzhBkybT=EhIYeD4Z!c9Zy5ft7`a3vHL|h?%mDC4)g~9e;Lznp_oqNp`IL% z$Gv2!9<*yS$|@={${4+6Av&YZSXjfw11HPS^{n`2R8;_2=EX zL7B_>3#K#`Ojf^=Vz(*>8Cp{C0-Cug1=Gn`WF`D%=qODSo#s$r*SZiAmgDa0LT|3+ zn;cHpmz{*a87QLTjg%7wlf#IIk#y5^*DQ|YyVM>=Ul|ERuSqxG0F$%prahiq&1Om^ zZ4f3enFq2bt7nBiY<&V=eHP}wS-3H4lVkYg@hZe$3rv=?iv<0?p;efVB62R6B(~>< zNNhV8Mb5&2PTz`=$O5sZFmrw%Ez;2C59$oSX%u8Q9OglQzr5$ zyg8YTh-7~e9sj6glAS2R-k1qYwbG22G(R@dTp%)2&!Yu8)1{{hg9Km(04}wPNF zgi}W$%A|BUV8PI}FNpMu#3#W7;#C{+M~Z)u1{xti$}Fy@5QkMB$#$f*_Hr2!z1+|g zp}Ze)2Jln#Q0~EG{Eg&VuXF8Ge|=w0=smhqx?e=Las{)n&X~XLk8Mx-ErYcyM9%&g z5PkZCTO$zA`8IuvqGCBt7h|q;4}G@y(i^P?wm7a*6bb!DiY!-eafahnm+E0aq$kbs ztv)o&n;h`I0p_@HVPO7SfxMB@5YLvz#-uneQN}g7@unUFaxPKJ8>v2#-qq~k;lH=2 znKxX4JgSB8zY^|JVNmN8lPYRXy_c4RZY?Uv`dp!k#<@OoA9^0zxbOU);cU4WsS!RjO?Sn={)PtbW&<_Jm;$Cks zQeTr{qQ&Pl;oSq$wrMV1zy?F_kTm>;S%Dk${AMZ&4MRlohKp>UqnI@QK zn3#SGCh2#N>H5;WGMlG9s6+Ee*;57$YK)m+wa)rZ$y#Zh3P#E-*2q6!=P%mK#6VuY zl|O3~M*e}N`Pi^86s0fsCaZxU30t-P6CP73%7?mA z_CfqS>JYP=M>$I$3=I|fj|NPX=k-T9+d}D$MOg|;T{KHDze;Q{^!FBU{fh=76{PiV z?u*wK#S6K`QlrM`umx~KnSL@_Dj~cVoh;k&Yv<US8_%a~H9Gg%;+yvH)&=SDuv z>pEnrJr#ldC|Q&Q@+PX!0dg6GshY`Ph^krcy9=GnvEwLO0y!o9LPqc@G^s>P_@-dH zCrf&m+v&flIxSw#((za9>oDxoe@Aay%iaK9Ch`;2Pss>(W{KKKHhQWr(|!Ika!2t6 zsv4*rl1%QMXJGf|P4%^mHI8dobGvNM%_j>+r+Ev}7xNh%N27=$t**g26sOEfycgn0 z#A7ty6r=eDP!`OP{z-Q_uKFUbD^ zl@YWLMbY{-+T|Lp%;-0$dOCsVbney&_4b-LngEP6okWV5z`}ChV(bp)G zK}3`A3eqp6r$VXLnYBE*kc~jIIvEyt6>qG(u(pp$!XD8>v!}=qm!<ib~X>4Vr7E)kyKgIrTWWs+ja5QsW$JXA6 zAzD1MEPkjBZE^_O(Xd6TDz60L_dN>Fnr>c+D#YdINi&I=OUwc@X0Do`W14l$JYovW zn0YE)$86Iv3y2wS#w<{uL5|<|jE<=wW|$dMp^oa9r*urE-?tk_lTUc$dT_K{I&AB0 z5B*)o3Vp8u?fC|Cmq2le`b5}8wOpuCY}7zP>VKO+U4i1cs$BzhDVqjr&_F`<1_3&Y zIdq_Sp8CB8I-w5n_2;b$^$jLmaH<7gDa{^YwoPUD2-X4dq73i^s1UW2`pNf zUt8{7!ZLY%T9Hc|14N#=MdnQ}Cf~s&MXubs+U51`g6gt6be6I>R7l+5B}*4Bl9hI> z2kPom#fSYCYwmURBgB)>wE2eGTz7Tt^8DH*WmPrl5-KDVudL6hDQCsJwyu6?OrSw- znuJWNDX;ccxCOd?m;}slFE942taj&Dl~vc?F-U@(6;+|MIFwvLSjE8O786{m&IT;{H;E?XH1Pp_#rX7=t1X&lpQ%PQOzBTf%wu_HEg z39A_f>{&6eRw%&G5y30Lv)uJn-y?ivG`xgLnpU%@*1+?PGe?kQ7_5P`X*Ct@6?v8H z$+#;{s}T6!Qc9hq_2WCW0>d{PB`zU;!sWUe&Zim<6ELK{9BVz@FT_wVwZ7cw3Z@4> z*SjmkGpN42m@cACyd0)mx`|K)5|gExKD>D>1c`lMN!1c}T79|L{^gX@YU?F{mwC#pv@2On zT4E=yE){g=mC?X>VqMCBdzQO~@+8-n-%wc#Xaz1p^JFWa^md{X= zmT2!IJL$l66v|xzW+7EdQ$GyuSS>NHw%WU-rd~+X)D%<3!S&^{tLi-7vg*RxT0txy zgUQ-Xlk{f1@LdO;RbM`cm!$7>MHuBhu>z0n7Jsgth`c+t;LY^>C+lbpt)-f zZDx>Rz^CDRrC|h`)8^{-a)oX$X|$JA0#eJ%be$MX#$zzKye!IO?KYWQUS=^_hiWEk zmu9kdX(pGKX(mUITOy9^qD&rKUKY!^^0Iyf9~Oy^GOoPrjEp1g>5LmxUiMXd%D6@M zEzKepKkKR%BE0L9gex1S5|=Qfq`1(i@TjVGU zJ-EDnW=-x&bEq0nUSEvxC*HZj!wc!|3gV01bhZk1UrVRi%j*lPDk|JHr&Z{NokFLh zFD>P}k7k_=6Al|TmxCDDi-ja&q%G%{RQyC8DNs{{Ilmh3tbTfqyLkzRKfhNVdQ>4c{&s@L*@ zCgCugn#1*o%+m;YK=2GJnW;Cz87a%_s+LAk+sS)`+qNtaV3DboAqm+xLyRqh7u47W!N z{0#*s>MwTJF+LB8#EUxO9v1ORTbPMT;~CKxt%+?YG?;qTG{#(d86l9-MU7CD&JIcdDmK z-&CPJ4#4P6Xma&J*69r<(7aaijGr(`qh}Mrwu*q{MYV>AtxsK4JEPVds_X5GYK`tc zXi=>$jMUChAPkmTy5wnX=@=*nq?SmFFxpdnoaC~hn?FO-A~IuIeokFo*-B|#@=ta_ z4sn%ZKe}#OEM8QONR1qL$~0@HaP}H;}^jF#7TMN zdnWu-ZYS;FlHA(bYIj+UPNu7nq>@YwNKZ>vO`0JNE59mty-+op6tdgiMPqs`@G# zsL_wKj;Prr3nlVT*tF`5={J%-VYt-~O?@UZo05Dt0O6>pMP1WEakl7$L-6Y%xL$kH z@EUr!XxSnW`UIRolirY8Mn6eEL%#KKlHrED~qrIrsST})Q6oQpIpX#^#}4egId zmt7#o5-Vkw?`cfmutD-jp^c!ziGJ%Mg$$U|Xr&p*SDJx*rKiewr1_PmB>oKZn`wT> zn&0t!UErV2w@dOtcaZ}eIy1^qO1RK}4{_2YM=u0sDDvS3w?~ABG*`f+0SK66CI2?$ z1D7zu#D%|%lK{}(>#FVT(GO`Q48MQjOKxl{La~j9#Pl@H!`&nnCzdk_- z2WBiVLu2N)x;m|{Ak{hgyJx7*K=T69*{w5Mn%hFOw#4T+)_`Ks^6JixJzgLqhRH!& zg;(^qhXu!|SQy#U!fXl@QmyH(yduNLsJW!9ra}Va z1{UJN*nOZW<}^JG9Y(c_hzm4lS3sL}jv!LLA~))hLE3>yogW4unC7UQv}NC!4X+(FZ#?lZGh?oOPHk*u(l_V$3#HM)PDv!)~M-XJah z>o{wVpHZ9=T^7(>kY+k{QI77oU-n1hMb=bui`rM61KPkjyW!5+#UFgw4hQzNs6F8o;B-Z&lIal)3tXx}lF|6fRSc3d4 zK?QM_EfMu8uez+h9)3$+15b+(ij4Dsr^yZEUPC|n`t$Q);zdS}{F*b2_l#ldm>f$N4RQex`O2nq}={o6y@oPzXxb#~05)ZlHN`WnX^wr&r>IztuFs zudDZ=C9~X%P$F2B%&YYxu_^-1(@8(@^aw#~oJl(aRXe|irVir&w>%ti8jZraK=TQq z^URS#&X;n~Qx)Z3tlQ$_y~N8{`|t2iRz!{4`=7ZqTaVyfd}Rb5T*9oduB_anrwm)b z$r-=cAj$em`8jfNl*U5bkHz>U$DiU~!1wFUW~m&`ZqXk9-LqN8Ip1ZJNm`Jo1{3*i z$V8~|ojie))n<61`4ufh;6%fbZ;APx%XcWsqh2i2;#5|Nq#U%Z{=rgQIm8uzx+-O} zW!@R(1xQc(Hnoc+jxdY`6mN}{F6Y+l2Hv^qMt;R5{6!j zHd~@SIkM{3Cuh;OQlgVRDS|bL7|05kn=|024}+4mw1ftJlKp1Mdt_|hvJe!>JmJeS zkLnX~NjcRls96Qog%dqMum_sE1;323k+S71Vov{mRX|%xu~#pDFY;FRp&+)5JC{V; z=sioLZe0ib83Ip^^R0&Buae1W&*a#qbmZ6`=GV^efoqu`9OS$)zm5F5KI1Gg-;uBJ zyM{4^Z^NM++dYTj!4bmvHoOij?#KChj^)_a^Bes(IQgZ$!+A!2sh@N9`(HV>&HNrv zIkpviH--p%m)6bip5uJqL+l34`Y6ZNg8L}ni6?Sw z*&lP}l*ehc_{_#GAhr#ZH6ehuJ1!7r_w z^Nv}$wzYhp`hv5g{3iEMCVrL4xwdV5SJ-lGTjFwU?Y%j+wS#kQ)8paKpj_KdzFQJ# zhyRba_koY9xc>e(5Flb8L4u;9jf#qjih_!YH4+w3L02JQZLpw#0TC$dA}Z0~Cd#_5 zr3y-`ehaO(w$+weR7BL&r9fM%SgBIMii$dMX&W`gv_$i~KQs5<-6UZ9eSW{!lf3TU zJ2Pj_oH=u5=FGn{UEqB;>_HTuKY+86XD-j8!r`GMJj-}O#EZTI?|A0&z4lb%@GRuJ z^n&4`p{LN&@s!~=muDr^Bm{T z*Ig7E@jPMc$?uEs;w5-p4{v@$8S^}zrrb8cgU#UjJ#_wo^U^$h|H!#+o?)+mho|;c z{I`PtPvCq5{x@=^R5Rt-6Pp)DLI2U%!YGA)_<7GUhGdiHRy4=F<8 ztGN})3tM4$l)pty$&#C0S?8&mwT;7$0M|rmp zzn1rSW{j5bo^>|u0PiPwFXi3DsCOCfoOVp@-?wSYbG%ev57>$WzXJHL`g@%45&-fU zMSWF$_I1LY$7XfHK7RM7Hg}w?dpLb&gJ|4;pe4r+*!H7)jhOeR?8%9k+5bj%zxFpk2dj=^(&$mg+2vZ ze+4n>3Qz9eCAeGg_>cPMH~ts;=R(?R;J433i~Kh2IM0}Qv`;)cd5Y(Qi)Sv+qdcWi z+H{`2G1@Dh;svzpjAeUTLc8&+Hf0d+hijbvsy1jCZnZ&Wy!$hEFow4V?3Al*lNxy+ zXd)+BFFs%sMYAicEJ-uWQ9H!618T9!`aSJ!)m+Z|7%i|M;~2HmlLo{ovbTb_YDvq<-t+^i4BAkp>n7&fv-6X;&adgZIze+Cpg zG%?nrqt1V@)$Brfp;kSxM1M7UI)!>&6pJ!X80BE8H;qzBDONENttS_@bExa(v$Zt2 z5`eh`>d6Jj4;5X`t_)3{dDCUXm_$0)v6~Kwp*xY4lGvEmoZaROm6k$0v3c0x_ov{PPc3b|xRqUj)&r&|7xbVum@TMg8w9=?P(8We-9vrbW6ovBR>1Y-MxkcpMzI1v zgT*=3q+P)3@!|C@4E1!|X#5eg01ZHTashjUdRTgWI0?jdVD$KK;H&BB*KucivdJ1y z*U1bWiTmyY?ucc=zMITq-r9>fei5SAs^d+VmY<5lp55f~zp-4jiq+BH!YIQAemv2tOdyvt5&u_@sgqY~Yz?Rmv#4rP z6}4uiMO6!`l|prqMYRM}mkU+hLgIjJF0Zv41kisNN!Q7pN=5kv+wZtwD`_2I*)5=b zoHR%-S6mQvwTNcn0MS%lYx8S?*>S!Q$(>47@e86Fi%1R-4HVE*7LnqD=!N@4(PSJT zx{BA@@q)R}B9c3ms^k|$=U7B?fM}tBW>`du3!h~!SCBK(5r z@7ynzvh#s?u3KjvZLG=4L5v&75 zwxYM_Ji~Iu1yMJPs4or>74uqKB}6;VCA3cNRH}qu5G}TdeR4kB0wh?)d+j76llAR1^9H318vJwjA`Cop*yk=&_NqeJv#i%1R-4HVG!fAPIs zaY6L{ca$}Q14O%ctsO0xwG?x*PVQ7{H@{Fc$s&>iL<m?xJ{QkVW0u9}$8%{_fone4 zg!N_{>u8H_s>OeU4VfF7PWUV+QW{G02n$mY8W#$Ou4GQ^%FyMZk)ewjp@wt9V_;T{ zxjb{gF#{aaZ1}M@zDBfTLOzyp`@!Sjl%H84AKU!>;Ol4cMQl3P^E(Bej`Y%VTw zCo4A*V|E)^(SDrcnR6Tqk3@-cM+3=mvNRs<`w+g|Mc^-U6O>K4mj{=|T=;n{T%8fR z&hvM)wdLUmD=|(6U3gpmb(GQ3NWxg?7=cV&9Gc+CgOkH5ICUeOXq#szzka+(NES;+ zdo;N)Ki*tRO_dim!1AQr;=GaH+3-fC;g@au@^|pp<-oViOM6*x^#eVW{}Gm|i)_j| zJLGKP$>iCmo?5#u>D1T>OMKOmLz`U(@8I4<>8|CAX-vY+>t+#b762PNeAOc9B$518 z3wfJo=m3)28(t+-Xq$>sY@;--t5uY87iC3ml(>uXu#M8FC~wy&mBw`sD@w7V9J*?0 zZj^|Pl9^?%U~4f?TKGNd)(C#r-JI7tLbqIi>3$nx)@@P9Mnb@}Bo|Xxhv`_U^ba)Y zlv|Wzi7n>6GwgSFeSeCmS*zJ4oJRcvCM*^)m2D=U9tvT|?u_`?Lou1GGrzP^Vx{_i z$&YeKZj@7P6e3_DJZO9;K^hk9*L5ZT=0^#&ye}-VBLHkhxTZJc%CK!)ruyUjXCsTz z&`n6hywDA{Y@NU4LN!n|+_iVE&Sd4bZF_Me?S+#o)v9bPJN}4okS!p4Kb|b`=Uj{T zPRbXRszyF_BdfWP!33=ArOWN^g<0dsQNx4zShVcRSv|%Wz#N%{=`Wbm1v4L*sxq7w zq1o8)gH2NTsEJ(ppK&A@hae?&1X?b^Q7G#J(E)qzcKt}i=-LoK- z0y$bB*9v5o5AqTExyP4Uf$XaT7iMWp#m8rkfj0{?Su5mf=m|3 zNdmc1Aai|?Pf@tNOfL~gSAkq2kQF}2t67lM0(rj{kP`*6-UoRi3$jfh^#aKk$Sxlw zkp*cM$Rh%Imv*MA_&zU3)3YE0@H4jvm1@GQ(Q!Aua$_l0JRkLGI*q$lme zRDlczBy&qu)DLe(5hu$EzenM{6@GQq!+!WX+3+*{jtwhU3O&g57&o&7AhMx zmr+A&FZ?gQT)VaH_RsM;-x9@7VbV1&j&MqqjV3z2=^t-&TN^{6_e+pV{_5>-Xr$su zCvux1C(M|3lfz@vDED^Tb0NV3rr75JCwR5>7he&Z#uoqi^XFVQ!yY8$#s`Jjcsbs7 z?=A2xPuyJm!bz|9y0=HD{_?7G{w!Fn;rO(&M+S-=4(W;)Yv;+l+0&vNsfy{=1kYeH zL7^Yzjc)nrDX;eW;Ysl1g85epSCQhlOir8;ts2L)U8oRI(_g*)b$Kn|+fP&8AMb}B zxpcYNOV+^tl0KsHu-AGme=#)q!3RISJV?{$wLNBcW{1@{!AZx=-E69K@7eq5{YM`4 zdaob#gdaEm{58Spj6^QnnYc^eA65F(PhaWvi)jU+Q%*bNTESWV+v!+Gol32Icqp`c zKY6if=S*lT?WX;}*|c-ul=jM9E$a{4v$a>MIJEM2MJFB}(3k@^7&xV&zk2)Y_^g$= zi`_QJP|y98!@&yA?z0UYb3hnoVVx<{4y&M|$Ke6Ss|A?@<;~xfcio)X7m@bA{|mT@ zz%80`+ViCcz1Hjd2UAWjzww)Z2R=TX6#_2Q=K%G}))Vc}4u#s=Iu@>M-P19)P-t`c zJH;;|7s(;W**o9dCK&1R7rS%n^G42NKf&epBn35&MsPoML3{Ww=6E*ePF1CBy|m>k zKk9OH&UJHU;qS4$O}RNa&_>&lY-{8c4{+u{ys|O~BQBmjL+Si$KXA5uES%=*Cx-sM z9~jj)?+kyb4l12js=H$*Cbt(od)Dat+4;RM{!uZ;lk%s>U&-^|d(-*WBY$tY%zhN_ zO_$n_vb|}{oK9c-N=;~Qy1;&g^7f`Xxvx&ijo8IVlVoVs8aj}oXG0M)o&F7jGd*V( znQyw!&fGA|y|bE!$Ee!q*b(vS60E(+%G%6O)pQg&EVOYiDbR!KC%s&({dd4#F+CCf za&Z0L@R!`?%c5r}#3w2D2$3f~y^D0iU)pwlo%Rc)Z2h%^tiX@rXW?|8kamCSiLKn861^ej6~<)P*UEntn9JLqf^o#W>-tjV2K8b;O}9y5ZN%Jq8Q>4v|Oe&&N@ znv&NlM?uJ~uW-lUM3^;+%eR}H%@##DiM+`OJ|Codk89Gob;v+NQ~d;9i&Qlx`iB>QM5iMftw>4wzJ5c#n+ zUM$-;;^N>PFz%byP}zM;C{FCiAB0_}iK8SPe9%GT7af?vs;I0%72wFng0q0mv_P1V z>gnRor86P;jpPJxlH;}3>>UJ+Hl>p@hkAGdBb8JKEG%@<;Cby+4j+FCqs7Np zR&?OwZ3JccI2l(vK2`|8@o_kx9r>8wk&k~Soh%=ZBwD&5yfBB4lrv*~OnGCF)-8Gd z4{R2R-}s(SqN-VwRvgU(NR+K~)_fk*DO{t#Jq8*Dsd$egDor(lD%*#;+#o2>$zW3j zuLndGeg#CN8`j+fDb&Cw&42_lN71FtO#p!C6~FqviK#m%6lGhpl>LchRhJ*8U$xBZ zf&4o!EldW zXdTJas3jT;M5f0&M8-P5j&t3^fGTVX4g~2O8e-q;1n1R%U9$&smh2abRDkvOG4A z^CwZZn(G98rFVL8UZr;KaAN+3=$yIIf96-RVSsak^P-U{v!_W%5$+Rs-#YZ1Gs@2z zJao{h+(tC$)H4R1eeS6jof*F9)ImcB4LWo9;6Z~2ojao1&Kvo2jI@#s=_+u;r*HmY)t7jhsAJOB9nK&*JDrt!_3- z(o6}nd*(!XH5sa^fk??-)e@j*h9+2Bpom?G>0%+G*J_P?EL23Qb^$w)Hr~pm?&cV& z6u(fHy*&p9cXPOVIZDiL?y%)}v~V1>UmRTA@$m#R1voC->pIR%E;(P zN&FtOk<5?~_m>=B7J3fJVV=}_HA{>_=3d~^4Ub1D=FJrI$F41w(xl)@p7y&AkzLsZ z_H6<03b<@-{$>~FTavGvt8Awj5ciQKuEq4Si4InxR64J1)m@#9_O8yy_+$TN!72Iu zxn)%Mb9M+TJcZ4qE)aU09Jt20qUz&E{BqaSGIoe_Xfn55Wfh?*t5&1G#D|8W$7uFB z2c+4&4qXu&F8wBRLJEu8S%3;jglU~G8EG=73)b9Bs}XO`iyjnjMpeazE|#T(On(A7 zlz{06sG=?-DzfI-Uxa76;Uv5=JH!dKNVMPMu2_=afAEgI`Tg^Bc}poDo%B)0M}D;H z;y=_-FlNFnHZRAR*X&2EFQEkr4WYF1U2MN8$7K3yZ0ui=d<(2Ja`%xO!FgPakzTj! ze-Qab=hMmhG|T6&&L`jc^!))oTbxgU^%*3ebyoA2>L1?bJ^z4F-_ z|Cp=j%~O0s2&8LVJCZqNf4yuzd&f)h(|o{X_|M*Ns9UcY&AjteyUsS-ixmoK?PMIg z2B$C=J&j+j+D!98kF_{+XR);glAXKu)3$B$Zs|4wI+2oB4rUahtDq}i)O@nKwEad3Q5 z|9qJs5f;~zMTw$6c< z!gC(~w{nj2EcV1tWuQ+cL_&cyfB&>8$sCG^zLxr9&QIThDXo?}#g405trC5XDw}MqS_Z2onDsa)C@zyIxUzMtZ+<>M zG+&!n2cLP`)LFBH$F1qL8E&t$nQk^u**D`z`z|#K?H}FhF-zAX| z)9pkOR+x3ITFLZ8q>^2mDaIp_pyd=WyBZXkB%VNALSy5=dxIv9Y0U9d^;B_K0 zOdpX!{F=UxWk(sA-VJ}5$>l^`FlQS1FrV=g2;9}Arx+vgOgGf?n_&d&>H6O#5S7Gj z5UnM_6q7tr`|juTlQ}rj4GBeig9hX?*VetPeIokH>J(oGFwiOTe?loe?0lR~Q6ita zosZKg2Fhol^Km-G82L=c$LR=~zb|D^!7Nsb^{1AolpPw<4x;qn(jN3DouQOH6btRD zvi5{%_r#_AYDUw|S(jSvU;j;3n`H?_ARrT*6Z3)lWkNa{*Pjr5`peUvGEjg(v z8B^cXIb86XL7d$;LRPm8x!s)q*&+vzwG?as-HYR)^uCZgzTo?%jky_lbX(-R8Vx!0=|Rty8uFIMZ77I zU)v&nyNa^%)cBY4IZtcz>h6TF(?GPH%{Eg{+DtVoQx(mfD+*rw7<0tK(RS$N$QU_| zScAl;<7G3^Vn;E`-g{)vhU=QNq7LD=zegrdvynfYCwz_8s{Mz2CpTN~&csQMb>5%j zZ8M%aKh}I(Pcp8yR$)V ze53xV3$1s$&T3oEExIU%0YP{*P4_?mOlGKhmFh;TqgCJ2UIhxr(ovsO%81pnjW(~tf$IVn% z5ShsxIy?Pe?hjZ4fK&b^n7MqT8J@Hk0_?!zYm%IbwTa?ncuk@klZeTRdN~S{73&kl z+(Dn6_^f2~b{fwD`V48igXtCYS6O*l<${}L%pQyr+0ev^lqY78-Nx^){oI%SRVCgS z>1fS>lSpLZgmKnW10&H`Uxv;6t4*HeON`6f3IQuX<fq~nzskji^mPn- zGbd-Usat*B{Llh6oA-D}On)!`!W~HZ2@nOaYm}}AF5S??j4NB&m0?sNW_mSlviFE> z%I~j?Zeob2cM41K5q|ncQe*m;q{jCzW-P+gsx-tC8E2LZ{?nBa-o@Tq?fZq$Y|i5+ zk>5Wto^y)~oOs!r$VkW5DelG4l=8O3r0t1GI}?*ylAkyZ_I}dmV9m#Q^A3xC^UL2C z)qW33^xnq1K{_5xia^N467uk#L`CB}H}2VfRw;3JRPTBy72ZWP+!$`|%vPttzvJS1 zWJkJ*s>VihA}nb5y)uXFfTeR=EJF`~WrVPN$70zDmUm%cL#@TKU07bAfO2Sw8~{tD zuv~1ha2Kq3NCk0GD!ff7(DQRqR2=|CR4BSy6x%>?6)1wTK7uf?xn61ZRHrCi!#mv& z;y3fYzjdi*1i5ZiKXLq^(+15hy>vLA{MCr3IsRjPe>J4O{~5DONBRD0Typ#|D#71> zFH6rbo#V-pFGK!Yvh*25o4@n(e&!;>%LN!Y7c;A zsj!q=ERv<=!g63)diVfX9v2qrIvO2rG?#g94)dP zn?G%y*Z%AN3B-VQIu2W;{`?WD+{A{R+dhHmj=dROv6{?ZZ7;V-ZXZdfM6c6gPAAU! zjpzfp1J-RIuxg22M(Jm{J#sSK{@9!Bb93%WmKlK-)7?w>#9#RdOEB$VcmoY(PB(BG z5LwJGQ-bM+J>PPez58af`S~@$%FiPK+WqIJBqu-LB2I_=JlZDJF*el&UaEHTGMgWA zGt5i2B}jJg4x6x8XugCGOpWDE5O#hlH&cHDAl-0SPNrOclg-x-Ae66##LFqClWaNl z3d-reWfXKy)@q4H*4}ATRJXTD``b3{hpx#fD%QNNSW?nocXlSnc}rBMeSjDTgY-3Y zvMk^~1CT8;EsEF)M@P5x3;!QIW69W7U(p!8#;3n-Z&B^ZMALYux{Ib(3j8(DYd*Bo z;fH~{xb;47wd|mc;V(lCEy|y_RQft3v38jYf4;^Jzs$f_ltipL1}_GI}O)E!+0hRUOB z7yaoQf5N}tlJJ+AtJ;FGH7pCp@-Yhs7VM0+U`*;|!AuscyRx3iS3ZJ9?qV3pOqVyu zFP(=AK_o@5RZ@~4FmC%YP@TQ;0C)e`_3##5hQ#IDlBcSt{qjIyZ|@Js{s5}DW>H?| zgF?DOnqGAs18-73duw==sWH;#@ZM{yaKmPfSERBx9s zE2+aSYAY04aMg|Xa4^uAnRnTQoJblfH=DmID_8<-Jc85X&!>X%`15zZxo?&V z@Az{llm-0x4mlNn8m<<9lKk$6Kbj_Y`wCPlBW?VOstcdZGRdkJlH&E$Z4{*8zshqO z$CHQ+?&BB$xvl^CyBHaaZC*E?*sQhmZM}aeeH~+kB1XrauetuD?4(E4NFX(OaJvE4 zk{by27VdwBE8Vc|8<4%z_BfO)b}tZB?LeRF%?qHzYu(VlC?^JZ@?W|yeLEv!d-HB5 zyb|+AZ;C%cRH=xY;;VwMw}Y>Dy|3xvdbu8Fl(Snc7aa?Vt7KhWOTW$bDy z_BVShe%Cf`{p(s|eNr?gw6WYJcOvt9c8)C5IdSV4nuSDper8hg^Thmozq#AJ3(CsJ zWJU$s2F`Y<3W$-oH9vD211^6@!I6IzaDLFx{lrD~iHP7#roC(2Z)e3W=f)p9xbp7I zhF>}C8VMldowt(Bo9+tObC=Ja>GA8U{-K|DVB{u=fVhyjX(&x)V$|s5CM|25L)s>$ zeIVJiC>y_M-kL}T*tNlJos!D=6pPxcdC&QxCIS5EJNEviBF!J$t33NL63HC;+)ALB zPi~xss`Y2OX0riofu!F|sBkLZ>4sGVF}Ln6A&uh5VFmXaTQRbNa6UyoexAD~eNO3h z_6&aMl+vtK&r+^upTeE0vrDJx!j>tsqouOL>0hC4$B(qZZR?QaO&N=?^E1XBQBu*x zzj$?&A$o$YTQ!5I$=jQ>&Od zE2BT|)@~S2rL%X|N*THbPbfV!et}L$g}8d$ukqD8k@KOIwj1i19JvT(rMFo>jx-9B zBNyW8Vt#=uIdZB(l70GKOXU~>CHRi+e*))=UWM9om{~}nN zvgdu1ePm_L`A)|--LU;i%6bcmANMe7OF?cquw_)_CLXcn@Q5vkM{GIdY!iI)CBG=# zNn^hlp1oqf#qj)B7lR?a|DTGX4XXcK481j(JYh_#t`QQ0`Sde4weu-8)7ts;H{-0&Qj~)VG=hJlKW#Lp<7b|kXj`BQOz%RB_YQI8wbzbHo-WSAgUFf3E zw$WMVA^O6ag#!zshq;f?exfrGq9uS)@zyRk-PGFug>k>RD0GAO+|2tfo}clo<SI+}nJau(rDUU=7PhDFQ>*YZsQ7&%u5hl3Q0k?AaJ_;L@myEra|irJa{>^PP;Amm z*LES;A78K@qduvT^(TKgd~e#Xa#|+Du_SCSj1^&ib5{XL^p}4*idHXwLGu0&K)E-6 zcqi@<^qob|j2Pa9s0}9p8;pl-yJ*M5yNIF@b~8PHWI`}(6@Wi%Eu#^u`=L;W+0@iC zKwUFtco+7sH+O31*9pJQ?fmlbD{kkS{xod0-bwLWNx1v(G$uC(cswJ1ve|iGvm+J#`XH|JM^m8B5 zns}Q)Z{O%g^ZKq}Mj-xzT5SgCb~8lI%t%q)X<%xP{RsJ`&5w>mAcieS#+}qG%%l1+ zX0k$*9DhrmxtlCD{7qt0r~bfi^V63?u#J?;U&x{aqnQ3)M;X+br0Y1tO=V_;uzXKg zmfQB(!j#~S>pE^xoq<^{33f{`>~Y2?Ton{x(wd71y5`!H;FqHeGEPx#&}pyu3v!2| zSF}a6r43NBPHw+rjvb#$ZC3a=`hz`un4`|dwcPrN^1H`S#3NIw4FXaLF%E4JJ)M^2>A>H~2)s-&a#WY!Sl?~dH(SqsZhfVdm`2ie zJ+0{iGt&*-L`)6ssH&dT>#un3Ab6|U5bB(*a!E!Zd)x|KY_nf=Xo7zvWZ?~FlN9fY z4cd$Ou>Gvhid?+99>M%A7^x`t9>xn)h*~~XXGu82z3|kA5`xXsqlN8F)ERc6SFF#X zNOD|7^IT(CnVzdex{(M=p@2%pE3o|}j8?$IYc1#qK!@xNXS5S@BTcbs(Rgb(KAob& zgkp>D5eyr^BoSUV3pG9xD2Q^!@3X0WN{~3r$K@%6PLrn4+<^ew;FX?5l9d zwirGY|7keUhK`5-BOO;9XxuS0;6R7u)s`M;2on9hmrbse)(MpRw3*xSyXIb72+98u zn*uR;lw#|s?;ash&((LW+~nh%Zdfo9IoaZGS+?^T_Ph~Fjd#FGBkbAOw|3&7DabyN z$&51#iLVw2vWnF)HR?L-neIAlyuC{IctP~a6v~l3SHZTwCbh$1ZP%(ql%i(~U&yTH zyNs&X{2aj{FM%K7X-}*O;$9q@W;kSeqH_3`T&VrMAk#63(}wIgSxGlM#*BKftCX$e z^xaH--{$G1qLjrG)+SKpR_95dBhTX)k+M`#rp#Pfil*4*dElVa_bbMaZQFTSpT5o~ zpADS;*%KXhdfA+$X^-s{<}v08zfre+0T7wN?3{kDQ~cj~3%acp;>@w~$a5abai&*% zS3Vmt2+x-jJ;vV2ZpV9jkPy2?;Sqf$9%+=sxS1N2P4_?gWs_QNgKYDp!FK!wxkJ&) zRGq2?b+`au^L)9)K|XdY=X!3Tb`6_iCOt8w85~G$JcMRRJ(l8_)u%D|LLN=jkN z2(kxx6i+3LAMC5US4@sqH-@6eO=yiZx5i{jCNfd>Uc`bcCaY;zOJ2wXbXOVYY4uil@Hfb304UiT<8nk;5sx!!$MKlfbf) z7EK@_cWHG9XzY|-Hu6x3nHi~ z6#W|fX@N!X#;tCNH{My6{qW{BOPtP{1iX0@uB00-_K0)+H@njQ%QBqzYDcF1FUzp+ ze(1azwC&39bW7)|i#nEJd;@#S#YS(F&yum9v&q`28Lw^i>C=d+(P{AgX>k(aU6R37 zL3pZy**&#wLsh@3chbRWKQ&uKd-C}ZpBuv;g$D1fss21fi}6Y+n@R0QS&dF3chwPR zs+U#uSAYUxo}qc`kKnA`a*Tq(=|4Y(B<3EQy~10lb>XGSHzUrCUagH?8<70+X-cV zeQx#L4nsv|8Dyp#h70~}B*@m}mrJ~}x$XJ8&mT91|CGz#Cdc02(js{5?GuF8T#(Oz zJQV9Rc<+8Vy&BeOF3dc(g?2F9C|2jPvZ(f6AVlX1=%sOM)WG-v?4-!3s*`zj53vcF z{;9CFq5$Wip;-6Cq`sTNB{k=)$wo^K9# z-j7ULo^P@B{L8Pm;rSRs+wpuVTvlGT@J=_pB6xV-)RyP>cx}TyiAhUs3qeC_5|ef( zCNVa)GiZBeT0mddX2z13T+v*-h#?kuW^r}IWn&meVS8V=G4mpf2pjdaeyZb0`D&emM3Cllv#LO;L zt+%88b3hqevY_x<>`dPdA+EhDOof-xk(E)<=F?$JP8}Y$lT$~~n!2Uvk_(mBX0r{B zCBoYnvq5-ga?&Yk+JdVD;B>Yz9 z*!{q`JeHVR2UAo17Ul7|Mb&INlW@fRlPahc;bwD+2%&H@WB~l^yVS?3&@bJAe(HUn zP2m+X8UX=`@XAXQlh%{byns_51K*(ij2&rKlpLCy7n{3gZYG_46C6yVq3jfE_Ff zvqgVLDE4)8RJkqtll^SMjK2~q5ni7P-=m!brMQyedrZXouFSBBf43=j4)YHClBvQ6 zZ3-_dg9({#eDt^6C)6V}nXWXryf=lPKm;7Kko{!=e~QgEbm1l8_gVY0 z-i{^3<^|^+v;l*Vesvl;3qZc!qm^R+>v`1dhK=F(?SjJlS!I4H(B#9Ma=yfNsYydO zGV6xzM_W(y7hRs<^q0Xl+*?^QH(Hms({?V<>4v+N(v!5H?*|>YzXukbUwva!@-J@u zcfp%}1K~z{1(jSZT_ojR(N zc;GMmx^YWE(s`l$-zi^vG~1iG8$r@i=hr}Oy5Ws;p}7(1rZ}DAX!S9gJ$5>?gr-L2 zlcbgw@-%3*S1Gl-rXM@20l(8Rpl?(iS5U94m58UMf zgY>Q(424|g43jmyfx%){>ul~PEVGqq_jm}>8A;hAdh0Kd?K*H9zv#z}2Z z_SE5dCQ(vUH-<^5`Nu&bU%+nP8>d|f<;Moh4AB_#SwP%Dtq;^Qx`7Mb7bn%MsOhOm zTFAX|=|*`FC|t6?0FDRnDu^9#aj0gs!O<;lag^31E!f_;Fe--{vt{GwdGSjR5I^6= z&vWtfJH#*b@}OZ?oAkXr)Zp(>lsXhO9rIA^(O}1nxqR^QQ05R6I|OANXz1j{*U6YR zGMThzN(^lz#OLfRChLFr}O~E>^l=W?}3aU%q3GE&OROH#*-doq$_87-WfPr}`Ixqt5_4jZ83eT+kSa z^I-^bq$*0InzIN;2@f}nd$~&q#KqGfiJ$@lc4R? z85&y7e+P+XkJwAQL+3qaqOaB20xG_sQ&|YvPp3u>NFHV`1UGG4H=477dPAF?ur+qv)sD=*?b?-zvtzp5t*GHAzbtecSyO z|D*T?nZFJCrPrwmGItP?Zg}`i5MGrf7@Sec3wtwqqC#cpj%cPjIkDxp+I;MEU4U zZ}l1e>EeBFT2F1(D@c})cKyRd>Qyt-dYepC<;eLqjj8*({;61Nh7Y>sv*EO-EX&hy z*nTM+Z`gl`M?DVW4X*b_uI$JeNYiI+KWH7jaqpe#|2oBHIZa9PkCD`!O4_U3x-#CZ zrK~j7X#>m;aV48CuWMa&`l!KwOO3cOlzc!jQvHUrq`Yt!%cGrB<$2~lnCg3!cL`q} z+g5Y0P0cP;6TzRKk!rWc?ebLP{BPoEyl^$?s1>;BU0?VuQ%^9tYD)T8C`3v{&y(-BpQq9n=|xtX41nO3G6gR4I@I|UOXtIDK` za>$RJ0L#PsGG`wkCKmGodR0p8;styk3Cn7#_o>gbsoO1Rrzk@@s-K7~;$5@EGAG?| zBw5P5hEIIqLfCnp<83xWMRhVhOL)M}!*KiTywH}8V<$GA0`lV326n0iTw4aXd2C?7 z&V`np*7r^M!onn{{vndt8}^3solQM@q0i2r<3&9bvaT{65ycWcr4PQ7^=qWufdd@qu3n)C(Iod~;%JLebNu5$=i1 z?3^4a0o$DoW*{9gPtzQj?Ff_`N)p7HX$zu9BUP$#kCu2J!s(%FxIm0{#c7cI2txd>T-q)u|v`9 zTsJuA*Wzg`XPL_Ci@trNV5eotM}FzWZyOkjMOB8L6(m=N&7tU7sgVPjhFZ0OrXZ4{ z9GM&5XfA=Ll&Cje7ch;joiHANu-aXeC%7)lwSCdPIqeI}2bfP9InWGs)hsz-pgEP# zp!ko3F0Dlu<7qehX2l={=hF?XC&B->-GJUdU*v>Veap-sTmH(*cXuJ^s#$NC`ZsbC z`nFA|#oTqWu>Mq7ong3NL5XWhljVb4o$&evcY4lN ziCc`%)DFxns=dq60Yj^n02lD{-=80lpXM2qVS8TYBF&)M2@*BXb`te8GKB>)P*EsP zJ0yFuF#fb*srj~#gk6p;=2`L^aC@-`v1?hf4W^N-Innatdjr%YI4+0U+u60*UE{`}xi6vWfv^tp3)G!@Z&JRe#GCtHh!>Rvo`} zs@ti%z8?i}>r~D2b(w^#1R|mFE@MF`8CmYn8RNKOeZ-RZ+yTf zQqsm`MkLUF^Xg=Jon%=#I#nllNkBZR28&qhJEjet}YjD4@dJjcOp?M z_hXweEJX`v?WlYMHLo`$<#>0~&LOH!+jFc-#_rPwqi{j(pJHXyroDG)I*7@Omuo)F z>;7`|=!(IA!iL(tHZn$t?$BvInx2{^7LKoEjl3F?^7rE-v|jw#YNjgxZk28UsKZZ>330-|3Ot$9@Lio}`dVK*s9hodI+i^g{Fg8!3m?!^Z0QlGHTsh8 z>>K%QlRqc=>?gil(px@C5lAVqJwrcA!V2a&v~v_j&;ltSNAO~Y(VWl({e;N8opyc1 zPjVWT7fHhkV`X4i^<#k34V7P$FuFqY>P=Qd{mG|3Wp2K(CYUdLx|!ap_Jpir(Q(4h z%@-D$^L_z`D_Txl@KtcX4xu&!hdAyN|ay&(0YZ zYR<5@-JIdjquS0HW`T0%40}7E4!l3EDa-ri5SAD4{#;Q|;3)XYx!Mx*;u9Y4H8EqZ zQr_Xcb(}B9SMt8Z+-{@8dmH0$#enzL(E{17gJGPNyx;mY;}`J$Watlg{{|u0|Lk{Q z-f!@Ezk@Un#QO_Tw@lCe?RZ}z-uG?C`}Ie*<$V??hxZRUpsZe67U-pUZTmuhnS*-g zy2CQ3m*%eZ*|~^yp)#sw+6;KpE+}dZ&-v#$|Kj%kvJ?k=^Be8qo&T=3{yC>7qMY3c z=5DkUO}CtUWnHMo;(PqRi?=I?m*?Wm_2OB1%(evQ?#)W0TG~7gRdCiFc8K`%iDawz zW4O&HaMe{yD;n1CZTte!CB>=@Fu6FwXN>?QhB zCAug`l#4Wy_glZJ+(e)D5-qohPRl0RVU6ne&)eoT-{mz_Z}WP&pR5ehnJz)HSVu_S zZ~Z<2caYbCAX8qq;F)gt`{B8H&B}&D-NdabS=}lWD&3E6Rh;XGZWTJl)`skS&gTtZ zpj?U*?2=+3BNY}0?PSp4HVgGv`-ydk zpw-0e>`}5lSvCY6bz(()Lz6Y=;*Ru~8)0LxXs|am&^sSg^h}?^f3aXtQdNT;VKzj# z13)9H^2|6`K9WU))UPGCDGUrh_9%^f{<>l!{Hlw2=rAziPS_Q(yIC<>Vwe3p!1s0V zHyi*yzM(K!kRT!bp;ClYL-fboTdI7BIpf$bTc*Hs3tcS5iCx7D$1$s+(VDgT2G%-#PStvRm{P z)&38Noesfz!gp~%)Sn4!pMiPt=ieqYR6QdV*N2~hpIX=s89?cdURZNM0VA$ZbfEd{ zC@Y}Hnb}9{Bj!oj0J4m3SGdWd)XY(aTnoK&?V7669(Ju4Pk?nNDDTn4{ zp7EGB<|)gqm(H)0TxQ2X2Zk%_2&W~-j&W=D<5!mB*RIX}V4q(Q!Th3|E@j=jH~g=7 zpCW%lGBE@OaoFBF<|kLchdm%s`!&#J{(X}{9u-~f|m{L~M%U-$oZ%U9F#yZ3xr zhP9zZu7H+>AQ3GqDS~vv4@+`sA@Ba$SI$J=gJ1Z`#&3(VIwLh@f3wF!QX`|9?0gjX zV8X8lx%v;2#}{^->KrIk77^O~@5vS@_BY+<&p)3;zY(mxMUP~4BIwlnk$EoP0ik&s z#%nM!A!>fcXTXyG5y9*-OySvXg0MSY>4rtU;gUB6-Tp2xUv?RnWaX50{)r>n^(jAs z69-%)kP6gpyguK;AD~aM@Ijwa=F-acDd+fUb?740r)XPArfr|n)laNL1obI4f=w-3 zS3{k$`OV5rj@bOB)fXGgMHG8GUT=#aKtHnr#Kw%WVCL9OayN&fr=~_mBC8(N0t7|> z>aJYr5s*J%EA@+hbRa#hUUJ5RWsC@d=&%Hm7J_9o6kd_^=X4h2CwPgOhI7?H}%c>$HTj;F{rQe?E`5%UG}X~Bk!dsb)*#)W~q;6Vbnx{>qB@A0i2<&jmT z%E(MzisGMe@ov7_3_OD&swA_3he4U`f9aRAm6=PEtjp~pjrB;CW0t$cd@Mc>!4Y8B zMl^U}yW|oxo3Rpo*C9ZdX9QcIuP6ATr5HEf{EV-FO%IS++f8NJbO_<;hT0;riD^SE z{pIq>XVZn9d^YVZuPTj>i{E-xC^k0eDV$X6R6wfys>rHFSD@a!gp+2=5m%tGBA`qG zDNm1ISM^S&i#04IdapA7roaMvN0Mqgdaors-LS2v=yl|}e#~h9^~zdVm#&{EpB&I{C)KrQX|kym=>>3_ zPLSh9)SWcSwtf#loW>Q_@jVGVuVv8bbv~{jFxx1+>=IEN^%k-|&RX z*XG37Es3$)5@WZLM`u#cE`5Bvi=WNh+!fVbqXx%{vddi~_iv;sw&I2E;5I>TO;v0& zE1pw+wo$&%)q=`IAlR!R)ex8pZ;|{Tp*)4Rn7f~roEOzLL7nUZ>#_@~ndzihV|TF* zZw~&kI-;W5G$8CUuojQQyP1%`3>dEY;{>%f^~dtvc8PldYmMz`jj@wLM>@DZY}mUhQsK>!HgMg5!>Dq4@Si&8_wQ{jCl}zxNMXeu^B$xp!fO*1>)*L? z?e;E9$k~qSCop;ZL?T?jF}wkj$Mu*zUZxzsN1vOl*i7?3L?tr7SE(W-jVTvT!LqJE z-I6OP)`eh!Jabf`<(FFsSYaK_W{G{bm=JIDpMy!^b-&Ct)~MvspS0R`WxsesCF>@3 zTg39oS`}I@w_5;n747HU{KDUBWxSxM?!KVhYrv|4xEUXlI>eRAGk9{VA@@$PoTX)% z9D%UQH0B%#ZMU3t4j3Zl7sz_DZZlC?g^T|VM2Y+V$Z!04{puo^=j9oie^jPZ_2Eei zk+cxQbHS5OZvcf%J?;Y79Zi1`QdlB`<-*#AfJwLn+5cfs)i=`jlRK%~3Ip}=tis~gF*5Ri{juN@(_S^4dZAQ~{Zh_@*1G@W{MLU86eY^!FXxy+0MSm5KbKI$ITUy0xOZ zA45d8bx?KdMs-`TAk*o#c?W72&)Nm%{k4mG@HY=jC(w-XZ$NE6hT5e4#2x_M5LSk| zk&V~@7oO}h%z56TT=j0}ISo(8w|q6K7U4xgNTX^UBX9(@?=PgTM)d~;V$((Z<}|AN zx8JQjHH(U@zMR!z=d*#+>dPHeQt7aE!K$qeJKRPV_CswLHWE$#W4EXKy0ol?+i) zFXX$Z?w@#LGe&e}dz3o4F`vM%S;Ib|WSu^-zaWqAY{tWW`m3#AH1Brfpx5I8-SfJ% zr@IjVNB12-Il9{}c0sqsfpemkm(9W z$9==}BNv$)>DW5sm6;msCRk!qLUJ!@lhQDyv@rGHAOysv)Z0(#5gKM4 zEo-v#qi-_Fdcd))9WAy!Tl5nPPX_mQwkSKgR9aD&R<<3u!B4A0wN^V|2f}UJf%E*t zIz&)AkR3TE>siOw7>-1f{0Yr5<3{fIhEh;oy#4=4eL0BZ5O}epfxu>7HFqez2s6fn<-RD+XG79yo@Ul zf!jn&+YL}B6VCqUP6&cGYMpy`Rdw%;TYG))A?`$fqvBmRj<9Fwys=@ABA+4gTL*-q zTm!-V)8L6z^&=!%K0sqIM_;s$)~nq$BL3j4AEs;Uy&@iDq;EiA3Gsz3-%{08RJkJ| zT=miZzIv;R%ceC)`|MtVh&hUGh@M>Af|L6)19byhrZ>liw9_DBx)F-8?`7$c=f_&A z^D#%edIc8hY}D7|8@*z35mW4-u>4dC}o9%EMpz4~NmN>y*rPKbAU`D{=MefrAK z$#I>;l1hdWqe?{Ciaatusy|W7UEGPp)vWPcS`Xdkd>j)P6h(n| zn84C|1KH7G0)q1icK1LR-J@Ms*<_z-{US@{`AXK_4!uJPM%kcs&G5l=C-rDI@;s`5 z!?7+G4r~ozH486b=&<mqPymI$3I7}VGsq}QSLej_oeI611= z7F9tql$=kg5q9#33nf%8bd z0$!a$=9q@{HiDxMg-jBL(I9xI)P8H3_>V7OqG#?mJ167wjtR&d6Xic5hWNIi#OIs1 z6)WvEP@VEQ_ZHx3SaX8zL`0ivo_H#!a8Vao|IdXVt?NokDIg~n6D&>sLnaxOIWaW~f ziP2@rONJ#zk5Fni1XwvjnylEBhz#3QHgxMyXP~2~_BTkDHk|)}l;{o3gZ6FAcY>6Q zWmq{}ob0Qgx%rtvspVtH^{VxpYr?+Nr>Yx|$fvFUTk?N8BL8r$x3ACK{O>PXO$p5` z_9dJ(lh2X)M0l%6JuV;>VJvktOT33A}#>6Esd8xYbl#Q?E#6CxXus&ARsk@4> zQn=xuA~RcA8Q2^#v(*N_5G61aJvdpX57q&$95L#$*dsO7uZCiMT`lP~E){;20)o-jR}7ZyEg%ZMk79<}}X zkWAc+=9CEEvnl+r+Cp1=81bkLM7h`$F@9314Yj4_1-im2HlL!sD)2~KSlIbcOjkz5 z=FcwB8V`ydG7bwHJA$mpP*BizpG?~zt1#vx+NET8Ys9=r4P*Zo*~)wvfX%aDYUh%d zlqE(FOWl`w7>aPv#_YLnjiDY{qMr_+W^l}i)TZ`)?@5{C^T#5 zsfAEi-^^x0vd#6G;L_6RmG-^ITw>piX1IMfnIkBAtN++oen;M7eG5zrzUhXemDVb8 z!fnugS><4LqcHFB=T(-^xpD5C+0$l6r_HY%8`ISa*Uz0c2W?VaO%DkH^ z$IXe&yKY+L*vL3tOIs10F>6M2#r;pL?6b&2wU(dPrbV9Kl+Q%f(uY4)^vrQ^9(OR?w8nRUQ%iCz0x zQnAmSotxUv?*f0Fr{$F#(?~?O%QNc1ZVZCi3-K@JU1%o{(g3XCPVlp`dIRw1X~nxkMwAy#X?CQ4J5Zus$MZDjmWLaktDR{;xQn5c_d#w`&1 z+p;R=&-ZFSQv5NpXU>GFsrXOzd7}M%QlI_!{BN(4@s95|kchW4_pkQTZVG+fe%b}B z&Gz#*LjQvO{H;Ep;&YRot;ZGGWGA)t1%uTj2|7Hk>8cXwIOx3`U}e2~>4QstA)8d@P&u2&&rTsoKYr@dxZSW`Q#ga5XXD>*lg z=&wDXL$vk&q`h|vZ$Y#>A$iFcAHm_gile6sFfaLwRrqC&Eqb=gu+rh7&$muLZe-Q; z#K8R(}}n^O8(k}6HHeGf1NylXzoV|wC5yA7{L&Apaw3CpmWMKCn# z`4uND!>)E)=IEI+N~v{#T#{r`!?ufMLrzdSn`LPXwf#B zk{4loBtJQJkE^khV|2bF^8>IwfF(wbQHlG7!JW4i9`v1rsvVHR+SZU^K`rXrE$9$I zGgwFF+g0#WK0!3df^SRe7=Q=od87|PW zG1L~8yUg|rC^#-84)Qhz>PO#J6}Y2f$@b*yUfb2ib(M7$J$wH2O(^a`l;yB%dg6SP z*}(F}q08Z@M)mB78VJ|HxY3;ZcU4Q6^r9DkiA&GM*0<99s`OUm!0Y?JgD-^> zqA!Ty-`ajAUUWoEx+E7%G90kk}-u{58-W{~{YDXZk_z*#n1vd!qys!rP9 zab49H`pzeU)~B+2{@miynEu)7iUprwrvM6sbu6Xb6QpMjZ5-f|=EwdfY2LKQ_4B!V zGB96E7vF5pX$ta4q(a?zCP+vi7C;pmb?KXk39xWcE3f=UMYY6%UWG+L6C{EgD9di zb%M{3oQr`r+m@xMwn(y`yASYoMXeE?E&=f{-L@BJfohmfJU zp(&yH_I9dS_I~jj@Wb$7j=$Ictf7W60I67$;No(wDd)!WiVca1Es2WF!5QJ7o$Qxo z{MJ&2Z&fsFsS50ii}TvD8n52MG{qIxd$aYvVt|I2oC?Nol}wazJ6!cvSr#Lh)~*=- zCCW>)j!3G!#4GsbYnY$EmAtCp184w>J%FhKxOzVTg&x2l0i3%Z0Dnroc@hA9_XE(^ z!!YDq0DKNxp@EuU%{rLx;LZ}Hi>dDUkldH43hl*w2czf`cx+BLz#$VS0*{}j(#?_h zSw>6QFSRQCPYm{$x)hUsKAQDlDQMf)?^_M;8CBUSB1OWO1?dbX8% zEez`e4C^h15;MocphMaF!{BlTF)ycLR(?Fobi!%=gffh#a&?tv*~Iau;W9~)oOh#x zh+S)w>Syw8Qk>kgyw%>UvsF;##ax|iZdFWkquQ9Q9`je?HL`VVQ&C+h3k7YZ*k;G3 zvnI&W8kM-Lxq{?~wZ-R$8)MxP^ZRKi zHWEK`Gs$8Y74y!RXccVi5zyFuuCxj52xt6YVxZuLuF z&(VdF(-&V_6)Gb@XGUJi)z_vkzMQ$V#IqWU)O^S4*(ly!r!T&~s`X1$PHPElC1M~| zfOLF4Pw_&X5;qMAp!W&F>fT0eAH6K2=siJ4`xHcrA*Y_|Geo6GAv3|%Usa@ws)%Qf z-m?X@hnDW|5VmUTc3Qen(X(YErYFLmdd}(V{@H4Nz(k4+N_{aVEI(+$ zrrO`h_P0vEZh6J3YE~C(F>}bYrqZtGEm7)vW>%Ck*uwfauco>I*dl8K*f==)bcSaZM zA85{oQToQi1?ADr3wf|jb6;{8Qn@0!j22-?J;vaa6Qgn&=}!JnCGuQ3zg{6+>|xO) zcTYLGQ7!R!E5+BwaXm^U(V})gCr{Y~b@Oa9riT$Eg#8?P?G@3BX_ow51ivD>lpOk& zt%B(r?Jza4xIY^5g+U0;aR+--VP8)!*`o@36~EI2c7=Tty+<#ou9yb_%=d?eI;{FRM=PX%c%vVf(45$c+=+~$8^u&%m8)$5VjRI&_#IChp>EJ!qE!N|mb9OM6&~b>TVPv? zgIkJ&T8aZ(iUV4TyR;PhVb#UQj13`Jf57H6aJS_lF^%0Mu2H{@rS))@Z{1(_DKaBn0$D6g4w9p2%DoHaYV*;W)1 zT1%s4@Sn#!G!&Aj!VyQ32Zk9;dCM7y9=`wg6(V_5L=v$K7ISO3|D3;q9ql7WDN&jp zszr&e8s%Ft7x$oT#Z7Vvs%!mL%rWQ+^4K^vJ4JVdyD%@vUt-Wjmt0Ak-COI0<+WMXNH8iVpV5t&&R<7j; zTREaD$qF?TEj+W0-B#Lo98DP|+Tgp@7;>NGDe5XA!5%W^Iu>|61d3c&5ukns`VG<9 z!&R+H3VKiE6x12FK@oE{k$c3FJ^rEd#Zfs_QiSP*YJKjp`w)k&2_x z?K7?RdYu|F+=Wd$L?Gc2iWPcWsK%}wqfDF7x5;UX4B4f5H6mz`Vx|vq$qV3w(=9}Zk#w}pla(k zegRz_5Gn2TS9K-oAD$2;EzKCDYKfARyUEmpq^TmIr;6fcDCzdO3C&O%T~KYV9FF@0 zkpu9N5b98f4kz!0GzT|~;+DCUb*z<%?}#YY8(De54MCbf*f?htC>CLZp~hS5hBjii zpVPOLN)c>KWEr;@^+L|6tzYpubb`~^q9=*Z6{&aej2TO}=^!U?)sqa%6#bppO(G8Q zz10pM1EGW22!wtDbqFQn6|fvzd>39Z6vPy_Xi?JAG3QJBBAc<@Oml(H-+tL}|6A=E zQgID&yO()cq8FxGg%9^s{zU2vMjd;^zUmPOrZ47*IAp9DGAUHa$qCP|i$F()|>@0t}->{fg2Nme0 zus3Aa)~6h&dPJ=-`R;vucOlC@CqjHTCnl<8jLG4NFPiQ8)PB~(+G+0DvrwI_z5Q$l zta&DTCsiiVzH<>#JGw|tbUWmM}t-U+qY4ZFBMM^^%4=Nmy)z2Y+|hu zNAT{e(hAVAo(r~G%y8#!ww`+wjp;QKuee?0HIa6hY%31 zne;`&&!7Z+|LQZ!P-2Z$>nW5ygH16kJ65y%ZM{J`d~6bjN5|b>1b>aZrc1^1KV0KOCX-dQasFuQYATr zgSqAy1ydbAp>A{>64~_5@qe^zYDb+9tQUaa>ORq(L)8%5cTi^wGkA282J^C5Ct61t z*td)pK`ZBxDN26!KDf|MJSh=SBZv)yqJHcpSD_crI}oQp^U8RJS{y|l zON0B@NRGBePlyneN|2nRis)r@q;0kqmbpstlkZXOUM1|xrAR<3O;1zs^`_d5KQhHvB@ zbVzpPVbBWekg0*7G#z%Nh&b!;d1$Y;-tVZc!^JP=?!Ir>VgDW9Nm5h$kH%_kx6&(l zSJR&;{j}PJ?4PKWYPC(W4Ml;kdziLy6^HDJ*4rc;8b%ieZIWRUL}`;~yJijT1Va_C z_ONO=)YucH7k3%qt*w9H2!$F4U@7T&J&?QV=*6*MGm2bgveE)vfue=r+_0K!`5^WB z`j77id#_`x+D@d=$ioY*zH+_&t1t&cn`Jrj0MYR%yR|ggfNT5Zb%(JFz~r|Vy5D2+ z5sxlGOnK1*_I%|hU@7y7_8=u(x8iiqA6G^G_oR0htU(;&<{G{>cwcGDh zmnRlOqqX%O2rTqkCw5#Y=}*&e%9kNt*8*#w6DSo&&{+(UZl&1Kw<&@vV*<^q`*5X+ zc+|;hFj0D8#xoQ+M;|CJf}dy##{|j?@ur1t3x^IXBzox1BV4uhnTIHJNCExKKrJXY?Q;T9!f8%g92toTQaeJt#MZwuCVN0V?T|N_y{l}ZCCXTt}z zfus){`cp))C$KWxjSgNfbN;1@DmgbRVe-eVu5prZV%8^G(PgB1A0e!}@FXvF1 zISJp@z7Ou%P0fBdf^^4|yk=ARVH|V(f;ah5d6e_ee(|{vN?m;yVHVuLTz->-u^A#8 z8kIS7@x9xbp;B?*%E(Z8F>GKjFzi#NTfLG>jC>Nok-KBmfO-=*D1^$BVGHeXa;Th* zHv~`mp$l~<^!?(ZlV+b8#&W~tFqZ2R=_GeP$^D4p%5uZx&WhYH*-w%CtBYLZsdwkV zALtRP-4a}$6B8jV0}cW20?z^; z1Fr$Aft|nyz{|i}KwV6f)DVT=b`AI9*P|f}zn%^K@$1#l2fytbdgAwrh9LZ2+0YHY z-VI&w+o9oV{C33ED=07iA5+EVTmBiBz7P@U5*%5uzefbh<$G+>N0^LLG#~CDN0rM0g%5Aw0}+mLBG`u@xe+~iJq~~Dr8rE` zd>|V20r`+@^x-?^t7RCP`hXl(E(;L8jAUPkU|&q~LMLCAvoF7)*o$}&jj~L>{0FZn z&TlrU#kq@+_$wHWaw1rwQk?yS;R!Y*f(=9D8&vPwD$aFCC8y&2HZhFFc^xr~#d!%a zoQkuL@O?b{P6YcNCO?N^2CHD(mE|0hYZnKjLr;5z+W>m^UH0x6=5;jSn9Rb z$pN@LSoB(bX<&zmm^#@DJnCmsWTGG&)zxBnnkN6aN>o>85OAd%(FM_>c6}V47=c{zabQPturNCTvr0BQ!DfLZ(_5I)p3kXlc3hR2 zBA@$!{W}V?R5m-xX2Fh_Vem6e-Y3j4`6l1Z<_Fn4inL_w>Y%0&8?+FAHr&UCU3}k( z8AtmP2Gsa&854bR7qWAfeXrNWUC8-(@wm7PO&nglFYZFt$4k4c_fL6e^^jV!Iz*pG zt9Bkz>9(I;|0NadWvQXQTVkTr7VCzD2x&Ml5=a8>2POcMfPA1Bm<8B@g#e~fM{YxP zk7jGz74*1gTL*d!+(x6`hP$>=er)KqjXJIkw``*m5Dne7dDG*XZAfHX<0!5iB&^(RED7?j)QP3Wrrg5Wq6V&(U7)N|gZ6DS^R|OG7d%JwcFro- zL*-gl+5No8Dm}@n=yBH9a=CDfiIwNzm0F#RctT~>kTi%TiLFQw*M!5X@>s>%d|_=f ztogCE&8%4*oq#p79HLm8AgpbIwR(IZ0BfmiEs(9n${iGIgN3y!Slh+cs@R(FG(|p* z&KrfTv#_=v)}Cc+>)Bc`OG}ftku}O}u=+jT5sh`QTF6${u~nzcwhD&yodZYoDmMH- zli5~6>ZS7}btOx6%4`cpMM#^0YG5Z&2Ydn?1-=AM1NA^7@C)#NKC>-H@WylSmUHlw z%yt*)ORIL}Mbw_^i?!vbYbv9cJ4A(h6*94$2nX26rPQ{}8p^B-@>+g2$-mc#+P3I@ zs%@8nYS^l7_=E`8x>lWM8U~A)XTsR2g{PE=HcTmr`R)s}$pzb3FiOLcb+i0B{Gd_% zZ7quTWr^HisJd>E@&FfMAmC1g*DGn*( zg%C7&R?PInbk9RrAmTX=*EoI**%YDCNv-18M`K|$isCJzxdFj2MDum@UR|RZsI{vD zAcCTqw}WEvJ$?<*OoJgsvlk>%G*{tSTfd7esnMi#!6yx|G=H3;Pits8Q3}3<-NoURqic?Ix|2Z-W1%C3g+{Csm9~Zl#Jr8cR#=HIQo1!^`N~ zLJw&8u{!~uuT@gqPgBLc5J9S#_#Vab1bz*w$bccK;zkH1RV>4^w*DQmByIvy*7sNm ze)yiMqJ&%EE0Q?Y%aFdU;w3{E#cNPXt9W(RSjHsY1Ah%s+lMZ%o2Uh7QM(>eC~EV! zQ>fcHN9|r1Qq&^Arl@Vj6Y+;tJ!-sm-$pvez;{k(FEyPJecUrb<)8Oa(rlVM3#5If zm-OhBnB;BQcBut>*X%WZW_gOi9>^57=O^raChQ@PiPd#pucQ1x+R8~)wMDbZe3D0- zn@>Q1%s44DCY~-*!DawDD&)K4IL+VA>5uP&^rZ=U7-5a*3~D8+1GNPR!DxIy9!3o* zX6pxhscEtho??hD_Sr0lj?fCp>sezP5ZH!qm8y>OJ5>NbVMa~ai%m;?Sf5f?o*w9b z&=$c}18=OuH1{>SAttff+YhufC|`Fbr(ii*u(jVw{Z_tUhSvv1SNH_eW*!F~v?n&K zWvmxwCkuttG+4&niMU6d0zlMIT&P&wVW?N|18GH_8oVAzn|)<9No=_HFSwX?6}gzx z-oBTP?0W^HOwsNC(DgMBpgI%#RvTFZye>)0lTFxEf83GajVo(lGo)n<1uuwaJm_G^ zAru2JaFq{AXaa7$5#k_?wk&z;>*wlq9F$wDpmj=vb$C*)7%^7O6^ci+=!@N@$C2pW zsno+wCUroFfr(qyE3$Ttq466HIgl$7`t_|;BtCo>3EZHZa#g}J`d#Y(sS}9v6PgiY z!%^2y)6~$EBJURu;t!5<*26xcmM6<7{ft?U8JK*py`Msj3F)T#I7P~+@d_q1+TwI%hU?bB}uqlYRXP353Y577c zL?@sX?0uKba0a15#~)V{aY7LHvdI}iyul{t#74JZnAFza3s%E+RB0k}pq`Nrpc)eU zsZ$+iv9)42QuYJokOc2kISiMyjp$+Tk>y{`x;ApaMU;{~vM;Mcs_=*zS^NVZdsO%Q z(*Cu%kc!+4`Hu?u+H=03x&2ccw(0L&YT+*}QQnpF(3MAL!|PLYHZE;J6&*PNWYbja z^ZbEHtT9ZeGxd<(Y$v~gEV*_41E{8JjK`znCKvz z*MJsWlEQUsbP%lxVd~1{jV;qCs{C>WFLO=ad!c2#*=vx~$ixSaK)GlTO|XED#nnF- z9DXQ5D9W)y$k6C>zK_3+p%|TEJwEb|FMJoh3@Va7h>L%W!%e-&@XYOgEz$DG;m#zt0UfllK3J?<30{-{X;I`8wD$ZfrY2QxU6&(pc#P zR#xS{cZmz9Y`n1zcYEs_+faM(#Z6ZjZQM^5+p&d|<)mUSom<*3TSNJMT4Qt#~bK%^9y|t63?AEcKrrPFboUObdEnj%~wjxWk4n zO-MN9NDaieq!H0Wcf=11mX26tno}av;3_2Lh|hEs71Y(r9a?iYQ_bBhug0^se(js6 znoo1DgqrO@vF~$0%|p8a)O|mA_fp=gsZdh|f_hYW50FN$4#jL4?Ss5NB^zP!zzTLF zyi8&~vc$oLYn%<_a@1z%g*;FT>pb>yJcLEqE;u>rMK|Z+RrWyepj$rxB{fo1aDEtg z`B7L<^Q3YI3T+4G^Spw|*?^0fTN1GiYL*?anVC%>p8a5v$rk(o$UF8oz*zbdo1rUO5igQU;pem~Y9bw42 zvvivbzGTaSgd9Zb~jZl=!M7cdr=vaCXh!42!QQD8|P*`&>`V zZ5(7)SK&u)*obh##JB7W=0;bK6D8WW>=-BHWj?WYS>Fbyh{t>p6KnAl!!@b^(nkaHZOa^c0XLJ zb{f`|Yt?W_WxF_}a{Qtx+QZgqt5iV6?zsG#54#1|3)}#O`;5l*1~*pW&egbn;Eq$c zQ#5Wna5EKdD!6sgucAx2dKGP$8jT@pMRXMM8jKtZP?RrjVj>?5#&A`FCS2HhfkL@~ zLrJX4@(}#Whc=LFdZl1L!`|2oI{yI6Wu%<5cG%pl*PlJW$v8(y+4;9@{~GUm?J?8>qu3;hqIs`^{}a*M!~@VT`B-;6*hI|zi4dSvPpC#-Zm0y4&Vfmm-$QvG@24xd_ zF^aq>jx&03&t<%*#Cj10`=}i0UN-HC%0~mr@xaDnT@*Rf?pSb76<3g!|C5QEAN@ zute7^%&T6etlccH#M8lNzPEGaZ_Os>xK52C;NW{FMcli{3268hL?37{vku%?6e{Q< z2P+nDV^!SJTB6WI7y0+MSfc#aYaDtgtx2AV0AX(;)xVgLYLeH2#*8I`TK^InYnk)` z1ANa3BrH%D_CB)HjR_z5JoB+((?@<3uXML0Uj>O}BJ9UiZl?SMCIg^--*P@h@6;*y zbsgp@znpdp-30lzjcTTAMEFLE^TFai$i)rALG zYnFRzw7gTe_1VLIo1k=j9FgBK?%>kVgC>#qc<`R+QY13UGjeA)(SyL@3oe^e)E!AlnlqN2>N{_@LUOcikRQ z@(pYcCBp-CA=Sf&U&OPKE*8B8y&7k>oCXhb(qI#r)*kk( zf*~)#kLE`ddd#BvlZPUAi3V>gO)blB!Jg=i$U$sGoeuFiisfVk74|~N^>~~oTbSJK z%v@RS$j@`K2R|FdH0oFEv{_Ezr;q#rKmC*u{p%1>TmShQs3Hr#Va@CS22nJe_d$>( zuv((={QvqrnsmQV6wYZ{aZ)n_CpHW4HUm6NvAN-olOk{zQHC@{n#AWki=})i6E-D@ zA{_(QxuEInC;g#vm3jjtD;y@du#tmbIuklWxzQ+38YN9c3oLvWXGKYOw1FhD*gD1n zQ6y&^KzzP8Gk;2c!SsBlyMmuQqsV5-i^<8ggclVRWaOmVatiW`#<4l=PcmC@L21r3 zOJ>T9LJQ~+V4Rd}2!k4~aD=J|vB*F;)A{^r0b*FhzDv?~E_0FhWE1YdLg=up zaz6ctgFh|YvScxgv>+zH6$SAKf<{67n1lGq3u+KCb>+tI_b9?}^){ZQkzGc=SGe_i zCAck1mK**4Q1N@L;`b=_d-R|99j^F2Sn>N_t0CTN-1@za{a$7CI~uMi-d`$7a|F-Y z`cI#~e7rw^EsFPhcv8H#8vWkj*6%9zd%e-`_Z7b%R{S2ze&28OI~ljwPR2zWSU|+J zN4YJ@*$?7A#nF!QbSEgxa3Z_&=t`_;Cb5nEj!0Weav@!JNkZAyJQ@ zp&ac<@B@5C`@WOlJsQqFBGI#2l1nh*hOa=>2)osfaWsP5TDO;RY)bLVjuiRT3oqwp z5xZGnbmN+r^N{AGR|}q`*UmOWn!d@xUGws0mbwYQT3)^$t|(2fgcQolEzl^||DU^j zn*Ib^HpF|E zTfcX+-!(?R{o#t@?W_2GCHvjsPyGHBdZBp#geS#&p3(1*-1@zb{oZTzyHfFc38YZG z9eCE(S3Z0Bc+Xb+E>`^Zm}ZFgVYhxCWxo#^{q6u)6z{Hz-@fd(ztL}G{^~DSo*x$! zz8|J#$#Jmwek>t-pT-bVf&uusqP_o!IKPbQ-AzxDxIt<-Wz7 zp=gilV#3;Cn=wZ0&GLuP11f*@+D0DWzXzVUTSDG|SN?>(?;`qO<#6gN@~w@S<4050 z8J9CE4E^XZ<{jAzwMy8ZLB}pUO6OoEpL+9j<0B0G7Q}>=&cS59ffuwOCQ7rRZ~xHT zq$$F@BS-m`7o%&Sspu?EhpM+PT!Apx)`$EHiaJZv+~QlQI4?!V!0@@6aV=xg+BzJ6 z4Ihlh0eKw%Ofrv=aczGKYDlGR-Po=Qyw?q!6pD_9vV#dUfBRNE_M3gYg zN8ZI^%~DP^V@(|6vs(Fe8tOMD+W(MdC2>nm%k*oAd4Ps`g;3W0jwYD56rXAc89N#G z54(8KNFMZI50GmV4=#*i59ZFs+!rdiE@WV8c9_iaBOP(;N?1jj*KjQn@)0j>7tmA7 zDGjQgK^iou%U;~hh`VdhLvj2j*0UYML*+&c3B)&%X5EwuhU19*Z(`AoG#Q_$L*N_f zqd&!`#li)0zqhhhCiXySm*PQr@^uso+}-mXe5Z`R>=9Mrs0NhI{Aq*_b1{*zm615) z(TuwnGq3~UD7ba@Q^@G;c%u!vX}OgMDlF8>FYv5n6DI~fh9SW&Ch9OLgH>2k_Y>b^ zhE3lnx)Q$9gkC8^q5C@-u25kp_k@gN%3D71G-+!NejBh%CI%I>H&E0&ykY7$R7_Z= z7y=g*r}&wAoFI*h?bR@=C=xNE+axJQ9^ff4;_Xi&Ml{Yxh(F<}%x0cf@}`|(pMkme zJEv$Q!y^tbd+{nqM!nSLIZ(L&b{T?=Z7yO($(SzsJrc4OT`g^Sjbc6mQHesGMTv&~aFy zYCL54f=38=*s0P_Jo<|VEq=6fd<@s6$1$aQ73N_o>_K4ayk9V0udw%W;(beF_{NI2 zf{D8yt{0H&=h$Wd@f>7d<(D%*kohEA<>xV<4)AlP+=~?`+&JPu+^IgdlOTCC>`;|+ zZK*KLW77)`JBgDAuqke3ST0OQv1y~jPD15tVJgH_ET=Bro>J=49h?Ji*twA#^(b-4 znUPyf+=C9G5mTuAEh<#U5{`+`2zUpW$Fa7vKET@so>m$Cj`X9-h*lKk@+Fi{Z^kd} zR4Wzxg&Lo7-Y+B$zVMmhuV6%tMddt7Ww|$X9OhB-$~WUx-8S^Xm)Mmpju5Ye1EnAB zI7G$tF4z;ddWgNiRD@~AE>_VirpMxj9;E_!5V}MD$E_nM6l(szt#1A)1iKyW#G;X6 zF6C6N)f3U^He-8M@V8V()gs4ZFY2G5@=47OgZe}>Z=V?}*+N>~9CZ?U5Usl-ITp+L zxH=w-+p)BRWT}UtuX-N@=~dMmtivy#gbvT5_rZ0!=4aKP`8mbePjMxa8$aK2^79_{ zbCT}o7)N0&)YVa_YZF2{p4ND^y8wg+Ce2kffa>gXZ16ALMnw+u`=NM{R>Tqf@U zZWsu}n#i(f+%be*aN+O<8#5FkhtXBkZ_~~mNK3g*w6@2$z^vr((uQwju|n$N&v^nj z=8_!jHs#=9+lKEVTKN?u)!X=>Gb@E&wZfJUg=1pVcu&g^BpTX(NL0UfiF85_+7Iwa z_I>9e?__!2Pc1F__z*>e&jpljqiRyJWpMWGMv6nxSW4PKrNDK}yBO0qbV5u7xd9~Y zA;ISX(PLP`HEFH9n9hl%`c-%!0=xkLsf}WEU~8YpP`}`8)o_}l6&p`*ILh0Mt`arl zfe00vGM?2#CQ!c_Nc&YdeDYQP5R9O3RoNGQ%fI>w4p)zX;FNBoieD=3P`Zt(e#v%& zYan{rIS@-?@X-~=4#AW-wemhX|3z`ocK)KLH^EbPF(1>Y$6U<8 z-HEW%*obz1(O1*NY=FHB$d)CvuN-p+sCE$2t$H!D;ghncc?FDboXL+*yp;wR=!OO8-;3Cxf-gL_SJ7h;LejLp_6Lb4=5L- z|5HsLMv$k_8+~I%PNz5eB!oPc-WJhY0=+G!w@7-U&rQgK>5V?@Am2rAE9tEVy{)3R z8|ZBvy-^>lx{BVeq__3-b_qSM>JobU8E^6*++S68$k`Fz+WKb@zlNrVD1C+_xQoHm z{ublF;WZ|W^adT&O{X;jjQfCO*$P6It6qJp6h~4 zQaqk3@l^k!K*xhF!*lnoI$t$+eP+Vm=I$nGC7x#t_N$2QVUqUY>D5!0GYj-~*vrK; z6VF9>?lZV^mH%h-cDTO)e>UTJ4$rp!){!~<*^Otj!QN8PCk+1EK(7Nm4$rFYy1b*H zeGrcmc%B)o^V{;T8TO)vn4}AM4#U&yN$3^NbD%@9Z+9YFC60>aO*}8|BHC9=i{dSxb+SBg*qr@hnrG+m+{D2sh5KI0GgNt+lxMv1Oyj5h&Mp+E z+Lj)f3cpZ!&QhKWl;=`@+V2ct9dxV?z1Jkk{Ys&{mL97Vvk)@#wZ8$)Wy?qv`J4Hd zTC&y#f}Pz=^dY8u5*>)tlHX^#7tx_azrplPM8^}on&}{-#}WM`)7^>AC3-H?!9gfna&VsIP2&bT%dj9T>W@PWFZxTyFXd|!@t8cI@p z!K9pw^xPn<5oHxv^DLP`QPzUO=&USDhK=%v*=otMSgo!3ZP`!9T2xSSaYly4l4;45 z;_}(oC~Nwp_=18$B@Ck`PKNxTQCV3<78@^m(drd{882U_hg%DZ3!^MW8P=RaTY*&~ zJ1)Gj6h`}EiFEptKJh;Cx~N1{uJ_WBov z{v^?}i1uUp0MVsH2ZA0e?olA5f({)4_ zg0|m7nO(B=&Mt+)Y9h??dNTDU>5Fyd5@Pxga}|rQ6YWRzCeUN#BBHCwiyEdgh#p4f z$Ju@|(Xm8dU^9+lpcV_`~_eq4T50T_{1OS;WMjIqKjD&3YIV=c%NO&YfaF**5} zF*(*Eb_Wj8iI68;Nm6c+&6<%{m_wG8cXr3`g){Ose&Gz}M`ov6;|r!+tP#aoS>OBHet?J9`?w~57h6D`&l^bXQFS)?S(q)~;Id>mI8Yj`KuI6iEdG`iSgoiQdo zx0qr+)|z9pn32LrIkUAO3yGJE;O0*fVQs^N^2v;7d?(i$3HQ`NNrrx*3-l+DA#L>S z+&JucfgUaSnF*GnqV!3Mo<)vv(utC9@a5dN{7gc&Z;TAqb{CnI*}$`=w1;h1b0@G9bfy8hzxdh2cgxU+#=t8CAN9a>dd$O zVhAN)D$+ZHtI2fg9b2PhdJT4|HgGONlloC+6)BayOe|=mXHKa9`jqAOz?K^aln2p}^h1KwuCMCT;GCc`)D%Al+t? z0)P-87RUrjf#twvU>_g@UcF3G5HJi#0dj!_z&fA?H~};PU2Zo?eSj!n98dx*1*(93 zz&XIHH)H|BfHa^GSOlyCwgbn3M!@?H*aN}s`F(T=LB~ zR~25p<+(%ttM^ONsLvj{X3@p-OK!m3_iL|)`x&nuIytIwzx9v9{_|f1ojvG4#Lt(; z)R<5_r|Z81OIBhr)J!?O`1OWp#O_^gZ}K`#7r0Zr-3z|^Hv}9e{6)bL3%LK z9{$ppNmIW*=x@J4&=wc_6J6+6exwJW(P% ztHRq2pEnxrw+Q#QOqijGqttuf2`roqM!H z?aOD+ZTmFtu^Tf#&-ys)(FtFFysf2HxBuhu!;Oo>4*TzP!2Y`f(=#95`0{7FA5B(QmA^J-I%vV(k^HH{S8=%N=4buEinC3l+77Y zT07Ews8eQsT}sbk)}kq+-ttR5*7=FJ!^t!6UV8gSB_r({G|ESWyx?W*8CQIDOrckQ_$_noBb&r%OvJRh;4cz&WCAwTta=f~mQ{9gRYW5S~68>(KKoYCu^ zWrzLWK8E<9JPjDx_1PAap1%TpRR5f+x*HM2mIIEj{JO2QBvc`o_n_Z=a7GS zj5NW!{gUiqbLJ2IdeVwfZ$8`g;OeBn$)9|9cE+z;_xmq;4E9I9a@7wm^l6v!FS*dC z4vv+I?mpnZF-L^w)QdM?ZKS2?bFMMcr&`MHKiUiSvxNPB_xQ>3%}l@8thSt;?c+8M-Pz-&RnI2Rve$HM+SWU|ywi+>k7vz#*;evGf={AX+|x5nn-2Tj zJF;QK%a3i|I4)*YmxIsz5So{9XJYfT*N$Bu{ZhuD_r_c?x4g-b6`A<{n{m&4Xq#U4 zS=l>b;kWo6d1LX2ZLi$+am@!|E24k@W9016D@-r$sPfq~X6jRsD^~Q1+A-F&?uN8S zrhWGPuQ8_NcRs#1Abv+;<|py*9ILwHbDx4|`W}j2(6Z^!yy~yNdS_AhOa2?b9WgKd zx}TrySpCP4eLFYz`7%CY)9sJeub5vKzAb3>yOS?G6Tj7O{6OzW@095eJ^Jz;eQTp$ zTJ!2l?b?qRU7P&i#MoEgPuzO*>L0^nny;T*W8QeUVPWLF)P)`ThAw|3*VA56bK6MM z6W)Gz`klCBJGkP=r6+EEJ?6E|x#h8*IeXH7ncnra?1c&Q-wS!?{@(_CmAv!S4<7yI zmhcK`-o%1k9~M=dR>t5eB8Xn_q_hmcP-V|kM&>I_t=eb8)kh!((&!4Nu5GB z?DjpM5&Qa&O>@qFx3$M(54}3^{Y$k8uY7f7ryJuQdgl8<5${%w9Ul4Q=uL}q`ycw{ z_2Ah5oH?;RdhY4w85Zw>pQNVmEN)V^GDR2KlSc!j|V3_^L5?l_a^Lo@wX;dLeDK%mlbRsH9IlvVC~jthCk8e<2ARx_0-!_KRrJ3 z`n)5tJD!Q?9^`#>-zB zJv{Nsjvs6qx%RP~*`HXSE#33}Q(r%7&l$CL+r01k1&z4%t(=dp{UPN2xT%Bm__C3i-~HA!b;{D$o-Z%&`&#VF-8$ra zJm#fO79TjAGobmMQ7e2JHZ?YH9=2xM$&LeI@s?it*#T7N1TSbYEvn^plx` zcRw{gX6Cc;nfFxR95U+J=!=E7K0KqwYsihWw|#wW__70c-TuYxL0{a`xGt%9X7S7y zri`4w#&7!*DX}GEKCZhXW^T@cZ_QQJkM$k+(96x{cScq9S-)dLzo;cC`GaSE@Vpec zqhs)64I8`ld@XL!gD-4;KhEB8?I7RxVjmmWW9QfFzqvnt%bM`$dBZ24P2V`G{qcnP z!%Mex@Ce%dj?~hBT>Nv}HbuU@`A+M<6F02u*5`wd?s@w};!~eZ>AUd#rJ?OkmA}{5 z|E9?0LuX!F)uH95fUD0fUmg^dFfS_WnI+e*nHzJa{|_Ja+d5+Is23X!U&eF|3 zzET%&dh^YVd0SqO%bw-C|L1mb`$o)*{q*QauOFW{G|2P%kE(A8e`#>u@H?-2ruT-L zfqgos%^$h*VEn<8Z#+9#bUXep{u;-$#`ix9f{WeFus;DPQ7{Zo;;FQ|C)shwCtfV@ z0FVXHD20#a!iiK>^Kt@C5x!5fZJSOjw0=daT}Nufetx zpb#`IO~~u8-d+_Ujl=r_*p;wU<_9!^*95auc+#x13HHrE8di{xgGU!!d&7Pd%*^1e z2X6x2ec-kk@5^CE3kK`(9s+k>;ID_j>)>uBc=0d`1n2|RX?QLNuL zT?W#?KSO-jYs7OCuot`%_^}G_^znHc%r*n`iQxYi|H^7&EeuBM2;2U_}=RKr-;H}!D+Z%Y%L#jUPAypZ86T#aJ zUfN#W-oZ;AQsEH~X@Y_G9e5?+d4HtaTZoUJ1bylu^)c|G{5+*7@Fo~|z5G3;67X^j zJS%u*;H@+8)?DK$Z3l0Yfp-qPz2J@eSob%+o2O(u<{>RM@Ja$brS;&gH1KwTw;8fQ|AG|8?RvCB!{XL~>@Tv^F@!;(SZ?}Qh4BiRw4jOnP1|S~b zoiOm0f_DMD3kIHFDB_0v=7s#G{+YoG1kcaFTLE4#@B$6IGvI}S*UP}`f48S(0x#6S zn+0AxcqRjH7kFvl#T$6u13jfo@X`#tB=8Es%QWy-f;S7iLIdwR@D_kK%fJg6!xDN(2@Fdx2&kn zum;!#d;y#XI)3dT^#q0iX}~OC1+W+R4d{N-LmC3408azQ0FP51Qh#6?Pz9U%RnFm zhzBx(Ilxk21F#D?0nneve~{OKn}A+GC}08-0s70v^ATVn@I0^q*Z~{{&H{e`K0m-e zpcgO%7z1PjB|sVQH1HCz1*ij#0;hpS;13}1M-QnlU;+|>34jeK1(pKqfofnM@CEP# za1rR(=pl6jdI7_LMBo7+AD9Cy0-gsp0o#H7z$xGYa0S{5`s zKp`*(SOly9-URA^W578;x`1*3^aO?gi9jas2(TDf1#AZP0cU__pyPj`BcKlu2AF}# zz&v0nPzCG&jsf2RO~4gs3$Fuu0rVGzXNvNkkLTk+6>u6D_zTQ{9Y8ZMqzQfiWxy6d z2Cny!h510%r2Q~vT5coUv0n7uo0zUvZHA60t0xSfof$spHOCC~h zAQs31N`aL?H9&t~E6?+IcK!q90muZZfhM4Di-+_WuoY+oI%B>+5qKWh2mAm8w?q96 z*nkzl4&W?sod@g!(}0!0LEt=aou{WX5SRvR1x^6oUY=54U<~j$unV}lJ=#WKDXdwWVTz#L!;a18M4;3m3RX`me1KoWf6UYJ<051W%fUki+fSWo&7LWoI0-J%uzz;yj zt39Qjz`ej2zzQq`HUPVU6TojkXY`jsfLLGxPy*23(|B$I>VOkKBjAI6RCgd0pua>s zCjvHL99{`^lJ*ECY8ZZZ_0uBQ{H^DC; z6IcUy+zg!nF9C;vtAo%F2J(TGz+T`Y(DN4P2(SSwfE~bhz;)d{r6gb$uoaMjpj(mm zfgON%Fv0<30*io;fG#~erD4Dv;2;p#6X66F1Dk=bfzG!foWKLXJYWZK2I$xeWe&&! z76KcAV}Rf7$aBC0z+*rSa2RL=yn7>!ff!%{Kz|GHT(7(z#?$)_NJAi$_Y2Y`2{sKc$Cj$2Z^fwOAS<3rMc-ATJjd*sxTiCf5&+*Fp z0z6+*-uL5qPI>P#5a|Zc-*`OdDDUg>+^f8w$FuVwVP_bgY0CQ?Jf8=)10G?*{GWdD zKmFo=`o;hBi~s2tqi&Q?j|2boi~s2t|I;u2r(gU}zxe;%ezDb-+b<-f@5Dk{2$W1> zJG&_-AG_t#b8{ZyP3pl@r&^~OOtE*mO|z6Z+HIeOQyQ7#aGvSmBy15+FS0;Nkx_~p zo8g(6NtP_tq86IgHu-3P<`X%vmfZdD@YJ}dLh|A=E)y-&vGw1Uo}WPhvKICmq(nI- z!D35~%uO$%V}z<6TKgPf!SO~54inm}#e9;0r2L7W;aPM50at0Z>BfY(WNERtmW1A| zgsKPj*B55z=ux$40gls{Jq#gcNs%}_N#U~oO*wzpUsdU?{4Xe+@qferR{kQRS^p;< zLy(r{srgpRB%ExuSQ82|i*sGGNqo*k!8f|WX_dd}!W1R#>#ksBdIK@(k z!x&^xIL$_znsr$yjKt4z4!csl7@cVGQq5R(s?6dXC#i92<>gkwSR7u_b#B#)6OKbE zCyI6pbmxG)S3_tnD57AMxRJ||SM8Zda%5g1SvJ;+f}d_nR1GxAs>uK{aTg4? ze$ozdXFtSyhQ!CmF4@$T7N{n~Cmx zxts&{esH*y`L6JtQO#d0kbx9`VcA*XtnX+K*(ps~4E>wq8(7xL$B>LlhH= zgHsHN->Mv6CajzT;ifHR=n-~bi;{nBlrY`bLgx~ux^Y*+433=gzUoG+bo6YgJ89)Y z$%AM@OIm5^a`}sVbDzI(eL4=8lD2fs=mD_xbIzwp#re@zYXNJwn2M%WLSoZ%S&FlL zYTtA{b93VqZZl3s;}~mder`cJH{gXO{Rb%hNyUs#sive)%(WQ$zs8P@76Qe7{Qtfr z9K_|uJ9kEONe;)#Ij=?)ZB)OIx1f{#-ZR=;dMQ*IERlk$dvn-KFNT;-Dr3dHnpNSlxr=3n?J~erDJ%tysri6}MQp}yw z3_3H#{m0P=l?>HAUd4cqVGS)+RCOIc`P~XswfrC%UnnlbfqHyJ-KNOWDLC z8*YiPX_c!nW~P*+)Wk?tpc-FO(x}wLC|54hDJ&#xP~=$EK#K>0rJEERXAV*eF$m{~ z8^e@PFii|fN-$n?uGJ|S5-fS-g>(9w;Jsqtm18()BHDHJ}xYbL}*t87iT z&TzUvMZL*ET*eVy5)LV;g_*b+LvTo{K8wMnkgR}*7Ay%DVBj71r{ovq!ijR}1)1}m zD&~U1;zGI?Bbv7POG25>_gj!KL^3irr*L8c^iS8PuwC%d3vI<#*0AA54fb7`28@b? zRps4aTb)7Cgo=AY6qjOlMUP36B@_3%=&?1UB2^+LVFYd)U7Uk5!?$_BH{vK1%QIUn zQ;alSLZbN#`{Ft=Ri0uqqJZxu(J2xYS46g=^9pSnm`|Jts)U5pl!6p-YYNp5+RZ+~A8@q0eZVo^ zcZ6~ifqRQG$;V_&jAyXwk|vROXn=0ZQPNh?8gZgaYzPS7tTLcKE^bk6I`I|z$+m)w zDWU;}MY1Uf4jCxr1{o(C6b0=@AVrQAN_awH7*))d_K5plbk{|q12iRrPZ4$7Hb~b z1e--`0Y#xn$;q>%6woCt^hVlAE-pgZ&(!T91-RA3eL@AeF^EbvQcPSirM%NnO-Vr1 zV@1V~sW!Ak8*J04NvXd%F7cN1X%^Ruh#*y;uxxEOJhxzCdM=ISGN!<)Bza~ zLaSjgQ4_erVwQ_ZU>1xRD$cRlO2bte;vrUAB|C!;C6tuq$tNA#C1aRqc+rnP`NP@-(N zwkpcFE>Y0RJyIMO!BOKXC@wU@v>>k#EtDbj9B+}*lIsm{=m{vdf{C6DXts{FLTbHQ zS!~P6ExOElr7-6y05_|d!Zf+Kun-xUXHp7FT)VEVM`f*D{ZALp^q#&FPBb*(xM)rc zfm}^7--K!~$x@h$l zA^h8~2bDMKp$lsmW9JrUTF@cP$%U5@m{CG!v502|+CE6iX9t8|3 z+3(@x`;$|m6H?+5qT33SRyT;qv_)}O;y&73o{B!XxMC!j({sO*22gT zM)l^zw!C(dqgMZ9nI~HfexRpA^958-;q@}&+`FL`>N1Y>5F7mA*6A{i-1~%f_;0(R zX8JOY^w4RIJerXrQ7QguNfRpj6YGY!(CAsqR|V=^q{s(oUo|7=+{mMG(Uwq;)Hyc# z?6$r^$RoB@uEg`cBjsC z!;R}5uF1KmnqAvq9+X?!YJw$`YVNKH)=g6)k*-()$hVpPbZ?I;(cnhReuy~)t1>~Z z&MKwobKdS!-!_2a??&d|ns0XJ9=+T@sS(_`!d#IuN06^LF6aM+^Jit=VA{F}tPl^pr@#^r2g4WFThC+_<7qk44)!;!d*|ndjuwEv~o))s|xs z{jPqYnk=eKcrH%k=wUKmXe(mlMmq+LX*aF5k;<1@(QxCt%RIYV8_Ha}+hju^40#Qc zw-{`oWwWH`iA3TUl_)dAnsg_7&^=B3a&048Q1|xG^P^EB+2dN&y)CB*8Pck_$X1Z& zt-jByR81Q&cmG&PTMa)O=nhwzbQsIJATlDkkM zmx;Ppt0$;2cON3kkqC~c8@SDHLn0;$(=#yn!r84YY35>OVvB9HS_f=16mZ8b+-b8d zzr;i>T@>A>Q+EMyn=V3@n92G-C9O?4ZE7JdKhsh&iniLi9YnV24msBl^tSXxQz|r# zOyb+lJ7mj{(ruOm*y9McHn6%r;|y z`PF>XDB4EOHso-4+_apAP-EASu77t~_%G)}NNP)IZKi%3t%XuYnNYx~Uk>u`NG?*{ zk)uLhEp@3EU;`7U+|Nc!$<_>g7

tE^il^6g#8n}&lJF5EOl}=&6c}C1!sHXb3->FRL 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%0A?Ft7KhX9KGO=uvBc0NCZxO`+7ugs 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 R5PnD3(s(M?4u7DTe*wKS{~`bY literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D11/MPCommonLibD11.dcu b/official/1.7.0/Common Library/Lib/D11/MPCommonLibD11.dcu new file mode 100644 index 0000000000000000000000000000000000000000..2a6719e57b0ec97025d0060af6a44b53582a18ee GIT binary patch literal 2735 zcmeHIL2nyH7@fCG?a#(ICW@*Ricp{tvH(RC;S!+=If-%HDh?)b(yFRZ*W-yj&3e~b zPg*BJC_)uN2%)xA6+#dS6t3J5$EdXZ6+Loj{{%4W+R!*V<-oOj_;xgJzW2TPX7=q- z#>Re0GWO%jt8X3sWAr;_jZT*<^M0%4dyBGGICkttjGYL^_Rme%gZ01kGjae3MCV&g zWwj4vv^Q>QfQi`3R!4~zV~tc%dX6i%9VLD5;raGmF5((I=}8r$`HI6goQ7ERo%*f& zOW!xrgPB#&9n4WaTwd8|T%J_#bCD`nR+_?ft6Oc+i7xTnU@NOix>8Bgx@XFjWzq3B z18!O|I$(OQc0q7usHY_r9OXP(6D=vzSN$J~biHab5Kg`9c)Bk^G#RZqfpk2RocL+! z)%{Bbv84MSsxZNt`w4JdxBaBI?neuY&$~{iV`?Vpb1X{N2rr90y=D6N$!8Pq>r0kfw7ta&UVdc z^H8Al+31Hi4_)N_VJvn8kDdIOYh?{cDiKb3<;I;khVt8|S(GUS{*$LF=06 z(LL@|lROt;OjEt&As@=}x3rZ0>LGCU9<@SK@l#_pi9^$ zd`S4n#tz|Q865I!Y*X5(|h7laI9tb{9sYlQ2B8-%Y2UlYC|>=JGgejwO{=WW~~ z{7jf6yhNBFyg(Qy93f;0uMnmPFWafx7WR^WB9FVpD^vsiIlhmx(ssRVH7YeP!ce=G(i|;Y#3&T0nyc7O6}D~ zi??-qUDsMGx7^ltt=N{(b*EsBT5DOeV$*ubrQVsemTlRhmW|){x%bSS%ltvqe(&e= zzMrmsdCqyxbDr~@bDs0(-g{=I@QxxjiZK?;Ca}Rl###`j%fcp0f#LqfFxHyLF1ot; z!Z)sIi79yFnx>|bDqF3}>8e@jDz8>m*VVdJ%dIL`okLaUsI`@TGd5EZjTZE7hN-eq;Zif*)&@7& z#vJ@1gDgOZyb3C2+9bhtn8%6$s#G4JxKt!pS?(?euY~wz0LjTMiZCt0(YxI4$C|fYZ60=5cD_ z)X1rxQ!S?gr)iv~a+<=aiqk2aCUcs^X(FcyoW^k)%PHe@V6)U7{hao3+RN!_PJNvA zaN5o32~N8>J;rG#r$;#L;Iy67{k;5robKgx52w31-Noq+kru78_&Np$2ivw;q`AAz z<1O}m4vwd5({Xpk1`{i@u)(_cmXq)!-}~Pnq0M&~>6^TD2@$pM9?Q=krb%vg&ysrQ@|X2XTv{Z>c;x+g#o87+;qHd zjPE|OuVe78JD0waz?xb`o9_D;*(8PU5yOMij_|(e;Iy4nFQ*4N?dJ3Zr^iGJ+taeI+I(=`2oqFlQ>P}G=bANPGdPWa;oQ4%c;QWTuw_kE#q_vr<*z5$Y~>|>o{%T z)Xk}r)9sw@=5!yYEu6M<+R5n&PJNvAamqYWeG@oM<}`&2^+cbGnby7Eaqa?d0?Xr#?>mIAvS8{hTIqn!>5TsgcvUoR)A}#;Kjt z22PK0+R5n=PCGbl=hVyTK~7sZZRT`8r~5eF%jq6YcXPUn(;b{{=d_8_t(V6gWQbS1rnb~=v&%fnmuoMtt%X=XCb!1n zcGU!B#z1CHjjNh6kqqU@vz6OxRtEFj>?(Iw*(yZ6yDt-M)X=t!wqF4oNl$%+eP$Kt zkqzF?A`kPhe~(RR<6%pz7|BbC?euR%jW>v)`{Ym~LhnI$5AYfAGVlgKW$gd+3`g&m zf13D<>CC&}xtbUH!56@%t0CFK5&*gyITa)P&lBL$Hq8l7UYv-DY9c7mfN&WBVHKzV zq+S9FTqNcljlWbo6{jhjrh;Bnl3P<^q zyKQZ`t8%W@?zFnlo*pmSszcFMVmR1V9sb4rQd@QS7s;U#gpOQrxrHSHlYviB&{sgD z#+rt7JxrhrcJ4(q3y5~@N173dX;62j_S#{R+H2C#)*yFk>VTfH5fZ5UX6QacoAgkd zSf)r0Bt=xpNQyF&s*I#5BZ4xbRYvs6h*24_C?k2wNSrc~po}CcBT33gvKWE0_xQJc zA$4Vs-y?^%AoQon7Iqx?2xtNx1)c$Z1GED%z(v3nKq{aEW&;a=C4dd62Q~ns(6Bpy za@?`@9~dszO2g%^;ET65NPBFUw5Ikeuz>;SN|+*1F~a{$2Tz6YR*Z__d_$XUVcsl^ zOQVHtMR*6W3pfEZ7y!_NKnJiFI0jUK?*!HXTY+7G8+>UjQnhF-CUBYvI+=T&G^7e^ zD(mdlT$i=nUE_kE&xNgHhY_K=ZidF;{P0+WHb4gXnsTMo9u3en()LJ1o19O3TsfrH z`PEMMno@_&%`5KlT42-I;f1JLd1BR~O-pFMPUso#O1|ps>#jYAx-UkafGXWQUsO+aeraqOG2lAxmZ}I-;qp)ONrcYDZ&l!^mi*HxZ#onH@wsTqC$cj z-s!jXi6%s*;#THYy^`Ub{%7UTFAzF%X_bc;Fp`KL9=kJ_DWxnt_*r*MRlF zCg5S7^ zSzQa3ud-ISJ>Hh77=OcwP=(#YZU&oZFX;cpCFH`=K9IYx6yYx1;lJ|IpageeNrJm@ zhyU*i9o&UG{7;FaC<=uOclb|#D!Fin{}VanqmZ{D=6QzgiC6gwPS!wb)Sr z_X7)oJAmcDD&Sf`08BtW@D(~J2J|A}3gCtmY_)(KU>tBUa0PHJa02Om;0xdz;CY}G zcojGXJOeZVj{=cK-Yw9fhfmQJI`Wihp(9V37CQ3ohfbrUl7)^uWtzvkZ<>X@3F&B8 zC(_WqzHFEum2;31b074g1evBe?TF@-OuZHd`9jUg~I*3{^n1lapUzrFNgM1$a_#Z zZlnkwHwXQ{6bn1(Z=FbnONrcYDZ&ju=ueX*mE%T|;D#Uck5Wi*!w>p@Ee_o%6ow!4 z|I;rSe$fAw9QqQWXQrdofkVIpz{9{!;0fSPpbDr1)&puF3z!2G0~Oa{Q36&2xxlSJ zF>oi41Y85m1Tuh6Apbcq2qYkW60`$&8yJH=4_&bCg$(%uU7^E9nHD;1lxd;E=C{z9 zC#eh@Hp(>YiF;CE77*=hnWBqLA5 zfaoKJ)|nQ6?gVnX7Ug)6BHZm-{J&O6@bMx^aJOsmdlVAf?OOciQ{?$kDBP~azwy5% zw`=j=Cx;p-m6fTw|4;0M44zyss~w*hwnD}c$sRNyAS2uuR{p<@har1A0`_;b0phK?6yTIhID zriG4|PocAb>kM6Hlxf>A+|#gv-axJx`O+i32uVBOvgbQqsxV%Xhm4ombv8R*@6&*R zEsIgs*r)+jwLeqiTwdF;6Ch6>+rtQi|4s>@mzf|;6u0yv>((78V4{SPltX2O$Jf{0Vo1b z59$T20?H8H10M@)RpwRW>H9pKA89CZ)!<>SdyU6?5H`tsnQ#HBQWwmP-izBTjNTc% zb{nqZMYnIs@1=KdPu&!Ff8fdQ^-VZAIJhl;z;j6zZYDgFUTQ|FFCI(}n2Cc6Q$1a` zZaTiskemL+w!(hTJH*xx-k!ECzt8v9hl7JfRqe>($?wNhJD7+UuH&KAQ`+Y{gv3*^ zb8fBckY7+d3rWiN6C`cR@Av&sqys(=Xq*3E-N?|r?5;aKA1!U0>-$;hKd)7ehgSCHK-;I0Canije>a~g$d%CDXHwbct+I%@&=V-iq*sy+pxi94vv2XI; z6YqJ8VsV4FRmnzakQ)u)yFfIefsE+A^LtCB_pBS*dy5yPAK$XHZ_CnN&!4xH_HRLc zNbiRnD(%|~N;Z6~wBZ1lsHfbfeMt1Z2P`g(u-TX zVt)%vWj#+I(f1~p!Fu+cWj)`9{5H5{gQVK$6e+Lg#fY@|-~QkX^-NOKGnY@>QcZbX z`|*xk?#by;N;O-n3DgX(DREA(? z-03%ZvOp(V@HAqle4e&DB_nwDqQ>OoxO7u+9c@u+c> z+imVOc>m{l&(qdgLS;P;Eq78K&Md!?7seMfSQ{LZCl}lqB}cz3r#J863ns zMdNK?OJN`Sh??eyTDfC>L=x2W%$IorwG`vj+83fciNB2arKf#YV}PU|Ev>2-b89NM zO!f56-}J@0`E$~bd-6|vVt3$;kiIczY@Ocos?QH6K>U(Qtct!QsMzRrs}AS?J%&V+ zcBH=s<-TJiRNA*?ly5mCPEE_5U-xUs1Yf|eM_I_=^BkwXzmbG64!CUVk#1kwx~QuFk`(+v&7tu-nvUYZ7U894*KqfeoC+F zPWNt!P4UF0+yO0Z$X|M!$0zaDCoR}CxGv{r)b=gU?|r+`ah~2yU%0Q|_JbJD(xh8& z_^)-B=X%~n(k3Jsdfj8ie5c0Wd~2O=i#Fv{Z0>@(c2d2RbWixrm;x+YZClWnIDGQC zrwil14Q=ds$LB-iL!?QZNBU`@5eFBw{^Q6~IViS18t_%>rB0eYU!vaOEpzG;|JUy! zL3DB7ACcmtI7%g#mDVtfl0~HNs*Hd>-$hg-I{%XjOTGtRpS#JsZi;0~8x|^z&%?gk zs5Ba>34^6^Scm+90;{G$3w6Z-6w~J4gukbHQQFd1;%F{J_5S8r8rNC|DX7VS>X^|R z3=`L1@apJ^s6L&Lp{*H%0fRB1g#hJ4CSL;_6o+-J`gv>t?*maTn=X;ZlI8nXAeQKP*Vm1R+}^)~^>FpL zKsnp;yQQ+?sH}ytFhLs6h27i>V*ZPI=2RDY<}e%qI|8Y1d|l`bYJRjI?7=^=2?so1 zOIv}ZcswgFPp1c{8ENWl^XZXKoWfHv22wWMBTQU>6`HzeRm`^1KBOlj9b?<`M}*7J z7pD?vA$}Jz2U6skR6;*iJZah82=m(fbI8b3+{jpZCtkd0<571UmQ>#;q+t^6O+N}p zdh}gH4%410)^m8{arXq@-@&PTi0-u5hV}%{VQ~zLW9zV|IKh{O+%&HEcmprVmmJ1R z^_7J2l6}2UJv48M??f0c(bo~io8oKcya_KBsXVWU&qhG}z`tq|KjIa=B#tuM_;_ss%ZUSCF|Jt|jJ zi|6iW{0H0f`F9lUS%}EtIhV#9o^wge^D&Q4p{Y9yye)H*(b{)I2`2Gz&&MG04uB#U(8@q5OCH3K4OW!UJusb5?) zM(>Zoirm&D*&Xc5GD)&Ytg~-6Vt0yiQd}d(gZ-T76Nbo7lG15C_FW)`C%kA$lIKS1 zo%d*(xYZEo9SFwIJ0=5jPpAFN#V;*Jnoo_)7_roMvXp)&LcfMifNx~=kjg$bOd>p0&l5UpaY_jjw9=a2Bo zC6^=rqZpo^u5G!gXl>tONNmeZ!3;TH45=^!`f?G3XKl$%gA&hMn~u6iZ}_DDr6W}O zzab4Z6&ELz8G3d}8bkdg`LDM^>O${oxt-EXDGlKt;E_6?BWtyo4b?O*=++IT`g)4U zTLL$On;|OdC7&rAxI?@rIhC+VQ`LuV@m&VTk^SX9$dbPtf*Is5FM_uDQ}OqdPg=@D z@9EHfFI@lw$+&rSUx~Ma}JB6vIzqNS| zSTPbSX2OeO_TPd@Xj}eiEH>CDdgiCJ9t6jCCp^qk3TMPV?kG0SvY;;@sA}ybL5(Qr zBf(z`5$p*FrndS>@Iq0rhXn6~Ak}#lsAoY#PUl-Z6&u6skDRqD!w9Wql{+{{^Mh!hlkoIYh!_n$6wpG)l_eJw6@qo;rI?HQ({8?s* zAU;0c=5SkGE6OXZ5mHCS`gZIXSy{tLjgPOxVbI|u&YVVdnKsW+VXv#S7U03#?dd zO|nDDIs5SV`1*3!*=HM)gX{>pN4C;eMqIydr!KZ?r`=kOIZ$+pAx4fc@-5ggKK=(O z3so~_VzWO&rwq64TQEa(v2e|2#~B|FC!KkAc|xUWp~m$!Zh&sO>BjTC#>b!Utg1r8 zTp=f9zp!u>7Z+E(h8xPs$9TlR!tp&1(L}4_-~_41MT6&yEVMA zNv*9ece$6@u(KF`Ru7sPY*UxDwx-U7ZNOA<2#mZc=oiH*qnZ(%Qbs(BP~UzV?Xhgx zit<`_MY-LsoXoPb751glYgA{A1Cz}R)q>Ryt7}M8N&Z1|;gCf#HC!^-hM^%$B%!Rc zj*pK&=Q&6&>)U8k#_0J6%>#IU%7R@h@h&3XkcN`@3B*@yZ4s4q1jmlVqdV%UJbe`C zcoanC5kF1ASE+)01Luq7D0XXL(|s^Ke0UDKb?Lrxa7;3u1l7%Gq1*76;vnL=q-hKG z@(=ueaIl5$8C2juC+p&SiC;dF$Rgh~3PriyQtZ`y6o{0F?i-Yli zTpajz1%D&r`;&0g08|f}2P%LDE+gWpintc>IK(SKn?RRW$&??XY zlwStA1aU8D31|yw9_U`s(5nyfizDy@a(3kF946h3^e#pEI>fsb@qiv9_`4PSO2j)9 zaV_FI5KjT!tl$UopN5@9;P-&e1w8?30X+t)SIBQg{-#SUY$NFb4P3hr-;MZo&>f(A zK)s6eX2i=BBGkKOmJ|TPfQz}*2gJ(K+2QGX&$FVoZ2~U;&d0MdpT|9)XV7+PP;hm;k1|2 z0Z!vQQn^W-syI#KRL^N1ryDtK;&d0MdpT|9)XV7+PP;hm;k1|20Z!v^w1nC$iBlD) zX`Jdg&EvF)(31|W6q|A5M|DF~o+ZeP}wT&_FX2$fJ zg1o05!I{A=j4f91F8WW#TEKHFc*Y%!9RqKjf>#3G3Gg;6cn#qBz}v3iy#ihzc)Jz6 zgdf9(2k`l31@FO~*n@%Bqu@RB6P(WguUEnA1Fs0Y0R_*zi?Jo(CEOpZTNikC@B{@f z1&^Pbz%wd%4)At?H&?-H0dFsOB?{g*;5CC+rr_oM6m1HgUBP=0yd&T>D0p4qb%D20 z!MkcV>Iz#M%FL=8Yyyw9i0B^5?HvnFo2lgmDgVyoYyTe90X#v$8vw5fJfnh__cPQ1ytxWq6L@>UD^c*? z0k0XnG6hfd6zTw;UBO!g-VyK`6uf5ey1?70;C%yL4|q)qp5Gk7ZSjwpDi!Ak?LOToM4=V(*#dKA1J;N^kWtKhu{UJ-Z$ z3f_!o;LqU2VY~*eb>LNjm!#kw13_hdfct>QfI~nR@Ht?97;_A;7ib4g0vG&{v24H&>;zs1P6L;2$4e)m3fKd50h4|N z-9Q1b3fK(n15N^$V*b+t^8qLDAV60$=qo@c@E-6n@HxORH_|m3G#gk9yaMzAQ!&rc zHJ8)npiUm%2)c)d-vs@Phm$c6>VZYTcHm9m0?dP{fCX3#)B|+w1Z@SnfSH&B*8+6C z2>K2W(|1{^0J?4gZ30?(yazP)QP>IG0W<>71IK_^%x!cDphY~q7IY^Mw}YPK;dsnt zsQ_I?piUm%3EIlTJ)om@iy~|W=v*Flfy56&%+;sUW7SUbY7m5iWnv*KJ+lpQR^Q=Q4H zTvBLtmy6$UHEjOb))h4_YaU+cyXq>GjWbM{vsU2D2fi#TdL9evvO=!Ct3j*dR!x)6 z<_D|lmJOaKGp8vm7B%JKwG7qHb(VV0w%kCYhm~LBT=PFseptD1G}pNl3`KJPl{#G3 zmGmJxm-I>{#7zop%O$=t&%(3LVc~;+MPU2NL9V5L4#3YO1Az#Ac0PfU7~H z4>)UaHQohsaa&zQibkg!;+s^TS+y(07Oi(SgxMjsMXp`!LT7z=TgXX6YQ3<|k?(TV zh`H)2kR;c+NP1CQ>af?8SBj-JXwtc{JZ+w1MNLWha=TSA6DYelR9C_IYbtTA5j)?$ zCcnWZj?*D?mL(6bOY<8ltj-8&bMg5tyOn1TbeU|Ulsd}+#gtt!bqCud;soYYYXj4u zG;6ON(vA@)u&_MJmKP^dah9x+oIA9DAw4Kci(fw!byBWTXfNR_OP;OPS?;c=lKe@j zF(47KvO`)sAQ`cW5he4iE6VHa_<$|-1b5X)WfzyPu;yYs4C#xoMhjW5c+JEHA=ebE zCXc$vYZT8j&rxM{+1#}>WTRzstCf~o$h^EYj&fQN1I{FSN}y%txU6EYC`W4`EoFJ7 zTWo@eEtRsoVwhCYt6YjB=|9WWTG@K@%d4Y0lfsuQvzFJoUF8*Sc?wb5VId<6tx|hR zbxdh+rfB5RBCo-Gx1-P;zH1TNp7N^$lMsp)=kU9&E{D~gu9;bB7x!T$_S#~rdr`T) z&WcQk-8>{lR!RI>cJbT1aSvWoQEumaF)XJL6Em8t+_i><@Am5GOFoC$?@8&=c6?H* zG~+L{I_)^uN`4e+p>nI;YHgOhQdr$7ZjBmIu7ZEv=(1&5+7wzk1o5w$mJiV*<&sKj z(B>F}(aMomjiEWBi4WBe)g?8k4oTY>&bPXPeL^$;yowsfEEd{Z$`;0_Y^_!&o)1(E z*;fa?Dm7Y5%jw}Q9inMgh1+4r_9U7nIXzrcNbif2j5S*4GfN;nToLt2AXV|50~U0P z&0*yqVz*gqsTncj$)fcArY^C?WmfPT3oNs0Yi%nXC4A1yiXalLTq&ni+S%kAGJVN4 zT8J;<5*@&1BWIHNC6b@hIb{p+#gQDPI7Kc+4MWFY$r`5(lYEq}WR^gB}>+VB_u>Ei(cBLX(spt|?^f&8uE14!x3G z{P0IjwfMCRqC4cd%2zL_x8mdVe7BPk_?}}+Np88LzPuK`w6=maG0YNG3z|H)rp_TR z#nC0h<`=oRD0P(6!|Mo(EUe|qG_H3-|J_OI>q8%ou`Lu3h}&>Dje93Iu>~98MPEz9d*%^FpHELt|WA1mNvM_ znkdb~EP?bhYbwM(+J>*bj-tvUr-!QwY3aPx)#XlGG(9{uTuVqR(}y>rw~v$>t|YX5 z=o`6hc%BnoQ&1v;wh){67pO<68nXn_&#Va_2%%?l(af^Q>EWtEY|3wNV`m?I-zcY_ zQIj~1Y4(j;zo108vans2-R4~Gs*I{Dm#0V26yi^F?B(v-!UR^kh_F`K|IY~vsTKtWKkrF#na`q+KTrx;acRIvq-ahgE}Ly zgTSI~EwNS8{f5GppMz~<1=EJsjU=L_QFfkRFU!nBkKT-1 za6HS-MJunY!5vydwS9;yS{7H^X)=l8icC(A;5?CZRn|m(x{s15HC$1cp2AwNhS4Oa zhwBEVh(XSLaNZZ}>YL}?^u38Y8R6w=y-!^}crTDXdcGg@9v#ogHcNA)B*eT4e($w=&O z#NQx^T1%x&xLOw3PHXM(b_UYJ6-LxI8?Uh{QTHfDTIBQ*>cg#J1$_)}rKr`72Q|?& zN01CJBXm@hi;sYc$p6e=CZ+f0mT^?TH~q#-&MxGL$Lw5$VLqegOg%{hA^)iYs(YliG#$ z_36Ab19MmCycA(<&cp4ra^_-@cOh_$2KZEzrJdovTS|{GTUJKApTs_4m|Fr%NgzF3 zVaTdG%jvY%5A%#wP7l`<(XvGq_CWJRc@C+N2-k_VL6Oeq*1)i$=dARYRh~8?tqo3f z*n?NBA!>T~Tx%(zr<3A)U>(o^ zIDsnQL^jS610BFYU@x!>*a2(>8UQy?31|Ut7UX~yUMO=v@~iN<7ohV>*bN+;g7yU3uYhfrqimoh z8FdB<%5V<)GS~?^fVQUJ92XWqKQIMQhEvd2MZkLCS>Pm){Cj*(0oVu}06qt19A>Nn zcntV6kn}2J*8?TMYG4=eG7#H=v)({8@Cfib;8Q^L8p;8hfscW^UT5qH;3Hth9~iR% z?ST0R&VvJ2zJbqZ06rl5O~%TBt-$YrFM#Yn;w(4tEbtc~t&=ei@G=npC$tf;1vmhF z1*9EC8NgG(Rc|q71%3g12BaUudmiAoK__6aT z>Udv5VOxHW5GS9*^Jf8^p>lsN9o*>V>6@l2eE$WyEH#DlNmbG`J8LT82eL!7I{-_@*=epeIk z@07pJDLunW&x|4)eAg>}|GubLD?||PbRf5rWXvPp$W2QsAtWIUUG1dXW3R^#INvPO_E z&P^3+xT-fR%!xG0_xr+rJos(_yNx9$wSsZzb zu0k3{=d58i4xAU{FI+Zner`c&UVgNK^70Fc=FVGITAW|JtaSdolHzEB;alP;rlSLM z>s&58JH+;wel#wmV}`a>nDouAnmT?GI7$KZXoG$th$b}to$$jJvCvvwQ;*}0(pwA? z)dk)lg&$$p4EqXXTC~>T^Go3Ec46b$XO=(UB8A$Fgqidmxb*v_dg^3B+}*&t>YPl@q|EfK~qo~A_c(daGo zt=%i0Q^|$+v`d}KI{f*WNcWEC&<9jgULGDJy2Yc=BfT*`hvMjFoNkfjo7NHBZ=ZD= z1`3g#D^gp9-qoLVDUqMW2G@-jJl}-T!=Yi*t0V7BMQ*&& z8Bqrf%_2W~KGPy4^=@cp`NI<<8Q?=R%XbmdNty;7ou#LbZbsN{r4KoALOG>(SZCU4 zMKT&)8~6soz#?!ib^jJTM0y8@k5JXR@fnJ9?Q|GIr_!ayJ0B%z)$?o+nnuW$^Hqb> zLf?iOeg|+KZBkfnbC9>4hYInFK+hw8aaGOg^E81}1ZVeiboNq*1D{9Y=i|PB8y&%xGj zcf}q$EsGymbFT>cOJu7@xEmPyplM_aR7jq)T%kg8pY@6wlAl(KI(LX^o|kuis@6EgyS{U6-FbP^Fg+h5&ThpD z@17!@fIFY^i}6kN=dK_)xk?+J;Vl{Zh(GF>9KoYZ?AGv!NjwLNaO5^*i3o~D(#szk zT3N6rc!~GjMJ-T>Pio;4Nlt6|-74u#gNlC`RwYdebhcf^A5MSQWdHYCAQA7EN8|g- zgm__+Fj<%?%n&p}wlG_`MOY}@AuJbG2`*u+aG&si@UXB`ctUtacwT4~UJ+gwjtcJy zCxuUh&xNmrQR;a0B=uzVRP_wCMxCvmt-eLQP<@Abxq6k_rCzJPPyK-UVf9Y+6Y6Kw z&#PP2C)Ej>>ojVOQL{jEyT+l}s@bl2T=T5vH=5sS-q-YKKGA%x`C2omnUJnapOrp8 zeNp;d=_}G5>GkRNq~D+Z!}On~Kb`)o^jFf4roWedGX0bE&(pt7AEk}gPSQ@+PSwuP zYP8wf+1gvQ3$=G>mupvPUD~zU`?L>eAJ*>FKB0X^`@FVQ`-=8;?NRM}+LPK(w4ZCg z){fG}>n7!#{v=rp=)-E7@0x`nzsbjx+CbS~Xm-F>YmU&qkCT0s(VHE zy6&j%J>5y&C%VsdU+YF?#Ai&(n4B>+V@8H1BRgYu#w{5OGw#S(p0O&!m9aMCzKjPl z9?saA@kGWm8P8|5X1tQ|$Bg3{zKs5ixXfLd`!f482QryHRv)KV>C^OrUav3Em*^Mk zm*~s%mHH~ZUGLPp^$q%U`Umt6>v!s#^&R>n`e|9$XWf{k&eCNSW-ZAo%UYMUF>7ytQ47&|`40{dx4Eqhuh8Dv?gV)e*=r9~HbQ+Es zx(p`_-G&~6&v4q%Yv?od8wT)FJJuLyywrG=G0#|OtTJvk?ltZ=HXB=v2aR51yRpM~ z#Mo&(X6!PaFm@Yzj6UOOW3RE#*l!##GE=N6&XizEG$ommO-9o)Q-x`xX^&~2X}_u2 z)M7el@|xOB9i}6uPSY_{m+6G5+tg$7nNFK}O?{?*(*Rzu$C~5J3Fbs|l38!Q)4a^w zXx?q!Yu;zxZ*DfXm=Bu0=5}+3`G~pGe9YWsK4I=Q_n3X=)8<}tpSj;WU}ib7IdM4& zIf*&ioZEBm%)yXX;Y`RVoDUF=30=Yopk5$L16V!?7Bz3ZS zidv;kQKzcY)Ph>8)~k(bi#ks|S6!ekQdg-rs&}gos=L%ZYM;7S9ji&uBx;g0$(kt| zl_o`#s!7ub8m&f;abeNqY36DQG)0=bG%GMd>NWRh?$P$Nv&O|Dv{4dkB7i7@mJp`;B(8E(0E3 zrmNI7>Ne}P>Y8-hbvtysbh~wXbbEFCbo+J9x)$9*ombbc>(Cw1oz{)Zn2>RA=BCUo zncFh|BlAa@KhAtK^YP4|W&S+#+05rMf1UYK=5I4!&isAmYng9k{weeA%s*$opZQ_t zN16W2Pc#3P`H#%6GXIqsqrY6Q)8D4A)^E}8(C^Z>=)L-O(U&{*$MjwL6Z&p_kKU(0 zt?$+M>HGCK-;))arOGm8&B}T%``6hoW&bw&Qzn1+*_Mfuf&i-@u``I66f0XUd z{xth<+5gD?D*IpAF@`aQ3k~B96AhObE;n3hxW+KeaJ}J1gW539U^U!pc+~Kc=*7Me zzfCYE8k3C4#wkXXF~yi_Ofw2bt+B-DGS(Zn8~4DEqj~XwaiZxG(=O9)`0L&fk39k3 zB)?2CrneAq$*==qxuY=!iG;cOu`S@#3oA9NElGBeuHqo*=&)fZ&hvhK-xEbHT} zPqHsCWEk2Ee>Yre%r>sY*ga{SU`jV-n^s^P{=xKt=`)P9%gooK77H=Her;~W82Z#a zHfKuCH96*-;+(}fH8~q$=hHba<-9|-TJRmHAS(^EhP8%GhKCG0F{gONd4%Q=nmcIT z2(&-7z1FBV8jTjrBXiLMi;e4yjmC|bPqrI(79Up+2F$pneGSLFgP3m_L+r2hAH-=1j{`Q=N-&t_wt3 zTc-%qg_%NzU>4>G^MysiUBU{%A=C@^2=@yQ3Xcen2~P>X6kZe#35SI@g?EGxgpY;K zgfE0|gbUOcsV`MurJk;ysm@TF)pOMI)r-`3saL2S>U#A(>ig9Xsvl85rhZEOOZAIt z6j+8e9b}525>kXzAx#hjt)Lf-fieZf{;O_&Upv0R+WD^zc)i-9(Z$*a#09>fg(>a z&Wsg`XVKV@UauFNLGeF+AcsN# z{t*j*#;GULMQ$Tr;|`?bQp@qU%^qUNaYnK9i2-pq+vd#&4m=l(ivnsEo0rFVo&zsD z$71Ky*K-EqYIgI=l`HBkqQqv;3+hqR>+4sptQ6zpkUnbl>Xpmu-Ew^O>ea5PD_4ja z;x->pi}8A{;J|_OWF!aDSs*@Ll4mF&dG+e4tEWyC^RqY<@X%`4b;|g^e~IK2u{?ZL z_W`vF3jY}^#Yy31*R7s<(|#UDlUz1+_3D%ZJRawHA#v2yscakhutd7+(H!Eijwh}X#6`{M~`MIoyRpVa`_$r)=wBgL73u!L42Jt+|)q=MYsU@J* zh^sK7%5jGCZv0(|I1QJ?f-#_P)K}OW0-uF@9})U+ney{-F=3wqSP!W{j_Ha|pOQ}n~;TzBLQ3F|}QpMtLtT^M+JgJ3!i!eJb!{2<&ki~p61|dqmM%IWEXW9y zPjFfYe4skgb8XI*ccGh=n-oFV=ggOla*x>poemS720I#Wo07m?s*# iNVGd(Rj@Z{k3^mz)zE=@*&(Uyiwk3WNZ|kU_5T1>kkM-Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.dcp b/official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.dcp new file mode 100644 index 0000000000000000000000000000000000000000..7df27b1a820874a3defb16ffcbb50ab389a21f86 GIT binary patch literal 36575 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 z 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.dcu b/official/1.7.0/Common Library/Lib/D11/MPCommonLibD11D.dcu new file mode 100644 index 0000000000000000000000000000000000000000..3879835b8e2e8fd6c071a19d9f21ade53272fcd6 GIT binary patch literal 3492 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 mznGSL!vmSU3yaxqV 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

hsm@nAH~31e80~111X= zCQUsIaIKQ8Jd&(_Xc~dF$Wqp)D^6vI;?7W9icM+AP|uq(uuvJwcIe`VxymEs(Sp<< zKS)h9XW)M6}uWR=Nkg%K_HZ=cp<-6$%LV2DeII$yq^|oh}r>5Zycm7 z$x)g{sGa6aWoELvRaDzh-I1*B60QBBIw-2+qB?C(Rxg?}@uT1Qicd8>tSa9bf`*t| zrfRmR2D1fgkf)|v6m=jZ z(|xEqYzL{@Y@1EhleP}3w%9tU+G<-()ibuOR6S?gMb$RjeyXTO#kRTBp+pvpPGMU`v7YO2}?>@uS=!=F$k!Q4>|RQFSBxO$MP zo7B@(je;AX8UtrTH4)B+>URA65~^Z26RHY04l0+rjaqHUUs0`8JBZQ1B$tU`Nz16} zOv10VK(eGQR2@uON!8J$15}+%I#1Q9=#a7ku;wD9Y%kEdJx~+B3)>KUD$VeGjC?zH}mGrOa$Q6#~{F$ z*}ma$b>loxXEWJ}vZ9pLo6>z=7jsC_WZp!^O9+f=r(>~vN)_aai1Kk!lvE=oslu~Y zkzq>X@Y!s+q6;X$kBOMZ8#OEoVqkXJFp&aK3>c;^sf(ZbR^AlpxN1nVJM?15*c7jd zGD=D+FU!l{?`U5I@g!DFsgemG4DE-t3Wd*4zfr=_&OLr%sG%4XxO2%=I#EbY&twX@ zL?)Y#=MsgWM%EN^f)yXzn+hOQXMI7s5~GvW)kor`J7Fb~&gmhdJX=CXG5C$T^g962so z))gziZm@#P8%8w8#Z>_rW?8q`7n>chafl5~mzMBfwQ=2T>+x7&v)gt=gn{V1DV0@& zec;TNg`=_{OM)}`R#H1S>UNF-gC#bQD!Trwc06?)c8>c!Loe~Vd$nB}1VLLv7MNI$4L*s?J{341P3a^_52~QpeSN#UeMoe{NSYsI5 zV|@|luHbjEbs@I5QF0tt8S=JX#G_Cs@`fqkvCm%YMn-J-qB%ULYGoA{qh5CUo{IEc zp{nNxsg=8$XtY_f5yQPZTxj;PT+A{gaw^MnPks(=&XqV!h+CJ%Rd(wH zIT+l$H9s$|hDw((QTt9#>k2Z|Iy?_h OSAiO(u9e^g0RImOC}al! literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D11/MPDataObject.dcu b/official/1.7.0/Common Library/Lib/D11/MPDataObject.dcu new file mode 100644 index 0000000000000000000000000000000000000000..e7156a1d586e6b7cfa632119b9aa5f20aa935bf9 GIT binary patch literal 63775 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 z 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 z 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%0A9pP1H1qDmW$NQgHdc>)0ckx+w=c4_s*WA3Y? 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�+i6<$_94*w=+Pi+_;;r`jm==y1mv*0Rb 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 JXCXK7e*izibD;nL literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D11/MPThreadManager.dcu b/official/1.7.0/Common Library/Lib/D11/MPThreadManager.dcu new file mode 100644 index 0000000000000000000000000000000000000000..a873862ea60a55c22dc543be41e8281b5dcf3b2b GIT binary patch literal 39171 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≥;ixE=Q=u?kw$6+!Z8 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Setup.ini b/official/1.7.0/Common Library/Setup.ini new file mode 100644 index 0000000..cd1165a --- /dev/null +++ b/official/1.7.0/Common Library/Setup.ini @@ -0,0 +1,54 @@ +[REGKEY] +Name=Mustangpeak\CommonLib + +[INCLUDEPATHS] +Path1=..\Include + +[REQUIREDPACKAGES] + +[D4_PACKAGES] +Package1=MPCommonLibD4 +Package2=MPCommonLibD4D + +[D5_PACKAGES] +Package1=MPCommonLibD5 +Package2=MPCommonLibD5D + +[D6_PACKAGES] +Package1=MPCommonLibD6 +Package2=MPCommonLibD6D + +[D7_PACKAGES] +Package1=MPCommonLibD7 +Package2=MPCommonLibD7D + +[D8_PACKAGES] +Package1= +Package2= + +[D9_PACKAGES] +Package1=MPCommonLibD9 +Package2=MPCommonLibD9D + +[D10_PACKAGES] +Package1=MPCommonLibD10 +Package2=MPCommonLibD10D + +[D11_PACKAGES] +Package1=MPCommonLibD11 +Package2=MPCommonLibD11D + +[C3_PACKAGES] +Package1= + +[C4_PACKAGES] +Package1= + +[C5_PACKAGES] +Package1=MPCommonLibC5 +Package2=MPCommonLibC5D + +[C6_PACKAGES] +Package1=MPCommonLibC6 +Package2=MPCommonLibC6D + diff --git a/official/1.7.0/Common Library/Source/Compilers.inc b/official/1.7.0/Common Library/Source/Compilers.inc new file mode 100644 index 0000000..41ff138 --- /dev/null +++ b/official/1.7.0/Common Library/Source/Compilers.inc @@ -0,0 +1,493 @@ +//---------------------------------------------------------------------------------------------------------------------- +// Include file to determine which compiler is currently being used to build the project/component. +// This file uses ideas from Brad Stowers DFS.inc file. +// +// Portions created by Mike Lischke are +// Copyright (C) 1999-2005 Mike Lischke. All Rights Reserved. +// Portions created by Jim Kueneman are +// Copyright (C) 2005 Jim Kueneman. All Rights Reserved. +// +//---------------------------------------------------------------------------------------------------------------------- +// +// This unit is released under the MIT license: +// Copyright (c) 1999-2005 Mike Lischke (support@soft-gems.net, www.soft-gems.net). +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +// Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +// OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// You are asked to give the author(s) the due credit. This means that you acknowledge the work of the author(s) +// in the product documentation, about box, help or wherever a prominent place is. +// +//---------------------------------------------------------------------------------------------------------------------- +// +// The following symbols are defined: +// +// - COMPILER_1 : Kylix/Delphi/BCB 1.x is the compiler. +// - COMPILER_1_UP : Kylix/Delphi/BCB 1.x or higher is the compiler. +// - COMPILER_2 : Kylix/Delphi 2.x or BCB 1.x is the compiler. +// - COMPILER_2_UP : Kylix/Delphi 2.x or higher, or BCB 1.x or higher is the compiler. +// - COMPILER_3 : Kylix/Delphi/BCB 3.x is the compiler. +// - COMPILER_3_UP : Kylix/Delphi/BCB 3.x or higher is the compiler. +// - COMPILER_4 : Kylix/Delphi/BCB 4.x is the compiler. +// - COMPILER_4_UP : Kylix/Delphi/BCB 4.x or higher is the compiler. +// - COMPILER_5 : Kylix/Delphi/BCB 5.x is the compiler. +// - COMPILER_5_UP : Kylix/Delphi/BCB 5.x or higher is the compiler. +// - COMPILER_6 : Kylix/Delphi/BCB 6.x is the compiler. +// - COMPILER_6_UP : Kylix/Delphi/BCB 6.x or higher is the compiler. +// - COMPILER_7 : Kylix/Delphi/BCB 7.x is the compiler. +// - COMPILER_7_UP : Kylix/Delphi/BCB 7.x or higher is the compiler. +// - COMPILER_8 : Kylix/Delphi/BCB 8.x is the compiler. +// - COMPILER_8_UP : Kylix/Delphi/BCB 8.x or higher is the compiler. +// - COMPILER_9 : Kylix/Delphi/BCB 9.x is the compiler. +// - COMPILER_9_UP : Kylix/Delphi/BCB 9.x or higher is the compiler. +// - COMPILER_10 : Kylix/Delphi/BCB 10.x is the compiler. +// - COMPILER_10_UP : Kylix/Delphi/BCB 10.x or higher is the compiler. +// - COMPILER_11 : Kylix/Delphi/BCB 11.x is the compiler. +// - COMPILER_11_UP : Kylix/Delphi/BCB 11.x or higher is the compiler. +// +// Only defined if Windows is the target: +// - CPPB : Any version of BCB is being used. +// - CPPB_1 : BCB v1.x is being used. +// - CPPB_3 : BCB v3.x is being used. +// - CPPB_3_UP : BCB v3.x or higher is being used. +// - CPPB_4 : BCB v4.x is being used. +// - CPPB_4_UP : BCB v4.x or higher is being used. +// - CPPB_5 : BCB v5.x is being used. +// - CPPB_5_UP : BCB v5.x or higher is being used. +// - CPPB_6 : BCB v6.x is being used. +// - CPPB_6_UP : BCB v6.x or higher is being used. +// - CPPB_XXX is not used any more, use the COMPILER_XXX defines +// +// Only defined if Windows is the target: +// - DELPHI : Any version of Delphi is being used. +// - DELPHI_1 : Delphi v1.x is being used. +// - DELPHI_2 : Delphi v2.x is being used. +// - DELPHI_2_UP : Delphi v2.x or higher is being used. +// - DELPHI_3 : Delphi v3.x is being used. +// - DELPHI_3_UP : Delphi v3.x or higher is being used. +// - DELPHI_4 : Delphi v4.x is being used. +// - DELPHI_4_UP : Delphi v4.x or higher is being used. +// - DELPHI_5 : Delphi v5.x is being used. +// - DELPHI_5_UP : Delphi v5.x or higher is being used. +// - DELPHI_6 : Delphi v6.x is being used. +// - DELPHI_6_UP : Delphi v6.x or higher is being used. +// - DELPHI_7 : Delphi v7.x is being used. +// - DELPHI_7_UP : Delphi v7.x or higher is being used. +// - DELPHI_8 : Delphi v8.x is being used. +// - DELPHI_8_UP : Delphi v8.x or higher is being used. +// - DELPHI_9 : Delphi v9.x is being used. +// - DELPHI_9_UP : Delphi v9.x or higher is being used. +// - DELPHI_XXX is not used any more, use the COMPILER_XXX defines +// +// Only defined if Linux is the target: +// - KYLIX : Any version of Kylix is being used. +// - KYLIX_1 : Kylix 1.x is being used. +// - KYLIX_1_UP : Kylix 1.x or higher is being used. +// - KYLIX_2 : Kylix 2.x is being used. +// - KYLIX_2_UP : Kylix 2.x or higher is being used. +// - KYLIX_3 : Kylix 3.x is being used. +// - KYLIX_3_UP : Kylix 3.x or higher is being used. +// +// Only defined if Linux is the target: +// - QT_CLX : Trolltech's QT library is being used. +// +// Only defined if Delphi.NET is the target: +// - DELPHI.NET : Any version of Delphi.NET is being used. +// - DELPHI.NET_1 : Delphi.NET version 1.x is being used. +// - DELPHI.NET_1_UP : Delphi.NET version 1.x is being used. +//---------------------------------------------------------------------------------------------------------------------- + +{$ifdef CLR} // The common language runtime symbol is only defined for the .NET platform. + {$define DELPHI.NET} + {$ifdef VER160} + {$define DELPHI.NET_1} + {$endif VER160} + + // Compiler defines common to all .NET versions. + {$ifdef DELPHI.NET_1} + {$define DELHI.NET_1_UP} + {$endif DELPHI.NET_1} +{$endif CLR} + +{$ifdef Win32} + +// Compiler defines not specific to a particlular platform. + + // DELPHI and BCB are no longer defined, only COMPILER + {$ifdef VER190} + {$define COMPILER_11} + {$endif VER190} + + // DELPHI and BCB are no longer defined, only COMPILER + {$ifdef VER180} + {$define COMPILER_10} + {$endif VER180} + + {$ifdef VER170} + {$define COMPILER_9} + {$define DELPHI} + {$define DELPHI_9} + {$endif VER170} + + {$ifdef VER160} + {$define COMPILER_8} + {$define DELPHI} + {$define DELPHI_8} + {$endif VER160} + + {$ifdef VER150} + {$define COMPILER_7} + {$define DELPHI} + {$define DELPHI_7} + {$endif} + + {$ifdef VER140} + {$define COMPILER_6} + {$ifdef BCB} + {$define CPPB} + {$define CPPB_6} + {$else} + {$define DELPHI} + {$define DELPHI_6} + {$endif} + {$endif} + + {$ifdef VER130} + {$define COMPILER_5} + {$ifdef BCB} + {$define CPPB} + {$define CPPB_5} + {$else} + {$define DELPHI} + {$define DELPHI_5} + {$endif} + {$endif} + + {$ifdef VER125} + {$define COMPILER_4} + {$define CPPB} + {$define CPPB_4} + {$endif} + + {$ifdef VER120} + {$define COMPILER_4} + {$define DELPHI} + {$define DELPHI_4} + {$endif} + + {$ifdef VER110} + {$define COMPILER_3} + {$define CPPB} + {$define CPPB_3} + {$endif} + + {$ifdef VER100} + {$define COMPILER_3} + {$define DELPHI} + {$define DELPHI_3} + {$endif} + + {$ifdef VER93} + {$define COMPILER_2} // C++ Builder v1 compiler is really v2 + {$define CPPB} + {$define CPPB_1} + {$endif} + + {$ifdef VER90} + {$define COMPILER_2} + {$define DELPHI} + {$define DELPHI_2} + {$endif} + + {$ifdef VER80} + {$define COMPILER_1} + {$define DELPHI} + {$define DELPHI_1} + {$endif} + + {$ifdef DELPHI_2} + {$define DELPHI_2_UP} + {$endif} + + {$ifdef DELPHI_3} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$endif} + + {$ifdef DELPHI_4} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$endif} + + {$ifdef DELPHI_5} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$endif} + + {$ifdef DELPHI_6} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$endif} + + {$ifdef DELPHI_7} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$endif} + + {$ifdef DELPHI_8} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$endif} + + {$ifdef DELPHI_9} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$endif} + + {$ifdef CPPB_3} + {$define CPPB_3_UP} + {$endif} + + {$ifdef CPPB_4} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$endif} + + {$ifdef CPPB_5} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$endif} + + {$ifdef CPPB_6} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + {$endif} + + {$ifdef CPPB_3_UP} + // C++ Builder requires this if you use Delphi components in run-time packages. + {$ObjExportAll On} + {$endif} + +{$else (not Windows)} + // Linux is the target + {$define QT_CLX} + + {$define KYLIX} + + {$ifdef VER140} + {$define COMPILER_6} + {$ifdef conditionalexpressions} + {$if Declared(RTLVersion) and (RTLVersion = 14)} + {$define KYLIX_1} + {$ifend} + + {$if Declared(RTLVersion) and (RTLVersion = 14.2)} + {$define KYLIX_2} + {$ifend} + + {$if Declared(RTLVersion) and (RTLVersion = 14.5)} + {$define KYLIX_3} + {$ifend} + {$endif} + {$endif} + + {$ifdef VER150} + {$define COMPILER_7} + {$define KYLIX_3} + {$endif} + + {$ifdef VER140} + {$define COMPILER_6} + {$define KYLIX_2} + {$endif} + + {$ifdef KYLIX_1} + {$define KYLIX_1_UP} + {$endif} + + {$ifdef KYLIX_2} + {$define KYLIX_2_UP} + {$endif} + + {$ifdef KYLIX_3} + {$define KYLIX_2_UP} + {$define KYLIX_3_UP} + {$endif} + +{$endif Win32} + + +{$ifdef COMPILER_1} + {$define COMPILER_1_UP} +{$endif} + +{$ifdef COMPILER_2} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} +{$endif} + +{$ifdef COMPILER_3} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} +{$endif} + +{$ifdef COMPILER_4} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} +{$endif} + +{$ifdef COMPILER_5} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} +{$endif} + +{$ifdef COMPILER_6} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} +{$endif} + +{$ifdef COMPILER_7} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} +{$endif} + +{$ifdef COMPILER_8} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} +{$endif} + +{$ifdef COMPILER_9} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} +{$endif} + +{$ifdef COMPILER_10} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} + {$define COMPILER_10_UP} + // Backwards compatibility + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + + {$ifdef BCB} + {$define CPPB} + {$else} + {$define DELPHI} + {$endif} + +{$endif} + +{$ifdef COMPILER_11} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} + {$define COMPILER_10_UP} + {$define COMPILER_11_UP} + // Backwards compatibility + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + + {$ifdef BCB} + {$define CPPB} + {$else} + {$define DELPHI} + {$endif} + +{$endif} + +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/official/1.7.0/Common Library/Source/MPCommonObjects.hpp b/official/1.7.0/Common Library/Source/MPCommonObjects.hpp new file mode 100644 index 0000000..8982d9f --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonObjects.hpp @@ -0,0 +1,454 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpcommonobjects.pas' rev: 11.00 + +#ifndef MpcommonobjectsHPP +#define MpcommonobjectsHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpcommonobjects +{ +//-- type declarations ------------------------------------------------------- +typedef BOOL __stdcall (*TILIsParent)(Shlobj::PItemIDList PIDL1, Shlobj::PItemIDList PIDL2, BOOL ImmediateParent); + +typedef BOOL __stdcall (*TILIsEqual)(Shlobj::PItemIDList PIDL1, Shlobj::PItemIDList PIDL2); + +typedef int TCommonImageIndexInteger; + +class DELPHICLASS TStringListEx; +class PASCALIMPLEMENTATION TStringListEx : public Classes::TStringList +{ + typedef Classes::TStringList inherited; + +public: + #pragma option push -w-inl + /* TStringList.Destroy */ inline __fastcall virtual ~TStringListEx(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TStringListEx(void) : Classes::TStringList() { } + #pragma option pop + +}; + + +typedef DynamicArray TPIDLArray; + +typedef DynamicArray TRelativePIDLArray; + +typedef DynamicArray TAbsolutePIDLArray; + +__interface ICommonExtractObj; +typedef System::DelphiInterface _di_ICommonExtractObj; +__interface INTERFACE_UUID("{7F667930-E47B-4474-BA62-B100D7DBDA70}") ICommonExtractObj : public IInterface +{ + +public: + virtual System::TObject* __fastcall GetObj(void) = 0 ; + __property System::TObject* Obj = {read=GetObj}; +}; + +#pragma option push -b- +enum TCommonShellContextMenuAction { cmaCopy, cmaCut, cmaPaste, cmaDelete, cmaRename, cmaProperties, cmaShortCut }; +#pragma option pop + +typedef Set TCommonShellContextMenuActions; + +#pragma option push -b- +enum TCommonShellContextMenuExtension { cmeAllFilesystemObjects, cmeDirectory, cmeDirBackground, cmeFolder, cmeAsterik, cmeShellDefault, cmeFileSystemAssociations, cmePerceivedType }; +#pragma option pop + +typedef Set TCommonShellContextMenuExtensions; + +class DELPHICLASS TCommonThemeManager; +class PASCALIMPLEMENTATION TCommonThemeManager : public System::TObject +{ + typedef System::TObject inherited; + +private: + unsigned FButtonTheme; + unsigned FComboBoxTheme; + unsigned FEditTheme; + unsigned FExplorerBarTheme; + unsigned FHeaderTheme; + unsigned FListviewTheme; + bool FLoaded; + Controls::TWinControl* FOwner; + unsigned FProgressTheme; + unsigned FRebarTheme; + unsigned FScrollbarTheme; + unsigned FTaskBandTheme; + unsigned FTaskBarTheme; + unsigned FTreeviewTheme; + unsigned FWindowTheme; + +public: + __fastcall TCommonThemeManager(Controls::TWinControl* AnOwner); + __fastcall virtual ~TCommonThemeManager(void); + DYNAMIC void __fastcall ThemesFree(void); + DYNAMIC void __fastcall ThemesLoad(void); + __property unsigned ButtonTheme = {read=FButtonTheme, write=FButtonTheme, nodefault}; + __property unsigned ComboBoxTheme = {read=FComboBoxTheme, write=FComboBoxTheme, nodefault}; + __property unsigned EditThemeTheme = {read=FEditTheme, write=FEditTheme, nodefault}; + __property unsigned ExplorerBarTheme = {read=FExplorerBarTheme, write=FExplorerBarTheme, nodefault}; + __property unsigned HeaderTheme = {read=FHeaderTheme, write=FHeaderTheme, nodefault}; + __property unsigned ListviewTheme = {read=FListviewTheme, write=FListviewTheme, nodefault}; + __property bool Loaded = {read=FLoaded, nodefault}; + __property Controls::TWinControl* Owner = {read=FOwner}; + __property unsigned ProgressTheme = {read=FProgressTheme, write=FProgressTheme, nodefault}; + __property unsigned RebarTheme = {read=FRebarTheme, write=FRebarTheme, nodefault}; + __property unsigned ScrollbarTheme = {read=FScrollbarTheme, write=FScrollbarTheme, nodefault}; + __property unsigned TaskBandTheme = {read=FTaskBandTheme, write=FTaskBandTheme, nodefault}; + __property unsigned TaskBarTheme = {read=FTaskBarTheme, write=FTaskBarTheme, nodefault}; + __property unsigned TreeviewTheme = {read=FTreeviewTheme, write=FTreeviewTheme, nodefault}; + __property unsigned WindowTheme = {read=FWindowTheme, write=FWindowTheme, nodefault}; +}; + + +class DELPHICLASS TCommonCanvasControl; +class PASCALIMPLEMENTATION TCommonCanvasControl : public Controls::TCustomControl +{ + typedef Controls::TCustomControl inherited; + +private: + Controls::TControlCanvas* FCanvas; + Controls::TImageList* FImagesExtraLarge; + Controls::TImageList* FImagesLarge; + Controls::TImageList* FImagesSmall; + Classes::TNotifyEvent FOnEndUpdate; + bool FThemed; + TCommonThemeManager* FThemes; + Controls::TControlCanvas* __fastcall GetCanvas(void); + bool __fastcall GetThemed(void); + void __fastcall SetThemed(const bool Value); + +protected: + int FUpdateCount; + virtual void __fastcall CreateWnd(void); + void __fastcall DoEndUpdate(void); + virtual void __fastcall DoUpdate(void); + bool __fastcall DrawWithThemes(void); + virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation); + HIDESBASE MESSAGE void __fastcall WMDestroy(Messages::TMessage &Msg); + MESSAGE void __fastcall WMThemeChanged(Messages::TMessage &Message); + __property Classes::TNotifyEvent OnEndUpdate = {read=FOnEndUpdate, write=FOnEndUpdate}; + __property bool Themed = {read=GetThemed, write=SetThemed, default=1}; + +public: + __fastcall virtual TCommonCanvasControl(Classes::TComponent* AOwner); + __fastcall virtual ~TCommonCanvasControl(void); + virtual void __fastcall BeginUpdate(void); + virtual void __fastcall EndUpdate(bool Invalidate = true); + void __fastcall SafeInvalidateRect(Types::PRect ARect, bool ImmediateUpdate); + __property Controls::TControlCanvas* Canvas = {read=GetCanvas, write=FCanvas}; + __property Color = {default=-16777211}; + __property DragCursor = {default=-12}; + __property DragMode = {default=0}; + __property TCommonThemeManager* Themes = {read=FThemes}; + __property int UpdateCount = {read=FUpdateCount, nodefault}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TCommonCanvasControl(HWND ParentWindow) : Controls::TCustomControl(ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonDefaultCanvasState; +class PASCALIMPLEMENTATION TCommonDefaultCanvasState : public System::TObject +{ + typedef System::TObject inherited; + +private: + unsigned FBkMode; + Graphics::TFont* FFont; + Graphics::TBrush* FBrush; + Graphics::TPen* FPen; + bool FCanvasStored; + int FCopyMode; + Types::TPoint FPenPos; + int FTextFlags; + Graphics::TBrush* __fastcall GetBrush(void); + Graphics::TFont* __fastcall GetFont(void); + Graphics::TPen* __fastcall GetPen(void); + +public: + __fastcall virtual ~TCommonDefaultCanvasState(void); + void __fastcall StoreCanvas(Graphics::TCanvas* ACanvas); + void __fastcall RestoreCanvas(Graphics::TCanvas* ACanvas); + __property unsigned BkMode = {read=FBkMode, nodefault}; + __property bool CanvasStored = {read=FCanvasStored, nodefault}; + __property int CopyMode = {read=FCopyMode, nodefault}; + __property Graphics::TFont* Font = {read=GetFont}; + __property Graphics::TBrush* Brush = {read=GetBrush}; + __property Graphics::TPen* Pen = {read=GetPen}; + __property Types::TPoint PenPos = {read=FPenPos}; + __property int TextFlags = {read=FTextFlags, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonDefaultCanvasState(void) : System::TObject() { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonPIDLList; +typedef TCommonPIDLList* *PCommonPIDLList; + +class DELPHICLASS TCommonPIDLManager; +class PASCALIMPLEMENTATION TCommonPIDLManager : public System::TObject +{ + typedef System::TObject inherited; + +protected: + _di_IMalloc FMalloc; + +public: + __fastcall TCommonPIDLManager(void); + __fastcall virtual ~TCommonPIDLManager(void); + WideChar * __fastcall AllocStrGlobal(WideString SourceStr); + Shlobj::PItemIDList __fastcall AppendPIDL(Shlobj::PItemIDList DestPIDL, Shlobj::PItemIDList SrcPIDL); + bool __fastcall BindToParent(Shlobj::PItemIDList AbsolutePIDL, _di_IShellFolder &Folder); + Shlobj::PItemIDList __fastcall CopyPIDL(Shlobj::PItemIDList APIDL); + bool __fastcall EqualPIDL(Shlobj::PItemIDList PIDL1, Shlobj::PItemIDList PIDL2); + void __fastcall FreeAndNilPIDL(Shlobj::PItemIDList &PIDL); + void __fastcall FreeOLEStr(WideChar * OLEStr); + void __fastcall FreePIDL(Shlobj::PItemIDList PIDL); + Shlobj::PItemIDList __fastcall CopyLastID(Shlobj::PItemIDList IDList); + Shlobj::PItemIDList __fastcall GetPointerToLastID(Shlobj::PItemIDList IDList); + int __fastcall IDCount(Shlobj::PItemIDList APIDL); + bool __fastcall IsDesktopFolder(Shlobj::PItemIDList APIDL); + bool __fastcall IsSubPIDL(Shlobj::PItemIDList FullPIDL, Shlobj::PItemIDList SubPIDL); + Shlobj::PItemIDList __fastcall NextID(Shlobj::PItemIDList APIDL); + int __fastcall PIDLSize(Shlobj::PItemIDList APIDL); + Shlobj::PItemIDList __fastcall LoadFromStream(Classes::TStream* Stream); + void __fastcall ParsePIDL(Shlobj::PItemIDList AbsolutePIDL, TCommonPIDLList* &PIDLList, bool AllAbsolutePIDLs); + Shlobj::PItemIDList __fastcall StringToPIDL(AnsiString PIDLStr); + Shlobj::PItemIDList __fastcall StripLastID(Shlobj::PItemIDList IDList)/* overload */; + Shlobj::PItemIDList __fastcall StripLastID(Shlobj::PItemIDList IDList, Word &Last_CB, Shlobj::PItemIDList &LastID)/* overload */; + void __fastcall SaveToStream(Classes::TStream* Stream, Shlobj::PItemIDList PIDL); + __property _di_IMalloc Malloc = {read=FMalloc}; +}; + + +class PASCALIMPLEMENTATION TCommonPIDLList : public Classes::TList +{ + typedef Classes::TList inherited; + +private: + TCommonPIDLManager* FLocalPIDLMgr; + bool FOwnsPIDLMgr; + bool FSharePIDLs; + bool FDestroying; + TCommonPIDLManager* __fastcall GetLocalPIDLMgr(void); + Shlobj::PItemIDList __fastcall GetPIDL(int Index); + void __fastcall SetLocalPIDLMgr(const TCommonPIDLManager* Value); + +protected: + __property bool Destroying = {read=FDestroying, nodefault}; + __property bool OwnsPIDLMgr = {read=FOwnsPIDLMgr, write=FOwnsPIDLMgr, nodefault}; + +public: + __fastcall TCommonPIDLList(void); + __fastcall virtual ~TCommonPIDLList(void); + virtual void __fastcall Clear(void); + void __fastcall CloneList(TCommonPIDLList* PIDLList); + int __fastcall CopyAdd(Shlobj::PItemIDList PIDL); + int __fastcall FindPIDL(Shlobj::PItemIDList TestPIDL); + virtual bool __fastcall LoadFromStream(Classes::TStream* Stream); + virtual bool __fastcall SaveToStream(Classes::TStream* Stream); + __property TCommonPIDLManager* LocalPIDLMgr = {read=GetLocalPIDLMgr, write=SetLocalPIDLMgr}; + __property bool SharePIDLs = {read=FSharePIDLs, write=FSharePIDLs, nodefault}; +}; + + +class DELPHICLASS TCommonMemoryStreamHelper; +class PASCALIMPLEMENTATION TCommonMemoryStreamHelper : public System::TObject +{ + typedef System::TObject inherited; + +public: + bool __fastcall ReadBoolean(Classes::TStream* S); + Graphics::TColor __fastcall ReadColor(Classes::TStream* S); + __int64 __fastcall ReadInt64(Classes::TStream* S); + int __fastcall ReadInteger(Classes::TStream* S); + AnsiString __fastcall ReadString(Classes::TStream* S); + WideString __fastcall ReadWideString(Classes::TStream* S); + Extended __fastcall ReadExtended(Classes::TStream* S); + void __fastcall ReadStream(Classes::TStream* SourceStream, Classes::TStream* TargetStream); + void __fastcall WriteBoolean(Classes::TStream* S, bool Value); + void __fastcall WriteColor(Classes::TStream* S, Graphics::TColor Value); + void __fastcall WriteExtended(Classes::TStream* S, Extended Value); + void __fastcall WriteInt64(Classes::TStream* S, __int64 Value); + void __fastcall WriteInteger(Classes::TStream* S, int Value); + void __fastcall WriteStream(Classes::TStream* SourceStream, Classes::TStream* TargetStream); + void __fastcall WriteString(Classes::TStream* S, AnsiString Value); + void __fastcall WriteWideString(Classes::TStream* S, WideString Value); +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonMemoryStreamHelper(void) : System::TObject() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonMemoryStreamHelper(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonStream; +class PASCALIMPLEMENTATION TCommonStream : public Classes::TMemoryStream +{ + typedef Classes::TMemoryStream inherited; + +public: + bool __fastcall ReadBoolean(void); + Byte __fastcall ReadByte(void); + int __fastcall ReadInteger(void); + AnsiString __fastcall ReadString(); + Classes::TStringList* __fastcall ReadStringList(void); + WideString __fastcall ReadWideString(); + void __fastcall WriteBoolean(bool Value); + void __fastcall WriteByte(Byte Value); + void __fastcall WriteInteger(int Value); + void __fastcall WriteString(const AnsiString Value); + void __fastcall WriteStringList(Classes::TStringList* Value); + void __fastcall WriteWideString(const WideString Value); +public: + #pragma option push -w-inl + /* TMemoryStream.Destroy */ inline __fastcall virtual ~TCommonStream(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonStream(void) : Classes::TMemoryStream() { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonCheckBound; +class PASCALIMPLEMENTATION TCommonCheckBound : public System::TObject +{ + typedef System::TObject inherited; + +private: + Types::TRect FBounds; + int FSize; + +public: + __property int Size = {read=FSize, write=FSize, nodefault}; + __property Types::TRect Bounds = {read=FBounds, write=FBounds}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonCheckBound(void) : System::TObject() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonCheckBound(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonCheckBoundManager; +class PASCALIMPLEMENTATION TCommonCheckBoundManager : public System::TObject +{ + typedef System::TObject inherited; + +private: + Classes::TList* FList; + Types::TRect __fastcall GetBound(int Size); + TCommonCheckBound* __fastcall GetCheckBound(int Index); + +protected: + void __fastcall Clear(void); + TCommonCheckBound* __fastcall Find(int Size); + __property Classes::TList* List = {read=FList, write=FList}; + __property TCommonCheckBound* CheckBound[int Index] = {read=GetCheckBound}; + +public: + __fastcall TCommonCheckBoundManager(void); + __fastcall virtual ~TCommonCheckBoundManager(void); + __property Types::TRect Bound[int Size] = {read=GetBound}; +}; + + +#pragma option push -b- +enum TSysImageListSize { sisSmall, sisLarge, sisExtraLarge }; +#pragma option pop + +class DELPHICLASS TCommonSysImages; +class PASCALIMPLEMENTATION TCommonSysImages : public Controls::TImageList +{ + typedef Controls::TImageList inherited; + +private: + TSysImageListSize FImageSize; + Mpshelltypes::_di_IImageList FJumboImages; + void __fastcall SetImageSize(const TSysImageListSize Value); + +protected: + void __fastcall RecreateHandle(void); + void __fastcall Flush(void); + __property Mpshelltypes::_di_IImageList JumboImages = {read=FJumboImages}; + +public: + __fastcall virtual TCommonSysImages(Classes::TComponent* AOwner); + __fastcall virtual ~TCommonSysImages(void); + __property TSysImageListSize ImageSize = {read=FImageSize, write=SetImageSize, nodefault}; +public: + #pragma option push -w-inl + /* TCustomImageList.CreateSize */ inline __fastcall TCommonSysImages(int AWidth, int AHeight) : Controls::TImageList(AWidth, AHeight) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +#define IID_ICommonExtractObj "{7F667930-E47B-4474-BA62-B100D7DBDA70}" +extern PACKAGE TCommonMemoryStreamHelper* StreamHelper; +extern PACKAGE TILIsParent ILIsParent; +extern PACKAGE TILIsEqual ILIsEqual; +extern PACKAGE TCommonCheckBoundManager* Checks; +extern PACKAGE Graphics::TFont* MarlettFont; +extern PACKAGE void __fastcall FlushImageLists(void); +extern PACKAGE TCommonSysImages* __fastcall ExtraLargeSysImages(void); +extern PACKAGE TCommonSysImages* __fastcall LargeSysImages(void); +extern PACKAGE TCommonSysImages* __fastcall SmallSysImages(void); +extern PACKAGE void __fastcall CreateFullyQualifiedShellDataObject(TPIDLArray AbsolutePIDLs, _di_IDataObject &ADataObject); + +} /* namespace Mpcommonobjects */ +using namespace Mpcommonobjects; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpcommonobjects diff --git a/official/1.7.0/Common Library/Source/MPCommonObjects.obj b/official/1.7.0/Common Library/Source/MPCommonObjects.obj new file mode 100644 index 0000000000000000000000000000000000000000..c3c468d54718cc216ac5d854b4b9beb0ad8936bf GIT binary patch literal 39287 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Source/MPCommonObjects.pas b/official/1.7.0/Common Library/Source/MPCommonObjects.pas new file mode 100644 index 0000000..790c6da --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonObjects.pas @@ -0,0 +1,1862 @@ +unit MPCommonObjects; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} +{$I Options.inc} +{$I ..\Include\Addins.inc} + +uses + Windows, + Messages, + Classes, + Controls, + Graphics, + SysUtils, + ActiveX, + {$IFDEF COMPILER_6_UP} + RTLConsts, + {$ELSE} + Consts, + {$ENDIF} + {$IFDEF COMPILER_7_UP} + Themes, + UxTheme, + {$ELSE} + {$IFDEF USETHEMES} + TmSchema, + UxTheme, + {$ENDIF} + {$ENDIF} + {$IFDEF TNTSUPPORT} + TntClasses, + TntWideStrings, + {$ENDIF} + ShlObj, + ShellAPI, + ImgList, + TypInfo, + MPShellTypes, + MPResources; + +const + IID_ICommonExtractObj = '{7F667930-E47B-4474-BA62-B100D7DBDA70}'; + +type + TILIsParent = function(PIDL1: PItemIDList; PIDL2: PItemIDList; + ImmediateParent: LongBool): LongBool; stdcall; + TILIsEqual = function(PIDL1: PItemIDList; PIDL2: PItemIDList): LongBool; stdcall; + + TCommonImageIndexInteger = type Integer; + + + TStringListEx = class(TStringList) + private + {$IFNDEF COMPILER_7_UP} + FNameValueSeparator: Char; + + function GetNameValueSeparator: Char; + function GetValueFromIndex(Index: Integer): string; + procedure SetNameValueSeparator(const Value: Char); + procedure SetValueFromIndex(Index: Integer; const Value: string); + {$ENDIF} + public + {$IFNDEF COMPILER_7_UP} + property ValueFromIndex[Index: Integer]: string read GetValueFromIndex write SetValueFromIndex; + property NameValueSeparator: Char read GetNameValueSeparator write SetNameValueSeparator; + {$ENDIF} + end; + + +type + TCommonPIDLManager = class; // forward + TCommonPIDLList = class; // forward + + TPIDLArray = array of PItemIDList; + TRelativePIDLArray = TPIDLArray; + TAbsolutePIDLArray = TPIDLArray; + + ICommonExtractObj = interface + [IID_ICommonExtractObj] + function GetObj: TObject; + property Obj: TObject read GetObj; + end; + + // In the ShellContextMenu items may be removed by not supplying the menu with + // these items. Note that by including them is DOES not mean that the items will + // in the menu. If the items do not support the action the shell with automatically + // remove the items. + TCommonShellContextMenuAction = ( + cmaCopy, + cmaCut, + cmaPaste, + cmaDelete, + cmaRename, + cmaProperties, + cmaShortCut + ); + TCommonShellContextMenuActions = set of TCommonShellContextMenuAction; + + TCommonShellContextMenuExtension = ( + cmeAllFilesystemObjects, // Add the Menu Extensions registered under HKEY_CLASSES_ROOT\AllFilesystemObjects such as Send To item + cmeDirectory, // Add the Menu Extensions registered under HKEY_CLASSES_ROOT\Directory + cmeDirBackground, // Add the Menu Extensions registered under HKEY_CLASSES_ROOT\Directory\Background + cmeFolder, // Add the Menu Extensions registered under HKEY_CLASSES_ROOT\Folder + cmeAsterik, // Add the Menu Extensions registered under HKEY_CLASSES_ROOT\* + cmeShellDefault, // Adds special actions like, Explore, Open, Search..., it depends on what other cme_ types are set, such as the Open/Explore Items + cmeFileSystemAssociations, // Add the Menu Extensions registered under HKEY_CLASSES_ROOT\FileSystemAssociations\{.ext} + cmePerceivedType // Checks for a PerceivedType string in the extension key {.ext} that points to a key in the HKEY_CLASSES_ROOT\FileSystemAssociations\SomePerceivedType such as "image". Will add the "Print" item + ); + TCommonShellContextMenuExtensions = set of TCommonShellContextMenuExtension; + + // + // Encapsulates Theme handles for various objects + // + {$IFDEF USETHEMES} + TCommonThemeManager = class + private + FButtonTheme: HTHEME; // Some useful Themes + FComboBoxTheme: HTHEME; + FEditTheme: HTHEME; + FExplorerBarTheme: HTHEME; + FHeaderTheme: HTHEME; + FListviewTheme: HTHEME; + FLoaded: Boolean; + FOwner: TWinControl; + FProgressTheme: HTHEME; + FRebarTheme: HTHEME; + FScrollbarTheme: HTheme; + FTaskBandTheme: HTHEME; + FTaskBarTheme: HTHEME; + FTreeviewTheme: HTHEME; + FWindowTheme: HTHEME; + public + constructor Create(AnOwner: TWinControl); + destructor Destroy; override; + + procedure ThemesFree; dynamic; + procedure ThemesLoad; dynamic; + + property ButtonTheme: HTHEME read FButtonTheme write FButtonTheme; + property ComboBoxTheme: HTHEME read FComboBoxTheme write FComboBoxTheme; + property EditThemeTheme: HTHEME read FEditTheme write FEditTheme; + property ExplorerBarTheme: HTHEME read FExplorerBarTheme write FExplorerBarTheme; + property HeaderTheme: HTHEME read FHeaderTheme write FHeaderTheme; + property ListviewTheme: HTHEME read FListviewTheme write FListviewTheme; + property Loaded: Boolean read FLoaded; + property Owner: TWinControl read FOwner; + property ProgressTheme: HTHEME read FProgressTheme write FProgressTheme; + property RebarTheme: HTHEME read FRebarTheme write FRebarTheme; + property ScrollbarTheme: HTheme read FScrollbarTheme write FScrollbarTheme; + property TaskBandTheme: HTHEME read FTaskBandTheme write FTaskBandTheme; + property TaskBarTheme: HTHEME read FTaskBarTheme write FTaskBarTheme; + property TreeviewTheme: HTHEME read FTreeviewTheme write FTreeviewTheme; + property WindowTheme: HTHEME read FWindowTheme write FWindowTheme; + end; + {$ENDIF USETHEMES} + + // + // TWinControl that has a canvas and a few methods/properites for + // locking the canvas for higher performance drawing. Also handles + // XP and above theme support + // + TCommonCanvasControl = class(TCustomControl) + private + FCanvas: TControlCanvas; + FImagesExtraLarge: TImageList; + FImagesLarge: TImageList; + FImagesSmall: TImageList; + FOnEndUpdate: TNotifyEvent; + FThemed: Boolean; + {$IFDEF USETHEMES}FThemes: TCommonThemeManager;{$ENDIF USETHEMES} + function GetCanvas: TControlCanvas; + function GetThemed: Boolean; + procedure SetThemed(const Value: Boolean); + protected + FUpdateCount: Integer; + procedure CreateWnd; override; + procedure DoEndUpdate; + procedure DoUpdate; virtual; + function DrawWithThemes: Boolean; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure WMDestroy(var Msg: TMessage); message WM_DESTROY; + {$IFDEF USETHEMES}procedure WMThemeChanged(var Message: TMessage); message WM_THEMECHANGED;{$ENDIF USETHEMES} + property OnEndUpdate: TNotifyEvent read FOnEndUpdate write FOnEndUpdate; + property Themed: Boolean read GetThemed write SetThemed default True; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + procedure BeginUpdate; virtual; + procedure EndUpdate(Invalidate: Boolean = True); virtual; + procedure SafeInvalidateRect(ARect: PRect; ImmediateUpdate: Boolean); + + property Canvas: TControlCanvas read GetCanvas write FCanvas; + property Color; + property DragCursor; + property DragMode; + {$IFDEF USETHEMES}property Themes: TCommonThemeManager read FThemes;{$ENDIF USETHEMES} + property UpdateCount: Integer read FUpdateCount; + end; + + // + // Stores the state of a TCanvas so it may be restored later + // + TCommonDefaultCanvasState = class + private + FBkMode: Longword; + FFont: TFont; + FBrush: TBrush; + FPen: TPen; + FCanvasStored: Boolean; + FCopyMode: TCopyMode; + FPenPos: TPoint; + FTextFlags: Integer; + function GetBrush: TBrush; + function GetFont: TFont; + function GetPen: TPen; + public + destructor Destroy; override; + + procedure StoreCanvas(ACanvas: TCanvas); + procedure RestoreCanvas(ACanvas: TCanvas); + + property BkMode: Longword read FBkMode; + property CanvasStored: Boolean read FCanvasStored; + property CopyMode: TCopyMode read FCopyMode; + property Font: TFont read GetFont; + property Brush: TBrush read GetBrush; + property Pen: TPen read GetPen; + property PenPos: TPoint read FPenPos; + property TextFlags: Integer read FTextFlags; + end; + + // + // A specialized TList that contains PItemID's + // + PCommonPIDLList = ^TCommonPIDLList; + TCommonPIDLList = class(TList) + private + FLocalPIDLMgr: TCommonPIDLManager; // this can be in an IDataObject that the shell holds on to, causing our global PIDLMgr to be freed on application destroy before the shell releases the IDataObject + FOwnsPIDLMgr: Boolean; + FSharePIDLs: Boolean; // If true the class will not free the PIDL's automaticlly when destroyed + FDestroying: Boolean; // Instance of a PIDLManager used to easily deal with the PIDL's + function GetLocalPIDLMgr: TCommonPIDLManager; + function GetPIDL(Index: integer): PItemIDList; + procedure SetLocalPIDLMgr(const Value: TCommonPIDLManager); + protected + property Destroying: Boolean read FDestroying; + property OwnsPIDLMgr: Boolean read FOwnsPIDLMgr write FOwnsPIDLMgr; + public + constructor Create; + destructor Destroy; override; + + procedure Clear; override; + procedure CloneList(PIDLList: TCommonPIDLList); + function CopyAdd(PIDL: PItemIDList): Integer; + function FindPIDL(TestPIDL: PItemIDList): Integer; + function LoadFromStream( Stream: TStream): Boolean; virtual; + function SaveToStream( Stream: TStream): Boolean; virtual; + + property LocalPIDLMgr: TCommonPIDLManager read GetLocalPIDLMgr write SetLocalPIDLMgr; + property SharePIDLs: Boolean read FSharePIDLs write FSharePIDLs; + end; + + // + // TCoolPIDLManager is a class the encapsulates PIDLs and makes them easier to + // handle. + // + TCommonPIDLManager = class + private + protected + FMalloc: IMalloc; // The global Memory allocator + public + constructor Create; + destructor Destroy; override; + + function AllocStrGlobal(SourceStr: WideString): POleStr; + function AppendPIDL(DestPIDL, SrcPIDL: PItemIDList): PItemIDList; + function BindToParent(AbsolutePIDL: PItemIDList; var Folder: IShellFolder): Boolean; + function CopyPIDL(APIDL: PItemIDList): PItemIDList; + function EqualPIDL(PIDL1, PIDL2: PItemIDList): Boolean; + procedure FreeAndNilPIDL(var PIDL: PItemIDList); + procedure FreeOLEStr(OLEStr: LPWSTR); + procedure FreePIDL(PIDL: PItemIDList); + function CopyLastID(IDList: PItemIDList): PItemIDList; + function GetPointerToLastID(IDList: PItemIDList): PItemIDList; + function IDCount(APIDL: PItemIDList): integer; + function IsDesktopFolder(APIDL: PItemIDList): Boolean; + function IsSubPIDL(FullPIDL, SubPIDL: PItemIDList): Boolean; + function NextID(APIDL: PItemIDList): PItemIDList; + function PIDLSize(APIDL: PItemIDList): integer; + function LoadFromStream(Stream: TStream): PItemIDList; + procedure ParsePIDL(AbsolutePIDL: PItemIDList; var PIDLList: TCommonPIDLList; AllAbsolutePIDLs: Boolean); + function StringToPIDL(PIDLStr: string): PItemIDList; + function StripLastID(IDList: PItemIDList): PItemIDList; overload; + function StripLastID(IDList: PItemIDList; var Last_CB: Word; var LastID: PItemIDList): PItemIDList; overload; + procedure SaveToStream(Stream: TStream; PIDL: PItemIdList); + + property Malloc: IMalloc read FMalloc; + end; + + + // + // Helper object to write basic property types to a Stream + // + TCommonMemoryStreamHelper = class + public + function ReadBoolean(S: TStream): Boolean; + function ReadColor(S: TStream): TColor; + function ReadInt64(S: TStream): Int64; + function ReadInteger(S: TStream): Integer; + function ReadString(S: TStream): string; + function ReadWideString(S: TStream): WideString; + function ReadExtended(S: TStream): Extended; + procedure ReadStream(SourceStream, TargetStream: TStream); + // procedure ReadPublishedProperties(S: TStream; Instance: TObject; RecurseSubClasses: Boolean); + procedure WriteBoolean(S: TStream; Value: Boolean); + procedure WriteColor(S: TStream; Value: TColor); + procedure WriteExtended(S: TStream; Value: Extended); + procedure WriteInt64(S: TStream; Value: Int64); + procedure WriteInteger(S: TStream; Value: Integer); + procedure WriteStream(SourceStream, TargetStream: TStream); +// procedure WritePublishedProperties(S: TStream; Instance: TObject; RecurseSubClasses: Boolean); + procedure WriteString(S: TStream; Value: string); + procedure WriteWideString(S: TStream; Value: WideString); + end; + + // + // MemoryStream that knows how to write/read basic data types + // + TCommonStream = class(TMemoryStream) + public + function ReadBoolean: Boolean; + function ReadByte: Byte; + function ReadInteger: Integer; + function ReadString: string; + function ReadStringList: TStringList; + function ReadWideString: WideString; + + procedure WriteBoolean(Value: Boolean); + procedure WriteByte(Value: Byte); + procedure WriteInteger(Value: Integer); + procedure WriteString(const Value: string); + procedure WriteStringList(Value: TStringList); + procedure WriteWideString(const Value: WideString); + end; + + // + // The dimension of the Marlett Checkbox Font + // + TCommonCheckBound = class + private + FBounds: TRect; + FSize: Integer; + public + property Size: Integer read FSize write FSize; + property Bounds: TRect read FBounds write FBounds; + end; + + // + // The Stores the dimensions for various sizes of the Marlett Checkbox Font + // + TCommonCheckBoundManager = class + private + FList: TList; + function GetBound(Size: Integer): TRect; + function GetCheckBound(Index: Integer): TCommonCheckBound; + protected + procedure Clear; + function Find(Size: Integer): TCommonCheckBound; + + property List: TList read FList write FList; + property CheckBound[Index: Integer]: TCommonCheckBound read GetCheckBound; + public + constructor Create; + destructor Destroy; override; + + property Bound[Size: Integer]: TRect read GetBound; + end; + + // + // Encapsulates the System image lists + // + TSysImageListSize = ( + sisSmall, // Large System Images + sisLarge, // Small System Images + sisExtraLarge // Extra Large Images (48x48) + ); + + TCommonSysImages = class(TImageList) + private + FImageSize: TSysImageListSize; + FJumboImages: IImageList; + procedure SetImageSize(const Value: TSysImageListSize); + protected + procedure RecreateHandle; + procedure Flush; + property JumboImages: IImageList read FJumboImages; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property ImageSize: TSysImageListSize read FImageSize write SetImageSize; + end; + + function ExtraLargeSysImages: TCommonSysImages; + function LargeSysImages: TCommonSysImages; + function SmallSysImages: TCommonSysImages; + + procedure FlushImageLists; +procedure CreateFullyQualifiedShellDataObject(AbsolutePIDLs: TAbsolutePIDLArray; var ADataObject: IDataObject); +var + StreamHelper: TCommonMemoryStreamHelper; + ILIsParent: TILIsParent = nil; + ILIsEqual: TILIsEqual = nil; + Checks: TCommonCheckBoundManager; + MarlettFont: TFont; + + +implementation + +uses + MPCommonUtilities, + MPDataObject; + +var + FreeShellLib: Boolean = False; + ShellDLL: HMODULE = 0; + FExtraLargeSysImages: TCommonSysImages = nil; + FLargeSysImages: TCommonSysImages = nil; + FSmallSysImages: TCommonSysImages = nil; + PIDLMgr: TCommonPIDLManager = nil; + +{$IFNDEF COMPILER_6_UP} +function GUIDToString(const GUID: TGUID): string; +var + P: PWideChar; +begin + Result := ''; + if Succeeded(StringFromCLSID(GUID, P)) then + begin + Result := P; + CoTaskMemFree(P); + end +end; +{$ENDIF} + +procedure FlushImageLists; +begin + if Assigned(FSmallSysImages) then + FSmallSysImages.Flush; + if Assigned(FLargeSysImages) then + FLargeSysImages.Flush; + if Assigned(FExtraLargeSysImages) then + FExtraLargeSysImages.Flush +end; + +function ExtraLargeSysImages: TCommonSysImages; +begin + if not Assigned(FExtraLargeSysImages) then + begin + FExtraLargeSysImages := TCommonSysImages.Create(nil); + FExtraLargeSysImages.ImageSize := sisExtraLarge; + end; + Result := FExtraLargeSysImages +end; + +function LargeSysImages: TCommonSysImages; +begin + if not Assigned(FLargeSysImages) then + begin + FLargeSysImages := TCommonSysImages.Create(nil); + FLargeSysImages.ImageSize := sisLarge; + end; + Result := FLargeSysImages +end; + +function SmallSysImages: TCommonSysImages; +begin + if not Assigned(FSmallSysImages) then + begin + FSmallSysImages := TCommonSysImages.Create(nil); + FSmallSysImages.ImageSize := sisSmall; + end; + Result := FSmallSysImages +end; + +function SHGetImageList(iImageList: Integer; const RefID: TGUID; out ppvOut): HRESULT; +// Retrieves the system ImageList interface +var + ImageList: TSHGetImageList; +begin + Result := E_NOTIMPL; + if (Win32Platform = VER_PLATFORM_WIN32_NT) then + begin + ShellDLL := LoadLibrary(Shell32); + if ShellDLL <> 0 then + begin + ImageList := GetProcAddress(ShellDLL, PChar(727)); + if (Assigned(ImageList)) then + Result := ImageList(iImageList, RefID, ppvOut); + end + end; +end; + +procedure CreateFullyQualifiedShellDataObject(AbsolutePIDLs: TAbsolutePIDLArray; var ADataObject: IDataObject); +var + ShellIDList: TCommonShellIDList; + APIDLList: TCommonPIDLList; + i: Integer; + HDrop: TCommonHDrop; + DragLoop: TCommonInShellDragLoop; + {$IFDEF TNTSUPPORT} + FileListW: TTntStringList; + {$ENDIF} + FileListA: TStringList; + DesktopPIDL, LastID: PItemIDList; + DesktopFolder, Folder: IShellFolder; + Flags: UINT; + StrRet: TStrRet; +begin + ADataObject := TCommonDataObject.Create; + if Assigned(AbsolutePIDLs) then + begin + APIDLList := TCommonPIDLList.Create; + APIDLList.SharePIDLs := True; + ShellIDList := TCommonShellIDList.Create; + DragLoop := TCommonInShellDragLoop.Create; + HDrop := TCommonHDrop.Create; + {$IFDEF TNTSUPPORT} + FileListW := TTntStringList.Create; + {$ENDIF} + FileListA := TStringList.Create; + try + SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, DesktopPIDL); + SHGetDesktopFolder(DesktopFolder); + APIDLList.Add(DesktopPIDL); + // Add all the PIDL's from all the DataObjects based off the desktop (Absolute PIDLs) + for i := 0 to Length(AbsolutePIDLs) - 1 do + begin + APIDLList.Add(AbsolutePIDLs[i]); + + if PIDLMgr.BindToParent(AbsolutePIDLs[i], Folder) then + begin + LastID := PIDLMgr.GetPointerToLastID(AbsolutePIDLs[i]); + Flags := SFGAO_FILESYSTEM; + if Succeeded(Folder.GetAttributesOf(1, LastID, Flags)) then + if SFGAO_FILESYSTEM and Flags <> 0 then + begin + FillChar(StrRet, SizeOf(StrRet), #0); + Flags := SHGDN_FORPARSING; + if Succeeded(Folder.GetDisplayNameOf(LastID, Flags, StrRet)) then + begin + {$IFDEF TNTSUPPORT} + if IsUnicode then + FileListW.Add(StrRetToStr(StrRet, LastID)) + else + FileListA.Add(StrRetToStr(StrRet, LastID)); + {$ELSE} + FileListA.Add(StrRetToStr(StrRet, LastID)); + {$ENDIF} + end; + end + end + end; + ShellIDList.AssignPIDLs(APIDLList); + {$IFDEF TNTSUPPORT} + if IsUnicode then + HDrop.AssignFilesW(FileListW) + else + HDrop.AssignFilesA(FileListA); + {$ELSE} + HDrop.AssignFilesA(FileListA); + {$ENDIF} + ShellIDList.SaveToDataObject(ADataObject); + HDrop.SaveToDataObject(ADataObject); + DragLoop.SaveToDataObject(ADataObject) + finally + ShellIDList.Free; + HDrop.Free; + {$IFDEF TNTSUPPORT} + FileListW.Free; + {$ENDIF} + FileListA.Free; + DragLoop.Free; + APIDLList.Free; + PIDLMgr.FreePIDL(DesktopPIDL) + end + end +end; + +{ TCoolDefaultCanvasState } + +destructor TCommonDefaultCanvasState.Destroy; +begin + inherited; + FreeAndNil(FBrush); + FreeAndNil(FFont); + FreeAndNil(FPen); +end; + +function TCommonDefaultCanvasState.GetBrush: TBrush; +begin + if not Assigned(FBrush) then + FBrush := TBrush.Create; + Result := FBrush +end; + +function TCommonDefaultCanvasState.GetFont: TFont; +begin + if not Assigned(FFont) then + FFont := TFont.Create; + Result := FFont +end; + +function TCommonDefaultCanvasState.GetPen: TPen; +begin + if not Assigned(FPen) then + FPen := TPen.Create; + Result := FPen +end; + +procedure TCommonDefaultCanvasState.RestoreCanvas(ACanvas: TCanvas); +begin + Assert(CanvasStored, 'Trying to restore a canvas that has not been saved'); + SetBkMode(ACanvas.Handle, FBkMode); + ACanvas.CopyMode := FCopyMode; + ACanvas.Font.Assign(Font); + ACanvas.Brush.Assign(Brush); + ACanvas.Pen.Assign(Pen); + ACanvas.PenPos := FPenPos; + ACanvas.TextFlags := FTextFlags; + SelectClipRgn(ACanvas.Handle, 0); +end; + +procedure TCommonDefaultCanvasState.StoreCanvas(ACanvas: TCanvas); +begin + FCanvasStored := True; + FBkMode := GetBkMode(ACanvas.Handle); + FCopyMode := ACanvas.CopyMode; + Font.Assign(ACanvas.Font); + Brush.Assign(ACanvas.Brush); + Pen.Assign(ACanvas.Pen); + FPenPos := ACanvas.PenPos; + FTextFlags := ACanvas.TextFlags; +end; + +{ TCommonCanvasControl } + +function TCommonCanvasControl.DrawWithThemes: Boolean; +begin + {$IFDEF USETHEMES} + Result := Themed and Themes.Loaded; + {$ELSE} + Result := False; + {$ENDIF USETHEMES} +end; + +function TCommonCanvasControl.GetThemed: Boolean; +begin + Result := False; + {$IFDEF USETHEMES} + if not (csLoading in ComponentState) then + Result := FThemed and UseThemes; + {$ENDIF USETHEMES} +end; + +procedure TCommonCanvasControl.BeginUpdate; +// +// If ReIndex = False it is up to the user to understand when it is necessary +// to ReIndex different objects. By doing so performance may be enhanced +// drasticlly on large data sets. +begin + Inc(FUpdateCount); +end; + +constructor TCommonCanvasControl.Create(AOwner: TComponent); +begin + inherited; + FCanvas := TControlCanvas.Create; + Canvas.Control := Self; + // No notifications for font change + Font.OnChange := nil; + {$IFDEF USETHEMES}FThemes := TCommonThemeManager.Create(Self);{$ENDIF USETHEMES} + FThemed := True; +end; + +destructor TCommonCanvasControl.Destroy; +begin + inherited; + {$IFDEF USETHEMES}FreeAndNil(FThemes);{$ENDIF USETHEMES} + FreeAndNil(FCanvas); +end; + +procedure TCommonCanvasControl.CreateWnd; +begin + inherited CreateWnd; + {$IFDEF USETHEMES}Themes.ThemesLoad;{$ENDIF USETHEMES} +end; + +procedure TCommonCanvasControl.DoEndUpdate; +begin + if Assigned(OnEndUpdate) then + OnEndUpdate(Self) +end; + +procedure TCommonCanvasControl.DoUpdate; +begin +end; + +procedure TCommonCanvasControl.EndUpdate(Invalidate: Boolean = True); +begin + Dec(FUpdateCount); + if (UpdateCount <= 0) then + begin + FUpdateCount := 0; + DoUpdate; + if Invalidate and HandleAllocated then + UpdateWindow(Handle); + DoEndUpdate; + end +end; + +function TCommonCanvasControl.GetCanvas: TControlCanvas; +begin + FCanvas.Font.Assign(Font); + FCanvas.Brush.Assign(Brush); + Result := FCanvas; +end; + +procedure TCommonCanvasControl.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if Operation = opRemove then + begin + if AComponent = FImagesExtraLarge then + FImagesExtraLarge := nil + else + if AComponent = FImagesLarge then + FImagesLarge := nil + else + if AComponent = FImagesSmall then + FImagesSmall := nil + end +end; + +procedure TCommonCanvasControl.SafeInvalidateRect(ARect: PRect; ImmediateUpdate: Boolean); +begin + if HandleAllocated then + begin + InvalidateRect(Handle, ARect, False); + if ImmediateUpdate then + UpdateWindow(Handle) + end +end; + +procedure TCommonCanvasControl.SetThemed(const Value: Boolean); +begin + if Value <> FThemed then + begin + FThemed := Value; + {$IFDEF USETHEMES} + if Value then + Themes.ThemesLoad + else + Themes.ThemesFree; + if HandleAllocated then + begin + // This is the only way I could get the window to redraw the NonClient areas + // RedrawWindow did not work either. + Visible := not Visible; + Visible := not Visible; + SafeInvalidateRect(nil, True); + end; + {$ENDIF USETHEMES} + end +end; + +procedure TCommonCanvasControl.WMDestroy(var Msg: TMessage); +begin + {$IFDEF USETHEMES}Themes.ThemesFree;{$ENDIF USETHEMES} + inherited; +end; + +{$IFDEF USETHEMES} +procedure TCommonCanvasControl.WMThemeChanged(var Message: TMessage); +begin + inherited; + Themes.ThemesFree; + Themes.ThemesLoad; +end; +{$ENDIF USETHEMES} + +{ TCoolPIDLList } + +constructor TCommonPIDLList.Create; +begin + inherited Create; +end; + +function TCommonPIDLList.GetLocalPIDLMgr: TCommonPIDLManager; +begin + if not Assigned(FLocalPIDLMgr) then + begin + FLocalPIDLMgr := TCommonPIDLManager.Create; + OwnsPIDLMgr := True; + end; + Result := FLocalPIDLMgr +end; + +procedure TCommonPIDLList.Clear; +var + i: integer; +begin + if {(not Destroying) or} Assigned(PIDLMgr) then + begin + if not SharePIDLs and Assigned(PIDLMgr)then + for i := 0 to Count - 1 do + LocalPIDLMgr.FreePIDL( PItemIDList( Items[i])); + end; + inherited; +end; + +procedure TCommonPIDLList.CloneList(PIDLList: TCommonPIDLList); +var + i: Integer; +begin + if Assigned(PIDLList) then + for i := 0 to Count - 1 do + PIDLList.CopyAdd(Items[i]) +end; + +function TCommonPIDLList.CopyAdd(PIDL: PItemIDList): integer; +// Adds a Copy of the passed PIDL to the list +begin + Result := Add( LocalPIDLMgr.CopyPIDL(PIDL)); +end; + +destructor TCommonPIDLList.Destroy; +begin + FDestroying := True; + if OwnsPIDLMgr then + FreeAndNil(FLocalPIDLMgr); + inherited; +end; + +function TCommonPIDLList.FindPIDL(TestPIDL: PItemIDList): Integer; +// Finds the index of the PIDL that is equivalent to the passed PIDL. This is not +// the same as an byte for byte equivalent comparison +var + i: Integer; +begin + i := 0; + Result := -1; + while (i < Count) and (Result < 0) do + begin + if LocalPIDLMgr.EqualPIDL(TestPIDL, GetPIDL(i)) then + Result := i; + Inc(i); + end; +end; + +function TCommonPIDLList.GetPIDL(Index: integer): PItemIDList; +begin + Result := PItemIDList( Items[Index]); +end; + +function TCommonPIDLList.LoadFromStream(Stream: TStream): Boolean; +// Loads the PIDL list from a stream +var + PIDLCount, i: integer; +begin + Result := True; + try + Stream.ReadBuffer(PIDLCount, SizeOf(Integer)); + for i := 0 to PIDLCount - 1 do + Add( LocalPIDLMgr.LoadFromStream(Stream)); + except + Result := False; + end; +end; + +function TCommonPIDLList.SaveToStream(Stream: TStream): Boolean; +// Saves the PIDL list to a stream +var + i: integer; +begin + Result := True; + try + Stream.WriteBuffer(Count, SizeOf(Count)); + for i := 0 to Count - 1 do + LocalPIDLMgr.SaveToStream(Stream, Items[i]); + except + Result := False; + end; +end; + +{ TCommonPIDLManager } + +procedure TCommonPIDLList.SetLocalPIDLMgr(const Value: TCommonPIDLManager); +begin + if Value <> FLocalPIDLMgr then + begin + if not OwnsPIDLMgr then + FreeAndNil(FLocalPIDLMgr); + OwnsPIDLMgr := False; + FLocalPIDLMgr := Value; + end +end; + +// Routines to do most anything you would want to do with a PIDL + +function TCommonPIDLManager.AppendPIDL(DestPIDL, SrcPIDL: PItemIDList): PItemIDList; +// Returns the concatination of the two PIDLs. Neither passed PIDLs are +// freed so it is up to the caller to free them. +var + DestPIDLSize, SrcPIDLSize: integer; +begin + DestPIDLSize := 0; + SrcPIDLSize := 0; + // Appending a PIDL to the DesktopPIDL is invalid so don't allow it. + if Assigned(DestPIDL) then + if not IsDesktopFolder(DestPIDL) then + DestPIDLSize := PIDLSize(DestPIDL) - SizeOf(DestPIDL^.mkid.cb); + + if Assigned(SrcPIDL) then + SrcPIDLSize := PIDLSize(SrcPIDL); + + Result := FMalloc.Alloc(DestPIDLSize + SrcPIDLSize); + if Assigned(Result) then + begin + if Assigned(DestPIDL) and (DestPIDLSize > 0) then + CopyMemory(Result, DestPIDL, DestPIDLSize); + if Assigned(SrcPIDL) and (SrcPIDLSize > 0) then + CopyMemory(Pchar(Result) + DestPIDLSize, SrcPIDL, SrcPIDLSize); + end; +end; + +function TCommonPIDLManager.BindToParent(AbsolutePIDL: PItemIDList; var Folder: IShellFolder): Boolean; +var + Desktop: IShellFolder; + Last_CB: Word; + LastID: PItemIDList; +begin + SHGetDesktopFolder(Desktop); + if PIDLMgr.IDCount(AbsolutePIDL) = 1 then + begin + Folder := Desktop; + Result := True + end else + begin + StripLastID(AbsolutePIDL, Last_CB, LastID); + try + Result := Succeeded(Desktop.BindToObject(AbsolutePIDL, nil, IShellFolder, Pointer(Folder))) + finally + LastID.mkid.cb := Last_CB + end + end +end; + +function TCommonPIDLManager.CopyPIDL(APIDL: PItemIDList): PItemIDList; +// Copies the PIDL and returns a newly allocated PIDL. It is not associated +// with any instance of TCoolPIDLManager so it may be assigned to any instance. +var + Size: integer; +begin + if Assigned(APIDL) then + begin + Size := PIDLSize(APIDL); + Result := FMalloc.Alloc(Size); + if Result <> nil then + CopyMemory(Result, APIDL, Size); + end else + Result := nil +end; + +constructor TCommonPIDLManager.Create; +begin + inherited Create; + if SHGetMalloc(FMalloc) = E_FAIL then + fail +end; + +destructor TCommonPIDLManager.Destroy; +begin + FMalloc := nil; + inherited +end; + +function TCommonPIDLManager.EqualPIDL(PIDL1, PIDL2: PItemIDList): Boolean; +begin + if Assigned(PIDL1) and Assigned(PIDL2) then + Result := Boolean( ILIsEqual(PIDL1, PIDL2)) + else + Result := False +end; + +procedure TCommonPIDLManager.FreeOLEStr(OLEStr: LPWSTR); +// Frees an OLE string created by the Shell; as in StrRet +begin + FMalloc.Free(OLEStr) +end; + +procedure TCommonPIDLManager.FreePIDL(PIDL: PItemIDList); +// Frees the PIDL using the shell memory allocator +begin + if Assigned(PIDL) then + FMalloc.Free(PIDL) +end; + +function TCommonPIDLManager.CopyLastID(IDList: PItemIDList): PItemIDList; +// Returns a copy of the last PID in the list +var + Count, i: integer; + PIDIndex: PItemIDList; +begin + PIDIndex := IDList; + Count := IDCount(IDList); + if Count > 1 then + for i := 0 to Count - 2 do + PIDIndex := NextID(PIDIndex); + Result := CopyPIDL(PIDIndex); +end; + +function TCommonPIDLManager.GetPointerToLastID(IDList: PItemIDList): PItemIDList; +// Return a pointer to the last PIDL in the complex PIDL passed to it. +// Useful to overlap an Absolute complex PIDL with the single level +// Relative PIDL. +var + Count, i: integer; + PIDIndex: PItemIDList; +begin + if Assigned(IDList) then + begin + PIDIndex := IDList; + Count := IDCount(IDList); + if Count > 1 then + for i := 0 to Count - 2 do + PIDIndex := NextID(PIDIndex); + Result := PIDIndex; + end else + Result := nil +end; + +function TCommonPIDLManager.IDCount(APIDL: PItemIDList): integer; +// Counts the number of Simple PIDLs contained in a Complex PIDL. +var + Next: PItemIDList; +begin + Result := 0; + Next := APIDL; + if Assigned(Next) then + begin + while Next^.mkid.cb <> 0 do + begin + Inc(Result); + Next := NextID(Next); + end + end +end; + +function TCommonPIDLManager.IsDesktopFolder(APIDL: PItemIDList): Boolean; +// Tests the passed PIDL to see if it is the root Desktop Folder +begin + if Assigned(APIDL) then + Result := APIDL.mkid.cb = 0 + else + Result := False +end; + +function TCommonPIDLManager.NextID(APIDL: PItemIDList): PItemIDList; +// Returns a pointer to the next Simple PIDL in a Complex PIDL. +begin + Result := APIDL; + Inc(PChar(Result), APIDL^.mkid.cb); +end; + +function TCommonPIDLManager.PIDLSize(APIDL: PItemIDList): integer; +// Returns the total Memory in bytes the PIDL occupies. +begin + Result := 0; + if Assigned(APIDL) then + begin + Result := SizeOf( Word); // add the null terminating last ItemID + while APIDL.mkid.cb <> 0 do + begin + Result := Result + APIDL.mkid.cb; + APIDL := NextID(APIDL); + end; + end; +end; + +function TCommonPIDLManager.LoadFromStream(Stream: TStream): PItemIDList; +// Loads the PIDL from a Stream +var + Size: integer; +begin + Result := nil; + if Assigned(Stream) then + begin + Stream.ReadBuffer(Size, SizeOf(Integer)); + if Size > 0 then + begin + Result := FMalloc.Alloc(Size); + Stream.ReadBuffer(Result^, Size); + end + end +end; + +function TCommonPIDLManager.StringToPIDL(PIDLStr: string): PItemIDList; +var + P: PChar; +begin + Result := FMalloc.Alloc(Length(PIDLStr)); + P := @PIDLStr[1]; + Move(P^, Result^, Length(PIDLStr)); +end; + +function TCommonPIDLManager.StripLastID(IDList: PItemIDList): PItemIDList; +// Removes the last PID from the list. Returns the same, shortened, IDList passed +// to the function +var + MarkerID: PItemIDList; +begin + Result := IDList; + MarkerID := IDList; + if Assigned(IDList) then + begin + while IDList.mkid.cb <> 0 do + begin + MarkerID := IDList; + IDList := NextID(IDList); + end; + MarkerID.mkid.cb := 0; + end; +end; + +procedure TCommonPIDLManager.SaveToStream(Stream: TStream; PIDL: PItemIdList); +// Saves the PIDL from a Stream +var + Size: Integer; +begin + Size := PIDLSize(PIDL); + Stream.WriteBuffer(Size, SizeOf(Size)); + Stream.WriteBuffer(PIDL^, Size); +end; + + +function TCommonPIDLManager.StripLastID(IDList: PItemIDList; var Last_CB: Word; + var LastID: PItemIDList): PItemIDList; +// Strips the last ID but also returns the pointer to where the last CB was and the +// value that was there before setting it to 0 to shorten the PIDL. All that is necessary +// is to do a LastID^ := Last_CB.mkid.cb to return the PIDL to its previous state. Used to +// temporarily strip the last ID of a PIDL +var + MarkerID: PItemIDList; +begin + Last_CB := 0; + LastID := nil; + Result := IDList; + MarkerID := IDList; + if Assigned(IDList) then + begin + while IDList.mkid.cb <> 0 do + begin + MarkerID := IDList; + IDList := NextID(IDList); + end; + Last_CB := MarkerID.mkid.cb; + LastID := MarkerID; + MarkerID.mkid.cb := 0; + end; +end; + +function TCommonPIDLManager.IsSubPIDL(FullPIDL, SubPIDL: PItemIDList): Boolean; +// Tests to see if the SubPIDL can be expanded into the passed FullPIDL +var + i, PIDLLen, SubPIDLLen: integer; + PIDL: PItemIDList; + OldCB: Word; +begin + Result := False; + if Assigned(FullPIDL) and Assigned(SubPIDL) then + begin + SubPIDLLen := IDCount(SubPIDL); + PIDLLen := IDCount(FullPIDL); + if SubPIDLLen <= PIDLLen then + begin + PIDL := FullPIDL; + for i := 0 to SubPIDLLen - 1 do + PIDL := NextID(PIDL); + OldCB := PIDL.mkid.cb; + PIDL.mkid.cb := 0; + try + Result := ILIsEqual(FullPIDL, SubPIDL); + finally + PIDL.mkid.cb := OldCB + end + end + end +end; + +procedure TCommonPIDLManager.FreeAndNilPIDL(var PIDL: PItemIDList); +var + OldPIDL: PItemIDList; +begin + OldPIDL := PIDL; + PIDL := nil; + FreePIDL(OldPIDL) +end; + +function TCommonPIDLManager.AllocStrGlobal(SourceStr: WideString): POleStr; +begin + Result := Malloc.Alloc((Length(SourceStr) + 1) * 2); // Add the null + if Result <> nil then + CopyMemory(Result, PWideChar(SourceStr), (Length(SourceStr) + 1) * 2); +end; + +procedure TCommonPIDLManager.ParsePIDL(AbsolutePIDL: PItemIDList; var PIDLList: TCommonPIDLList; + AllAbsolutePIDLs: Boolean); +// Parses the AbsolutePIDL in to its single level PIDLs, if AllAbsolutePIDLs is true +// then each item is not a single level PIDL but an AbsolutePIDL but walking from the +// Desktop up to the passed AbsolutePIDL +var + OldCB: Word; + Head, Tail: PItemIDList; +begin + Head := AbsolutePIDL; + Tail := Head; + if Assigned(PIDLList) and Assigned(Head) then + begin + while Tail.mkid.cb <> 0 do + begin + Tail := NextID(Tail); + OldCB := Tail.mkid.cb; + try + Tail.mkid.cb := 0; + PIDLList.Add(CopyPIDL(Head)); + finally + Tail.mkid.cb := OldCB; + end; + if not AllAbsolutePIDLs then + Head := Tail + end + end +end; + +procedure LoadShell32Functions; +begin + ShellDLL := GetModuleHandle(PChar(Shell32)); + if ShellDLL = 0 then + begin + ShellDLL := LoadLibrary(PChar(Shell32)); + FreeShellLib := True; + end; + if ShellDll <> 0 then + begin + ILIsEqual := GetProcAddress(ShellDLL, PChar(21)); + ILIsParent := GetProcAddress(ShellDLL, PChar(23)); + end +end; + +{ TCommonMemoryStream} +function TCommonMemoryStreamHelper.ReadBoolean(S: TStream): Boolean; +begin + S.Read(Result, SizeOf(Result)); +end; + +function TCommonMemoryStreamHelper.ReadColor(S: TStream): TColor; +begin + S.Read(Result, SizeOf(Result)); +end; + +function TCommonMemoryStreamHelper.ReadInt64(S: TStream): Int64; +begin + S.Read(Result, SizeOf(Result)); +end; + +function TCommonMemoryStreamHelper.ReadInteger(S: TStream): Integer; +begin + S.Read(Result, SizeOf(Result)) +end; + +function TCommonMemoryStreamHelper.ReadString(S: TStream): string; +var + i: Integer; +begin + i := ReadInteger(S); + SetLength(Result, i); + S.Read(PChar(Result)^, i); +end; + +function TCommonMemoryStreamHelper.ReadWideString(S: TStream): WideString; +var + i: Integer; +begin + i := ReadInteger(S); + SetLength(Result, i); + S.Read(PWideChar(Result)^, i * 2); +end; + +function TCommonMemoryStreamHelper.ReadExtended(S: TStream): Extended; +begin + S.Read(Result, SizeOf(Result)) +end; + +procedure TCommonMemoryStreamHelper.ReadStream(SourceStream, TargetStream: TStream); +var + Len: Integer; + X: array of Byte; +begin + TargetStream.Size := 0; + SourceStream.Read(Len, SizeOf(Len)); + if Len > 0 then + begin + SetLength(X, Len); + SourceStream.Read(X[0], Len); + TargetStream.Write(X[0], Len); + end +end; + +{ + +Needs to be modified for D5 and D4 + +procedure TCommonMemoryStreamHelper.ReadPublishedProperties(S: TStream; Instance: TObject; RecurseSubClasses: Boolean); +var + TypeInfo: PTypeInfo; + TypeData: PTypeData; + PropList: PPropList; + i: Integer; + Obj: TObject; +begin + if Assigned(Instance) then + begin + TypeInfo := PTypeInfo(Instance.ClassInfo); + TypeData := GetTypeData(TypeInfo); + GetMem(PropList, TypeData.PropCount * SizeOf(Pointer)); + try + GetPropInfos(TypeInfo, PropList); + for i := 0 to TypeData.PropCount - 1 do + begin + case PropList[i].PropType^^.Kind of + tkClass: + begin + if RecurseSubClasses then + begin + Obj := GetObjectProp(Instance, PropList[i]); + ReadPublishedProperties(S, Obj, RecurseSubClasses); + end + end; + tkInteger, tkChar, tkWChar, tkEnumeration, tkSet: + begin + SetOrdProp(Instance, PropList[i], ReadInteger(S)); + end; + tkFloat: + begin + SetFloatProp(Instance, PropList[i], ReadExtended(S)); + end; + tkString: + begin + SetStrProp(Instance, PropList[i], ReadString(S)); + end; + tkWString, tkLString: + begin + // It looks like the VCL messes this up completely. + SetWideStrProp(Instance, PropList[i], ReadWideString(S)); + end; + tkInt64: + begin + SetInt64Prop(Instance, PropList[i], ReadInt64(S)); + end; + end + end; + finally + FreeMem(PropList); + end + end +end; +} +procedure TCommonMemoryStreamHelper.WriteBoolean(S: TStream; Value: Boolean); +begin + S.Write(Value, SizeOf(Value)) +end; + +procedure TCommonMemoryStreamHelper.WriteColor(S: TStream; Value: TColor); +begin + S.Write(Value, SizeOf(Value)) +end; + +procedure TCommonMemoryStreamHelper.WriteExtended(S: TStream; Value: Extended); +begin + S.Write(Value, SizeOf(Value)) +end; + +procedure TCommonMemoryStreamHelper.WriteInt64(S: TStream; Value: Int64); +begin + S.Write(Value, SizeOf(Value)) +end; + +procedure TCommonMemoryStreamHelper.WriteInteger(S: TStream; Value: Integer); +begin + S.Write(Value, SizeOf(Value)) +end; + +procedure TCommonMemoryStreamHelper.WriteStream(SourceStream, + TargetStream: TStream); +var + Len: Integer; + X: array of Byte; +begin + Len := SourceStream.Size; + TargetStream.Write(Len, SizeOf(Len)); + if Len > 0 then + begin + SetLength(X, Len); + SourceStream.Seek(0, 0); + SourceStream.Read(X[0], Len); + TargetStream.Write(X[0], Len); + end +end; + +{ + +Needs to be modified for D5 and D4 + +procedure TCommonMemoryStreamHelper.WritePublishedProperties(S: TStream; Instance: TObject; RecurseSubClasses: Boolean); +var + TypeInfo: PTypeInfo; + TypeData: PTypeData; + PropList: PPropList; + i: Integer; +begin + if Assigned(Instance) then + begin + TypeInfo := PTypeInfo(Instance.ClassInfo); + TypeData := GetTypeData(TypeInfo); + GetMem(PropList, TypeData.PropCount * SizeOf(Pointer)); + try + GetPropInfos(TypeInfo, PropList); + for i := 0 to TypeData.PropCount - 1 do + begin + case PropList[i].PropType^^.Kind of + tkClass: + begin + if RecurseSubClasses then + WritePublishedProperties(S, GetObjectProp(Instance, PropList[i].Name), RecurseSubClasses); + end; + tkInteger, tkChar, tkWChar, tkEnumeration, tkSet: + begin + WriteInteger(S, GetOrdProp(Instance, PropList[i])) + end; + tkFloat: + begin + WriteExtended(S, GetFloatProp(Instance, PropList[i])) + end; + tkString: + begin + WriteString(S, GetStrProp(Instance, PropList[i])) + end; + tkWString, tkLString: + begin + WriteWideString(S, GetWideStrProp(Instance, PropList[i])); + end; + tkInt64: + begin + WriteInt64(S, GetInt64Prop(Instance, PropList[i])) + end; + end + end; + finally + FreeMem(PropList); + end + end +end; +} + +procedure TCommonMemoryStreamHelper.WriteString(S: TStream; Value: string); +begin + WriteInteger(S, Length(Value)); + S.Write(PChar(Value)^, Length(Value)) +end; + +procedure TCommonMemoryStreamHelper.WriteWideString(S: TStream; Value: WideString); +begin + WriteInteger(S, Length(Value)); + S.Write(PWideChar(Value)^, Length(Value) * 2) +end; + +{$IFDEF USETHEMES} +{ TCommonThemeManager } +constructor TCommonThemeManager.Create(AnOwner: TWinControl); +begin + inherited Create; + FOwner := AnOwner; +end; + +destructor TCommonThemeManager.Destroy; +begin + ThemesFree; + inherited; +end; + +procedure TCommonThemeManager.ThemesFree; +begin + FLoaded := False; + if FButtonTheme <> 0 then + CloseThemeData(FButtonTheme); + FButtonTheme := 0; + if FListviewTheme <> 0 then + CloseThemeData(FListviewTheme); + FListviewTheme := 0; + if FHeaderTheme <> 0 then + CloseThemeData(FHeaderTheme); + FHeaderTheme := 0; + if FTreeviewTheme <> 0 then + CloseThemeData(FTreeviewTheme); + FTreeviewTheme := 0; + if FExplorerBarTheme <> 0 then + CloseThemeData(FExplorerBarTheme); + FExplorerBarTheme := 0; + if FComboBoxTheme <> 0 then + CloseThemeData(FComboBoxTheme); + FComboBoxTheme := 0; + if FEditTheme <> 0 then + CloseThemeData(FEditTheme); + FEditTheme := 0; + if FRebarTheme <> 0 then + CloseThemeData(FRebarTheme); + FRebarTheme := 0; + if FWindowTheme <> 0 then + CloseThemeData(FWindowTheme); + FWindowTheme := 0; + if FTaskBandTheme <> 0 then + CloseThemeData(FTaskBandTheme); + FTaskBandTheme := 0; + if FTaskBarTheme <> 0 then + CloseThemeData(FTaskBarTheme); + FTaskBarTheme := 0; + if FScrollbarTheme <> 0 then + CloseThemeData(FScrollbarTheme); + FScrollbarTheme := 0; + if FProgressTheme <> 0 then + CloseThemeData(FProgressTheme); + FProgressTheme := 0; +end; + +procedure TCommonThemeManager.ThemesLoad; +begin + InitThemeLibrary; + if Owner.HandleAllocated then + begin + if UseThemes then + begin + ThemesFree; + FButtonTheme := OpenThemeData(Owner.Handle, 'button'); + FListviewTheme := OpenThemeData(Owner.Handle, 'listview'); + FHeaderTheme := OpenThemeData(Owner.Handle, 'header'); + FTreeviewTheme := OpenThemeData(Owner.Handle, 'treeview'); + FExplorerBarTheme := OpenThemeData(Owner.Handle, 'explorerbar'); + FComboBoxTheme := OpenThemeData(Owner.Handle, 'combobox'); + FEditTheme := OpenThemeData(Owner.Handle, 'edit'); + FRebarTheme := OpenThemeData(Owner.Handle, 'rebar'); + FWindowTheme := OpenThemeData(Owner.Handle, 'window'); + FTaskBandTheme := OpenThemeData(Owner.Handle, 'taskband'); + FTaskBarTheme := OpenThemeData(Owner.Handle, 'taskbar'); + FScrollbarTheme := OpenThemeData(Owner.Handle, 'scrollbar'); + FProgressTheme := OpenThemeData(Owner.Handle, 'progress'); + FLoaded := True + end; + RedrawWindow(Owner.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_NOERASE or RDW_NOCHILDREN); + end +end; +{$ENDIF USETHEMES} + + + +{ TCommonStream} + +function TCommonStream.ReadBoolean: Boolean; +begin + ReadBuffer(Result, SizeOf(Boolean)) +end; + +function TCommonStream.ReadByte: Byte; +begin + ReadBuffer(Result, SizeOf(Byte)) +end; + +function TCommonStream.ReadInteger: Integer; +begin + ReadBuffer(Result, SizeOf(Integer)) +end; + +function TCommonStream.ReadString: string; +var + Size: LongWord; +begin + ReadBuffer(Size, SizeOf(LongWord)); + SetLength(Result, Size); + ReadBuffer(PChar(Result)^, Size) +end; + +function TCommonStream.ReadStringList: TStringList; +var + i, Count: LongWord; +begin + Result := TStringList.Create; + ReadBuffer(Count, SizeOf(LongWord)); + for i := 0 to Count - 1 do + Result.Add(ReadString) +end; + +function TCommonStream.ReadWideString: WideString; +var + Size: LongWord; +begin + ReadBuffer(Size, SizeOf(LongWord)); + SetLength(Result, Size); + ReadBuffer(PWideChar(Result)^, Size * 2) +end; + +procedure TCommonStream.WriteBoolean(Value: Boolean); +begin + WriteBuffer(Value, SizeOf(Boolean)) +end; + +procedure TCommonStream.WriteByte(Value: Byte); +begin + WriteBuffer(Value, SizeOf(Byte)) +end; + +procedure TCommonStream.WriteInteger(Value: Integer); +begin + WriteBuffer(Value, SizeOf(Integer)) +end; + +procedure TCommonStream.WriteString(const Value: string); +var + Size: LongWord; +begin + Size := Length(Value); + WriteBuffer(Size, SizeOf(Size)); + WriteBuffer(PChar(Value)^, Size); +end; + +procedure TCommonStream.WriteStringList(Value: TStringList); +var + i, Count: LongWord; +begin + Count := Value.Count; + WriteBuffer(Count, SizeOf(Count)); + for i := 0 to Count - 1 do + WriteString(Value[i]) +end; + +procedure TCommonStream.WriteWideString(const Value: WideString); +var + Size: LongWord; +begin + Size := Length(Value); + WriteBuffer(Size, SizeOf(Size)); + WriteBuffer(PWideChar(Value)^, Size * 2); +end; + +{ CheckBoundManager} +constructor TCommonCheckBoundManager.Create; +begin + List := TList.Create; +end; + +destructor TCommonCheckBoundManager.Destroy; +begin + Clear; + FreeAndNil(FList); +end; + +function TCommonCheckBoundManager.Find(Size: Integer): TCommonCheckBound; +var + i: Integer; + Done: Boolean; +begin + i := 0; + Done := False; + Result := nil; + while (i < List.Count) and not Done do + begin + if CheckBound[i].Size = Size then + begin + Done := True; + Result := CheckBound[i] + end; + Inc(i) + end +end; + +function TCommonCheckBoundManager.GetBound(Size: Integer): TRect; +var + Bounds: TCommonCheckBound; +begin + Bounds := Find(Size); + if not Assigned(Bounds) then + begin + Bounds := TCommonCheckBound.Create; + List.Add(Bounds); + Bounds.Size := Size; + Bounds.Bounds := CheckBounds(Size); + end; + Result := Bounds.Bounds; +end; + +function TCommonCheckBoundManager.GetCheckBound(Index: Integer): TCommonCheckBound; +begin + Result := TCommonCheckBound( List[Index]) +end; + +procedure TCommonCheckBoundManager.Clear; +var + i: Integer; +begin + for i := 0 to List.Count - 1 do + TObject(List[i]).Free; + List.Clear; +end; + +{ TCommonSysImages } +constructor TCommonSysImages.Create(AOwner: TComponent); +begin + inherited; + ShareImages := True; + ImageSize := sisSmall; + DrawingStyle := dsTransparent +end; + +destructor TCommonSysImages.Destroy; +begin + inherited; +end; + +procedure TCommonSysImages.Flush; +begin + RecreateHandle +end; + +procedure TCommonSysImages.RecreateHandle; +var + PIDL: PItemIDList; + Malloc: IMalloc; + FileInfo: TSHFileInfo; + Flags: Longword; +begin + Handle := 0; + if FImageSize = sisExtraLarge then + begin + if Succeeded(SHGetImageList(SHIL_EXTRALARGE, IImageList, FJumboImages)) then + Handle := THandle(FJumboImages) + else begin + Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_LARGEICON; + SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, PIDL); + SHGetMalloc(Malloc); + Handle := SHGetFileInfo(PChar(PIDL), 0, FileInfo, SizeOf(FileInfo), Flags); + Malloc.Free(PIDL); + end + end else + begin + SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, PIDL); + SHGetMalloc(Malloc); + if FImageSize = sisSmall then + Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON + else + Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_LARGEICON; + Handle := SHGetFileInfo(PChar(PIDL), 0, FileInfo, SizeOf(FileInfo), Flags); + Malloc.Free(PIDL); + end; +end; + +procedure TCommonSysImages.SetImageSize(const Value: TSysImageListSize); +begin + FImageSize := Value; + RecreateHandle; +end; + + +{$IFNDEF COMPILER_7_UP} +{ TStringListEx } + +function TStringListEx.GetNameValueSeparator: Char; +begin + if FNameValueSeparator = '' then + NameValueSeparator := '='; + Result := FNameValueSeparator; +end; + +function TStringListEx.GetValueFromIndex(Index: Integer): string; +begin + if Index >= 0 then + Result := Copy(Get(Index), Length(Names[Index]) + 2, MaxInt) else + Result := ''; +end; + +procedure TStringListEx.SetNameValueSeparator(const Value: Char); +begin + if (FNameValueSeparator <> Value) then + FNameValueSeparator := Value; +end; + +procedure TStringListEx.SetValueFromIndex(Index: Integer; + const Value: string); +begin + if Value <> '' then + begin + if Index < 0 then Index := Add(''); + Put(Index, Names[Index] + NameValueSeparator + Value); + end + else + if Index >= 0 then Delete(Index); +end; +{$ENDIF} + +initialization + LoadShell32Functions; + StreamHelper := TCommonMemoryStreamHelper.Create; + MarlettFont := TFont.Create; + MarlettFont.Name := 'marlett'; + Checks := TCommonCheckBoundManager.Create; + PIDLMgr := TCommonPIDLManager.Create; + + +finalization + if FreeShellLib then + FreeLibrary(ShellDLL); + StreamHelper.Free; + FreeAndNil(Checks); + FreeAndNil(MarlettFont); + FLargeSysImages.Free; + FSmallSysImages.Free; + FExtraLargeSysImages.Free; + FreeAndNil(PIDLMgr); + +end. diff --git a/official/1.7.0/Common Library/Source/MPCommonUtilities.hpp b/official/1.7.0/Common Library/Source/MPCommonUtilities.hpp new file mode 100644 index 0000000..09097fd --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonUtilities.hpp @@ -0,0 +1,364 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpcommonutilities.pas' rev: 11.00 + +#ifndef MpcommonutilitiesHPP +#define MpcommonutilitiesHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpcommonutilities +{ +//-- type declarations ------------------------------------------------------- +typedef DynamicArray TCommonWideCharArray; + +typedef DynamicArray TCommonPWideCharArray; + +typedef DynamicArray TCommonWideStringDynArray; + +typedef DynamicArray TCommonIntegerDynArray; + +#pragma option push -b- +enum TCommonDropEffect { cdeNone, cdeCopy, cdeMove, cdeLink, cdeScroll }; +#pragma option pop + +typedef Set TCommonDropEffects; + +#pragma option push -b- +enum TCommonOLEDragResult { cdrDrop, cdrCancel, cdrError }; +#pragma option pop + +#pragma option push -b- +enum TCommonKeyState { cksControl, cksLButton, cksMButton, cksRButton, cksShift, cksAlt, cksButton }; +#pragma option pop + +typedef Set TCommonKeyStates; + +#pragma option push -b- +enum TCommonMouseButton { cmbNone, cmbLeft, cmbRight, cmbMiddle }; +#pragma option pop + +#pragma option push -b- +enum TCommonVAlignment { cvaTop, cvaBottom, cvaCenter }; +#pragma option pop + +#pragma option push -b- +enum TCommonDrawTextWFlag { dtSingleLine, dtLeft, dtRight, dtCenter, dtTop, dtBottom, dtVCenter, dtCalcRect, dtCalcRectAdjR, dtCalcRectAlign, dtEndEllipsis, dtWordBreak, dtUserBreakChars, dtRTLReading, dtNoClip }; +#pragma option pop + +typedef Set TCommonDrawTextWFlags; + +#pragma option push -b- +enum TCommonBlendMode { cbmConstantAlpha, cbmPerPixelAlpha, cbmMasterAlpha, cbmConstantAlphaAndColor }; +#pragma option pop + +#pragma option push -b- +enum TShortenStringEllipsis { sseEnd, sseFront, sseMiddle, sseFilePathMiddle }; +#pragma option pop + +struct TCommonRGB +{ + +public: + double R; + double G; + double B; +} ; + +struct TCommonHLS +{ + +public: + double H; + double L; + double S; +} ; + +#pragma option push -b- +enum MPCommonUtilities__1 { enseMsgShowErrors, enseMsgRegSvr }; +#pragma option pop + +typedef Set TEasyNSERegMessages; + +//-- var, const, procedure --------------------------------------------------- +static const WideChar WideNull = WideChar(0x0); +static const WideChar WideCR = WideChar(0xd); +static const WideChar WideLF = WideChar(0xa); +static const WideChar WideLineSeparator = WideChar(0x7ec); +static const WideChar WideSpace = WideChar(0x20); +static const WideChar WidePeriod = WideChar(0x2e); +#define Shlwapi "shlwapi.dll" +extern PACKAGE WideString SEasyNSEMsg_Caption; +extern PACKAGE WideString SEasyNSEMsg_CannotRegister; +extern PACKAGE WideString SEasyNSEMsg_CannotUnRegister; +extern PACKAGE WideString SEasyNSEMsg_CannotFindRegSvr; +extern PACKAGE WideString SEasyNSEMsg_CannotFindDLL; +extern PACKAGE unsigned __stdcall (*GetDriveTypeW_MP)(WideChar * lpRootPathName); +extern PACKAGE int __stdcall (*DrawTextW_MP)(HDC hDC, WideChar * lpString, int nCount, Types::TRect &lpRect, unsigned uFormat); +extern PACKAGE unsigned __stdcall (*SHGetFileInfoW_MP)(WideChar * pszPath, unsigned dwFileAttributes, _SHFILEINFOW &psfi, unsigned cbFileInfo, unsigned uFlags); +extern PACKAGE unsigned __stdcall (*CreateFileW_MP)(WideChar * lpFileName, unsigned dwDesiredAccess, unsigned dwShareMode, Windows::PSecurityAttributes lpSecurityAttributes, unsigned dwCreationDisposition, unsigned dwFlagsAndAttributes, unsigned hTemplateFile); +extern PACKAGE HRESULT __stdcall (*SHGetDataFromIDListW_MP)(_di_IShellFolder psf, Shlobj::PItemIDList pidl, int nFormat, void * ptr, int cb); +extern PACKAGE unsigned __stdcall (*FindFirstFileW_MP)(WideChar * lpFileName, _WIN32_FIND_DATAW &lpFindFileData); +extern PACKAGE BOOL __stdcall (*FindNextFileW_MP)(unsigned hFindFile, _WIN32_FIND_DATAW &lpFindFileData); +extern PACKAGE BOOL __stdcall (*GetDiskFreeSpaceW_MP)(WideChar * lpRootPathName, unsigned &lpSectorsPerCluster, unsigned &lpBytesPerSector, unsigned &lpNumberOfFreeClusters, unsigned &lpTotalNumberOfClusters); +extern PACKAGE unsigned __stdcall (*GetCurrentDirectoryW_MP)(unsigned nBufferLength, WideChar * lpBuffer); +extern PACKAGE unsigned __stdcall (*GetTempPathW_MP)(unsigned nBufferLength, WideChar * lpBuffer); +extern PACKAGE int __stdcall (*lstrcmpiW_MP)(WideChar * lpString1, WideChar * lpString2); +extern PACKAGE int __stdcall (*lstrcmpW_MP)(WideChar * lpString1, WideChar * lpString2); +extern PACKAGE WideChar * __stdcall (*lstrcpynW_MP)(WideChar * lpString1, WideChar * lpString2, int iMaxLength); +extern PACKAGE WideChar * __stdcall (*lstrcpyW_MP)(WideChar * lpString1, WideChar * lpString2); +extern PACKAGE unsigned __stdcall (*CharLowerBuffW_MP)(WideChar * lpsz, unsigned cchLength); +extern PACKAGE unsigned __stdcall (*CharUpperBuffW_MP)(WideChar * lpsz, unsigned cchLength); +extern PACKAGE BOOL __stdcall (*CreateDirectoryW_MP)(WideChar * lpPathName, Windows::PSecurityAttributes lpSecurityAttributes); +extern PACKAGE unsigned __stdcall (*GetFullPathNameW_MP)(WideChar * lpFileName, unsigned nBufferLength, WideChar * lpBuffer, WideChar * &lpFilePart); +extern PACKAGE BOOL __stdcall (*ShellExecuteExW_MP)(Shellapi::PShellExecuteInfoW lpExecInfo); +extern PACKAGE unsigned __stdcall (*ShellExecuteW_MP)(HWND hWnd, WideChar * Operation, WideChar * FileName, WideChar * Parameters, WideChar * Directory, int ShowCmd); +extern PACKAGE unsigned __stdcall (*FindFirstChangeNotificationW_MP)(WideChar * lpPathName, BOOL bWatchSubtree, unsigned dwNotifyFilter); +extern PACKAGE BOOL __stdcall (*GetCharABCWidthsW_MP)(HDC DC, unsigned FirstChar, unsigned LastChar, const void *ABCStructs); +extern PACKAGE unsigned __stdcall (*GetFileAttributesW_MP)(WideChar * lpFileName); +extern PACKAGE unsigned __stdcall (*GetSystemDirectoryW_MP)(WideChar * lpBuffer, unsigned uSize); +extern PACKAGE unsigned __stdcall (*GetWindowsDirectoryW_MP)(WideChar * lpBuffer, unsigned uSize); +extern PACKAGE BOOL __stdcall (*SetWindowTextW_MP)(HWND hWnd, WideChar * lpString); +extern PACKAGE HRESULT __stdcall (*SHMultiFileProperties_MP)(_di_IDataObject pdtobj, unsigned dwFlags); +extern PACKAGE HRESULT __stdcall (*SHDoDragDrop_MP)(HWND wnd, _di_IDataObject dtObj, _di_IDropSource dsrc, unsigned OKEffect, int &Effect); +extern PACKAGE BOOL __stdcall (*GetDiskFreeSpaceExA_MP)(char * lpDirectoryName, void *lpFreeBytesAvailableToCaller, void *lpTotalNumberOfBytes, Windows::PLargeInteger lpTotalNumberOfFreeBytes); +extern PACKAGE BOOL __stdcall (*GetDiskFreeSpaceExW_MP)(WideChar * lpDirectoryName, void *lpFreeBytesAvailableToCaller, void *lpTotalNumberOfBytes, Windows::PLargeInteger lpTotalNumberOfFreeBytes); +extern PACKAGE int __stdcall (*GetNumberFormatW_MP)(unsigned Locale, unsigned dwFlags, WideChar * lpValue, Windows::PNumberFmtW lpFormat, WideChar * lpNumberStr, int cchNumber); +extern PACKAGE HRESULT __stdcall (*CDefFolderMenu_Create2_MP)(Shlobj::PItemIDList pidlFolder, HWND wnd, unsigned cidl, Shlobj::PItemIDList &apidl, _di_IShellFolder psf, Mpshelltypes::TFNDFMCallback lpfn, unsigned nKeys, Windows::PHKEY ahkeyClsKeys, Mpshelltypes::_di_IContextMenu &ppcm); +extern PACKAGE HRESULT __stdcall (*CDefFolderMenu_Create_MP)(Shlobj::PItemIDList pidlFolder); +extern PACKAGE int __stdcall (*RegOpenKeyW_MP)(HKEY hKey, WideChar * lpSubKey, HKEY &phkResult); +extern PACKAGE int __stdcall (*RegOpenKeyExW_MP)(HKEY hKey, WideChar * lpSubKey, unsigned ulOptions, unsigned samDesired, HKEY &phkResult); +extern PACKAGE int __stdcall (*RegQueryValueW_MP)(HKEY hKey, WideChar * lpSubKey, WideChar * lpValue, int &lpcbValue); +extern PACKAGE BOOL __stdcall (*WritePrivateProfileStringW_MP)(WideChar * lpAppName, WideChar * lpKeyName, WideChar * lpString, WideChar * lpFileName); +extern PACKAGE unsigned __stdcall (*GetPrivateProfileStringW_MP)(WideChar * lpAppName, WideChar * lpKeyName, WideChar * lpDefault, WideChar * lpReturnedString, unsigned nSize, WideChar * lpFileName); +extern PACKAGE BOOL __stdcall (*TryEnterCriticalSection_MP)(_RTL_CRITICAL_SECTION &lpCriticalSection); +extern PACKAGE HFONT __stdcall (*CreateFontIndirectW_MP)(const tagLOGFONTW &p1); +extern PACKAGE int __stdcall (*SendMessageW_MP)(HWND hWnd, unsigned Msg, int wParam, int lParam); +extern PACKAGE BOOL __stdcall (*InsertMenuItemW_MP)(HMENU p1, unsigned p2, BOOL p3, const tagMENUITEMINFOW &p4); +extern PACKAGE BOOL __stdcall (*SetFileAttributesW_MP)(WideChar * lpFileName, unsigned dwFileAttributes); +extern PACKAGE BOOL __stdcall (*SystemParametersInfoW_MP)(unsigned uiAction, unsigned uiParam, void * pvParam, unsigned fWinIni); +extern PACKAGE Shlobj::PItemIDList __stdcall (*SHBrowseForFolderW_MP)(_browseinfoW &lpbi); +extern PACKAGE BOOL __stdcall (*SHGetPathFromIDListW_MP)(Shlobj::PItemIDList pidl, WideChar * pszPath); +extern PACKAGE int __stdcall (*SHFileOperationW_MP)(const _SHFILEOPSTRUCTW &lpFileOp); +extern PACKAGE BOOL __stdcall (*PathMatchSpecA_MP)(const char * pszFileParam, const char * pszSpec); +extern PACKAGE BOOL __stdcall (*PathMatchSpecW_MP)(const WideChar * pszFileParam, const WideChar * pszSpec); +extern PACKAGE BOOL __stdcall (*CreateProcessW_MP)(WideChar * lpApplicationName, WideChar * lpCommandLine, Windows::PSecurityAttributes lpProcessAttributes, Windows::PSecurityAttributes lpThreadAttributes, BOOL bInheritHandles, unsigned dwCreationFlags, void * lpEnvironment, WideChar * lpCurrentDirectory, const Windows::_STARTUPINFOW &lpStartupInfo, _PROCESS_INFORMATION &lpProcessInformation); +extern PACKAGE BOOL __stdcall (*DeleteVolumeMountPoint_MP)(char * lpszVolumeMountPoint); +extern PACKAGE BOOL __stdcall (*GetVolumeNameForVolumeMountPoint_MP)(char * lpszVolumeMountPoint, char * lpszVolumeName, unsigned cchBufferLength); +extern PACKAGE BOOL __stdcall (*GetVolumePathName_MP)(char * lpszFileName, char * lpszVolumePathName, unsigned cchBufferLength); +extern PACKAGE BOOL __fastcall (*SetVolumeMountPoint_MP)(char * lpszVolumeMountPoint, char * lpszVolumeName); +extern PACKAGE unsigned __stdcall (*FindFirstVolume_MP)(char * lpszVolumeName, unsigned cchBufferLength); +extern PACKAGE BOOL __stdcall (*FindNextVolume_MP)(unsigned hFindVolume, char * lpszVolumeName, unsigned cchBufferLength); +extern PACKAGE BOOL __stdcall (*FindVolumeClose_MP)(unsigned hFindVolume); +extern PACKAGE unsigned __stdcall (*FindFirstVolumeMountPoint_MP)(char * lpszRootPathName, char * lpszVolumeMountPoint, unsigned cchBufferLength); +extern PACKAGE BOOL __stdcall (*FindNextVolumeMountPoint_MP)(unsigned hFindVolumeMountPoint, char * lpszVolumeMountPoint, unsigned cchBufferLength); +extern PACKAGE BOOL __stdcall (*FindVolumeMountPointClose_MP)(unsigned hFindVolumeMountPoint); +extern PACKAGE HRESULT __stdcall (*SHGetKnownFolderPath_MP)(const GUID &rfid, unsigned dwFlags, unsigned hToken, /* out */ WideChar * &ppszPath); +extern PACKAGE unsigned __stdcall (*FindFirstFileExW_MP)(WideChar * lpFileName, unsigned fInfoLevelId, _WIN32_FIND_DATAW &lpFindFileData, unsigned fSearchOp, void * lpSearchFilter, unsigned dwAdditionalFlags); +extern PACKAGE unsigned __stdcall (*FindFirstFileExA_MP)(char * lpFileName, unsigned fInfoLevelId, _WIN32_FIND_DATAA &lpFindFileData, unsigned fSearchOp, void * lpSearchFilter, unsigned dwAdditionalFlags); +extern PACKAGE unsigned __stdcall (*ExpandEnvironmentStringsW_MP)(WideChar * lpSrc, WideChar * lpDst, unsigned nSize); +extern PACKAGE BOOL __stdcall (*TrackMouseEvent_MP)(tagTRACKMOUSEEVENT &EventTrack); +extern PACKAGE bool SumFolderAbort; +extern PACKAGE unsigned __fastcall ShiftStateToKeys(Classes::TShiftState Keys); +extern PACKAGE WideString __fastcall ShiftStateToStr(Classes::TShiftState Keys); +extern PACKAGE bool __fastcall ExecShellEx(const WideString Cmd, const WideString Params, const WideString Dir, int ShowCmd, bool DoWait); +extern PACKAGE bool __fastcall RegUnregNSE(const WideString AFileName, bool DoRegister, TEasyNSERegMessages AMessages = (TEasyNSERegMessages() << enseMsgShowErrors )); +extern PACKAGE bool __fastcall RegisterNSE(const WideString AFileName, TEasyNSERegMessages AMessages = (TEasyNSERegMessages() << enseMsgShowErrors )); +extern PACKAGE bool __fastcall UnregisterNSE(const WideString AFileName, TEasyNSERegMessages AMessages = (TEasyNSERegMessages() << enseMsgShowErrors )); +extern PACKAGE void __fastcall MakeFindDataW(const _WIN32_FIND_DATAA &FindFileDataA, _WIN32_FIND_DATAW &FindFileDataW); +extern PACKAGE bool __fastcall WideDirectoryExists(const WideString Name); +extern PACKAGE bool __fastcall WideCreateDir(WideString Path); +extern PACKAGE WideString __fastcall WideExcludeTrailingBackslash(WideString Path); +extern PACKAGE WideString __fastcall WideExpandEnviromentString(WideString EnviromentString); +extern PACKAGE WideString __fastcall WideExtractFilePath(WideString Path); +extern PACKAGE WideString __fastcall WideExtractFileName(WideString Path); +extern PACKAGE bool __fastcall WideFileExists(WideString Path); +extern PACKAGE WideString __fastcall WideExtractFileDir(WideString Path); +extern PACKAGE WideString __fastcall WideExtractFileDrive(WideString Path); +extern PACKAGE WideString __fastcall WideExtractFileExt(WideString Path); +extern PACKAGE unsigned __fastcall WideFindFirstFileEx(WideString FileName, _WIN32_FIND_DATAW &lpFindFileData, WideString Mask, bool CaseSensitive); +extern PACKAGE bool __fastcall WideFindFirstFileExExists(void); +extern PACKAGE void __fastcall FixFormFont(Graphics::TFont* AFont); +extern PACKAGE void __fastcall FillGradient(int X1, int Y1, int X2, int Y2, Graphics::TColor fStartColor, Graphics::TColor fStopColor, int StartPoint, int EndPoint, Graphics::TCanvas* fDrawCanvas); +extern PACKAGE WideString __fastcall DropEffectToStr(unsigned DropEffect); +extern PACKAGE bool __fastcall EqualWndMethod(Classes::TWndMethod A, Classes::TWndMethod B); +extern PACKAGE Graphics::TBitmap* __fastcall FlipReverseCopyRect(const bool Flip, const bool Reverse, const Graphics::TBitmap* Bitmap)/* overload */; +extern PACKAGE void __fastcall FlipReverseCopyRect(const bool Flip, const bool Reverse, const Types::TRect &R, const Graphics::TCanvas* Canvas)/* overload */; +extern PACKAGE bool __fastcall FileExistsW(const WideString FileName); +extern PACKAGE bool __fastcall IsMappedDrivePath(const WideString Path); +extern PACKAGE unsigned __fastcall FindUniqueMenuID(HMENU AMenu); +extern PACKAGE int __fastcall AddContextMenuItem(HMENU Menu, WideString ACaption, int Index, unsigned MenuID = (unsigned)(0xffff), unsigned hSubMenu = (unsigned)(0x0), bool Enabled = true, bool Checked = false, bool Default = false); +extern PACKAGE void __fastcall ShadowBlendBits(Graphics::TBitmap* Bits, Graphics::TColor BackGndColor); +extern PACKAGE WideChar * __fastcall WideStrMove(WideChar * Dest, WideChar * Source, unsigned Count); +extern PACKAGE WideChar * __fastcall WideStrRScan(WideChar * Str, WideChar Chr); +extern PACKAGE WideChar * __fastcall WideStrScan(WideChar * Str, WideChar Chr); +extern PACKAGE WideString __fastcall WideUpperCase(const WideString S); +extern PACKAGE unsigned __fastcall CommonLoadLibrary(AnsiString LibraryName); +extern PACKAGE bool __fastcall CommonUnloadLibrary(AnsiString LibraryName); +extern PACKAGE void __fastcall CommonUnloadAllLibraries(void); +extern PACKAGE void __fastcall DrawRadioButton(Graphics::TCanvas* Canvas, const Types::TPoint &Pos, int Size, Graphics::TColor clBackground, Graphics::TColor clHotBkGnd, Graphics::TColor clLeftOuter, Graphics::TColor clRightOuter, Graphics::TColor clLeftInner, Graphics::TColor clRightInner, bool Checked, bool Enabled, bool Hot); +extern PACKAGE void __fastcall DrawCheckBox(Graphics::TCanvas* Canvas, const Types::TPoint &Pos, int Size, Graphics::TColor clBackground, Graphics::TColor clHotBkGnd, Graphics::TColor clLeftOuter, Graphics::TColor clRightOuter, Graphics::TColor clLeftInner, Graphics::TColor clRightInner, bool Checked, bool Enabled, bool Hot); +extern PACKAGE Types::TRect __fastcall CheckBounds(int Size); +extern PACKAGE bool __fastcall HasMMX(void); +extern PACKAGE void __fastcall ConvertBitmapEx(Graphics::TBitmap* Image32, Graphics::TBitmap* &OutImage, const Graphics::TColor BackGndColor); +extern PACKAGE void __fastcall AlphaBlend(HDC Source, HDC Destination, const Types::TRect &R, const Types::TPoint &Target, TCommonBlendMode Mode, int ConstantAlpha, int Bias); +extern PACKAGE int __fastcall DrawTextWEx(HDC DC, WideString Text, Types::TRect &lpRect, TCommonDrawTextWFlags Flags, int MaxLineCount); +extern PACKAGE void * __fastcall CreateStub(void * ObjectPtr, void * MethodPtr); +extern PACKAGE void __fastcall DisposeStub(void * Stub); +extern PACKAGE void __fastcall CreateProcessMP(WideString ExeFile, WideString Parameters, WideString InitalDir); +extern PACKAGE Types::TRect __fastcall DiffRectHorz(const Types::TRect &Rect1, const Types::TRect &Rect2); +extern PACKAGE Types::TRect __fastcall DiffRectVert(const Types::TRect &Rect1, const Types::TRect &Rect2); +extern PACKAGE Types::TRect __fastcall AbsRect(const Types::TRect &ARect); +extern PACKAGE Types::TRect __fastcall CenterRectInRect(const Types::TRect &OuterRect, const Types::TRect &InnerRect); +extern PACKAGE Types::TRect __fastcall CenterRectHorz(const Types::TRect &OuterRect, const Types::TRect &InnerRect); +extern PACKAGE Types::TRect __fastcall CenterRectVert(const Types::TRect &OuterRect, const Types::TRect &InnerRect); +extern PACKAGE bool __fastcall CommonSupports(const System::_di_IInterface Instance, const GUID &IID, /* out */ void *Intf)/* overload */; +extern PACKAGE bool __fastcall CommonSupports(const System::TObject* Instance, const GUID &IID, /* out */ void *Intf)/* overload */; +extern PACKAGE bool __fastcall CommonSupports(const System::_di_IInterface Instance, const GUID &IID)/* overload */; +extern PACKAGE bool __fastcall CommonSupports(const System::TObject* Instance, const GUID &IID)/* overload */; +extern PACKAGE void __fastcall CopyToNullBufferA(WideString S, char * Buffer, unsigned CharCount); +extern PACKAGE void __fastcall CopyToNullBufferW(WideString S, WideChar * Buffer, unsigned CharCount); +extern PACKAGE void __fastcall MinMax(int &A, int &B); +extern PACKAGE bool __fastcall IsRectProper(const Types::TRect &Rect); +extern PACKAGE WideString __fastcall AddCommas(WideString NumberString); +extern PACKAGE __int64 __fastcall CalcuateFolderSize(WideString FolderPath, bool Recurse); +extern PACKAGE Shlobj::PItemIDList __fastcall GetMyDocumentsVirtualFolder(void); +extern PACKAGE void __fastcall WideInsert(WideString Source, WideString &S, int Index); +extern PACKAGE WideString __fastcall WideGetCurrentDir(); +extern PACKAGE WideString __fastcall WideGetTempDir(); +extern PACKAGE WideString __fastcall WideIncludeTrailingBackslash(WideString Path); +extern PACKAGE int __fastcall WideIncrementalSearch(WideString CompareStr, WideString Mask); +extern PACKAGE WideString __fastcall WideIntToStr(int Value); +extern PACKAGE bool __fastcall WideIsDrive(WideString Drive); +extern PACKAGE bool __fastcall WideIsFloppy(WideString FileFolder); +extern PACKAGE bool __fastcall IsAnyMouseButtonDown(void); +extern PACKAGE bool __fastcall IsFTPPath(WideString Path); +extern PACKAGE WideString __fastcall WideNewFolderName(WideString ParentFolder, WideString SuggestedFolderName = L""); +extern PACKAGE bool __fastcall WidePathMatchSpec(WideString Path, WideString Mask); +extern PACKAGE bool __fastcall WidePathMatchSpecExists(void); +extern PACKAGE bool __fastcall WideIsPathDelimiter(const WideString S, int Index); +extern PACKAGE bool __fastcall IsTextTrueType(HDC DC)/* overload */; +extern PACKAGE bool __fastcall IsTextTrueType(Graphics::TCanvas* Canvas)/* overload */; +extern PACKAGE bool __fastcall IsUNCPath(const WideString Path); +extern PACKAGE WideString __fastcall StrRetToStr(const _STRRET &StrRet, Shlobj::PItemIDList APIDL); +extern PACKAGE WideString __fastcall SystemDirectory(); +extern PACKAGE HFONT __fastcall SysMenuFont(void); +extern PACKAGE int __fastcall SysMenuHeight(void); +extern PACKAGE tagSIZE __fastcall TextExtentW(WideString Text, Graphics::TFont* Font)/* overload */; +extern PACKAGE tagSIZE __fastcall TextExtentW(WideString Text, Graphics::TCanvas* Canvas)/* overload */; +extern PACKAGE tagSIZE __fastcall TextExtentW(WideChar * Text, Graphics::TCanvas* Canvas)/* overload */; +extern PACKAGE tagSIZE __fastcall TextExtentW(WideChar * Text, HDC DC)/* overload */; +extern PACKAGE tagSIZE __fastcall TextTrueExtentsW(WideString Text, HDC DC); +extern PACKAGE WideString __fastcall UniqueFileName(const WideString AFilePath); +extern PACKAGE bool __fastcall TNTConditionallyDefined(void); +extern PACKAGE bool __fastcall UnicodeStringLists(void); +extern PACKAGE WideString __fastcall UniqueDirName(const WideString ADirPath); +extern PACKAGE WideString __fastcall WideStripExt(WideString AFile); +extern PACKAGE WideString __fastcall WideStripRemoteComputer(const WideString UNCPath); +extern PACKAGE WideString __fastcall WideStripTrailingBackslash(const WideString S, bool Force = false); +extern PACKAGE WideString __fastcall WideStripLeadingBackslash(const WideString S); +extern PACKAGE WideString __fastcall WideStringReplace(const WideString S, const WideString OldPattern, const WideString NewPattern, Sysutils::TReplaceFlags Flags, bool WholeWord = false); +extern PACKAGE unsigned __fastcall WideShellExecute(HWND hWnd, WideString Operation, WideString FileName, WideString Parameters, WideString Directory, int ShowCmd = 0x1); +extern PACKAGE void __fastcall WideShowMessage(HWND Window, WideString ACaption, WideString AMessage); +extern PACKAGE WideString __fastcall WideLowerCase(const WideString Str); +extern PACKAGE int __fastcall WideMessageBox(HWND Window, const WideString ACaption, const WideString AMessage, int uType); +extern PACKAGE WideString __fastcall IncludeTrailingBackslashW(const WideString S); +extern PACKAGE bool __fastcall DiskInDrive(char C); +extern PACKAGE int __fastcall WideStrIComp(WideChar * Str1, WideChar * Str2); +extern PACKAGE int __fastcall WideStrComp(WideChar * Str1, WideChar * Str2); +extern PACKAGE WideChar * __fastcall WideStrLower(WideChar * Str); +extern PACKAGE void __fastcall WideStrLCopy(WideChar * Str1, WideChar * Str2, int Count); +extern PACKAGE WideString __fastcall ShortenStringEx(HDC DC, const WideString S, int Width, bool RTL, TShortenStringEllipsis EllipsisPlacement); +extern PACKAGE WideString __fastcall WindowsDirectory(); +extern PACKAGE WideString __fastcall ModuleFileName(bool PathOnly = true); +extern PACKAGE WideString __fastcall PIDLToPath(Shlobj::PItemIDList PIDL); +extern PACKAGE WideString __fastcall ShortFileName(const WideString FileName); +extern PACKAGE WideString __fastcall ShortPath(const WideString Path); +extern PACKAGE void __fastcall LoadWideString(Classes::TStream* S, WideString &Str); +extern PACKAGE void __fastcall SaveWideString(Classes::TStream* S, WideString Str); +extern PACKAGE WideChar * __fastcall WideStrPos(WideChar * Str, WideChar * SubStr); +extern PACKAGE Types::TRect __fastcall ProperRect(const Types::TRect &Rect); +extern PACKAGE bool __fastcall DragDetectPlus(HWND Handle, const Types::TPoint &Pt); +extern PACKAGE void __fastcall FillWideChar(void *Dest, int count, WideChar Value); +extern PACKAGE void __fastcall FreeMemAndNil(void * &P); +extern PACKAGE bool __fastcall IsRectNull(const Types::TRect &ARect); +extern PACKAGE bool __fastcall IsUnicode(void); +extern PACKAGE bool __fastcall IsWinNT(void); +extern PACKAGE bool __fastcall IsWin2000(void); +extern PACKAGE bool __fastcall IsWin95_SR1(void); +extern PACKAGE bool __fastcall IsWinME(void); +extern PACKAGE bool __fastcall IsWinNT4(void); +extern PACKAGE bool __fastcall IsWinXP(void); +extern PACKAGE bool __fastcall IsWinXPOrUp(void); +extern PACKAGE bool __fastcall IsWinVista(void); +extern PACKAGE bool __fastcall IsWinVistaOrUp(void); +extern PACKAGE int __fastcall RectHeight(const Types::TRect &R); +extern PACKAGE AnsiString __fastcall RectToStr(const Types::TRect &R); +extern PACKAGE Types::TRect __fastcall RectToSquare(const Types::TRect &R); +extern PACKAGE int __fastcall RectWidth(const Types::TRect &R); +extern PACKAGE bool __fastcall ContainsRect(const Types::TRect &OuterRect, const Types::TRect &InnerRect); +extern PACKAGE Classes::TShiftState __fastcall KeyDataToShiftState(int KeyData); +extern PACKAGE TCommonDropEffect __fastcall DropEffectToDropEffectState(int Effect); +extern PACKAGE int __fastcall DropEffectStateToDropEffect(TCommonDropEffect Effect); +extern PACKAGE TCommonDropEffects __fastcall DropEffectToDropEffectStates(int Effect); +extern PACKAGE int __fastcall DropEffectStatesToDropEffect(TCommonDropEffects Effect); +extern PACKAGE TCommonKeyStates __fastcall KeyToKeyStates(Word Keys); +extern PACKAGE TCommonMouseButton __fastcall KeyStatesToMouseButton(Word Keys); +extern PACKAGE unsigned __fastcall KeyStatesToKey(TCommonKeyStates Keys); +extern PACKAGE TCommonDropEffect __fastcall KeyStateToDropEffect(TCommonKeyStates Keys); +extern PACKAGE TCommonMouseButton __fastcall KeyStateToMouseButton(TCommonKeyStates KeyState); +extern PACKAGE BOOL __stdcall FileIconInit(BOOL FullInit); +extern PACKAGE HRESULT __stdcall SHGetImageList(int iImageList, const GUID &RefID, /* out */ void *ppvOut); +extern PACKAGE tagSIZE __fastcall Size(int cx, int cy); +extern PACKAGE WideString __fastcall ShortenTextW(HDC DC, WideString TextToShorten, int MaxSize); +extern PACKAGE int __fastcall SplitTextW(HDC DC, WideString TextToSplit, int MaxWidth, TCommonWideCharArray &Buffer, int MaxSplits); +extern PACKAGE WideString __fastcall VariantToCaption(const Variant &V); +extern PACKAGE WideChar * __fastcall StrCopyW(WideChar * Dest, WideChar * Source); +extern PACKAGE TCommonRGB __fastcall BrightenColor(const TCommonRGB &RGB, double Amount); +extern PACKAGE TCommonRGB __fastcall DarkenColor(const TCommonRGB &RGB, double Amount); +extern PACKAGE TCommonHLS __fastcall RGBToHLS(const TCommonRGB &RGB); +extern PACKAGE TCommonRGB __fastcall HLSToRGB(const TCommonHLS &HLS); +extern PACKAGE TCommonRGB __fastcall MakeTRBG(Graphics::TColor Color); +extern PACKAGE Graphics::TColor __fastcall MakeTColor(const TCommonRGB &RGB); +extern PACKAGE unsigned __fastcall MakeColorRef(const TCommonRGB &RGB, double Gamma = 1.000000E+00); +extern PACKAGE void __fastcall GammaCorrection(TCommonRGB &RGB, double Gamma); +extern PACKAGE bool __fastcall MakeSafeColor(TCommonRGB &RGB); +extern PACKAGE bool __fastcall UpsideDownDIB(Graphics::TBitmap* Bits); +extern PACKAGE void __fastcall ActivateTopLevelWindow(HWND Child); + +} /* namespace Mpcommonutilities */ +using namespace Mpcommonutilities; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpcommonutilities diff --git a/official/1.7.0/Common Library/Source/MPCommonUtilities.obj b/official/1.7.0/Common Library/Source/MPCommonUtilities.obj new file mode 100644 index 0000000000000000000000000000000000000000..876216f553389008854a12edc683eda771de1906 GIT binary patch literal 75658 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 +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +// The following are implemented in Win 95: +// EnumResourceLanguagesW +// EnumResourceNamesW +// EnumResourceTypesW +// ExtTextOutW +// FindResourceW +// FindResourceExW +// GetCharWidthW +// GetCommandLineW +// GetTextExtentPoint32W +// GetTextExtentPointW +// lstrlenW +// MessageBoxExW +// MessageBoxW +// MultiByteToWideChar +// TextOutW +// WideCharToMultiByte + + {$IFDEF TNTSUPPORT} +// IMPORTANT - PLEASE READ then comment this line out. +// If using TNT you MUST include the TNT package for your specific compiler in the +// Requires section of this package. It may be possible to compile without doing +// this but you WILL eventually have strange crashes in your application that will +// be difficult to understand. The best way to do this in my opinion is to create +// a new folder in the package install directory called "Delphi_TNT" (or CBuilder_TNT) +// and copy all the files from the Delphi (or CBuilder) folder into it. Now open the +// MPCommonLibDx.dpk (or bpk) file in the "Delphi_TNT" (or CBuilder_TNT) based on your compiler +// version in a text editor. In the "Requires" section add "TNTUnicodeVcl_Rx0", where +// the "x" is the version of Delphi you are using. Open the dpk (bpk) file in your +// IDE. Select the menu option Projects>Options>Directories/Conditionals>Conditional +// and enter TNTSUPPORT. Compile the package, then open the MPCommonLibDxD.dpk (or bpk) +// and compile and press the Install button. +// Now when you update the packages you won't have to redo all this. Just install +// the update then compile the packages in the "Delphi_TNT" (or CBuilder_TNT) folders +// an you are done. + {$ENDIF} + +{$B-} + +{$I Compilers.inc} +{$I Options.inc} +{$I ..\Include\Debug.inc} +{$I ..\Include\Addins.inc} + +interface + +uses + Windows, + Messages, + SysUtils, + Classes, + Graphics, + Controls, + Forms, + Math, + ActiveX, + ShlObj, + {$IFDEF COMPILER_6_UP} + Variants, + RTLConsts, + {$ELSE} + Consts, + {$ENDIF COMPILER_6_UP} + {$IFNDEF COMPILER_6_UP} + Menus, + {$ENDIF} + {$IFDEF TNTSUPPORT} + TntSysUtils, + TntClasses, + {$ENDIF} + ShellAPI, + ComCtrls, + ComObj, + CommCtrl, + MPShellTypes, + MPResources; + +const + WideNull = WideChar(#0); + WideCR = WideChar(#13); + WideLF = WideChar(#10); + WideLineSeparator = WideChar(#2028); + WideSpace = WideChar(#32); + WidePeriod = WideChar('.'); + + {$IFNDEF COMPILER_6_UP} + NullAsStringValue: string = ''; + {$ENDIF} + + Shlwapi = 'shlwapi.dll'; + +var + SEasyNSEMsg_Caption: WideString = 'Shell extension registration'; + SEasyNSEMsg_CannotRegister: WideString = 'Cannot register shell extension.'; + SEasyNSEMsg_CannotUnRegister: WideString = 'Cannot unregister shell extension.'; + SEasyNSEMsg_CannotFindRegSvr: WideString = 'Unable to find RegSvr32.exe executable.'; + SEasyNSEMsg_CannotFindDLL: WideString = 'Unable to find extension DLL.'; + +type + TCommonWideCharArray = array of WideChar; + TCommonPWideCharArray = array of PWideChar; + TCommonWideStringDynArray = array of WideString; + TCommonIntegerDynArray = array of Integer; + + {$IFNDEF COMPILER_6_UP} + TValueRelationship = -1..1; + TSeekOrigin = (soBeginning, soCurrent, soEnd); + {$ENDIF} + + TCommonDropEffect = ( + cdeNone, // No drop effect (the circle with the slash through it + cdeCopy, // Copy the dropped object + cdeMove, // Move the dropped object + cdeLink, // Make a shortcut to the dropped object + cdeScroll // The dragging is in the middle of a scroll + ); + TCommonDropEffects = set of TCommonDropEffect; + + TCommonOLEDragResult = ( + cdrDrop, // The drag resulted in a drop + cdrCancel, // The drag resulted in being canceled + cdrError // The drag resulted in an unknown error + ); + + TCommonKeyState = ( + cksControl, // Control Key is down + cksLButton, // Left Mouse is down + cksMButton, // Middle Mouse is down + cksRButton, // Right Mouse is down + cksShift, // Shift Key is down + cksAlt, // Alt Key is down + cksButton // One of the mouse buttons are down + ); + TCommonKeyStates = set of TCommonKeyState; + + TCommonMouseButton = ( + cmbNone, // No Button + cmbLeft, // Left Button + cmbRight, // Right Button + cmbMiddle // Middle Button + ); + + TCommonVAlignment = ( + cvaTop, // The vertical alignment of the text is at the top of the object + cvaBottom, // The vertical alignment of the text is at the bottom of the object + cvaCenter // The vertical alignment of the text is at the center of the object + ); + + // Flags for the DrawTextWEx function + TCommonDrawTextWFlag = ( + dtSingleLine, // Put Caption on one line + dtLeft, // Aligns Text Left + dtRight, // Aligns Text Right + dtCenter, // Aligns Text Center + dtTop, // Vertical Align Text to Bottom of Rect + dtBottom, // Vertical Align Text to Bottom of Rect + // Only valid with: dtSingleLine + dtVCenter, // Vertical Align Text to Center of Rect + // Only valid with: dtSingleLine + dtCalcRect, // Modifies the Rectangle to the size required for the Text does + // not draw the text. By default it does not modify the right + // edge of the rectangle, it only changes the height to fit + // the text, see dtCalcRectAdjR + dtCalcRectAdjR, // Modifies the Rectangles right edge for a best fit of the text + // Does not increase the width only shortens it, + // Only valid with: dtCalcRect + dtCalcRectAlign, // Modifies the rectangle by aligning it with the original + // rectangle based on the dtLeft, dtRight, dtCenter flag. + // In other words it ensures that if the text won't fit that + // only the end of the text is clipped. For instance if + // the text is horz centered the calculation could clip + // both ends of the text. Just using the dtCalcRectAdjR + // flag will only stretch the Right edge and the left will + // still be clipped. Using this flag will shift the rect + // to the edge of the passed rect so that the beginning + // of the text is always shown. + // Only valid with: dtCalcRect and dtCalcRectAdjR + dtEndEllipsis, // Adds a "..." to the end of the string if it will not fit in + // the passed rectangle + dtWordBreak, // Breaks the passed string to best fit in the rectangle + // The default Characters to break the line are: + // WideSpace ( WideChar(#32) ) + // WideCR/WideLF sequence or individually ( WideChar(#13 or #10) ) + // WideLineSeparator ( WideChar(#2028) ) + dtUserBreakChars, // The UserBreakChars parameters should be used for defining + // what to use to break the passed string into lines + // Only valid with: dtWordBreak + dtRTLReading, // Right to Left reading + dtNoClip // Do not clip the text in the rectangle + ); + TCommonDrawTextWFlags = set of TCommonDrawTextWFlag; + + // Describes the mode how to blend pixels. + TCommonBlendMode = ( + cbmConstantAlpha, // apply given constant alpha + cbmPerPixelAlpha, // use alpha value of the source pixel + cbmMasterAlpha, // use alpha value of source pixel and multiply it with the constant alpha value + cbmConstantAlphaAndColor // blend the destination color with the given constant color und the constant alpha value + ); + + TShortenStringEllipsis = ( + sseEnd, // Ellipsis on end of string + sseFront, // Ellipsis on begining of string + sseMiddle, // Ellipsis in middle of string + sseFilePathMiddle // Ellipsis is in middle of string but tries to show the entire filename + ); + + // RGB (red, green, blue) color given in the range [0..1] per component. + TCommonRGB = record + R, G, B: Double; + end; + + // Hue, luminance, saturation color with all three components in the range [0..1] + // (so hue's 0..360° is normalized to 0..1). + TCommonHLS = record + H, L, S: Double; + end; + +// Enhanced library loading functions that reference counts the loading to make +// sure that libraries are freed when using cool controls in COM applications +function CommonLoadLibrary(LibraryName: string): THandle; +function CommonUnloadLibrary(LibraryName: string): Boolean; +procedure CommonUnloadAllLibraries; + +function FlipReverseCopyRect(const Flip, Reverse: Boolean; const Bitmap: TBitmap): TBitmap; overload; +procedure FlipReverseCopyRect(const Flip, Reverse: Boolean; R: TRect; const Canvas: TCanvas); overload; + +procedure DrawRadioButton(Canvas: TCanvas; Pos: TPoint; Size: Integer; clBackground, clHotBkGnd, + clLeftOuter, clRightOuter, clLeftInner, clRightInner: TColor; Checked, Enabled, Hot: Boolean); +procedure DrawCheckBox(Canvas: TCanvas; Pos: TPoint; Size: Integer; clBackground, clHotBkGnd, + clLeftOuter, clRightOuter, clLeftInner, clRightInner: TColor; Checked, Enabled, Hot: Boolean); +function CheckBounds(Size: Integer): TRect; + + + +{$IFNDEF COMPILER_6_UP} +function VarToWideStrDef(const V: Variant; const ADefault: WideString): WideString; +function VarToWideStr(const V: Variant): WideString; +function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string; +function CompareTime(const A, B: TDateTime): TValueRelationship; +function WideCompareText(S1, S2: WideString): Integer; +function ExcludeTrailingBackslash(Path: WideString): WideString; +function IncludeTrailingBackslash(Path: WideString): WideString; +function GUIDToString(const GUID: TGUID): string; +{$ENDIF} + +function AbsRect(ARect: TRect): TRect; +function AddContextMenuItem(Menu: HMenu; ACaption: WideString; Index: Integer; + MenuID: UINT = $FFFF; hSubMenu: UINT = 0; Enabled: Boolean = True; + Checked: Boolean = False; Default: Boolean = False): Integer; +function AddCommas(NumberString: WideString): WideString; +function CalcuateFolderSize(FolderPath: WideString; Recurse: Boolean): Int64; +function CenterRectHorz(OuterRect, InnerRect: TRect): TRect; +function CenterRectInRect(OuterRect, InnerRect: TRect): TRect; +function CenterRectVert(OuterRect, InnerRect: TRect): TRect; +function CommonSupports(const Instance: IUnknown; const IID: TGUID): Boolean; overload; +function CommonSupports(const Instance: IUnknown; const IID: TGUID; out Intf): Boolean; overload; +function CommonSupports(const Instance: TObject; const IID: TGUID): Boolean; overload; +function CommonSupports(const Instance: TObject; const IID: TGUID; out Intf): Boolean; overload; +procedure CopyToNullBufferA(S: WideString; Buffer: PChar; CharCount: Cardinal); +procedure CopyToNullBufferW(S: WideString; Buffer: PWideChar; CharCount: Cardinal); +procedure CreateProcessMP(ExeFile, Parameters, InitalDir: WideString); +function DiffRectHorz(Rect1, Rect2: TRect): TRect; +function DiffRectVert(Rect1, Rect2: TRect): TRect; +{$IFNDEF COMPILER_6_UP} +function DirectoryExists(const Directory: string): Boolean; +{$ENDIF} +function DiskInDrive(C: Char): Boolean; +function DragDetectPlus(Handle: HWND; Pt: TPoint): Boolean; +function DrawTextWEx(DC: HDC; Text: WideString; var lpRect: TRect; Flags: TCommonDrawTextWFlags; MaxLineCount: Integer): Integer; +function DropEffectToStr(DropEffect: DWORD): WideString; +function EqualWndMethod(A, B: TWndMethod): Boolean; +function FileExistsW(const FileName: WideString): Boolean; +function FileIconInit(FullInit: BOOL): BOOL; stdcall; +function FindUniqueMenuID(AMenu: HMenu): Cardinal; +function GetMyDocumentsVirtualFolder: PItemIDList; +function HasMMX: Boolean; +function IncludeTrailingBackslashW(const S: WideString): WideString; +function IsAnyMouseButtonDown: Boolean; +function IsFTPPath(Path: WideString): Boolean; +function IsMappedDrivePath(const Path: WideString): Boolean; +function IsRectNull(ARect: TRect): Boolean; +function IsTextTrueType(Canvas: TCanvas): Boolean; overload; +function IsTextTrueType(DC: HDC): Boolean; overload; +function IsUNCPath(const Path: WideString): Boolean; +function IsUnicode: Boolean; // OS supports Unicode functions (basiclly means IsWinNT or XP) +function IsWin2000: Boolean; +function IsWin95_SR1: Boolean; +function IsWinME: Boolean; +function IsWinNT: Boolean; +function IsWinNT4: Boolean; +function IsWinXP: Boolean; +function IsWinXPOrUp: Boolean; +function IsWinVista: Boolean; +function IsWinVistaOrUp: Boolean; +procedure MakeFindDataW(const FindFileDataA: TWIN32FindDataA; var FindFileDataW: TWIN32FindDataW); +function ModuleFileName(PathOnly: Boolean = True): WideString; +function PIDLToPath(PIDL: PItemIDList): WideString; +function SHGetImageList(iImageList: Integer; const RefID: TGUID; out ppvOut): HRESULT; stdcall; +function ShiftStateToKeys(Keys: TShiftState): LongWord; +function ShiftStateToStr(Keys: TShiftState): WideString; +function ShortenStringEx(DC: HDC; const S: WideString; Width: Integer; RTL: Boolean; EllipsisPlacement: TShortenStringEllipsis): WideString; +function ShortenTextW(DC: hDC; TextToShorten: WideString; MaxSize: Integer): WideString; +function ShortFileName(const FileName: WideString): WideString; +function ShortPath(const Path: WideString): WideString; +function Size(cx, cy: Integer): TSize; +function SplitTextW(DC: hDC; TextToSplit: WideString; MaxWidth: Integer; var Buffer: TCommonWideCharArray; MaxSplits: Integer): Integer; +function StrRetToStr(StrRet: TStrRet; APIDL: PItemIDList): WideString; +function SystemDirectory: WideString; +function SysMenuFont: HFONT; +function SysMenuHeight: Integer; +function TextExtentW(Text: PWideChar; Canvas: TCanvas): TSize; overload; +function TextExtentW(Text: PWideChar; DC: hDC): TSize; overload; +function TextExtentW(Text: WideString; Canvas: TCanvas): TSize; overload; +function TextExtentW(Text: WideString; Font: TFont): TSize; overload; +function TextTrueExtentsW(Text: WideString; DC: HDC): TSize; +function TNTConditionallyDefined: Boolean; +function UnicodeStringLists: Boolean; +function UniqueDirName(const ADirPath: WideString): WideString; +function UniqueFileName(const AFilePath: WideString): WideString; +function VariantToCaption(const V: Variant): WideString; +function WideCreateDir(Path: WideString): Boolean; +function WideDirectoryExists(const Name: WideString): Boolean; +function WideExcludeTrailingBackslash(Path: WideString): WideString; +function WideExpandEnviromentString(EnviromentString: WideString): WideString; +function WideExtractFileDir(Path: WideString): WideString; +function WideExtractFileDrive(Path: WideString): WideString; +function WideExtractFileExt(Path: WideString): WideString; +function WideExtractFileName(Path: WideString): WideString; +function WideExtractFilePath(Path: WideString): WideString; +function WideFileExists(Path: WideString): Boolean; +function WideFindFirstFileEx(FileName: WideString; var lpFindFileData: TWIN32FindDataW; Mask: WideString; CaseSensitive: Boolean): THandle; +function WideFindFirstFileExExists: Boolean; +function WideGetCurrentDir: WideString; +function WideGetTempDir: WideString; +function WideIncludeTrailingBackslash(Path: WideString): WideString; +function WideIncrementalSearch(CompareStr, Mask: WideString): Integer; +function WideIntToStr(Value: integer): WideString; +function WideIsDrive(Drive: WideString): Boolean; +function WideIsFloppy(FileFolder: WideString): boolean; +function WideIsPathDelimiter(const S: WideString; Index: Integer): Boolean; +function WideLowerCase(const Str: WideString): WideString; +function WideMessageBox(Window: HWND; const ACaption, AMessage: WideString; uType: integer): integer; +function WideNewFolderName(ParentFolder: WideString; SuggestedFolderName: WideString = ''): WideString; +function WidePathMatchSpec(Path, Mask: WideString): Boolean; +function WidePathMatchSpecExists: Boolean; +function WideShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: WideString; ShowCmd: Integer = SW_NORMAL): HINST; +function WideStrComp(Str1, Str2: PWideChar): Integer; +function WideStrLower(Str: PWideChar): PWideChar; +function WideStrIComp(Str1, Str2: PWideChar): Integer; +function WideStringReplace(const S, OldPattern, NewPattern: WideString; Flags: TReplaceFlags; WholeWord: Boolean = False): WideString; +function WideStripExt(AFile: WideString): WideString; +function WideStripLeadingBackslash(const S: WideString): WideString; +function WideStripRemoteComputer(const UNCPath: WideString): WideString; +function WideStripTrailingBackslash(const S: WideString; Force: Boolean = False): WideString; +function WideStrMove(Dest, Source: PWideChar; Count: Cardinal): PWideChar; +function WideStrPos(Str, SubStr: PWideChar): PWideChar; +function WideStrRScan(Str: PWideChar; Chr: WideChar): PWideChar; +function WideStrScan(Str: PWideChar; Chr: WideChar): PWideChar; +function WideUpperCase(const S: WideString): WideString; +function WindowsDirectory: WideString; +procedure AlphaBlend(Source, Destination: HDC; R: TRect; Target: TPoint; Mode: TCommonBlendMode; ConstantAlpha, Bias: Integer); +procedure ConvertBitmapEx(Image32: TBitmap; var OutImage: TBitmap; const BackGndColor: TColor); +procedure ShadowBlendBits(Bits: TBitmap; BackGndColor: TColor); +procedure FillWideChar(var Dest; count: Integer; Value: WideChar); +procedure FreeMemAndNil(var P: Pointer); +procedure LoadWideString(S: TStream; var Str: WideString); +procedure MinMax(var A, B: Integer); +procedure SaveWideString(S: TStream; Str: WideString); +procedure WideInsert(Source: WideString; var S: WideString; Index: Integer); +procedure WideShowMessage(Window: HWND; ACaption, AMessage: WideString); +procedure WideStrLCopy(Str1, Str2: PWideChar; Count: Integer); + +// Rectangle functions +function ProperRect(Rect: TRect): TRect; +function RectHeight(R: TRect): Integer; +function RectToStr(R: TRect): string; +function RectToSquare(R: TRect): TRect; +function RectWidth(R: TRect): Integer; +function ContainsRect(OuterRect, InnerRect: TRect): Boolean; +function IsRectProper(Rect: TRect): Boolean; + +// WideString routines (many borrowed from Mike Liscke) +function StrCopyW(Dest, Source: PWideChar): PWideChar; + +function KeyDataToShiftState(KeyData: Longint): TShiftState; +function KeyToKeyStates(Keys: Word): TCommonKeyStates; +function KeyStatesToMouseButton(Keys: Word): TCommonMouseButton; +function KeyStatesToKey(Keys: TCommonKeyStates): Longword; +function DropEffectToDropEffectStates(Effect: Integer): TCommonDropEffects; +function DropEffectStatesToDropEffect(Effect: TCommonDropEffects): Integer; +function DropEffectToDropEffectState(Effect: Integer): TCommonDropEffect; +function DropEffectStateToDropEffect(Effect: TCommonDropEffect): Integer; +function KeyStateToDropEffect(Keys: TCommonKeyStates): TCommonDropEffect; +function KeyStateToMouseButton(KeyState: TCommonKeyStates): TCommonMouseButton; + +// Color Functions +function RGBToHLS(const RGB: TCommonRGB): TCommonHLS; +function HLSToRGB(const HLS: TCommonHLS): TCommonRGB; +function BrightenColor(const RGB: TCommonRGB; Amount: Double): TCommonRGB; +function DarkenColor(const RGB: TCommonRGB; Amount: Double): TCommonRGB; +function MakeTRBG(Color: TColor): TCommonRGB; +function MakeTColor(RGB: TCommonRGB): TColor; +function MakeColorRef(RGB: TCommonRGB; Gamma: Double = 1): COLORREF; +procedure GammaCorrection(var RGB: TCommonRGB; Gamma: Double); +function MakeSafeColor(var RGB: TCommonRGB): Boolean; +function UpsideDownDIB(Bits: TBitmap): Boolean; +procedure FixFormFont(AFont: TFont); + +// Window Manipulation +procedure ActivateTopLevelWindow(Child: HWND); + +// Graphics +procedure FillGradient(X1, Y1, X2, Y2: integer; fStartColor, fStopColor: TColor; + StartPoint, EndPoint: integer; fDrawCanvas: TCanvas); + +// Helpers to create a callback function out of a object method +function CreateStub(ObjectPtr: Pointer; MethodPtr: Pointer): Pointer; +procedure DisposeStub(Stub: Pointer); + +{$IFNDEF COMPILER_6_UP} +function Supports(const Instance: IUnknown; const IID: TGUID): Boolean; overload; +procedure ClearMenuItems(Menu: TMenu); +{$ENDIF} + +{$IFNDEF COMPILER_5_UP} +function Supports(const Instance: IUnknown; const IID: TGUID; out Intf): Boolean; overload; +function Supports(const Instance: TObject; const IID: TGUID; out Intf): Boolean; overload; +procedure FreeAndNil(var Obj); + +type + TWMContextMenu = packed record + Msg: Cardinal; + hWnd: HWND; + case Integer of + 0: ( + XPos: Smallint; + YPos: Smallint); + 1: ( + Pos: TSmallPoint; + Result: Longint); + end; +{$ENDIF} + +// **************************************************************************** + // Registration function for Shell and Namespace Extensions + // Donated by by Alexey Torgashin + // Note: we assume that paths to both RegSvr32.exe and extension DLL are ANSI (not Unicode). +// **************************************************************************** +type + TEasyNSERegMessages = set of (enseMsgShowErrors, enseMsgRegSvr); + + //True to register or False to unregister +function RegUnregNSE(const AFileName: WideString; DoRegister: boolean; AMessages: TEasyNSERegMessages = [enseMsgShowErrors]): boolean; +function RegisterNSE(const AFileName: WideString; AMessages: TEasyNSERegMessages = [enseMsgShowErrors]): boolean; +function UnregisterNSE(const AFileName: WideString; AMessages: TEasyNSERegMessages = [enseMsgShowErrors]): boolean; +function ExecShellEx(const Cmd, Params, Dir: WideString; ShowCmd: integer; + DoWait: boolean): boolean; +// +// Dynamically linked Unicode functions that do not have stubs on Win9x +// +var + GetDriveTypeW_MP: function(lpRootPathName: PWideChar): UINT; stdcall; + DrawTextW_MP: function(hDC: HDC; lpString: PWideChar; nCount: Integer; + var lpRect: TRect; uFormat: UINT): Integer; stdcall; + SHGetFileInfoW_MP: function(pszPath: PWideChar; dwFileAttributes: DWORD; + var psfi: TSHFileInfoW; cbFileInfo, uFlags: UINT): DWORD; stdcall; + CreateFileW_MP: function(lpFileName: PWideChar; dwDesiredAccess, dwShareMode: DWORD; + lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; + hTemplateFile: THandle): THandle; stdcall; + SHGetDataFromIDListW_MP: function(psf: IShellFolder; pidl: PItemIDList; + nFormat: Integer; ptr: Pointer; cb: Integer): HResult; stdcall; + FindFirstFileW_MP: function(lpFileName: PWideChar; var lpFindFileData: TWIN32FindDataW): THandle; stdcall; + FindNextFileW_MP: function(hFindFile: THandle; var lpFindFileData: TWIN32FindDataW): BOOL; stdcall; + GetDiskFreeSpaceW_MP: function(lpRootPathName: PWideChar; var lpSectorsPerCluster, + lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall; + GetCurrentDirectoryW_MP: function(nBufferLength: DWORD; lpBuffer: PWideChar): DWORD; stdcall; + GetTempPathW_MP: function(nBufferLength: DWORD; lpBuffer: PWideChar): DWORD; stdcall; + lstrcmpiW_MP: function(lpString1, lpString2: PWideChar): Integer; stdcall; + lstrcmpW_MP: function(lpString1, lpString2: PWideChar): Integer; stdcall; + lstrcpynW_MP: function(lpString1, lpString2: PWideChar; iMaxLength: Integer): PWideChar; stdcall; + lstrcpyW_MP: function(lpString1, lpString2: PWideChar): PWideChar; stdcall; + CharLowerBuffW_MP: function(lpsz: PWideChar; cchLength: DWORD): DWORD; stdcall; + CharUpperBuffW_MP: function(lpsz: PWideChar; cchLength: DWORD): DWORD; stdcall; + CreateDirectoryW_MP: function(lpPathName: PWideChar; lpSecurityAttributes: PSecurityAttributes): BOOL; stdcall; + GetFullPathNameW_MP: function(lpFileName: PWideChar; nBufferLength: DWORD; lpBuffer: PWideChar; var lpFilePart: PWideChar): DWORD; stdcall; + ShellExecuteExW_MP: function(lpExecInfo: PShellExecuteInfoW):BOOL; stdcall; + ShellExecuteW_MP: function(hWnd: HWND; Operation, FileName, Parameters, Directory: PWideChar; ShowCmd: Integer): HINST; stdcall; + FindFirstChangeNotificationW_MP: function(lpPathName: PWideChar; bWatchSubtree: BOOL; dwNotifyFilter: DWORD): THandle; stdcall; + GetCharABCWidthsW_MP: function(DC: HDC; FirstChar, LastChar: UINT; const ABCStructs): BOOL; stdcall; + GetFileAttributesW_MP: function(lpFileName: PWideChar): DWORD; stdcall; + GetSystemDirectoryW_MP: function(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall; + GetWindowsDirectoryW_MP: function(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall; + SetWindowTextW_MP: function(hWnd: HWND; lpString: PWideChar): BOOL; stdcall; + // Robert + SHMultiFileProperties_MP: function(pdtobj: IDataObject; dwFlags: DWORD): HResult; stdcall; + SHDoDragDrop_MP: function(wnd : HWND; dtObj : IDataObject; dsrc : IDropSource; OKEffect : DWORD; var Effect : Integer) : HResult; stdcall; + GetDiskFreeSpaceExA_MP: function(lpDirectoryName: PAnsiChar; + var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall; + GetDiskFreeSpaceExW_MP: function(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, + lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall; + GetNumberFormatW_MP: function(Locale: LCID; dwFlags: DWORD; lpValue: PWideChar; + lpFormat: PNumberFmtW; lpNumberStr: PWideChar; cchNumber: Integer): Integer; stdcall; + CDefFolderMenu_Create2_MP: function(pidlFolder: PItemIdList; wnd: HWnd; cidl: uint; var apidl: PItemIdList; psf: IShellFolder; lpfn: TFNDFMCallback; nKeys: UINT; ahkeyClsKeys: PHKEY; var ppcm: IContextMenu): HRESULT; stdcall; + CDefFolderMenu_Create_MP: function(pidlFolder: PItemIdList): HRESULT; stdcall; // THIS IS NOT THE RIGHT PROTOTYPE DO NOT USE FOR TEST ONLY + RegOpenKeyW_MP: function(hKey: HKEY; lpSubKey: PWideChar; var phkResult: HKEY): Longint; stdcall; + RegOpenKeyExW_MP: function(hKey: HKEY; lpSubKey: PWideChar; ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; stdcall; + RegQueryValueW_MP: function(hKey: HKEY; lpSubKey: PWideChar; lpValue: PWideChar; var lpcbValue: Longint): Longint; stdcall; + WritePrivateProfileStringW_MP: function(lpAppName, lpKeyName, lpString, lpFileName: PWideChar): BOOL; stdcall; + GetPrivateProfileStringW_MP: function(lpAppName, lpKeyName, lpDefault: PWideChar; lpReturnedString: PWideChar; nSize: DWORD; lpFileName: PWideChar): DWORD; stdcall; + TryEnterCriticalSection_MP: function(var lpCriticalSection: TRTLCriticalSection): BOOL; stdcall; + CreateFontIndirectW_MP: function(const p1: TLogFontW): HFONT; stdcall; + SendMessageW_MP: function(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; + InsertMenuItemW_MP: function(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfoW): BOOL; stdcall; + SetFileAttributesW_MP: function(lpFileName: PWideChar; dwFileAttributes: DWORD): BOOL; stdcall; + SystemParametersInfoW_MP: function(uiAction, uiParam: UINT; pvParam: Pointer; fWinIni: UINT): BOOL; stdcall; + SHBrowseForFolderW_MP: function(var lpbi: TBrowseInfoW): PItemIDList; stdcall; + SHGetPathFromIDListW_MP: function(pidl: PItemIDList; pszPath: PWideChar): BOOL; stdcall; + SHFileOperationW_MP: function(const lpFileOp: TSHFileOpStructW): Integer; stdcall; + PathMatchSpecA_MP: function(const pszFileParam, pszSpec: PAnsiChar): Bool; stdcall; + PathMatchSpecW_MP: function(const pszFileParam, pszSpec: PWideChar): Bool; stdcall; + CreateProcessW_MP: function(lpApplicationName: PWideChar; lpCommandLine: PWideChar; + lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; + bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; + lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfoW; + var lpProcessInformation: TProcessInformation): BOOL; stdcall; + DeleteVolumeMountPoint_MP: function(lpszVolumeMountPoint: LPCSTR): BOOL; stdcall; + GetVolumeNameForVolumeMountPoint_MP: function(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall; + GetVolumePathName_MP: function(lpszFileName: LPCSTR; lpszVolumePathName: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall; + SetVolumeMountPoint_MP: function(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPCSTR): BOOL; + FindFirstVolume_MP: function(lpszVolumeName: LPTSTR; cchBufferLength: DWORD): THandle; stdcall; + FindNextVolume_MP: function(hFindVolume: THandle; lpszVolumeName: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall; + FindVolumeClose_MP: function(hFindVolume: THandle): BOOL; stdcall; + FindFirstVolumeMountPoint_MP: function(lpszRootPathName: LPTSTR; lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): THandle stdcall; + FindNextVolumeMountPoint_MP: function(hFindVolumeMountPoint: THandle; lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall; + FindVolumeMountPointClose_MP: function(hFindVolumeMountPoint: THandle): BOOL; stdcall; + SHGetKnownFolderPath_MP: function(const rfid: TGUID; dwFlags: DWord; hToken: THandle; out ppszPath: PWideChar): HRESULT; stdcall; + FindFirstFileExW_MP: function(lpFileName: PWideChar; fInfoLevelId: DWORD; var lpFindFileData: TWIN32FindDataW; fSearchOp: DWORD; lpSearchFilter: Pointer; dwAdditionalFlags: DWORD): THandle; stdcall; + FindFirstFileExA_MP: function(lpFileName: PChar; fInfoLevelId: DWORD; var lpFindFileData: TWIN32FindDataA; fSearchOp: DWORD; lpSearchFilter: Pointer; dwAdditionalFlags: DWORD): THandle; stdcall; + ExpandEnvironmentStringsW_MP: function(lpSrc: PWideChar; lpDst: PWideChar; nSize: DWORD): DWORD; stdcall; + TrackMouseEvent_MP: function(var EventTrack: TTrackMouseEvent): BOOL; stdcall; + + // Usage of this flag makes the SumFolder Function not thread safe + SumFolderAbort: Boolean = False; + +implementation + +uses + MPCommonObjects; + +type + PLibRec = ^TLibRec; + TLibRec = packed record + LibraryName: string; + ReferenceCount: Integer; + Handle: THandle; + end; + +var + FLibList: TList; + PIDLMgr: TCommonPIDLManager; + Shell32Handle, + Kernel32Handle, + User32Handle, + GDI32Handle, + AdvAPI32Handle, + ShlwapiHandle: THandle; + + +function ShiftStateToKeys(Keys: TShiftState): LongWord; +begin + Result := 0; + if ssShift in Keys then + Result := Result or MK_SHIFT; + if ssCtrl in Keys then + Result := Result or MK_CONTROL; + if ssLeft in Keys then + Result := Result or MK_LBUTTON; + if ssRight in Keys then + Result := Result or MK_RBUTTON; + if ssMiddle in Keys then + Result := Result or MK_MBUTTON; + if ssAlt in Keys then + Result := Result or MK_ALT; +end; + +function ShiftStateToStr(Keys: TShiftState): WideString; +begin + Result := '['; + if ssShift in Keys then + Result := Result + 'ssShift, '; + if ssCtrl in Keys then + Result := Result + 'ssCtrl, '; + if ssLeft in Keys then + Result := Result + 'ssLeft, '; + if ssRight in Keys then + Result := Result + 'ssRight, '; + if ssMiddle in Keys then + Result := Result + 'ssMiddle, '; + if ssAlt in Keys then + Result := Result + 'ssAlt, '; + if ssDouble in Keys then + Result := Result + 'ssDouble, '; + if Length(Result) > 1 then + SetLength(Result, Length(Result) - 2); + Result := Result + ']'; +end; + +function RegSvrPath: WideString; +const + ExeName: WideString = 'RegSvr32.exe'; +var + Path: WideString; +begin + Result:= ''; + //Look in System dir + Path := SystemDirectory + '\' + ExeName; + if FileExistsW(Path) then + Result := Path + else begin + //Look in Windows dir + Path:= WindowsDirectory + '\' + ExeName; + if FileExistsW(Path) then + Result:= Path; + end +end; + +function ExecShellEx(const Cmd, Params, Dir: WideString; ShowCmd: integer; DoWait: boolean): boolean; +var + InfoA: TShellExecuteInfoA; + InfoW: TShellExecuteInfoW; + CmdA, ParamsA, DirA: string; +begin + if Assigned(ShellExecuteExW_MP) then + begin + FillChar(InfoW, SizeOf(InfoW), 0); + InfoW.cbSize := SizeOf(InfoW); + InfoW.fMask := SEE_MASK_FLAG_NO_UI or SEE_MASK_NOCLOSEPROCESS; + InfoW.lpFile := PWideChar(Cmd); + InfoW.lpParameters := PWideChar(Params); + InfoW.lpDirectory := PWideChar(Dir); + InfoW.nShow := ShowCmd; + Result := ShellExecuteExW_MP(@InfoW); + if Result and DoWait then + begin + WaitForSingleObject(InfoW.hProcess, INFINITE); + CloseHandle(InfoW.hProcess) + end; + end else + begin + CmdA := Cmd; + ParamsA := Params; + DirA := Dir; + FillChar(InfoA, SizeOf(InfoA), 0); + InfoA.cbSize := SizeOf(InfoA); + InfoA.fMask := SEE_MASK_FLAG_NO_UI or SEE_MASK_NOCLOSEPROCESS; + InfoA.lpFile := PChar(CmdA); + InfoA.lpParameters := PChar(ParamsA); + InfoA.lpDirectory := PChar(DirA); + InfoA.nShow := ShowCmd; + Result := ShellExecuteEx(@InfoA); + if Result and DoWait then + begin + WaitForSingleObject(InfoA.hProcess, INFINITE); + CloseHandle(InfoA.hProcess) + end; + end; +end; + +function RegUnregNSE(const AFileName: WideString; DoRegister: boolean; AMessages: TEasyNSERegMessages = [enseMsgShowErrors]): boolean; +var + Fn, Exe, Msg: WideString; +begin + Result:= false; + + if not FileExistsW(AFileName) then + begin + if enseMsgShowErrors in AMessages then + begin + if DoRegister then + Msg := SEasyNSEMsg_CannotRegister + else + Msg := SEasyNSEMsg_CannotUnRegister; + + + WideMessageBox(Application.Handle, + PWideChar( Msg + #13 + SEasyNSEMsg_CannotFindDLL), + PWideChar( SEasyNSEMsg_Caption), + MB_OK or MB_ICONERROR); + end; + Exit + end; + + Fn := AFileName; + // If includes spaces then " " it + if Pos(' ', Fn) > 0 then + Fn := '"' + Fn + '"'; + + Exe := RegSvrPath; + + if not FileExistsW(Exe) then + begin + if enseMsgShowErrors in AMessages then + begin + if DoRegister then + Msg := SEasyNSEMsg_CannotRegister + else + Msg := SEasyNSEMsg_CannotUnRegister; + + MessageBoxW(Application.Handle, + PWideChar( Msg + #13 + SEasyNSEMsg_CannotFindRegSvr), + PWideChar( SEasyNSEMsg_Caption), + MB_OK or MB_ICONERROR); + end; + Exit + end; + + if DoRegister then + Msg := '' else + Msg := '/U '; + if not (enseMsgRegSvr in AMessages) then + Msg := Msg + '/S '; + + Result:= ExecShellEx(exe, Msg + Fn, '', SW_SHOW, True); +end; + +function RegisterNSE(const AFileName: WideString; AMessages: TEasyNSERegMessages = [enseMsgShowErrors]): boolean; +begin + Result:= RegUnregNSE(AFileName, True, AMessages); +end; + +function UnregisterNSE(const AFileName: WideString; AMessages: TEasyNSERegMessages = [enseMsgShowErrors]): boolean; +begin + Result:= RegUnregNSE(AFileName, False, AMessages); +end; + +{$IFNDEF COMPILER_6_UP} +function DirectoryExists(const Directory: string): Boolean; +var + Code: Integer; +begin + Code := GetFileAttributes(PChar(Directory)); + Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0); +end; +{$ENDIF} + +{$IFNDEF COMPILER_6_UP} +function GUIDToString(const GUID: TGUID): string; +var + P: PWideChar; +begin + Result := ''; + if Succeeded(StringFromCLSID(GUID, P)) then + begin + Result := P; + CoTaskMemFree(P); + end +end; +{$ENDIF} + +procedure MakeFindDataW(const FindFileDataA: TWIN32FindDataA; var FindFileDataW: TWIN32FindDataW); +// +// Makes TWIN32FindDataW from a TWIN32FindDataA structure +// +var + i: Integer; + WS: WideString; +begin + FindFileDataW.dwFileAttributes := FindFileDataA.dwFileAttributes; + FindFileDataW.ftCreationTime := FindFileDataA.ftCreationTime; + FindFileDataW.ftLastAccessTime := FindFileDataA.ftLastAccessTime; + FindFileDataW.ftLastWriteTime := FindFileDataA.ftLastWriteTime; + FindFileDataW.nFileSizeHigh := FindFileDataA.nFileSizeHigh; + FindFileDataW.nFileSizeLow := FindFileDataA.nFileSizeLow; + FindFileDataW.dwReserved0 := FindFileDataA.dwReserved0; + FindFileDataW.dwReserved1 := FindFileDataA.dwReserved1; + FillChar(FindFileDataW.cAlternateFileName, SizeOf(FindFileDataW.cAlternateFileName), #0); + FillChar(FindFileDataW.cFileName, SizeOf(FindFileDataW.cFileName), #0); + i := 0; + while FindFileDataA.cAlternateFileName[i] <> #0 do + begin + WS := FindFileDataA.cAlternateFileName[i]; + FindFileDataW.cAlternateFileName[i] := WS[1]; + Inc(i) + end; + i := 0; + while FindFileDataA.cFileName[i] <> #0 do + begin + WS := FindFileDataA.cFileName[i]; + FindFileDataW.cFileName[i] := WS[1]; + Inc(i) + end +end; + +function WideDirectoryExists(const Name: WideString): Boolean; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideDirectoryExists(Name); + {$ELSE} + Result := DirectoryExists(Name) + {$ENDIF} +end; + +function WideCreateDir(Path: WideString): Boolean; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideCreateDir(Path); + {$ELSE} + Result := CreateDir(Path) + {$ENDIF} +end; + +function WideExcludeTrailingBackslash(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideExcludeTrailingBackslash(Path); + {$ELSE} + {$IFDEF COMPILER_6_UP} + {$WARN SYMBOL_PLATFORM OFF} + {$ENDIF} + Result := ExcludeTrailingBackslash(Path) + {$IFDEF COMPILER_6_UP} + {$WARN SYMBOL_PLATFORM ON} + {$ENDIF} + {$ENDIF} +end; + +function WideExpandEnviromentString(EnviromentString: WideString): WideString; +var + Length: Integer; + EnviromentStringA, ResultA: string; +begin + Result := EnviromentString; + if Assigned(ExpandEnvironmentStringsW_MP) then + begin + Length := ExpandEnvironmentStringsW_MP(PWideChar( EnviromentString), nil, 0); + if Length > 0 then + begin + SetLength(Result, Length - 1); // Includes the null + ExpandEnvironmentStringsW_MP( PWideChar( EnviromentString), PWideChar( @Result[1]), Length); + end + end else + begin + EnviromentStringA := EnviromentString; + Length := ExpandEnvironmentStringsA(PChar( EnviromentStringA), nil, 0); + if Length > 0 then + begin + SetLength(ResultA, Length - 2); // There is a magic 1 per the MSDN docs for the ANSI version + ExpandEnvironmentStringsA( PChar( EnviromentStringA), PChar( @ResultA[1]), Length); + Result := ResultA + end + end +end; + +function WideExtractFilePath(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideExtractFilePath(Path); + {$ELSE} + Result := ExtractFilePath(Path); + {$ENDIF} +end; + +function WideExtractFileName(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideExtractFileName(Path); + {$ELSE} + Result := ExtractFileName(Path); + {$ENDIF} +end; + +function WideFileExists(Path: WideString): Boolean; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideFileExists(Path); + {$ELSE} + Result := FileExists(Path); + {$ENDIF} +end; + +function WideExtractFileDir(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideExtractFileDir(Path); + {$ELSE} + Result := ExtractFileDir(Path); + {$ENDIF} +end; + +function WideExtractFileDrive(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideExtractFileDrive(Path); + {$ELSE} + Result := ExtractFileDrive(Path); + {$ENDIF} +end; + +function WideExtractFileExt(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideExtractFileExt(Path); + {$ELSE} + Result := ExtractFileExt(Path); + {$ENDIF} +end; + +function WideFindFirstFileEx(FileName: WideString; + var lpFindFileData: TWIN32FindDataW; Mask: WideString; CaseSensitive: Boolean): THandle; +var + CaseFlag: DWORD; + FindFileDataA: TWIN32FindDataA; +begin + Result := 0; + + if CaseSensitive then + CaseFlag := FIND_FIRST_EX_CASE_SENSITIVE + else + CaseFlag := 0; + + if Assigned(FindFirstFileExW_MP) then + Result := FindFirstFileExW_MP(PWideChar(WideString( FileName + '\' + Mask)), FINDEX_INFO_STANDARD, lpFindFileData, FINDEX_SEARCH_NAMEMATCH, nil, CaseFlag) + else + if Assigned(FindFirstFileExA_MP) then + begin + Result := FindFirstFileExA_MP(PChar( String( FileName + '\' + Mask)), FINDEX_INFO_STANDARD, FindFileDataA, FINDEX_SEARCH_NAMEMATCH, nil, CaseFlag); + MakeFindDataW(FindFileDataA, lpFindFileData) + end +end; + +function WideFindFirstFileExExists: Boolean; +begin + Result := Assigned(FindFirstFileExA_MP) or Assigned(FindFirstFileExW_MP) +end; + +procedure FixFormFont(AFont: TFont); +var + LogFont: TLogFont; +begin + if SystemParametersInfo(SPI_GETICONTITLELOGFONT, SizeOf(LogFont), @LogFont, 0) then + AFont.Handle := CreateFontIndirect(LogFont) + else + AFont.Handle := GetStockObject(DEFAULT_GUI_FONT); +end; + +procedure FillGradient(X1, Y1, X2, Y2: integer; fStartColor, fStopColor: TColor; + StartPoint, EndPoint: integer; fDrawCanvas: TCanvas); +// X1, Y1, X2, Y2: TopLeft and BottomRight coordinates of fill area... +//fStartColor: color to begin the gradient fill with +//FStopColor: color to end the gradient fill with +//StartPoint: the first point between X1 and X2 to draw (useful for faster updating of +// specific areas instead of redrawing the entire gradient fill area such as progress bars) +//EndPoint: the last point between X1 and X2 to draw +//fDrawCanvas: the canvas to draw the gradient on +var + y: integer; + tmpColor: TColor; + +begin + fStartColor := ColorToRGB(fStartColor); + fStopColor := ColorToRGB(fStopColor); + tmpColor := fDrawCanvas.Pen.Color; + for y := Y1 to Y2 do begin + fDrawCanvas.MoveTo(X1, y); + if (EndPoint > 0) and (y <= EndPoint) and (y >= StartPoint) then begin + fDrawCanvas.Pen.Color := RGB(Round(GetRValue(fStartColor) + (((GetRValue(fStopColor) - GetRValue(fStartColor)) / (Y2 - Y1)) *Abs(y - Y1))), + Round(GetGValue(fStartColor) + (((GetGValue(fStopColor) - GetGValue(fStartColor)) / (Y2 - Y1)) * Abs(y - Y1))), + Round(GetBValue(fStartColor) + (((GetBValue(fStopColor) - GetBValue(fStartColor)) / (y2 - Y1)) * Abs(y - Y1)))); + fDrawCanvas.LineTo(X2, y); + end; + end; + fDrawCanvas.Brush.Color := tmpColor; +end; + +function DropEffectToStr(DropEffect: DWORD): WideString; +begin + Result := ''; + if DropEffect and DROPEFFECT_COPY <> 0 then + Result := Result + 'DROPEFFECT_COPY|'; + if DropEffect and DROPEFFECT_MOVE <> 0 then + Result := Result + 'DROPEFFECT_MOVE|'; + if DropEffect and DROPEFFECT_LINK <> 0 then + Result := Result + 'DROPEFFECT_LINK|'; + if DropEffect and DROPEFFECT_SCROLL <> 0 then + Result := Result + 'DROPEFFECT_SCROLL|'; + if Length(Result) > 0 then + SetLength(Result, Length(Result) - 1) + else + Result := '(none)'; +end; + +function EqualWndMethod(A, B: TWndMethod): Boolean; +begin + Result := (TMethod(A).Code = TMethod(B).Code) and + (TMethod(A).Data = TMethod(B).Data) +end; + +function FindRootToken(const Path: WideString): PWideChar; +const + RootToken = WideString(':\'); +begin + Result := WideStrPos(PWideChar(Path), RootToken); +end; + +function ExtractFileDirW(const FileName: WideString): WideString; +var + WP: PWideChar; +begin + Result := ''; + if (Length(FileName) < 3) and (Length(FileName) > 0) then + begin + if (((FileName[1] >= 'A') and (FileName[1] >= 'Z')) or + ((FileName[1] >= 'a') and (FileName[1] >= 'z'))) then + begin + Result := WideString(FileName[1]) + ':\'; + end + end else + begin + WP := FindRootToken(FileName); + if Assigned(WP) then + begin + { Find the last '\' } + WP := WideStrRScan(PWideChar( FileName), WideChar( '\')); + if Assigned(WP) then + begin + { The stripped file name leaves just the root directory } + if (Length(FileName) > 1) and ( (WP - 1)^ = ':') then + WP := WP + 1; // Tack on the '\' + SetLength(Result, WP - @FileName[1]); + WideStrMove(PWideChar(Result), PWideChar(FileName), WP - @FileName[1]); + end + end + end +end; + +function DirExistsW(const FileName: PWideChar): Boolean; +var + ErrorCode: LongWord; + S: string; +begin + if FileName <> '' then + begin + if (Win32Platform = VER_PLATFORM_WIN32_NT) then + ErrorCode := GetFileAttributesW_MP(FileName) + else begin + S := FileName; + ErrorCode := GetFileAttributesA(PChar(S)) + end; + Result := (Integer(ErrorCode) <> -1) and (FILE_ATTRIBUTE_DIRECTORY and ErrorCode <> 0); + end else + Result := False +end; + +function FlipReverseCopyRect(const Flip, Reverse: Boolean; const Bitmap: TBitmap): TBitmap; +var + Bottom, Left, Right, Top: integer; +begin + Result := TBitmap.Create; + Result.Width := Bitmap.Width; + Result.Height := Bitmap.Height; + Result.PixelFormat := Bitmap.PixelFormat; + + // Flip Top to Bottom + if Flip then + begin + // Unclear why extra "-1" is needed here. + Top := Bitmap.Height-1; + Bottom := -1 + end + else begin + Top := 0; + Bottom := Bitmap.Height + end; + + // Reverse Left to Right + if Reverse then + begin + // Unclear why extra "-1" is needed here. + Left := Bitmap.Width-1; + Right := -1; + end + else begin + Left := 0; + Right := Bitmap.Width; + end; + + Result.Canvas.CopyRect(Rect(Left,Top, Right,Bottom), + Bitmap.Canvas, + Rect(0,0, Bitmap.Width,Bitmap.Height)); +end; + +procedure FlipReverseCopyRect(const Flip, Reverse: Boolean; R: TRect; const Canvas: TCanvas); overload; +var + Bottom, Left, Right, Top: integer; +begin + // Flip Top to Bottom + if Flip then + begin + // Unclear why extra "-1" is needed here. + Top := RectHeight(R)-1; + Bottom := -1 + end + else begin + Top := 0; + Bottom := RectHeight(R) + end; + + // Reverse Left to Right + if Reverse then + begin + // Unclear why extra "-1" is needed here. + Left := RectWidth(R)-1; + Right := -1; + end + else begin + Left := 0; + Right := RectWidth(R); + end; + + Canvas.CopyRect(Rect(Left, Top, Right, Bottom), + Canvas, + Rect(0,0, RectWidth(R), RectHeight(R))); +end; + +function FileExistsW(const FileName: WideString): Boolean; +var + Handle: THandle; + FindData: TWin32FindData; + FindDataW: TWin32FindDataW; + FileNameA: string; +begin + Result := True; + if Win32Platform = VER_PLATFORM_WIN32_NT then + Handle := FindFirstFileW_MP(PWideChar(FileName), FindDataW) + else begin + FileNameA := FileName; + Handle := FindFirstFileA(PChar(FileNameA), FindData) + end; + if Handle <> INVALID_HANDLE_VALUE then + Windows.FindClose(Handle) + else + Result := False; +end; + +function IsMappedDrivePath(const Path: WideString): Boolean; +var + WS: WideString; +begin + WS := Path; + SetLength(WS, 3); + if IsWinNT then + Result := GetDriveTypeW_MP(PWideChar(WS)) = DRIVE_REMOTE + else + Result := GetDriveType(PChar(string(WS))) = DRIVE_REMOTE; +end; + +{ Searchs through the passed menu looking for an item identifer that is not } +{ currently being used. } + +function FindUniqueMenuID(AMenu: HMenu): Cardinal; + + + function RunMenu(AMenu: HMenu; var ID: Cardinal): Boolean; + var + MenuInfoW: TMenuItemInfoW; + MenuInfoA: TMenuItemInfoA; + i, ItemCount: Integer; + Reset, IsDuplicate: Boolean; + begin + Reset := False; + IsDuplicate := False; + ItemCount := GetMenuItemCount(AMenu); + i := 0; + while (i < ItemCount) and not IsDuplicate do + begin + if IsUnicode then + begin + FillChar(MenuInfoW, SizeOf(MenuInfoW), #0); + MenuInfoW.cbSize := SizeOf(MenuInfoW); + MenuInfoW.fMask := MIIM_SUBMENU or MIIM_ID; + GetMenuItemInfoW(AMenu, i, True, MenuInfoW); + if MenuInfoW.hSubMenu <> 0 then + Reset := RunMenu(MenuInfoW.hSubMenu, ID); + IsDuplicate := MenuInfoW.wID = ID + end else + begin + FillChar(MenuInfoA, SizeOf(MenuInfoA), #0); + MenuInfoA.cbSize := SizeOf(MenuInfoA); + MenuInfoA.fMask := MIIM_SUBMENU or MIIM_ID; + GetMenuItemInfoA(AMenu, i, True, MenuInfoA); + if MenuInfoA.hSubMenu <> 0 then + Reset := RunMenu(MenuInfoA.hSubMenu, ID); + IsDuplicate := MenuInfoA.wID = ID + end; + Inc(i); + end; + Result := IsDuplicate and not Reset + end; + +begin + Result := 1000; + while RunMenu(AMenu, Result) do + Inc(Result) +end; + +function AddContextMenuItem(Menu: HMenu; ACaption: WideString; Index: Integer; + MenuID: UINT = $FFFF; hSubMenu: UINT = 0; Enabled: Boolean = True; + Checked: Boolean = False; Default: Boolean = False): Integer; +// +// Pass '-' for a separator +// -1 to add to the end +// if MenuID = -1 then the function will create a unique ID +// if hSubMenu > 0 then the item contain sub-items +// Returns ID of new Item +// +var + InfoA: TMenuItemInfoA; + InfoW: TMenuItemInfoW; +begin + if IsUnicode and Assigned(InsertMenuItemW_MP) then + begin + FillChar(InfoW, SizeOf(InfoW), #0); + InfoW.cbSize := SizeOf(InfoW); + InfoW.fMask := MIIM_TYPE or MIIM_ID or MIIM_STATE; + + if Enabled or (ACaption = '-') then + InfoW.fState := InfoW.fState or MFS_ENABLED + else + InfoW.fState := InfoW.fState or MFS_DISABLED; + + if Checked and (ACaption <> '-') then + InfoW.fState := InfoW.fState or MFS_CHECKED; + if Default and (ACaption <> '-') then + InfoW.fState := InfoW.fState or MFS_DEFAULT; + + if ACaption = '-' then + InfoW.fType := MFT_SEPARATOR + else begin + InfoW.fType := MFT_STRING; + if hSubMenu > 0 then + begin + InfoW.fMask := InfoW.fMask or MIIM_SUBMENU; + InfoW.hSubMenu := hSubMenu + end + end; + InfoW.dwTypeData := PWideChar(ACaption); + InfoW.cch := Length(ACaption); + + if InfoW.fType = MFT_STRING then + begin + if MenuID = $FFFF then + InfoW.wID := FindUniqueMenuID(Menu) + else + if InfoW.fMask and MIIM_SUBMENU <> 0 then + InfoW.wID := $FFFF // Sub-Item Parents don't get an unique ID + else + InfoW.wID := MenuID; + end else + InfoW.wID := $FFFF; // Separators don't get an unique ID + + Result := InfoW.wID; + if Index < 0 then + InsertMenuItemW_MP(Menu, GetMenuItemCount(Menu), True, InfoW) + else + InsertMenuItemW_MP(Menu, Index, True, InfoW); // Inserts by Position + end else + begin + FillChar(InfoA, SizeOf(InfoA), #0); + InfoA.cbSize := SizeOf(InfoA); + + InfoA.fMask := MIIM_TYPE or MIIM_ID or MIIM_STATE; + if Enabled or (ACaption = '-') then + InfoA.fState := InfoA.fState or MFS_ENABLED + else + InfoA.fState := InfoA.fState or MFS_DISABLED; + + if Checked and (ACaption <> '-') then + InfoA.fState := InfoA.fState or MFS_CHECKED; + if Default and (ACaption <> '-') then + InfoA.fState := InfoA.fState or MFS_DEFAULT; + + if ACaption = '-' then + InfoA.fType := MFT_SEPARATOR + else begin + InfoA.fType := MFT_STRING; + if hSubMenu > 0 then + begin + InfoA.fMask := InfoA.fMask or MIIM_SUBMENU; + InfoA.hSubMenu := hSubMenu + end + end; + + InfoA.dwTypeData := PChar( string(ACaption)); + InfoA.cch := Length(ACaption); + + if InfoA.fType = MFT_STRING then + begin + if MenuID = $FFFF then + InfoA.wID := FindUniqueMenuID(Menu) + else + if InfoA.fMask and MIIM_SUBMENU <> 0 then + InfoA.wID := $FFFF // Sub-Item Parents don't get an unique ID + else + InfoA.wID := MenuID; + end else + InfoA.wID := $FFFF; // Separators don't get an unique ID + + Result := InfoA.wID; + if Index < 0 then + InsertMenuItemA(Menu, GetMenuItemCount(Menu), True, InfoA) + else + InsertMenuItemA(Menu, Index, True, InfoA); + end +end; + +procedure ShadowBlendBits(Bits: TBitmap; BackGndColor: TColor); +begin + if Assigned(Bits) and (Bits.PixelFormat = pf32Bit) then + begin + AlphaBlend(Bits.Canvas.Handle, Bits.Canvas.Handle, + Rect(0, 0, Bits.Width,Bits.Height), Point(0, 0), + cbmConstantAlphaAndColor, 0, ColorToRGB(BackGndColor)); + ConvertBitmapEx(Bits, Bits, BackGndColor) + end +end; + + +procedure SumFolder(FolderPath: WideString; Recurse: Boolean; var Size: Int64); +{ Returns the size of all files within the passed folder, including all } +{ sub-folders. This is recurcive don't initialize Size to 0 in the function! } +var + Info: TWin32FindData; + InfoW: TWin32FindDataW; + FHandle: THandle; + FolderPathA: string; +begin + if IsUnicode then + begin + FHandle := FindFirstFileW_MP(PWideChar( FolderPath + '\*.*'), InfoW); + if FHandle <> INVALID_HANDLE_VALUE then + try + if Recurse and (InfoW.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0) then + begin + if (lstrcmpiW_MP(InfoW.cFileName, '.') <> 0) and (lstrcmpiW_MP(InfoW.cFileName, '..') <> 0) and + (InfoW.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT = 0) then + SumFolder(FolderPath + '\' + InfoW.cFileName, Recurse, Size) + end else + Size := Size + InfoW.nFileSizeHigh * MAXDWORD + InfoW.nFileSizeLow; + while FindNextFileW_MP(FHandle, InfoW) and not SumFolderAbort do + begin + if Recurse and (InfoW.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0) then + begin + if (lstrcmpiW_MP(InfoW.cFileName, '.') <> 0) and (lstrcmpiW_MP(InfoW.cFileName, '..') <> 0) and + (InfoW.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT = 0) then + SumFolder(FolderPath + '\' + InfoW.cFileName, Recurse, Size) + end else + Size := Size + InfoW.nFileSizeHigh * MAXDWORD + InfoW.nFileSizeLow; + end; + finally + Windows.FindClose(FHandle) + end + end else + begin + FolderPathA := FolderPath; + FHandle := FindFirstFile(PChar( FolderPathA + '\*.*'), Info); + if FHandle <> INVALID_HANDLE_VALUE then + try + if Recurse and (Info.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0) then + begin + if (lstrcmpi(Info.cFileName, '.') <> 0) and (lstrcmpi(Info.cFileName, '..') <> 0) and + (InfoW.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT = 0) then + SumFolder(FolderPathA + '\' + Info.cFileName, Recurse, Size) + end else + Size := Size + Info.nFileSizeHigh * MAXDWORD + Info.nFileSizeLow; + while FindNextFile(FHandle, Info) and not SumFolderAbort do + begin + if Recurse and (Info.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0) then + begin + if (lstrcmpi(Info.cFileName, '.') <> 0) and (lstrcmpi(Info.cFileName, '..') <> 0) and + (InfoW.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT = 0) then + SumFolder(FolderPathA + '\' + Info.cFileName, Recurse, Size) + end else + Size := Size + Info.nFileSizeHigh * MAXDWORD + Info.nFileSizeLow; + end; + finally + Windows.FindClose(FHandle) + end + end +end; + +function InternalTextExtentW(Text: PWideChar; DC: HDC): TSize; +var + S: string; +begin + if IsUnicode then + GetTextExtentPoint32W(DC, PWideChar(Text), Length(Text), Result) + else begin + S := WideString( Text); + GetTextExtentPoint32(DC, PChar(S), Length(S), Result) + end; +end; + +function WideStrMove(Dest, Source: PWideChar; Count: Cardinal): PWideChar; +// Copies the specified number of characters to the destination string and returns Dest +// also as result. Dest must have enough room to store at least Count characters. +asm + PUSH ESI + PUSH EDI + MOV ESI, EDX + MOV EDI, EAX + MOV EDX, ECX + CMP EDI, ESI + JG @@1 + JE @@2 + SHR ECX, 1 + REP MOVSD + MOV ECX, EDX + AND ECX, 1 + REP MOVSW + JMP @@2 + +@@1: + LEA ESI, [ESI + 2 * ECX - 2] + LEA EDI, [EDI + 2 * ECX - 2] + STD + AND ECX, 1 + REP MOVSW + SUB EDI, 2 + SUB ESI, 2 + MOV ECX, EDX + SHR ECX, 1 + REP MOVSD + CLD +@@2: + POP EDI + POP ESI +end; + +function WideStrRScan(Str: PWideChar; Chr: WideChar): PWideChar; +// returns a pointer to the last occurance of Chr in Str +asm + PUSH EDI + MOV EDI, Str + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + STD + SUB EDI, 2 + MOV AX, Chr + REPNE SCASW + MOV EAX, 0 + JNE @@1 + MOV EAX, EDI + ADD EAX, 2 +@@1: + CLD + POP EDI +end; + +function WideStrScan(Str: PWideChar; Chr: WideChar): PWideChar; +// returns a pointer to first occurrence of a specified character in a string +asm + PUSH EDI + PUSH EAX + MOV EDI, Str + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + POP EDI + MOV AX, Chr + REPNE SCASW + MOV EAX, 0 + JNE @@1 + MOV EAX, EDI + SUB EAX, 2 +@@1: + POP EDI +end; + +function WideUpperCase(const S: WideString): WideString; +begin + Result := S; + if IsUnicode then + CharUpperBuffW_MP(PWideChar(Result), Length(Result)) + else + CharUpperBuffA(PChar(string(Result)), Length(Result)) +end; + +function LibList: TList; +begin + if not Assigned(FLibList) then + FLibList := TList.Create; + Result := FLibList +end; + +function CommonLoadLibrary(LibraryName: string): THandle; +var + i: Integer; + Found: Boolean; + LibRec: PLibRec; +begin + Result := 0; + Found := False; + i := 0; + while (i < LibList.Count) and not Found do + begin + LibRec := PLibRec(LibList[i]); + if lstrcmpi(PChar(LibRec.LibraryName), PChar(LibraryName)) = 0 then + begin + Inc(LibRec.ReferenceCount); + Result := LibRec.Handle; + Found := True + end; + Inc(i) + end; + if not Found then + begin + New(LibRec); + LibRec.Handle := LoadLibrary(PChar(LibraryName)); + if LibRec.Handle <> 0 then + begin + LibRec.LibraryName := LibraryName; + LibRec.ReferenceCount := 1; + LibList.Add(LibRec); + Result := LibRec.Handle + end else + Dispose(LibRec) + end +end; + +function CommonUnloadLibrary(LibraryName: string): Boolean; +var + i: Integer; + LibRec: PLibRec; +begin + Result := False; + i := 0; + while (i < LibList.Count) and not Result do + begin + LibRec := PLibRec(LibList[i]); + if lstrcmpi(PChar(LibRec.LibraryName), PChar(LibraryName)) = 0 then + begin + Dec(LibRec.ReferenceCount); + FreeLibrary(LibRec.Handle); + if LibRec.ReferenceCount = 0 then + begin + LibList.Delete(i); + Dispose(LibRec); + end; + Result := True + end; + Inc(i) + end; + if LibList.Count = 0 then + FreeAndNil(FLibList) +end; + +procedure CommonUnloadAllLibraries; +var + i, LibIndex: Integer; + LibRec: PLibRec; +begin + i := 0; + while i < LibList.Count do + begin + LibRec := PLibRec(LibList[i]); + for LibIndex := 0 to LibRec.ReferenceCount - 1 do + FreeLibrary(LibRec.Handle); + LibList.Delete(i); + Dispose(LibRec); + Inc(i) + end; + FreeAndNil(FLibList); +end; + +procedure DrawRadioButton(Canvas: TCanvas; Pos: TPoint; Size: Integer; clBackground, clHotBkGnd, + clLeftOuter, clRightOuter, clLeftInner, clRightInner: TColor; Checked, Enabled, Hot: Boolean); +begin + MarlettFont.Size := Size; + Canvas.Brush.Style := bsClear; + Canvas.Font.Assign(MarlettFont); + + // Draw the background + if Hot then + Canvas.Font.Color := clHotBkGnd + else + Canvas.Font.Color := clBackground; + Canvas.TextOut(Pos.X, Pos.Y, 'n'); + + Canvas.Brush.Style := bsClear; + // Draw the Outer Circle + Canvas.Font.Color := clLeftOuter; + Canvas.TextOut(Pos.X, Pos.Y, 'j'); + Canvas.Font.Color := clRightOuter; + Canvas.TextOut(Pos.X, Pos.Y, 'k'); + // Draw the Inner Circle + Canvas.Font.Color := clLeftInner; + Canvas.TextOut(Pos.X, Pos.Y, 'l'); + Canvas.Font.Color := clRightInner; + Canvas.TextOut(Pos.X, Pos.Y, 'm'); + if Checked then + begin + if Enabled then + Canvas.Font.Color := clBlack + else + Canvas.Font.Color := clBtnShadow; + Canvas.TextOut(Pos.X, Pos.Y, 'i'); + end +end; + +procedure DrawCheckBox(Canvas: TCanvas; Pos: TPoint; Size: Integer; clBackground, clHotBkGnd, + clLeftOuter, clRightOuter, clLeftInner, clRightInner: TColor; Checked, Enabled, Hot: Boolean); +begin + MarlettFont.Size := Size; + Canvas.Brush.Style := bsSolid; + Canvas.Font.Assign(MarlettFont); + + // Draw the background + if Hot then + Canvas.Font.Color := clHotBkGnd + else + Canvas.Font.Color := clBackground; + Canvas.TextOut(Pos.X, Pos.Y, Char($67)); + + Canvas.Brush.Style := bsClear; + // Draw the Outer Frame + Canvas.Font.Color := clLeftOuter; + Canvas.TextOut(Pos.X, Pos.Y, Char($63)); + Canvas.Font.Color := clRightOuter; + Canvas.TextOut(Pos.X, Pos.Y, Char($64)); + // Draw the Inner Frame + Canvas.Font.Color := clLeftInner; + Canvas.TextOut(Pos.X, Pos.Y, Char($65)); + Canvas.Font.Color := clRightInner; + Canvas.TextOut(Pos.X, Pos.Y, Char($66)); + if Checked then + begin + if Enabled then + Canvas.Font.Color := clBlack + else + Canvas.Font.Color := clBtnShadow; + Canvas.TextOut(Pos.X, Pos.Y, Char($62)); + end +end; + +function CheckBounds(Size: Integer): TRect; +var + Canvas: TCanvas; +begin + Result := Rect(0, 0, 0, 0); + Canvas := TCanvas.Create; + try + Canvas.Handle := GetDC(0); + Canvas.Font.Name := 'Marlett'; + Canvas.Font.Size := Size; + // Use the background for the Checkbox for the size, the Radio will be this + // size or a bit smaller + Result.Right := Canvas.TextWidth(Char($67)); + Result.Bottom := Canvas.TextHeight(Char($67)); + finally + if Assigned(Canvas) then + begin + ReleaseDC(0, Canvas.Handle); + Canvas.Handle := 0 + end; + Canvas.Free + end; +end; + + +function HasMMX: Boolean; + +// Helper method to determine whether the current processor supports MMX. + +asm + PUSH EBX + XOR EAX, EAX // Result := False + PUSHFD // determine if the processor supports the CPUID command + POP EDX + MOV ECX, EDX + XOR EDX, $200000 + PUSH EDX + POPFD + PUSHFD + POP EDX + XOR ECX, EDX + JZ @1 // no CPUID support so we can't even get to the feature information + PUSH EDX + POPFD + + MOV EAX, 1 + DW $A20F // CPUID, EAX contains now version info and EDX feature information + MOV EBX, EAX // free EAX to get the result value + XOR EAX, EAX // Result := False + CMP EBX, $50 + JB @1 // if processor family is < 5 then it is not a Pentium class processor + TEST EDX, $800000 + JZ @1 // if the MMX bit is not set then we don't have MMX + INC EAX // Result := True +@1: + POP EBX +end; + +procedure AlphaBlendLineConstant(Source, Destination: Pointer; Count: Integer; ConstantAlpha, Bias: Integer); +// Blends a line of Count pixels from Source to Destination using a constant alpha value. +// The layout of a pixel must be BGRA where A is ignored (but is calculated as the other components). +// ConstantAlpha must be in the range 0..255 where 0 means totally transparent (destination pixel only) +// and 255 totally opaque (source pixel only). +// Bias is an additional value which gets added to every component and must be in the range -128..127 +// +// EAX contains Source +// EDX contains Destination +// ECX contains Count +// ConstantAlpha and Bias are on the stack +asm + PUSH ESI // save used registers + PUSH EDI + + MOV ESI, EAX // ESI becomes the actual source pointer + MOV EDI, EDX // EDI becomes the actual target pointer + + // Load MM6 with the constant alpha value (replicate it for every component). + // Expand it to word size. + MOV EAX, [ConstantAlpha] + DB $0F, $6E, $F0 /// MOVD MM6, EAX + DB $0F, $61, $F6 /// PUNPCKLWD MM6, MM6 + DB $0F, $62, $F6 /// PUNPCKLDQ MM6, MM6 + + // Load MM5 with the bias value. + MOV EAX, [Bias] + DB $0F, $6E, $E8 /// MOVD MM5, EAX + DB $0F, $61, $ED /// PUNPCKLWD MM5, MM5 + DB $0F, $62, $ED /// PUNPCKLDQ MM5, MM5 + + // Load MM4 with 128 to allow for saturated biasing. + MOV EAX, 128 + DB $0F, $6E, $E0 /// MOVD MM4, EAX + DB $0F, $61, $E4 /// PUNPCKLWD MM4, MM4 + DB $0F, $62, $E4 /// PUNPCKLDQ MM4, MM4 + +@1: // The pixel loop calculates an entire pixel in one run. + // Note: The pixel byte values are expanded into the higher bytes of a word due + // to the way unpacking works. We compensate for this with an extra shift. + DB $0F, $EF, $C0 /// PXOR MM0, MM0, clear source pixel register for unpacking + DB $0F, $60, $06 /// PUNPCKLBW MM0, [ESI], unpack source pixel byte values into words + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8, move higher bytes to lower bytes + DB $0F, $EF, $C9 /// PXOR MM1, MM1, clear target pixel register for unpacking + DB $0F, $60, $0F /// PUNPCKLBW MM1, [EDI], unpack target pixel byte values into words + DB $0F, $6F, $D1 /// MOVQ MM2, MM1, make a copy of the shifted values, we need them again + DB $0F, $71, $D1, $08 /// PSRLW MM1, 8, move higher bytes to lower bytes + + // calculation is: target = (alpha * (source - target) + 256 * target) / 256 + DB $0F, $F9, $C1 /// PSUBW MM0, MM1, source - target + DB $0F, $D5, $C6 /// PMULLW MM0, MM6, alpha * (source - target) + DB $0F, $FD, $C2 /// PADDW MM0, MM2, add target (in shifted form) + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8, divide by 256 + + // Bias is accounted for by conversion of range 0..255 to -128..127, + // doing a saturated add and convert back to 0..255. + DB $0F, $F9, $C4 /// PSUBW MM0, MM4 + DB $0F, $ED, $C5 /// PADDSW MM0, MM5 + DB $0F, $FD, $C4 /// PADDW MM0, MM4 + DB $0F, $67, $C0 /// PACKUSWB MM0, MM0, convert words to bytes with saturation + DB $0F, $7E, $07 /// MOVD [EDI], MM0, store the result +@3: + ADD ESI, 4 + ADD EDI, 4 + DEC ECX + JNZ @1 + POP EDI + POP ESI +end; + +procedure AlphaBlendLinePerPixel(Source, Destination: Pointer; Count, Bias: Integer); +// Blends a line of Count pixels from Source to Destination using the alpha value of the source pixels. +// The layout of a pixel must be BGRA. +// Bias is an additional value which gets added to every component and must be in the range -128..127 +// +// EAX contains Source +// EDX contains Destination +// ECX contains Count +// Bias is on the stack +asm + PUSH ESI // save used registers + PUSH EDI + + MOV ESI, EAX // ESI becomes the actual source pointer + MOV EDI, EDX // EDI becomes the actual target pointer + + // Load MM5 with the bias value. + MOV EAX, [Bias] + DB $0F, $6E, $E8 /// MOVD MM5, EAX + DB $0F, $61, $ED /// PUNPCKLWD MM5, MM5 + DB $0F, $62, $ED /// PUNPCKLDQ MM5, MM5 + + // Load MM4 with 128 to allow for saturated biasing. + MOV EAX, 128 + DB $0F, $6E, $E0 /// MOVD MM4, EAX + DB $0F, $61, $E4 /// PUNPCKLWD MM4, MM4 + DB $0F, $62, $E4 /// PUNPCKLDQ MM4, MM4 + +@1: // The pixel loop calculates an entire pixel in one run. + // Note: The pixel byte values are expanded into the higher bytes of a word due + // to the way unpacking works. We compensate for this with an extra shift. + DB $0F, $EF, $C0 /// PXOR MM0, MM0, clear source pixel register for unpacking + DB $0F, $60, $06 /// PUNPCKLBW MM0, [ESI], unpack source pixel byte values into words + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8, move higher bytes to lower bytes + DB $0F, $EF, $C9 /// PXOR MM1, MM1, clear target pixel register for unpacking + DB $0F, $60, $0F /// PUNPCKLBW MM1, [EDI], unpack target pixel byte values into words + DB $0F, $6F, $D1 /// MOVQ MM2, MM1, make a copy of the shifted values, we need them again + DB $0F, $71, $D1, $08 /// PSRLW MM1, 8, move higher bytes to lower bytes + + // Load MM6 with the source alpha value (replicate it for every component). + // Expand it to word size. + DB $0F, $6F, $F0 /// MOVQ MM6, MM0 + DB $0F, $69, $F6 /// PUNPCKHWD MM6, MM6 + DB $0F, $6A, $F6 /// PUNPCKHDQ MM6, MM6 + + // calculation is: target = (alpha * (source - target) + 256 * target) / 256 + DB $0F, $F9, $C1 /// PSUBW MM0, MM1, source - target + DB $0F, $D5, $C6 /// PMULLW MM0, MM6, alpha * (source - target) + DB $0F, $FD, $C2 /// PADDW MM0, MM2, add target (in shifted form) + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8, divide by 256 + + // Bias is accounted for by conversion of range 0..255 to -128..127, + // doing a saturated add and convert back to 0..255. + DB $0F, $F9, $C4 /// PSUBW MM0, MM4 + DB $0F, $ED, $C5 /// PADDSW MM0, MM5 + DB $0F, $FD, $C4 /// PADDW MM0, MM4 + DB $0F, $67, $C0 /// PACKUSWB MM0, MM0, convert words to bytes with saturation + DB $0F, $7E, $07 /// MOVD [EDI], MM0, store the result +@3: + ADD ESI, 4 + ADD EDI, 4 + DEC ECX + JNZ @1 + POP EDI + POP ESI +end; + +procedure AlphaBlendLineMaster(Source, Destination: Pointer; Count: Integer; ConstantAlpha, Bias: Integer); +// Blends a line of Count pixels from Source to Destination using the source pixel and a constant alpha value. +// The layout of a pixel must be BGRA. +// ConstantAlpha must be in the range 0..255. +// Bias is an additional value which gets added to every component and must be in the range -128..127 +// +// EAX contains Source +// EDX contains Destination +// ECX contains Count +// ConstantAlpha and Bias are on the stack +asm + PUSH ESI // save used registers + PUSH EDI + + MOV ESI, EAX // ESI becomes the actual source pointer + MOV EDI, EDX // EDI becomes the actual target pointer + + // Load MM6 with the constant alpha value (replicate it for every component). + // Expand it to word size. + MOV EAX, [ConstantAlpha] + DB $0F, $6E, $F0 /// MOVD MM6, EAX + DB $0F, $61, $F6 /// PUNPCKLWD MM6, MM6 + DB $0F, $62, $F6 /// PUNPCKLDQ MM6, MM6 + + // Load MM5 with the bias value. + MOV EAX, [Bias] + DB $0F, $6E, $E8 /// MOVD MM5, EAX + DB $0F, $61, $ED /// PUNPCKLWD MM5, MM5 + DB $0F, $62, $ED /// PUNPCKLDQ MM5, MM5 + + // Load MM4 with 128 to allow for saturated biasing. + MOV EAX, 128 + DB $0F, $6E, $E0 /// MOVD MM4, EAX + DB $0F, $61, $E4 /// PUNPCKLWD MM4, MM4 + DB $0F, $62, $E4 /// PUNPCKLDQ MM4, MM4 + +@1: // The pixel loop calculates an entire pixel in one run. + // Note: The pixel byte values are expanded into the higher bytes of a word due + // to the way unpacking works. We compensate for this with an extra shift. + DB $0F, $EF, $C0 /// PXOR MM0, MM0, clear source pixel register for unpacking + DB $0F, $60, $06 /// PUNPCKLBW MM0, [ESI], unpack source pixel byte values into words + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8, move higher bytes to lower bytes + DB $0F, $EF, $C9 /// PXOR MM1, MM1, clear target pixel register for unpacking + DB $0F, $60, $0F /// PUNPCKLBW MM1, [EDI], unpack target pixel byte values into words + DB $0F, $6F, $D1 /// MOVQ MM2, MM1, make a copy of the shifted values, we need them again + DB $0F, $71, $D1, $08 /// PSRLW MM1, 8, move higher bytes to lower bytes + + // Load MM7 with the source alpha value (replicate it for every component). + // Expand it to word size. + DB $0F, $6F, $F8 /// MOVQ MM7, MM0 + DB $0F, $69, $FF /// PUNPCKHWD MM7, MM7 + DB $0F, $6A, $FF /// PUNPCKHDQ MM7, MM7 + DB $0F, $D5, $FE /// PMULLW MM7, MM6, source alpha * master alpha + DB $0F, $71, $D7, $08 /// PSRLW MM7, 8, divide by 256 + + // calculation is: target = (alpha * master alpha * (source - target) + 256 * target) / 256 + DB $0F, $F9, $C1 /// PSUBW MM0, MM1, source - target + DB $0F, $D5, $C7 /// PMULLW MM0, MM7, alpha * (source - target) + DB $0F, $FD, $C2 /// PADDW MM0, MM2, add target (in shifted form) + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8, divide by 256 + + // Bias is accounted for by conversion of range 0..255 to -128..127, + // doing a saturated add and convert back to 0..255. + DB $0F, $F9, $C4 /// PSUBW MM0, MM4 + DB $0F, $ED, $C5 /// PADDSW MM0, MM5 + DB $0F, $FD, $C4 /// PADDW MM0, MM4 + DB $0F, $67, $C0 /// PACKUSWB MM0, MM0, convert words to bytes with saturation + DB $0F, $7E, $07 /// MOVD [EDI], MM0, store the result +@3: + ADD ESI, 4 + ADD EDI, 4 + DEC ECX + JNZ @1 + POP EDI + POP ESI +end; + +procedure AlphaBlendLineMasterAndColor(Destination: Pointer; Count: Integer; ConstantAlpha, Color: Integer); +// Blends a line of Count pixels in Destination against the given color using a constant alpha value. +// The layout of a pixel must be BGRA and Color must be rrggbb00 (as stored by a COLORREF). +// ConstantAlpha must be in the range 0..255. +// +// EAX contains Destination +// EDX contains Count +// ECX contains ConstantAlpha +// Color is passed on the stack +asm + // The used formula is: target = (alpha * color + (256 - alpha) * target) / 256. + // alpha * color (factor 1) and 256 - alpha (factor 2) are constant values which can be calculated in advance. + // The remaining calculation is therefore: target = (F1 + F2 * target) / 256 + + // Load MM3 with the constant alpha value (replicate it for every component). + // Expand it to word size. (Every calculation here works on word sized operands.) + DB $0F, $6E, $D9 /// MOVD MM3, ECX + DB $0F, $61, $DB /// PUNPCKLWD MM3, MM3 + DB $0F, $62, $DB /// PUNPCKLDQ MM3, MM3 + + // Calculate factor 2. + MOV ECX, $100 + DB $0F, $6E, $D1 /// MOVD MM2, ECX + DB $0F, $61, $D2 /// PUNPCKLWD MM2, MM2 + DB $0F, $62, $D2 /// PUNPCKLDQ MM2, MM2 + DB $0F, $F9, $D3 /// PSUBW MM2, MM3 // MM2 contains now: 255 - alpha = F2 + + // Now calculate factor 1. Alpha is still in MM3, but the r and b components of Color must be swapped. + MOV ECX, [Color] + BSWAP ECX + ROR ECX, 8 + DB $0F, $6E, $C9 /// MOVD MM1, ECX // Load the color and convert to word sized values. + DB $0F, $EF, $E4 /// PXOR MM4, MM4 + DB $0F, $60, $CC /// PUNPCKLBW MM1, MM4 + DB $0F, $D5, $CB /// PMULLW MM1, MM3 // MM1 contains now: color * alpha = F1 + +@1: // The pixel loop calculates an entire pixel in one run. + DB $0F, $6E, $00 /// MOVD MM0, [EAX] + DB $0F, $60, $C4 /// PUNPCKLBW MM0, MM4 + + DB $0F, $D5, $C2 /// PMULLW MM0, MM2 // calculate F1 + F2 * target + DB $0F, $FD, $C1 /// PADDW MM0, MM1 + DB $0F, $71, $D0, $08 /// PSRLW MM0, 8 // divide by 256 + + DB $0F, $67, $C0 /// PACKUSWB MM0, MM0 // convert words to bytes with saturation + DB $0F, $7E, $00 /// MOVD [EAX], MM0 // store the result + + ADD EAX, 4 + DEC EDX + JNZ @1 +end; + +procedure EMMS; +// Reset MMX state to use the FPU for other tasks again. +asm + DB $0F, $77 /// EMMS +end; + +function GetBitmapBitsFromDeviceContext(DC: HDC; var Width, Height: Integer): Pointer; +// Helper function used to retrieve the bitmap selected into the given device context. If there is a bitmap then +// the function will return a pointer to its bits otherwise nil is returned. +// Additionally the dimensions of the bitmap are returned. +var + Bitmap: HBITMAP; + DIB: TDIBSection; +begin + Result := nil; + Width := 0; + Height := 0; + + Bitmap := GetCurrentObject(DC, OBJ_BITMAP); + if Bitmap <> 0 then + begin + if GetObject(Bitmap, SizeOf(DIB), @DIB) = SizeOf(DIB) then + begin + Assert(DIB.dsBm.bmPlanes * DIB.dsBm.bmBitsPixel = 32, 'Alpha blending error: bitmap must use 32 bpp.'); + Result := DIB.dsBm.bmBits; + Width := DIB.dsBmih.biWidth; + Height := DIB.dsBmih.biHeight; + end; + end; + Assert(Result <> nil, 'Alpha blending DC error: no bitmap available.'); +end; + +function CalculateScanline(Bits: Pointer; Width, Height, Row: Integer): Pointer; +// Helper function to calculate the start address for the given row. +begin + if Height > 0 then // bottom-up DIB + Row := Height - Row - 1; + // Return DWORD aligned address of the requested scanline. + Integer(Result) := Integer(Bits) + Row * ((Width * 32 + 31) and not 31) div 8; +end; + +procedure ConvertBitmapEx(Image32: TBitmap; var OutImage: TBitmap; const BackGndColor: TColor); + +var + I, N: Integer; + LongColor: DWORD; + SourceRed, SourceGreen, SourceBlue, BkGndRed, BkGndGreen, BkGndBlue, RedTarget, GreenTarget, BlueTarget, Alpha: Byte; + Target, Mask: TBitmap; + LineDeltaImage32, PixelDeltaImage32, LineDeltaTarget, PixelDeltaTarget, LineDeltaMask, PixelDeltaMask: Integer; + PLineImage32, PLineTarget, PLineMask, PPixelImage32, PPixelTarget, PPixelMask: PByte; +begin + // Algorithm only works for bitmaps with a height > 1 pixel, should not be a limitation + // as it would then be a line! + if (Image32.PixelFormat = pf32Bit) and (Image32.Height > 1) then + begin + Target := TBitmap.Create; + Mask := TBitmap.Create; + try + Target.PixelFormat := pf32Bit; + Target.Width := Image32.Width; + Target.Height := Image32.Height; + Target.Assign(Image32); + + Mask.PixelFormat := pf32Bit; + Mask.Width := Image32.Width; + Mask.Height := Image32.Height; + Mask.Canvas.Brush.Color := BackGndColor; + Mask.Canvas.FillRect(Mask.Canvas.ClipRect); + + LineDeltaImage32 := DWORD( Image32.ScanLine[1]) - DWORD( Image32.ScanLine[0]); + LineDeltaTarget := DWORD( Target.ScanLine[1]) - DWORD( Target.ScanLine[0]); + LineDeltaMask := DWORD( Mask.ScanLine[1]) - DWORD( Mask.ScanLine[0]); + + PixelDeltaImage32 := SizeOf(TRGBQuad); + PixelDeltaTarget := SizeOf(TRGBQuad); + PixelDeltaMask := SizeOf(TRGBQuad); + + PLineImage32 := Image32.ScanLine[0]; + PLineTarget := Target.ScanLine[0]; + PLineMask := Mask.ScanLine[0]; + + for I := 0 to Image32.Height - 1 do + begin + PPixelImage32 := PLineImage32; + PPixelTarget := PLineTarget; + PPixelMask := PLineMask; + + for N := 0 to Image32.Width - 1 do + begin + // Source GetColorValues ; Profiled = ~24-30% of time + LongColor := PDWORD( PPixelImage32)^; + SourceBlue := LongColor and $000000FF; + SourceGreen := (LongColor and $0000FF00) shr 8; + SourceRed := (LongColor and $00FF0000) shr 16; + Alpha := (LongColor and $FF000000) shr 24; + + // Mask GetColorValues ; Profiled = ~24-30% of time + LongColor := PDWORD( PPixelMask)^; + BkGndBlue := LongColor and $000000FF; + BkGndGreen := (LongColor and $0000FF00) shr 8; + BkGndRed := (LongColor and $00FF0000) shr 16; + + if Alpha < High(Byte) then + begin + // displayColor = sourceColor×alpha / 255 + backgroundColor×(255 – alpha) / 255 + // Profiled = ~15-24% of time + RedTarget := SourceRed*Alpha shr 8 + BkGndRed*(255-Alpha) shr 8; + GreenTarget := SourceGreen*Alpha shr 8 + BkGndGreen*(255-Alpha) shr 8; + BlueTarget := SourceBlue*Alpha shr 8 + BkGndBlue*(255-Alpha) shr 8; + end else + begin + // skip non-blended pixels + RedTarget := SourceRed; + GreenTarget := SourceGreen; + BlueTarget := SourceBlue; + end; + + // Create the RGB DWORD color ; Profiled = ~8%-9%% of time + // Mask out all but the alpha channel then build the backwards stored RGB preserving the alpha channel bits + PDWORD(PPixelTarget)^ := ((BlueTarget) or (GreenTarget shl 8)or (RedTarget shl 16)); + + Inc(PPixelImage32, PixelDeltaImage32); + Inc(PPixelTarget, PixelDeltaTarget); + Inc(PPixelMask, PixelDeltaMask); + end; + Inc(PLineImage32, LineDeltaImage32); + Inc(PLineTarget, LineDeltaTarget); + Inc(PLineMask, LineDeltaMask); + end; + OutImage.Assign(Target); + finally + FreeAndNil(Target); + FreeAndNil(Mask); + end; + end else + OutImage.Assign(Image32) +end; + +procedure AlphaBlend(Source, Destination: HDC; R: TRect; Target: TPoint; Mode: TCommonBlendMode; ConstantAlpha, Bias: Integer); + +// NOTE::::::::::::: +// AlphaBlend does not respect any clipping in the DC!!!!!!! +// + +// Optimized alpha blend procedure using MMX instructions to perform as quick as possible. +// For this procedure to work properly it is important that both source and target bitmap use the 32 bit color format. +// R describes the source rectangle to work on. +// Target is the place (upper left corner) in the target bitmap where to blend to. Note that source width + X offset +// must be less or equal to the target width. Similar for the height. +// If Mode is bmConstantAlpha then the blend operation uses the given ConstantAlpha value for all pixels. +// If Mode is bmPerPixelAlpha then each pixel is blended using its individual alpha value (the alpha value of the source). +// If Mode is bmMasterAlpha then each pixel is blended using its individual alpha value multiplied by ConstantAlpha. +// If Mode is bmConstantAlphaAndColor then each destination pixel is blended using ConstantAlpha but also a constant +// color which will be obtained from Bias. In this case no offset value is added, otherwise Bias is used as offset. +// Blending of a color into target only (bmConstantAlphaAndColor) ignores Source (the DC) and Target (the position). +// CAUTION: This procedure does not check whether MMX instructions are actually available! Call it only if MMX is really +// usable. + +var + Y: Integer; + SourceRun, + TargetRun: PByte; + + SourceBits, + DestBits: Pointer; + SourceWidth, + SourceHeight, + DestWidth, + DestHeight: Integer; + +begin + if not IsRectEmpty(R) then + begin + // Note: it is tempting to optimize the special cases for constant alpha 0 and 255 by just ignoring soure + // (alpha = 0) or simply do a blit (alpha = 255). But this does not take the bias into account. + case Mode of + cbmConstantAlpha: + begin + // Get a pointer to the bitmap bits for the source and target device contexts. + // Note: this supposes that both contexts do actually have bitmaps assigned! + SourceBits := GetBitmapBitsFromDeviceContext(Source, SourceWidth, SourceHeight); + DestBits := GetBitmapBitsFromDeviceContext(Destination, DestWidth, DestHeight); + if Assigned(SourceBits) and Assigned(DestBits) then + begin + for Y := 0 to R.Bottom - R.Top - 1 do + begin + SourceRun := CalculateScanline(SourceBits, SourceWidth, SourceHeight, Y + R.Top); + Inc(SourceRun, 4 * R.Left); + TargetRun := CalculateScanline(DestBits, DestWidth, DestHeight, Y + Target.Y); + Inc(TargetRun, 4 * Target.X); + AlphaBlendLineConstant(SourceRun, TargetRun, R.Right - R.Left, ConstantAlpha, Bias); + end; + end; + EMMS; + end; + cbmPerPixelAlpha: + begin + SourceBits := GetBitmapBitsFromDeviceContext(Source, SourceWidth, SourceHeight); + DestBits := GetBitmapBitsFromDeviceContext(Destination, DestWidth, DestHeight); + if Assigned(SourceBits) and Assigned(DestBits) then + begin + for Y := 0 to R.Bottom - R.Top - 1 do + begin + SourceRun := CalculateScanline(SourceBits, SourceWidth, SourceHeight, Y + R.Top); + Inc(SourceRun, 4 * R.Left); + TargetRun := CalculateScanline(DestBits, DestWidth, DestHeight, Y + Target.Y); + Inc(TargetRun, 4 * Target.X); + AlphaBlendLinePerPixel(SourceRun, TargetRun, R.Right - R.Left, Bias); + end; + end; + EMMS; + end; + cbmMasterAlpha: + begin + SourceBits := GetBitmapBitsFromDeviceContext(Source, SourceWidth, SourceHeight); + DestBits := GetBitmapBitsFromDeviceContext(Destination, DestWidth, DestHeight); + if Assigned(SourceBits) and Assigned(DestBits) then + begin + for Y := 0 to R.Bottom - R.Top - 1 do + begin + SourceRun := CalculateScanline(SourceBits, SourceWidth, SourceHeight, Y + R.Top); + Inc(SourceRun, 4 * Target.X); + TargetRun := CalculateScanline(DestBits, DestWidth, DestHeight, Y + Target.Y); + AlphaBlendLineMaster(SourceRun, TargetRun, R.Right - R.Left, ConstantAlpha, Bias); + end; + end; + EMMS; + end; + cbmConstantAlphaAndColor: + begin + // Source is ignore since there is a constant color value. + DestBits := GetBitmapBitsFromDeviceContext(Destination, DestWidth, DestHeight); + if Assigned(DestBits) then + begin + for Y := 0 to R.Bottom - R.Top - 1 do + begin + TargetRun := CalculateScanline(DestBits, DestWidth, DestHeight, Y + R.Top); + Inc(TargetRun, 4 * R.Left); + AlphaBlendLineMasterAndColor(TargetRun, R.Right - R.Left, ConstantAlpha, Bias); + end; + end; + EMMS; + end; + end; + end; +end; + +function DrawTextWEx(DC: HDC; Text: WideString; var lpRect: TRect; + Flags: TCommonDrawTextWFlags; MaxLineCount: Integer): Integer; +// Creates and extented version of DrawTextW that works in Win9x as well as +// NT. If MaxLineCount is -1 then the line count will depend on the Text. All +// lines that are extracted from the text are drawn or calcuated in the rectangle +// +// The result is the number of lines actually drawn, note if the CalcRect flags are +// used the result will be the number of lines that would be drawn +var + TextMetrics: TTextMetric; + Size: TSize; + TextPosX, TextPosY, i, NewLineTop: Integer; + TextOutFlags: Longword; + LineRect, OldlpRect: TRect; + Buffer: TCommonWideCharArray; + BufferIndex: PWideChar; + ShortText: WideString; + VOffset, SplitCount: Integer; +begin + OldlpRect := lpRect; + GetTextMetrics(DC, TextMetrics); + + TextOutFlags := 0; + if dtRTLReading in Flags then + TextOutFlags := TextOutFlags or ETO_RTLREADING; + if not (dtNoClip in Flags) then + TextOutFlags := TextOutFlags or ETO_CLIPPED; + + if dtSingleLine in Flags then + begin + Result := 1; // Easy one! + + // Set up the LineRect in the Vertical Direction + // Default to the top + LineRect := Rect(lpRect.Left, lpRect.Top, lpRect.Right, lpRect.Top + TextMetrics.tmHeight); + if dtVCenter in Flags then + OffsetRect(LineRect, 0, (RectHeight(lpRect) - RectHeight(LineRect)) div 2) + else + if dtBottom in Flags then + OffsetRect(LineRect, 0, RectHeight(lpRect) - RectHeight(LineRect)); + TextPosX := LineRect.Left; + TextPosY := LineRect.Top; + + if dtEndEllipsis in Flags then + Text := ShortenTextW(DC, Text, RectWidth(LineRect)); + + GetTextExtentPoint32W(DC, PWideChar(Text), Length(Text), Size); + if Flags * [dtCenter, dtRight] <> [] then + begin + if dtCenter in Flags then + TextPosX := TextPosX + (RectWidth(LineRect) - Size.cx) div 2 + else + TextPosX := LineRect.Right - Size.cx + end; + + { if dtCenter in Flags then + SetTextAlign(DC, TA_CENTER) + else + if dtLeft in Flags then + SetTextAlign(DC, TA_LEFT) + else + if dtRight in Flags then + SetTextAlign(DC, TA_RIGHT); } + + // See if the caller wants to only calculate the rectangle for the text + if dtCalcRect in Flags then + begin + // Assume that the text will fit in the calulated line/rect + lpRect.Left := TextPosX; + lpRect.Top := TextPosY; + lpRect.Bottom := LineRect.Bottom; + lpRect.Right := lpRect.Left + Size.cx; + + // If it does not then we have to do some adjusting + if Size.cx > RectWidth(OldlpRect) then + begin + if dtCalcRectAlign in Flags then + begin + lpRect.Left := OldlpRect.Left; + lpRect.Right := OldlpRect.Right; + end; + if dtCalcRectAdjR in Flags then + lpRect.Right := lpRect.Left + Size.cx; + end + end else + ExtTextOutW(DC, TextPosX, TextPosY, TextOutFlags, @LineRect, PWideChar(Text), Length(Text), nil); + + end else + begin + // It is multi-line + SplitCount := SplitTextW(DC, Text, lpRect.Right-lpRect.Left, Buffer, MaxLineCount); + i := 0; + if Length(Buffer) > 0 then + begin + // We call ourselves recursivly one line at a time to draw the multi line text + Include(Flags, dtSingleLine); + BufferIndex := @Buffer[0]; + + // Calculate where the center of the text block is with respect to the + // rectangle + { if dtVCenter in Flags then + begin + if (SplitCount > MaxLineCount) and (MaxLineCount > -1) then + VOffset := (RectHeight(OldlpRect) - (TextMetrics.tmHeight * MaxLineCount)) div 2 + else + VOffset := (RectHeight(OldlpRect) - (TextMetrics.tmHeight * SplitCount)) div 2; + if VOffset < 0 then + VOffset := 0; + end else + if dtBottom in Flags then + begin + VOffset := (RectHeight(OldlpRect) - (TextMetrics.tmHeight * MaxLineCount)) + end else + VOffset := 0; } + + // Fix for multitext vertical alignment from Solerman Kaplon 11.9.04 + if (dtVCenter in Flags) or (dtBottom in Flags) then + begin + if (SplitCount > MaxLineCount) and (MaxLineCount > -1) then + VOffset := (RectHeight(OldlpRect) - (TextMetrics.tmHeight * MaxLineCount)) + else + VOffset := (RectHeight(OldlpRect) - (TextMetrics.tmHeight * SplitCount)); + if VOffset < 0 then + VOffset := 0 + else + if dtVCenter in Flags then + VOffset := VOffset shr 1; + end else + VOffset := 0; + while ((i < MaxLineCount) or (MaxLineCount < 0)) and (BufferIndex^ <> WideNull) do + begin + // Calculate where the top of a single line of text starts + NewLineTop := OldlpRect.Top + (i * TextMetrics.tmHeight) + VOffset; + LineRect := Rect(OldlpRect.Left, NewLineTop, OldlpRect.Right, NewLineTop + TextMetrics.tmHeight); + if (dtEndEllipsis in Flags) {and not(dtCalcRect in Flags)} then + begin + ShortText := ShortenTextW(DC, WideString(BufferIndex), RectWidth(OldlpRect)); + DrawTextWEx(DC, ShortText, LineRect, Flags, MaxLineCount); + end else + DrawTextWEx(DC, WideString(BufferIndex), LineRect, Flags, MaxLineCount); + + if dtCalcRect in Flags then + begin + if i = 0 then + lpRect := LineRect + else + UnionRect(lpRect, lpRect, LineRect); + end; + Inc(BufferIndex, lStrLenW(BufferIndex) + 1); + Inc(i) + end; + + if (SplitCount = 0) and (dtCalcRect in Flags) then + begin + if dtCalcRectAdjR in Flags then + begin + lpRect.Right := lpRect.Left; + lpRect.Bottom := lpRect.Top + TextMetrics.tmHeight + end else + begin + lpRect.Bottom := lpRect.Top; + lpREct.Right := lpRect.Left + TextMetrics.tmAveCharWidth + end + end; + + if SplitCount > MaxLineCount then + Result := MaxLineCount + else + Result := SplitCount + end else + Result := 0; + end +end; + + // Helpers to create a callback function out of a object method +{ ----------------------------------------------------------------------------- } +{ This is a piece of magic by Jeroen Mineur. Allows a class method to be used } +{ as a callback. Create a stub using CreateStub with the instance of the object } +{ the callback should call as the first parameter and the method as the second } +{ parameter, ie @TForm1.MyCallback or declare a type of object for the callback } +{ method and then use a variable of that type and set the variable to the } +{ method and pass it: } +{ } +{ type } +{ TEnumWindowsFunc = function (AHandle: hWnd; Param: lParam): BOOL of object; stdcall; } +{ } +{ TForm1 = class(TForm) } +{ private } +{ function EnumWindowsProc(AHandle: hWnd; Param: lParam): BOOL; stdcall; } +{ end; } +{ } +{ var } +{ MyFunc: TEnumWindowsFunc; } +{ Stub: pointer; } +{ begin } +{ MyFunct := EnumWindowsProc; } +{ Stub := CreateStub(Self, MyFunct); } +{ .... } +{ or } +{ } +{ var } +{ Stub: pointer; } +{ begin } +{ MyFunct := EnumWindowsProc; } +{ Stub := CreateStub(Self, TForm1.EnumWindowsProc); } +{ .... } +{ Now Stub can be passed as the callback pointer to any windows API } +{ Don't forget to call Dispose Stub when not needed } +{ ----------------------------------------------------------------------------- } +const + AsmPopEDX = $5A; + AsmMovEAX = $B8; + AsmPushEAX = $50; + AsmPushEDX = $52; + AsmJmpShort = $E9; + +type + TStub = packed record + PopEDX: Byte; + MovEAX: Byte; + SelfPointer: Pointer; + PushEAX: Byte; + PushEDX: Byte; + JmpShort: Byte; + Displacement: Integer; + end; + +{ ----------------------------------------------------------------------------- } +function CreateStub(ObjectPtr: Pointer; MethodPtr: Pointer): Pointer; +var + Stub: ^TStub; +begin + // Allocate memory for the stub + // 1/10/04 Support for 64 bit, executable code must be in virtual space + Stub := VirtualAlloc(nil, SizeOf(TStub), MEM_COMMIT, PAGE_EXECUTE_READWRITE); + + // Pop the return address off the stack + Stub^.PopEDX := AsmPopEDX; + + // Push the object pointer on the stack + Stub^.MovEAX := AsmMovEAX; + Stub^.SelfPointer := ObjectPtr; + Stub^.PushEAX := AsmPushEAX; + + // Push the return address back on the stack + Stub^.PushEDX := AsmPushEDX; + + // Jump to the 'real' procedure, the method. + Stub^.JmpShort := AsmJmpShort; + Stub^.Displacement := (Integer(MethodPtr) - Integer(@(Stub^.JmpShort))) - + (SizeOf(Stub^.JmpShort) + SizeOf(Stub^.Displacement)); + + // Return a pointer to the stub + Result := Stub; +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +procedure DisposeStub(Stub: Pointer); +begin + // 1/10/04 Support for 64 bit, executable code must be in virtual space + VirtualFree(Stub, SizeOf(TStub),MEM_DECOMMIT); +end; +{ ----------------------------------------------------------------------------- } + +{$IFNDEF COMPILER_5_UP} +function Supports(const Instance: IUnknown; const IID: TGUID; out Intf): Boolean; +begin + Result := (Instance <> nil) and (Instance.QueryInterface(IID, Intf) = 0); +end; + +function Supports(const Instance: TObject; const IID: TGUID; out Intf): Boolean; overload; +begin + Result := False; + Pointer( Intf) := nil; + if Assigned(Instance) then + Result := Instance.GetInterface(IID, Intf) +end; + +procedure FreeAndNil(var Obj); +var + Temp: TObject; +begin + Temp := TObject(Obj); + Pointer(Obj) := nil; + Temp.Free; +end; +{$ENDIF} + +{$IFNDEF COMPILER_6_UP} +function Supports(const Instance: IUnknown; const IID: TGUID): Boolean; +var + Temp: IUnknown; +begin + {$IFNDEF COMPILER_5_UP} + Result := Supports(Instance, IID, Temp); + {$ELSE} + Result := SysUtils.Supports(Instance, IID, Temp) + {$ENDIF} +end; + +procedure ClearMenuItems(Menu: TMenu); +var + I: Integer; +begin + for I := Menu.Items.Count - 1 downto 0 do + Menu.Items[I].Free; +end; +{$ENDIF} + +procedure CreateProcessMP(ExeFile, Parameters, InitalDir: WideString); +var + pi: TProcessInformation; + siW: TStartupInfoW; + siA: _STARTUPINFOA; + wA, wB, wC: PWideChar; + aA, aB, aC: PChar; +begin + FillChar(pi, SizeOf(pi), #0); + if Assigned(CreateProcessW_MP) then + begin + FillChar(siW, SizeOf(siW), #0); + wA := nil; + wB := nil; + wC := nil; + if ExeFile <> '' then + wA := PWideChar(ExeFile); + if Parameters <> '' then + wB := PWideChar(Parameters); + if InitalDir <> '' then + wC := PWideChar(InitalDir); + + CreateProcessW_MP( + wA, // path to the executable file: + wB, + nil, + nil, + False, + NORMAL_PRIORITY_CLASS, + nil, + wC, + siW, + pi ); + end else + begin + FillChar(siA, SizeOf(siA), #0); + aA := nil; + aB := nil; + aC := nil; + if ExeFile <> '' then + aA := PChar( string(ExeFile)); + if Parameters <> '' then + aB := PChar( string(Parameters)); + if InitalDir <> '' then + aC := PChar( string(InitalDir)); + CreateProcessA( + aA, + aB, // path to the executable file: + nil, + nil, + False, + NORMAL_PRIORITY_CLASS, + nil, + aC, + siA, + pi ); + end; + if pi.hProcess <> 0 then + CloseHandle(pi.hProcess); + if pi.hThread <> 0 then + CloseHandle(pi.hThread) +end; + + +function DiffRectHorz(Rect1, Rect2: TRect): TRect; +// Returns the "difference" rectangle of the passed rects in the Horz direction. +// Assumes that one corner is common between the two rects +begin + Rect1 := ProperRect(Rect1); + Rect2 := ProperRect(Rect2); + // Make sure we contain every thing horizontally + Result.Left := Min(Rect1.Left, Rect2.Left); + Result.Right := Max(Rect1.Right, Rect1.Right); + // Now find the difference rect height + if Rect1.Top = Rect2.Top then + begin + // The tops are equal so it must be the bottom that contains the difference + Result.Bottom := Max(Rect1.Bottom, Rect2.Bottom); + Result.Top := Min(Rect1.Bottom, Rect2.Bottom); + end else + begin + // The bottoms are equal so it must be the tops that contains the difference + Result.Bottom := Max(Rect1.Top, Rect2.Top); + Result.Top := Min(Rect1.Top, Rect2.Top); + end +end; + +function DiffRectVert(Rect1, Rect2: TRect): TRect; +// Returns the "difference" rectangle of the passed rects in the Vert direction. +// Assumes that one corner is common between the two rects +begin + Rect1 := ProperRect(Rect1); + Rect2 := ProperRect(Rect2); + // Make sure we contain every thing vertically + Result.Top := Min(Rect1.Top, Rect2.Bottom); + Result.Bottom := Max(Rect1.Top, Rect1.Bottom); + // Now find the difference rect width + if Rect1.Left = Rect2.Left then + begin + // The tops are equal so it must be the bottom that contains the difference + Result.Right := Max(Rect1.Right, Rect2.Right); + Result.Left := Min(Rect1.Right, Rect2.Right); + end else + begin + // The bottoms are equal so it must be the tops that contains the difference + Result.Right := Max(Rect1.Left, Rect2.Left); + Result.Left := Min(Rect1.Left, Rect2.Left); + end +end; + +function AbsRect(ARect: TRect): TRect; +// Makes all coodinates positive +begin + Result := ARect; + if Result.Left < 0 then + Result.Left := 0; + if Result.Top < 0 then + Result.Top := 0; + if Result.Right < 0 then + Result.Right := 0; + if Result.Bottom < 0 then + Result.Bottom := 0; +end; + +function CenterRectInRect(OuterRect, InnerRect: TRect): TRect; +begin + if RectWidth(InnerRect) > RectWidth(OuterRect) then + begin + // If the inner rect is wider than the result is the outer rect x bounds + Result.Left := OuterRect.Left; + Result.Right := OuterRect.Right; + end else + begin + // If not then center the inner rectangle in the outer in the x direction + Result.Left := OuterRect.Left; + Result.Right := Result.Left + RectWidth(InnerRect); + OffsetRect(Result, (RectWidth(OuterRect) - RectWidth(InnerRect)) div 2, 0); + end; + if RectHeight(InnerRect) > RectHeight(OuterRect) then + begin + // If the inner rect is wider than the result is the outer rect y bounds + Result.Top := OuterRect.Top; + Result.Bottom := OuterRect.Bottom; + end else + begin + // If not then center the inner rectangle in the outer in the y direction + Result.Top := OuterRect.Top; + Result.Bottom := Result.Top + RectHeight(InnerRect); + OffsetRect(Result, 0, (RectHeight(OuterRect) - RectHeight(InnerRect)) div 2); + end; +end; + +function CenterRectHorz(OuterRect, InnerRect: TRect): TRect; +begin + if RectWidth(InnerRect) > RectWidth(OuterRect) then + begin + // If the inner rect is wider than the result is the outer rect x bounds + Result.Left := OuterRect.Left; + Result.Right := OuterRect.Right; + end else + begin + // If not then center the inner rectangle in the outer in the x direction + Result.Left := OuterRect.Left; + Result.Right := Result.Left + RectWidth(InnerRect); + OffsetRect(Result, (RectWidth(OuterRect) - RectWidth(InnerRect)) div 2, 0); + end; +end; + +function CenterRectVert(OuterRect, InnerRect: TRect): TRect; +begin +if RectHeight(InnerRect) > RectHeight(OuterRect) then + begin + // If the inner rect is wider than the result is the outer rect y bounds + Result.Top := OuterRect.Top; + Result.Bottom := OuterRect.Bottom; + end else + begin + // If not then center the inner rectangle in the outer in the y direction + Result.Top := OuterRect.Top; + Result.Bottom := Result.Top + RectHeight(InnerRect); + OffsetRect(Result, 0, (RectHeight(OuterRect) - RectHeight(InnerRect)) div 2); + end; +end; + +function CommonSupports(const Instance: IUnknown; const IID: TGUID; out Intf): Boolean; overload; +begin + Result := (Instance <> nil) and (Instance.QueryInterface(IID, Intf) = S_OK); +end; + +function CommonSupports(const Instance: TObject; const IID: TGUID; out Intf): Boolean; overload; +var + LUnknown: IUnknown; +begin + Result := (Instance <> nil) and + (Instance.GetInterface(IID, Intf) or + (Instance.GetInterface(IUnknown, LUnknown) and Supports(LUnknown, IID, Intf))); +end; + +function CommonSupports(const Instance: IUnknown; const IID: TGUID): Boolean; overload; +var + Temp: IUnknown; +begin + Result := Supports(Instance, IID, Temp); +end; + +function CommonSupports(const Instance: TObject; const IID: TGUID): Boolean; overload; + var + Temp: IUnknown; +begin + Result := Supports(Instance, IID, Temp); +end; + +procedure CopyToNullBufferA(S: WideString; Buffer: PChar; CharCount: Cardinal); +var + ANSI: string; +begin + ANSI := S; + FillChar(Buffer^, CharCount, #0); + if Length(ANSI) > 0 then + begin + if Cardinal(Length(ANSI)) + 1 > CharCount then + CharCount := CharCount - 1 // Leave room for the null + else + CharCount := Length(ANSI); + MoveMemory(Buffer, PChar(ANSI), CharCount); + end +end; + +procedure CopyToNullBufferW(S: WideString; Buffer: PWideChar; CharCount: Cardinal); +begin + FillChar(Buffer^, CharCount * 2, #0); + if Length(S) > 0 then + begin + if Cardinal(Length(S)) + 2 > CharCount then + CharCount := CharCount - 2 // Leave room for the null + else + CharCount := Length(S); + MoveMemory(Buffer, PWideChar(S), CharCount * 2); + end +end; + +procedure MinMax(var A, B: Integer); +// Makes sure that A < B +var + Temp: Integer; +begin + if A > B then + begin + Temp := A; + A := B; + B := Temp + end +end; + +function IsRectProper(Rect: TRect): Boolean; +begin + Result := (Rect.Right >= Rect.Left) and (Rect.Bottom >= Rect.Top) +end; + +function AddCommas(NumberString: WideString): WideString; +var +// i: integer; + BufferA: array[0..128] of Char; + BufferW: array[0..128] of WideChar; +begin + // Make the number format based on the local not the US 3 digit comma format + if Assigned(GetNumberFormatW_MP) then + begin + GetNumberFormatW_MP(LOCALE_USER_DEFAULT, 0, PWideChar(NumberString), nil, BufferW, SizeOf(BufferW)); + Result := BufferW; + end + else begin + GetNumberFormatA(LOCALE_USER_DEFAULT, 0, PChar(string(NumberString)), nil, BufferA, SizeOf(BufferA)); + Result := BufferA + end; + + { Trimming white space in Unicode is tough don't pass any } + { i := Length(NumberString) mod 3; + if i = 0 then + i := 3; + while i < Length(NumberString) do + begin + InsertW(ThousandSeparator, NumberString, i); + Inc(i, 4); + end; + Result := NumberString } +end; + +function CalcuateFolderSize(FolderPath: WideString; Recurse: Boolean): Int64; + +// Recursivly gets the size of the folder and subfolders +var + S: string; + FreeSpaceAvailable, TotalSpace: Int64; + SectorsPerCluster, + BytesPerSector, + FreeClusters, + TotalClusters: DWORD; +begin + Result := 0; + if Recurse and WideIsDrive(FolderPath) then + begin + if IsUnicode and Assigned(GetDiskFreeSpaceExW_MP) then + begin + if GetDiskFreeSpaceExW_MP(PWideChar(FolderPath), FreeSpaceAvailable, TotalSpace, nil) then + Result := TotalSpace - FreeSpaceAvailable + end else + if not IsWin95_SR1 and Assigned(GetDiskFreeSpaceExA_MP) then + begin + S := FolderPath; + if GetDiskFreeSpaceExA_MP(PChar(S), FreeSpaceAvailable, TotalSpace, nil) then + Result := TotalSpace - FreeSpaceAvailable; + end else + begin + GetDiskFreeSpaceA(PChar( S), SectorsPerCluster, BytesPerSector, FreeClusters, + TotalClusters); + Result := SectorsPerCluster * BytesPerSector * TotalClusters + end; + end else + begin + SumFolderAbort := False; + SumFolder(FolderPath, Recurse, Result); + end +end; + +function GetMyDocumentsVirtualFolder: PItemIDList; + +const + MYCOMPUTER_GUID = WideString('::{450d8fba-ad25-11d0-98a8-0800361b1103}'); + +var + dwAttributes, pchEaten: ULONG; + Desktop: IShellFolder; +begin + Result := nil; + dwAttributes := 0; + SHGetDesktopFolder(Desktop); + pchEaten := Length(MYCOMPUTER_GUID); + if not Succeeded(Desktop.ParseDisplayName(0, nil, + PWideChar(MYCOMPUTER_GUID), pchEaten, Result, dwAttributes)) + then + Result := nil +end; + +procedure WideInsert(Source: WideString; var S: WideString; Index: Integer); +{ It appears there is a WideString Insert in the VCL already but since mine } +{ looks better and is simpler and I spent my time I will use mine } +{ _WStrInsert in System through compiler magic. } +var + OriginalLen: integer; +begin + if (Index < Length(S) + 1) and (Index > - 1) then + begin + OriginalLen := Length(S); + SetLength(S, Length(Source) + Length(S)); + { We are correct up to Index } + { Slide to end of new string leaving space for insert } + Move(S[Index + 1], S[Index + 1 + Length(Source)], (OriginalLen - Index) * 2); + Move(Source[1], S[Index + 1], Length(Source) * 2); + end +end; + +function WideGetCurrentDir: WideString; +var + BufferW: array[0..MAX_PATH] of Widechar; + BufferA: array[0..MAX_PATH] of Char; +begin + if Assigned(GetCurrentDirectoryW_MP) then + begin + if GetCurrentDirectoryW_MP(MAX_PATH, BufferW) > 0 then + Result := BufferW; + end else + begin + if GetCurrentDirectoryA(MAX_PATH, BufferA) > 0 then + Result := BufferA; + end +end; + +function WideGetTempDir: WideString; +var + BufferW: array[0..MAX_PATH] of Widechar; + BufferA: array[0..MAX_PATH] of Char; +begin + if Assigned(GetTempPathW_MP) then + begin + if GetTempPathW_MP(MAX_PATH, BufferW) > 0 then + Result := BufferW; + end else + begin + if GetTempPathA(MAX_PATH, BufferA) > 0 then + Result := BufferA; + end +end; + +function WideIncludeTrailingBackslash(Path: WideString): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := TntSysUtils.WideIncludeTrailingBackslash(Path); + {$ELSE} + {$IFDEF COMPILER_6_UP} + {$WARN SYMBOL_PLATFORM OFF} + {$ENDIF} + Result := IncludeTrailingBackslash(Path); + {$IFDEF COMPILER_6_UP} + {$WARN SYMBOL_PLATFORM ON} + {$ENDIF} + {$ENDIF} +end; + +function WideIncrementalSearch(CompareStr, Mask: WideString): Integer; +begin + SetLength(CompareStr, Length(Mask)); + + if IsUnicode then + Result := lstrcmpiW(PWideChar(Mask), PWideChar(CompareStr)) + else + Result := lstrcmpi(PChar(string(Mask)), PChar(string(CompareStr))); +end; + +function WideIntToStr(Value: integer): WideString; +{ Need to find a way to do this in Unicode. } +begin + Result := IntToStr(Value); +end; + +function WideIsDrive(Drive: WideString): Boolean; +begin + if Length(Drive) = 3 then + Result := (LowerCase(Drive[1]) >= 'a') and (LowerCase(Drive[1]) <= 'z') and (Drive[2] = ':') and (Drive[3] = '\') + else + if Length(Drive) = 2 then + Result := (LowerCase(Drive[1]) >= 'a') and (LowerCase(Drive[1]) <= 'z') and (Drive[2] = ':') + else + Result := False +end; + +function WideIsFloppy(FileFolder: WideString): boolean; +begin + if Length(FileFolder) > 0 then + Result := WideIsDrive(FileFolder) and (Char(FileFolder[1]) in ['A', 'a', 'B', 'b']) + else + Result := False +end; + + +function IsAnyMouseButtonDown: Boolean; +begin + Result := not(((GetAsyncKeyState(VK_LBUTTON) and $8000) = 0) and + ((GetAsyncKeyState(VK_RBUTTON) and $8000) = 0) and + ((GetAsyncKeyState(VK_MBUTTON) and $8000) = 0)) +end; + +function IsFTPPath(Path: WideString): Boolean; +begin + if Length(Path) > 3 then + begin + Path := UpperCase(Path); + Result := (Path[1] = 'F') and (Path[2] = 'T') and (Path[3] = 'P') + end else + Result := False +end; + +function WideNewFolderName(ParentFolder: WideString; SuggestedFolderName: WideString = ''): WideString; +var + i: integer; + TempFoldername: String; +begin + ParentFolder := WideStripTrailingBackslash(ParentFolder, True); // Strip even if a root folder + i := 1; + if SuggestedFolderName = '' then + Begin + Result := ParentFolder + '\' + STR_NEWFOLDER; + TempFoldername := STR_NEWFOLDER; + end + else + Begin + Result := ParentFolder + '\' + SuggestedFolderName; + Tempfoldername := SuggestedFolderName; + End; + while DirExistsW(PWideChar(Result)) and (i <= High(WORD)) do + begin + Result := ParentFolder + '\' + Tempfoldername + ' (' + IntToStr(i) + ')'; + Inc(i); + end; + if i > High(WORD) then + Result := ''; +end; + +function WidePathMatchSpec(Path, Mask: WideString): Boolean; +begin + if Assigned(PathMatchSpecW_MP) then + Result := PathMatchSpecW_MP(PWideChar(Path), PWideChar( Mask)) + else + if Assigned(PathMatchSpecA_MP) then + Result := PathMatchSpecA_MP(PChar( string(Path)), PChar( string(Mask))) + else + Result := False +end; + +function WidePathMatchSpecExists: Boolean; +begin + Result := Assigned(PathMatchSpecW_MP) or Assigned(PathMatchSpecA_MP) +end; + +function WideIsPathDelimiter(const S: WideString; Index: Integer): Boolean; +begin + Result := (Index > 0) and (Index <= Length(S)) and (S[Index] = '\'); +end; + +function IsTextTrueType(DC: HDC): Boolean; +var + TextMetrics: TTextMetric; +begin + GetTextMetrics(DC, TextMetrics); + Result := TextMetrics.tmPitchAndFamily and TMPF_TRUETYPE <> 0 +end; + +function IsTextTrueType(Canvas: TCanvas): Boolean; +begin + Result := IsTextTrueType(Canvas.Handle); +end; + +function IsUNCPath(const Path: WideString): Boolean; +begin + Result := ((Path[1] = '\') and (Path[2] = '\')) and (DirExistsW(PWideChar(Path)) or FileExistsW(Path)) +end; + + function StrRetToStr(StrRet: TStrRet; APIDL: PItemIDList): WideString; +{ Extracts the string from the StrRet structure. } +var + P: PChar; +// S: string; +begin + case StrRet.uType of + STRRET_CSTR: + begin + SetString(Result, StrRet.cStr, lStrLen(StrRet.cStr)); + // Result := S + end; + STRRET_OFFSET: + begin + if Assigned(APIDL) then + begin + {$R-} + P := PChar(@(APIDL).mkid.abID[StrRet.uOffset - SizeOf(APIDL.mkid.cb)]); + {$R+} + SetString(Result, P, StrLen(P)); + // Result := S; + end else + Result := ''; + end; + STRRET_WSTR: + begin + Result := StrRet.pOleStr; + if Assigned(StrRet.pOleStr) then + PIDLMgr.FreeOLEStr(StrRet.pOLEStr); + end; + end; +end; + +function SystemDirectory: WideString; +var + Len: integer; + S: string; +begin + Result := ''; + if Win32Platform = VER_PLATFORM_WIN32_NT then + Len := GetSystemDirectoryW_MP(PWideChar(Result), 0) + else + Len := GetSystemDirectoryA(PChar(S), 0); + if Len > 0 then + begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + begin + SetLength(Result, Len - 1); + GetSystemDirectoryW_MP(PWideChar(Result), Len); + end else + begin + SetLength(S, Len - 1); + GetSystemDirectoryA(PChar(S), Len); + Result := S + end + end +end; + +function SysMenuFont: HFONT; +var + MetricsA: TNonClientMetricsA; + MetricsW: TNonClientMetricsW; +begin + if IsUnicode then + begin + FillChar(MetricsW, SizeOf(MetricsW), #0); + MetricsW.cbSize := SizeOf(MetricsW); + SystemParametersInfoW_MP(SPI_GETNONCLIENTMETRICS, Sizeof(MetricsW), @MetricsW, 0); + Result := CreateFontIndirectW_MP(MetricsW.lfMenuFont); + end else + begin + FillChar(MetricsA, SizeOf(MetricsA), #0); + MetricsA.cbSize := SizeOf(MetricsA); + SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, Sizeof(MetricsA), @MetricsA, 0); + Result := CreateFontIndirectA(MetricsA.lfMenuFont); + end +end; + +function SysMenuHeight: Integer; +var + MetricsA: TNonClientMetricsA; + MetricsW: TNonClientMetricsW; +begin + if IsUnicode then + begin + FillChar(MetricsW, SizeOf(MetricsW), #0); + MetricsW.cbSize := SizeOf(MetricsW); + SystemParametersInfoW_MP(SPI_GETNONCLIENTMETRICS, Sizeof(MetricsW), @MetricsW, 0); + Result := MetricsW.iMenuHeight + end else + begin + FillChar(MetricsA, SizeOf(MetricsA), #0); + MetricsA.cbSize := SizeOf(MetricsA); + SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, Sizeof(MetricsA), @MetricsA, 0); + Result := MetricsA.iMenuHeight + end +end; + +function TextExtentW(Text: WideString; Font: TFont): TSize; +var + Canvas: TCanvas; +begin + FillChar(Result, SizeOf(Result), #0); + if Text <> '' then + begin + Canvas := TCanvas.Create; + try + Canvas.Handle := GetDC(0); + Canvas.Lock; + Canvas.Font.Assign(Font); + Result := InternalTextExtentW(PWideChar(Text), Canvas.Handle); + finally + if Assigned(Canvas) and (Canvas.Handle <> 0) then + ReleaseDC(0, Canvas.Handle); + Canvas.Unlock; + Canvas.Free + end + end +end; + +function TextExtentW(Text: WideString; Canvas: TCanvas): TSize; +begin + FillChar(Result, SizeOf(Result), #0); + if Assigned(Canvas) and (Text <> '') then + begin + Canvas.Lock; + Result := InternalTextExtentW(PWideChar(Text), Canvas.Handle); + Canvas.Unlock; + end; +end; + +function TextExtentW(Text: PWideChar; Canvas: TCanvas): TSize; +begin + FillChar(Result, SizeOf(Result), #0); + if Assigned(Canvas) and (Assigned(Text)) then + begin + Canvas.Lock; + Result := InternalTextExtentW(Text, Canvas.Handle); + Canvas.Unlock; + end; +end; + +function TextExtentW(Text: PWideChar; DC: hDC): TSize; +begin + FillChar(Result, SizeOf(Result), #0); + if (DC <> 0) and (Assigned(Text)) then + Result := InternalTextExtentW(Text, DC); +end; + +type + TABCArray = array of TABC; + +function TextTrueExtentsW(Text: WideString; DC: HDC): TSize; +var + ABC: TABC; + TextMetrics: TTextMetric; + S: string; + i: integer; +begin + // Get the Height at least + GetTextExtentPoint32W(DC, PWideChar(Text), Length(Text), Result); + + GetTextMetrics(DC, TextMetrics); + if TextMetrics.tmPitchAndFamily and TMPF_TRUETYPE <> 0 then + begin + Result.cx := 0; + // Is TrueType + if Win32Platform = VER_PLATFORM_WIN32_NT then + begin + for i := 1 to Length(Text) do + begin + GetCharABCWidthsW_MP(DC, Ord(Text[i]), Ord(Text[i]), ABC); + Result.cx := Result.cx + ABC.abcA + integer(ABC.abcB) + ABC.abcC; + end + end else + begin + S := Text; + for i := 1 to Length(S) do + begin + GetCharABCWidthsA(DC, Ord(S[i]), Ord(S[i]), ABC); + Result.cx := Result.cx + ABC.abcA + integer(ABC.abcB) + ABC.abcC; + end + end; + end +end; + +function UniqueFileName(const AFilePath: WideString): WideString; + +{ Creates a unique file name in based on other files in the passed path } + +var + i: integer; + WP: PWideChar; +begin + Result := AFilePath; + i := 2; + while FileExistsW(Result) and (i < 20) do + begin + Result := AFilePath; + WP := WideStrRScan(PWideChar( Result), '.'); + if Assigned(WP) then + WideInsert( ' (' + WideIntToStr(i) + ')', Result, PWideChar(WP) - PWideChar(Result)) + else begin + Result := ''; + Break; + end; + Inc(i) + end; +end; + +function TNTConditionallyDefined: Boolean; +begin + {$IFDEF TNTSUPPORT} + Result := True; + {$ELSE} + Result := False; + {$ENDIF} +end; + +function UnicodeStringLists: Boolean; +begin + {$IFDEF TNTSUPPORT} + Result := True; + {$ELSE} + Result := False; + {$ENDIF} +end; + +function UniqueDirName(const ADirPath: WideString): WideString; +var + i: integer; +begin + Result := ADirPath; + i := 2; + while DirExistsW(PWideChar(Result)) and (i < 20) do + begin + Result := ADirPath; + WideInsert( ' (' + WideIntToStr(i) + ')', Result, Length(Result)); + Inc(i) + end; +end; + +function WideStripExt(AFile: WideString): WideString; +{ Strips the extenstion off a file name } +var + i: integer; + Done: Boolean; +begin + i := Length(AFile); + Done := False; + Result := AFile; + while (i > 0) and not Done do + begin + if AFile[i] = '.' then + begin + Done := True; + SetLength(Result, i - 1); + end; + Dec(i); + end; +end; + +function WideStripRemoteComputer(const UNCPath: WideString): WideString; + // Strips the \\RemoteComputer\ part of an UNC path +var + Head: PWideChar; +begin + Result := ''; + if IsUNCPath(UNCPath) then + begin + Result := ''; + if IsUNCPath(UNCPath) then + begin + Result := UNCPath; + Head := @Result[1]; + Head := Head + 2; // Skip past the '\\' + Head := WideStrScan(Head, WideChar('\')); + if Assigned(Head) then + begin + Head := Head + 1; + Move(Head[0], Result[1], (lstrlenW(Head) + 1) * 2); + end; + SetLength(Result, lstrlenW(PWideChar(Result))); + end; + end; +end; + +function WideStripTrailingBackslash(const S: WideString; Force: Boolean = False): WideString; +begin + Result := S; + if Result <> '' then + begin + // Works with FilePaths and FTP Paths + if Result[ Length(Result)] in [WideChar('/'), WideChar('\')] then + if not WideIsDrive(Result) or Force then // Don't strip off if is a root drive + SetLength(Result, Length(Result) - 1); + end; +end; + +function WideStripLeadingBackslash(const S: WideString): WideString; +begin + Result := S; + if Result <> '' then + begin + if (S[1] = '\') and (Length(S) > 1) then + Result := PWideChar( @S[2]) + else + Result := '' + end; +end; + +function WideStringReplace(const S, OldPattern, NewPattern: WideString; Flags: TReplaceFlags; WholeWord: Boolean = False): WideString; +begin + {$IFDEF TNTSUPPORT} + Result := Tnt_WideStringReplace(S, OldPattern, NewPattern, [rfReplaceAll, rfIgnoreCase], WholeWord); + {$ELSE} + StringReplace(S, OldPattern, NewPattern, [rfReplaceAll, rfIgnoreCase]) + {$ENDIF}; +end; + +function WideShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: WideString; ShowCmd: Integer = SW_NORMAL): HINST; +var + OperationA, FileNameA, ParametersA, DirectoryA: string; + PA, DA: PChar; + PW, DW: PWideChar; +begin + if Assigned(ShellExecuteW_MP) then + begin + PW := nil; + DW := nil; + if Parameters = '' then + PW := PWideChar(Parameters); + if Directory = '' then + DW := PWideChar(Directory); + Result := ShellExecuteW_MP(hWnd, PWideChar(Operation), PWideChar(FileName), PW, DW, SW_NORMAL) + end else + begin + OperationA := Operation; + FileNameA := FileName; + ParametersA := Parameters; + DirectoryA := Directory; + PA := nil; + DA := nil; + if ParametersA <> '' then + PA := PChar( ParametersA); + if DirectoryA <> '' then + DA := PChar( DirectoryA); + Result := ShellExecuteA(hWnd, PChar(OperationA), PChar(FileNameA), PA, DA, SW_NORMAL) + end +end; + +procedure WideShowMessage(Window: HWND; ACaption, AMessage: WideString); +var + TextA, CaptionA: string; +begin + if IsUnicode then + MessageBoxW(Window, PWideChar( AMessage), PWideChar( ACaption), MB_ICONEXCLAMATION or MB_OK) + else begin + TextA := AMessage; + CaptionA := ACaption; + MessageBoxA(Window, PChar( TextA), PChar( CaptionA), MB_ICONEXCLAMATION or MB_OK) + end +end; + +function WideLowerCase(const Str: WideString): WideString; +begin + Result := Str; + if IsUnicode then + CharLowerBuffW_MP(PWideChar(Result), Length(Result)) + else + CharLowerBuffA(PChar(string(Result)), Length(Result)) +end; + +function WideMessageBox(Window: HWND; const ACaption, AMessage: WideString; uType: integer): integer; +var + TextA, CaptionA: string; +begin + if IsUnicode then + Result := MessageBoxW(Window, PWideChar( AMessage), PWideChar( ACaption), uType) + else begin + TextA := AMessage; + CaptionA := ACaption; + Result := MessageBoxA(Window, PChar( TextA), PChar( CaptionA), uType) + end +end; + +function IncludeTrailingBackslashW(const S: WideString): WideString; +begin + Result := S; + if not WideIsPathDelimiter(Result, Length(Result)) then Result := Result + '\'; +end; + +function DiskInDrive(C: Char): Boolean; +var + OldErrorMode: Integer; +begin + C := UpCase(C); + if C in ['A'..'Z'] then + begin + OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); + Result := DiskFree(Ord(C) - Ord('A') + 1) > -1; + SetErrorMode(OldErrorMode); + end else + Result := False +end; + +function WideStrIComp(Str1, Str2: PWideChar): Integer; +// Insensitive case comparison +var + S1, S2: string; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := lstrcmpiW_MP(Str1, Str2) + else begin + S1 := Str1; + S2 := Str2; + Result := lstrcmpi(PChar(S1), PChar(S2)) + end +end; + +function StrRScanW(Str: PWideChar; Chr: WideChar): PWideChar; +// returns a pointer to the last occurance of Chr in Str +asm + PUSH EDI + MOV EDI, Str + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + STD + SUB EDI, 2 + MOV AX, Chr + REPNE SCASW + MOV EAX, 0 + JNE @@1 + MOV EAX, EDI + ADD EAX, 2 +@@1: + CLD + POP EDI +end; + +function WideStrComp(Str1, Str2: PWideChar): Integer; +// Sensitive case comparison +var + S1, S2: string; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := lstrcmpW_MP(Str1, Str2) + else begin + S1 := Str1; + S2 := Str2; + Result := lstrcmp(PChar(S1), PChar(S2)) + end +end; + +function WideStrLower(Str: PWideChar): PWideChar; +// Returns the string in Str converted to lower case +var + S: string; + WS: WideString; +begin + Result := Str; + if IsUnicode then + CharLowerBuffW_MP(Str, lstrlenW(Str)) + else begin + S := Str; + CharLowerBuffA(PChar(S), Length(S)); + WS := S; + { WS is a string index from 1, Result is PWideChar index from 0 } + Move(WS[1], Result[0], Length(WS)); + end; +end; + +procedure WideStrLCopy(Str1, Str2: PWideChar; Count: Integer); +// Count must include the terminating null +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + lstrcpynW_MP(Str1, Str2, Count) + else + Move(Str2, Str1, Count * 2); +end; + +function ShortenStringEx(DC: HDC; const S: WideString; Width: Integer; RTL: Boolean; + EllipsisPlacement: TShortenStringEllipsis): WideString; +// Shortens the passed string and inserts ellipsis "..." in the requested place. +// This is not a fast function but it is clear how it works. Also the RTL implmentation +// is still being understood. +var + Len: Integer; + EllipsisWidth: Integer; + TargetString: WideString; + Tail, Head, Middle: PWideChar; + L, ResultW: integer; +begin + Len := Length(S); + if (Len = 0) or (Width <= 0) then + Result := '' + else begin + // Determine width of triple point using the current DC settings + TargetString := '...'; + EllipsisWidth := TextExtentW(PWideChar(TargetString), DC).cx; + + if Width <= EllipsisWidth then + Result := '' + else begin + TargetString := S; + Head := PWideChar(TargetString); + Tail := Head; + Inc(Tail, lstrlenW(PWideChar(TargetString))); + case EllipsisPlacement of + sseEnd: + begin + L := EllipsisWidth + TextExtentW(PWideChar(TargetString), DC).cx; + while (L > Width) do + begin + Dec(Tail); + Tail^ := WideNull; + L := EllipsisWidth + TextExtentW(PWideChar(TargetString), DC).cx; + end; + Result := PWideChar(TargetString) + '...'; + end; + sseFront: + begin + L := EllipsisWidth + TextExtentW(PWideChar(TargetString), DC).cx; + while (L > Width) do + begin + Inc(Head); + L := EllipsisWidth + TextExtentW(PWideChar(Head), DC).cx; + end; + Result := '...' + PWideChar(Head); + end; + sseMiddle: + begin + L := EllipsisWidth + TextExtentW(PWideChar(TargetString), DC).cx; + while (L > Width div 2 - EllipsisWidth div 2) do + begin + Dec(Tail); + Tail^ := WideNull; + L := TextExtentW(PWideChar(TargetString), DC).cx; + end; + Result := PWideChar(TargetString) + '...'; + ResultW := TextExtentW(PWideChar(Result), DC).cx; + + TargetString := S; + Head := PWideChar(TargetString); + Middle := Head; + Inc(Middle, lstrlenW(PWideChar(Result)) - 3); // - 3 for ellipsis letters + Tail := Head; + Inc(Tail, lstrlenW(PWideChar(TargetString))); + Head := Tail - 1; + + L := ResultW + TextExtentW(Head, DC).cx; + while (L < Width) and (Head >= Middle) do + begin + Dec(Head); + L := ResultW + TextExtentW(PWideChar(Head), DC).cx; + end; + Inc(Head); + + Result := Result + Head; + end; + sseFilePathMiddle: + begin + Head := Tail - 1; + L := EllipsisWidth + TextExtentW(Head, DC).cx; + while (Head^ <> '\') and (Head <> @TargetString[1]) and (L < Width) do + begin + Dec(Head); + L := EllipsisWidth + TextExtentW(Head, DC).cx; + end; + if Head^ <> '\' then + Inc(Head); + Result := '...' + Head; + + ResultW := TextExtentW(PWideChar(Result), DC).cx; + + Head^ := WideNull; + SetLength(TargetString, lstrlenW(PWideChar(TargetString))); + + Head := PWideChar(TargetString); + Tail := Head; + Inc(Tail, lstrlenW(Head)); + + L := ResultW + TextExtentW(PWideChar(TargetString), DC).cx; + while (L > Width) and (Tail > @TargetString[1]) do + begin + Dec(Tail); + Tail^ := WideNull; + L := ResultW + TextExtentW(PWideChar(TargetString), DC).cx; + end; + + Result := Head + Result; + end; + end; + + // Windows 2000 automatically switches the order in the string. For every other system we have to take care. + { if IsWin2000 or not RTL then + Result := Copy(S, 1, N - 1) + '...' + else + Result := '...' + Copy(S, 1, N - 1); } + end; + end; +end; + +function WindowsDirectory: WideString; +var + Len: integer; + S: string; +begin + Result := ''; + if Win32Platform = VER_PLATFORM_WIN32_NT then + Len := GetWindowsDirectoryW_MP(PWideChar(Result), 0) + else + Len := GetWindowsDirectoryA(PChar(S), 0); + if Len > 0 then + begin + if IsUnicode then + begin + SetLength(Result, Len - 1); + GetWindowsDirectoryW_MP(PWideChar(Result), Len); + end else + begin + SetLength(S, Len - 1); + GetWindowsDirectoryA(PChar(S), Len); + Result := S + end + end +end; + +function ModuleFileName(PathOnly: Boolean = True): Widestring; +var + BufferA: array[0..MAX_PATH] of Char; + BufferW: array[0..MAX_PATH] of WideChar; +begin + if IsUnicode then + begin + FillChar(BufferW, SizeOf(BufferW), #0); + if GetModuleFileNameW(0, BufferW, SizeOf(BufferW)) > 0 then + begin + if PathOnly then + Result := ExtractFileDirW(BufferW) + else + Result := BufferW; + end + end else + begin + FillChar(BufferA, SizeOf(BufferA), #0); + if GetModuleFileNameA(0 , BufferA, SizeOf(BufferA)) > 0 then + begin + if PathOnly then + Result := ExtractFileDirW(BufferA) + else + Result := BufferA + end + end +end; + +function PIDLToPath(PIDL: PItemIDList): WideString; +var + PIDLMgr: TCommonPIDLManager; + LastID: PItemIDList; + LastCB: Word; + Desktop, Folder: IShellFolder; + StrRet: TStrRet; +begin + Result := ''; + if Assigned(PIDL) then + begin + FillChar(StrRet, SizeOf(StrRet), #0); + PIDLMgr := TCommonPIDLManager.Create; + try + SHGetDesktopFolder(Desktop); + if PIDLMgr.IsDesktopFolder(PIDL) then + begin + end else + begin + PIDLMgr.StripLastID(PIDL, LastCB, LastID); + try + if Succeeded(Desktop.BindToObject(PIDL, nil, IShellFolder, pointer(Folder))) then + begin + LastID.mkid.cb := LastCB; + if Succeeded(Folder.GetDisplayNameOf(LastID, SHGDN_FORPARSING, StrRet)) then + Result := StrRetToStr(StrRet, LastID); + end + finally + LastID.mkid.cb := LastCB; + end + end + finally + PIDLMgr.Free + end + end +end; + +function ShortFileName(const FileName: WideString): WideString; +var + S: string; + BufferA: array[0..MAX_PATH] of char; + BufferW: array[0..MAX_PATH] of WideChar; +begin + if IsUnicode then + begin + if GetShortPathNameW(PWideChar(FileName), BufferW, SizeOf(BufferW)) > 0 then + Result := BufferW + end else + begin + S := FileName; + if GetShortPathNameA(PChar(S), BufferA, SizeOf(BufferA)) > 0 then + Result := BufferA + end +end; + +function ShortPath(const Path: WideString): WideString; +begin + Result := ShortFileName(Path) +end; + +procedure LoadWideString(S: TStream; var Str: WideString); +var + Count: Integer; +begin + S.Read(Count, SizeOf(Integer)); + SetLength(Str, Count); + S.Read(PWideChar(Str)^, Count * 2) +end; + +procedure SaveWideString(S: TStream; Str: WideString); +var + Count: Integer; +begin + Count := Length(Str); + S.Write(Count, SizeOf(Integer)); + S.Write(PWideChar(Str)^, Count * 2) +end; + + +function WideStrPos(Str, SubStr: PWideChar): PWideChar; +// returns a pointer to the first occurance of SubStr in Str +asm + PUSH EDI + PUSH ESI + PUSH EBX + OR EAX, EAX + JZ @@2 + OR EDX, EDX + JZ @@2 + MOV EBX, EAX + MOV EDI, EDX + XOR AX, AX + MOV ECX, 0FFFFFFFFH + REPNE SCASW + NOT ECX + DEC ECX + JZ @@2 + MOV ESI, ECX + MOV EDI, EBX + MOV ECX, 0FFFFFFFFH + REPNE SCASW + NOT ECX + SUB ECX, ESI + JBE @@2 + MOV EDI, EBX + LEA EBX, [ESI - 1] +@@1: + MOV ESI, EDX + LODSW + REPNE SCASW + JNE @@2 + MOV EAX, ECX + PUSH EDI + MOV ECX, EBX + REPE CMPSW + POP EDI + MOV ECX, EAX + JNE @@1 + LEA EAX, [EDI - 2] + JMP @@3 + +@@2: + XOR EAX, EAX +@@3: + POP EBX + POP ESI + POP EDI +end; + +function ProperRect(Rect: TRect): TRect; +// Makes sure a rectangle's left is less than its right and its top is less than its bottom +var + Temp: integer; +begin + Result := Rect; + if Result.Right < Result.Left then + begin + Temp := Result.Right; + Result.Right := Rect.Left; + Result.Left := Temp; + end; + if Rect.Bottom < Rect.Top then + begin + Temp := Result.Top; + Result.Top := Rect.Bottom; + Result.Bottom := Temp; + end +end; + +function DragDetectPlus(Handle: HWND; Pt: TPoint): Boolean; +// Replacement for DragDetect API which is buggy. +// Pt is in Client Coords of the Handle window +var + DragRect: TRect; + Msg: TMsg; + TestPt: TPoint; + HadCapture, Done: Boolean; +begin + Result := False; + Done := False; + HadCapture := GetCapture = Handle; + if (not ClientToScreen(Handle, Pt)) then + Exit; + DragRect.TopLeft := Pt; + DragRect.BottomRight := Pt; + InflateRect(DragRect, GetSystemMetrics(SM_CXDRAG), GetSystemMetrics(SM_CYDRAG)); + SetCapture(Handle); + try + while (not Result) and (not Done) do + if (PeekMessage(Msg, Handle, 0,0, PM_REMOVE)) then + begin + case (Msg.message) of + WM_MOUSEMOVE: + begin + TestPt := Msg.Pt; + // Not sure why this works. The Message point "should" be in client + // coordinates but seem to be screen + // Windows.ClientToScreen(Msg.hWnd, TestPt); + Result := not(PtInRect(DragRect, TestPt)); + end; + WM_RBUTTONUP, + WM_LBUTTONUP, + WM_CANCELMODE, + WM_LBUTTONDBLCLK, + WM_MBUTTONUP: + begin + // Let the window get these messages after we have ended our + // local message loop + PostMessage(Msg.hWnd, Msg.message, Msg.wParam, Msg.lParam); + Done := True; + end; + WM_QUIT: + begin + PostQuitMessage(Msg.wParam); + Done := True; + end + else + TranslateMessage(Msg); + DispatchMessage(Msg) + end + end else + Sleep(0); + finally + ReleaseCapture; + if HadCapture then + Mouse.Capture := Handle; + end; +end; + +procedure FillWideChar(var Dest; count: Integer; Value: WideChar); +var + I: Integer; + P: PWideChar; +begin + P := PWideChar(@Dest); + for I := count-1 downto 0 do + P[I] := Value; +end; + +procedure FreeMemAndNil(var P: Pointer); +{ Frees the memeory allocated with GetMem and nils the pointer } +var + Temp: Pointer; +begin + Temp := P; + P := nil; + FreeMem(Temp); +end; + +function IsRectNull(ARect: TRect): Boolean; +begin + Result := EqualRect(ARect, Rect(0, 0, 0, 0)) +end; + +function IsUnicode: Boolean; +begin + Result := Win32Platform = VER_PLATFORM_WIN32_NT +end; + +function IsWinNT: Boolean; +begin + Result := Win32Platform = VER_PLATFORM_WIN32_NT +end; + +function IsWin2000: Boolean; +begin + Result := False; + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := LoWord(Win32MajorVersion) >= 5 +end; + +function IsWin95_SR1: Boolean; +begin + Result := False; + if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then + Result := ((Win32MajorVersion = 4) and + (Win32MinorVersion = 0) and + (LoWord(Win32BuildNumber) <= 1080)) +end; + +function IsWinME: Boolean; +begin + Result := False; + if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then + Result := Win32BuildNumber >= $045A0BB8 +end; + +function IsWinNT4: Boolean; +begin + Result := False; + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := Win32MajorVersion < 5 +end; + +function IsWinXP: Boolean; +begin + Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion = 5) + and (Win32MinorVersion > 0) +end; + +function IsWinXPOrUp: Boolean; +begin + Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 5) + and (Win32MinorVersion > 0) +end; + +function IsWinVista: Boolean; +begin + Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion = 6) + and (Win32MinorVersion >= 0) +end; + +function IsWinVistaOrUp: Boolean; +begin + Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 6) + and (Win32MinorVersion >= 0) +end; + +function RectHeight(R: TRect): Integer; +begin + Result := R.Bottom - R.Top +end; + +function RectToStr(R: TRect): string; +begin + Result := 'Left = ' + IntToStr(R.Left) + + ' Top = ' + IntToStr(R.Top) + + ' Right = ' + IntToStr(R.Right) + + ' Bottom = ' + IntToStr(R.Bottom) +end; + +function RectToSquare(R: TRect): TRect; +// Takes the passed rectangle and makes it square based on the longest dimension +begin + if RectWidth(R) > RectHeight(R) then + R.Right := R.Left + RectHeight(R) + else + if RectHeight(R) > RectWidth(R) then + begin + R.Bottom := R.Top + RectWidth(R); + end else + Result := R +end; + +function RectWidth(R: TRect): Integer; +begin + Result := R.Right - R.Left +end; + +function ContainsRect(OuterRect, InnerRect: TRect): Boolean; +// +// Returns true if the InnerRect is completely contained within the +// OuterRect +// +begin + Result := (InnerRect.Left >= OuterRect.Left) and + (InnerRect.Right <= OuterRect.Right) and + (InnerRect.Top >= OuterRect.Top) and + (InnerRect.Bottom <= OuterRect.Bottom) +end; + +function KeyDataToShiftState(KeyData: Longint): TShiftState; +begin + Result := []; + if GetKeyState(VK_SHIFT) < 0 then + Include(Result, ssShift); + if GetKeyState(VK_CONTROL) < 0 then + Include(Result, ssCtrl); + if KeyData and $20000000 <> 0 then + Include(Result, ssAlt); +end; + +function DropEffectToDropEffectState(Effect: Integer): TCommonDropEffect; +begin + Result := cdeNone; + if Effect and DROPEFFECT_COPY <> 0 then + Result := cdeCopy + else + if Effect and DROPEFFECT_MOVE <> 0 then + Result := cdeMove + else + if Effect and DROPEFFECT_LINK <> 0 then + Result := cdeLink +end; + +function DropEffectStateToDropEffect(Effect: TCommonDropEffect): Integer; +begin + Result := 0; + if cdeCopy = Effect then + Result := Result or DROPEFFECT_COPY + else + if cdeMove = Effect then + Result := Result or DROPEFFECT_MOVE + else + if cdeLink = Effect then + Result := Result or DROPEFFECT_LINK +end; + +function DropEffectToDropEffectStates(Effect: Integer): TCommonDropEffects; +begin + Result := []; + if (Effect = 0) or (Longword(Effect) = DROPEFFECT_SCROLL) then + Include(Result, cdeNone); + if Effect and DROPEFFECT_COPY <> 0 then + Include(Result, cdeCopy); + if Effect and DROPEFFECT_MOVE <> 0 then + Include(Result, cdeMove); + if Effect and DROPEFFECT_LINK <> 0 then + Include(Result, cdeLink); + if Effect and DROPEFFECT_SCROLL <> 0 then + Include(Result, cdeScroll) +end; + +function DropEffectStatesToDropEffect(Effect: TCommonDropEffects): Integer; +begin + Result := 0; + if cdeCopy in Effect then + Result := Result or DROPEFFECT_COPY; + if cdeMove in Effect then + Result := Result or DROPEFFECT_MOVE; + if cdeLink in Effect then + Result := Result or DROPEFFECT_LINK; + if cdeScroll in Effect then + Result := Result or Integer(DROPEFFECT_SCROLL); +end; + +function KeyToKeyStates(Keys: Word): TCommonKeyStates; +begin + Result := []; + if Keys and MK_CONTROL <> 0 then + Include(Result, cksControl); + if Keys and MK_LBUTTON <> 0 then + Include(Result, cksLButton); + if Keys and MK_MBUTTON <> 0 then + Include(Result, cksMButton); + if Keys and MK_RBUTTON <> 0 then + Include(Result, cksRButton); + if Keys and MK_SHIFT <> 0 then + Include(Result, cksShift); + if Keys and MK_ALT <> 0 then + Include(Result, cksAlt); + if Keys and MK_BUTTON <> 0 then + Include(Result, cksButton); +end; + +function KeyStatesToMouseButton(Keys: Word): TCommonMouseButton; +begin + if Keys and MK_LBUTTON <> 0 then + Result := cmbLeft + else + if Keys and MK_MBUTTON <> 0 then + Result := cmbMiddle + else + if Keys and MK_RBUTTON <> 0 then + Result := cmbRight + else + Result := cmbNone +end; + +function KeyStatesToKey(Keys: TCommonKeyStates): Longword; +begin + Result := 0; + if cksControl in Keys then + Result := Result or MK_CONTROL; + if cksLButton in Keys then + Result := Result or MK_LBUTTON; + if cksMButton in Keys then + Result := Result or MK_MBUTTON; + if cksRButton in Keys then + Result := Result or MK_RBUTTON; + if cksShift in Keys then + Result := Result or MK_SHIFT; + if cksAlt in Keys then + Result := Result or MK_ALT; +end; + +function KeyStateToDropEffect(Keys: TCommonKeyStates): TCommonDropEffect; +begin + Result := cdeMove; // The default + if (cksControl in Keys) and not ((cksShift in Keys) or (cksAlt in Keys)) then + Result := cdeCopy + else + if ((cksAlt in Keys) and not ((cksShift in Keys) or (cksControl in Keys))) or + ((cksShift in Keys) and (cksControl in Keys)) then + Result := cdeLink +end; + +function KeyStateToMouseButton(KeyState: TCommonKeyStates): TCommonMouseButton; +begin + if KeyState * [cksLButton] <> [] then + Result := cmbLeft + else + if KeyState * [cksRButton] <> [] then + Result := cmbRight + else + if KeyState * [cksMButton] <> [] then + Result := cmbMiddle + else + Result := cmbNone +end; + +function FileIconInit(FullInit: BOOL): BOOL; stdcall; +// Forces the system to load all Images into the ImageList. Normally with NT +// system icons are only loaded as needed. +type + TFileIconInit = function(FullInit: BOOL): BOOL; stdcall; +var + ShellDLL: HMODULE; + PFileIconInit: TFileIconInit; +begin + Result := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) then + begin + ShellDLL := CommonLoadLibrary(Shell32); + PFileIconInit := GetProcAddress(ShellDLL, PChar(660)); + if (Assigned(PFileIconInit)) then + Result := PFileIconInit(FullInit); + end; +end; + +function SHGetImageList(iImageList: Integer; const RefID: TGUID; out ppvOut): HRESULT; stdcall; +// Retrieves the system ImageList interface +var + ShellDLL: HMODULE; + ImageList: TSHGetImageList; +begin + Result := E_NOTIMPL; + if (Win32Platform = VER_PLATFORM_WIN32_NT) then + begin + // if GetFileVersion(comctl32) >= $00060000 then + begin + ShellDLL := CommonLoadLibrary(Shell32); + ImageList := GetProcAddress(ShellDLL, PChar(727)); + if (Assigned(ImageList)) then + Result := ImageList(iImageList, RefID, ppvOut); + end + end; +end; + +function Size(cx, cy: Integer): TSize; +begin + Result.cy := cy; + Result.cx := cx +end; + +function ShortenTextW(DC: hDC; TextToShorten: WideString; MaxSize: Integer): WideString; +// Shortens the passed string in such a way that if it does not fit in the MaxSize +// (in Pixels) a "..." is inserted at the correct place where the new string fixs +// in MaxSize +var + Size: TSize; + EllipsisSize: TSize; +// TailA: String; + StrLen, Middle, Low, High{, LastHigh}: Cardinal; +// WChar: WideChar; +// Done: Boolean; +begin + if TextToShorten <> '' then + begin + GetTextExtentPoint32W(DC, PWideChar(TextToShorten), Length(TextToShorten), Size); + GetTextExtentPoint32W(DC, '...', 3, EllipsisSize); + StrLen := Length(TextToShorten); + if Size.cx > MaxSize then + begin + (* Middle := StrLen div 2; + Done := False; + Low := 0; + High := StrLen; + LastHigh := High; + // Do a psudo binary search + while not Done do + begin + GetTextExtentPoint32W(DC, @TextToShorten[1], Middle, Size); + Size.cx := Size.cx + EllipsisSize.cx; + + if Size.cx > MaxSize then + begin + // Still to long + LastHigh := High; + High := Middle; + Middle := Low + (High - Low) div 2; + end else + begin + // Too short + High := LastHigh; + Low := Middle; + + Middle := Low + (High - Low) div 2; + end; + Done := High - Low <= 2; + end; *) + + // Milan's version + Low:=0; + High:=StrLen-1; + while (Low 0 then + Result := TextToShorten + '...' + else + Result := '...' + end else + Result := TextToShorten + end else + Result := ''; +end; + +(* +function SplitTextW(DC: hDC; TextToSplit: WideString; MaxWidth: Integer; + var Buffer: TWideCharArray; MaxSplits: Integer): Integer; +// Takes the passed string and breaks it up so each piece fits within the MaxWidth +// The function detects any LF/CR pairs and treats them as one break if CR or LF +// is defined as a break character. +// The Buffer is a set of NULL terminated strings for each line, with the last +// one being terminated with a double NULL. Much like the SHFileOperation API +// This makes it ready to use to pass the strings to ExtTextOutW in a loop +// If the buffer is too small the Result will be false +// If MaxSplits = -1 then the function splits as many time as necessary +// The Return is the total number of lines the passed text was split into +var + Head, Tail, LastBreakChar, BufferHead: PWideChar; + Size: TSize; + LineWidth, SplitCount, Len: Integer; + TextMetrics: TTextMetric; + { PeriodW1, PeriodW2, PeriodW3: Integer; } +begin + Result := 0; + if MaxWidth = 0 then + begin + SetLength(Buffer, 2); + Buffer[0] := WideNull; + Buffer[1] := WideNull; + end else + begin + GetTextMetrics(DC, TextMetrics); + + // Can get into deep trouble if a single letter won't fit in the MaxWidth + if TextMetrics.tmMaxCharWidth > MaxWidth then + begin + Len := Length(TextToSplit); + SetLength(Buffer, Len + 2); + if Len > 0 then + begin + Head := @TextToSplit[1]; + CopyMemory(Buffer, Head, Len*2); + Result := 1; + end; + Buffer[Len] := #0; + Buffer[Len + 1] := #0; + end else + begin + FillChar(Size, SizeOf(Size), #0); + // Arbitrary size that should be ok in most instances. This will be enough space + // for 127 lines + SetLength(Buffer, Length(TextToSplit) + 128); + BufferHead := @Buffer[0]; + Head := PWideChar(TextToSplit); + Tail := Head; + SplitCount := 0; + while (Tail^ <> #0) and ((SplitCount < MaxSplits) or (MaxSplits = -1)) do + begin + LineWidth := 0; + LastBreakChar := nil; + while (Tail^ <> WideNull) and (LineWidth <= MaxWidth) and (Tail^ <> WideCR) and (Tail^ <> WideLF) do + begin + GetTextExtentPoint32W(DC, PWideChar(Tail), 1, Size); + Inc(LineWidth, Size.cx); + + Inc(Tail); + + if (LineWidth <= MaxWidth) and (Tail^ = WideSpace) then + LastBreakChar := Tail; + end; + + if (LineWidth > MaxWidth) {and (Tail^ <> WideSpace)} then + begin + // Over ran the line unless it exactly fits + if Assigned(LastBreakChar) and (LineWidth > MaxWidth) then + begin + // We have word break to go back to + Tail := LastBreakChar; + Inc(SplitCount); + if SplitCount = MaxSplits then + begin + // If no more splits allows copy the entire rest of the string to the buffer + Len := lStrLenW(Head); + CopyMemory(BufferHead, Head, Len*2); + Inc(BufferHead, Len); + end else + begin + CopyMemory(BufferHead, Head, (Tail-Head)*2); + Inc(BufferHead, Tail-Head); + end; + BufferHead^ := WideNull; + Inc(BufferHead); + end else + begin + // Special case, the Tail is the end of the Text to split + if Tail^ <> WideNull then + Dec(Tail); + Inc(SplitCount); + if SplitCount = MaxSplits then + begin + // If no more splits allows copy the entire rest of the string to the buffer + Len := lStrLenW(Head); + CopyMemory(BufferHead, Head, Len*2); + Inc(BufferHead, Len); + end else + begin + CopyMemory(BufferHead, Head, (Tail-Head)*2); + Inc(BufferHead, Tail-Head); + end; + BufferHead^ := WideNull; + Inc(BufferHead); + end; + Inc(Result); + end else + begin + Inc(SplitCount); + if SplitCount = MaxSplits then + begin + // If no more splits allows copy the entire rest of the string to the buffer + Len := lStrLenW(Head); + CopyMemory(BufferHead, Head, Len*2); + Inc(BufferHead, Len); + end else + begin + CopyMemory(BufferHead, Head, (Tail-Head)*2); + Inc(BufferHead, Tail-Head); + end; + BufferHead^ := WideNull; + Inc(BufferHead); + Inc(Result) + end; + + while (Tail^ <> #0) and ((Tail^ = WideCR) or (Tail^ = WideLF) or (Tail^ = WideSpace)) do + Inc(Tail); + Head := Tail + end + end + end +end; +*) + + +// Solerman's version +function SplitTextW(DC: hDC; TextToSplit: WideString; MaxWidth: Integer; + var Buffer: TCommonWideCharArray; MaxSplits: Integer): Integer; +// Takes the passed string and breaks it up so each piece fits within the MaxWidth +// The function detects any LF/CR pairs and treats them as one break if CR or LF +// is defined as a break character. +// The Buffer is a set of NULL terminated strings for each line, with the last +// one being terminated with a double NULL. Much like the SHFileOperation API +// This makes it ready to use to pass the strings to ExtTextOutW in a loop +// If the buffer is too small the Result will be false +// If MaxSplits = -1 then the function splits as many time as necessary +// The Return is the total number of lines the passed text was split into +var + Head, Tail, LastBreakChar, BufferHead: PWideChar; +// TailA: String; + Size: TSize; + LineWidth, SplitCount, Len: Integer; + TextMetrics: TTextMetric; +begin + Result := 0; + if MaxWidth = 0 then + begin + SetLength(Buffer, 2); + Buffer[0] := WideNull; + Buffer[1] := WideNull; + end else + begin + GetTextMetrics(DC, TextMetrics); + + // Can get into deep trouble if a single letter won't fit in the MaxWidth + if TextMetrics.tmMaxCharWidth > MaxWidth then + begin + Len := Length(TextToSplit); + SetLength(Buffer, Len + 2); + if Len > 0 then + begin + Head := @TextToSplit[1]; + CopyMemory(Buffer, Head, Len*2); + Result := 1; + end; + Buffer[Len] := #0; + Buffer[Len + 1] := #0; + end else + begin + FillChar(Size, SizeOf(Size), #0); + // Arbitrary size that should be ok in most instances. This will be enough space + // for 127 lines + SetLength(Buffer, Length(TextToSplit) + 128); + BufferHead := @Buffer[0]; + Head := PWideChar(TextToSplit); + Tail := Head; + SplitCount := 0; + while (Tail^ <> #0) and ((SplitCount < MaxSplits) or (MaxSplits = -1)) do + begin + LineWidth := 0; + LastBreakChar := nil; + while (Tail^ <> WideNull) and (LineWidth <= MaxWidth) and (Tail^ <> WideCR) and (Tail^ <> WideLF) do + begin + // if IsUnicode then + GetTextExtentPoint32W(DC, PWideChar(Tail), 1, Size); + // else begin + // TailA := Tail^; + // GetTextExtentPoint32(DC, @TailA[1], 1, Size); + // end; + Inc(LineWidth, Size.cx); + + Inc(Tail); + + if (LineWidth <= MaxWidth) and (Tail^ = WideSpace) then + LastBreakChar := Tail; + end; + + if (LineWidth > MaxWidth) then + begin + // We overran the MaxWidth if entering this block + + // Over ran the line unless it exactly fits + if Assigned(LastBreakChar) and (LineWidth > MaxWidth) then + // We have word break to go back to + Tail := LastBreakChar + else + // Special case, the Tail is the end of the Text to split + if {(Tail^ <> WideNull) and} ((SplitCount + 1 < MaxSplits) or (MaxSplits < 0)) then + Dec(Tail); + end; + Inc(SplitCount); + // If we reach the MaxSplits make the last line be the rest of the text. + if (SplitCount > 0) and (SplitCount = MaxSplits) then + Inc(Tail, lstrlenW(Tail)); + CopyMemory(BufferHead, Head, (Tail-Head)*2); + Inc(BufferHead, Tail-Head); + BufferHead^ := WideNull; + Inc(BufferHead); + Inc(Result); + + while (Tail^ <> #0) and ((Tail^ = WideCR) or (Tail^ = WideLF) or (Tail^ = WideSpace)) do + Inc(Tail); + Head := Tail + end + end + end +end; + +{$IFNDEF COMPILER_6_UP} +function VarToWideStrDef(const V: Variant; const ADefault: WideString): WideString; +begin + if not VarIsNull(V) then + Result := V + else + Result := ADefault; +end; + +function VarToWideStr(const V: Variant): WideString; +begin + Result := VarToWideStrDef(V, NullAsStringValue); +end; + +function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string; +const + cSimpleBoolStrs: array [boolean] of String = ('0', '-1'); +begin + if UseBoolStrs then + begin + if B then + Result := 'True' + else + Result := 'False' + end + else + Result := cSimpleBoolStrs[B]; +end; + +function CompareTime(const A, B: TDateTime): TValueRelationship; +begin + if Abs(Frac(A) - Frac(B)) < (1 / MSecsPerDay) then + Result := 0 + else if Frac(A) < Frac(B) then + Result := Low(TValueRelationship) + else + Result := High(TValueRelationship); +end; + +function WideCompareText(S1, S2: WideString): Integer; +begin + Result := WideStrComp( PWideChar(S1), PWideChar(S2)) +end; + +function ExcludeTrailingBackslash(Path: WideString): WideString; +begin + Result := Path; + if Result <> '' then + begin + Result := Trim(Result); + if Length(Result) > 0 then + if Result[Length(Result)] = '\' then + SetLength(Result, Length(Result) - 1) + end +end; + +function IncludeTrailingBackslash(Path: WideString): WideString; +begin + Result := Path; + if Path <> '' then + Result := ExcludeTrailingBackslash(Path) + '\' +end; + +{$ENDIF} + +function VariantToCaption(const V: Variant): WideString; +var + DateTime: TDateTime; +begin + case VarType(V) of + varString, varOleStr: + Result := VarToWideStr(V); + + varInteger,{$IFDEF COMPILER_6_UP}varWord, varShortInt, varLongWord,{$ENDIF} varSmallint, varByte: + Result := IntToStr(V); + varDate: + begin + DateTime := V; + if Trunc(DateTime) = DateTime then // no time portion + Result := DateToStr(DateTime) + else + Result := DateTimeToStr(DateTime); + end; + varCurrency: + Result := CurrToStr(V); + varSingle, varDouble: + Result := FloatToStrF(V, ffFixed, 15, 2); + varBoolean: + Result := BoolToStr(V, True); + else + Result := VarToWideStrDef(V, ''); + end; +end; + +function StrCopyW(Dest, Source: PWideChar): PWideChar; +// copies Source to Dest and returns Dest +asm + PUSH EDI + PUSH ESI + MOV ESI, EAX + MOV EDI, EDX + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + MOV EDI, ESI + MOV ESI, EDX + MOV EDX, ECX + MOV EAX, EDI + SHR ECX, 1 + REP MOVSD + MOV ECX, EDX + AND ECX, 1 + REP MOVSW + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function BrightenColor(const RGB: TCommonRGB; Amount: Double): TCommonRGB; +var + HLS: TCommonHLS; + +begin + HLS := RGBToHLS(RGB); + HLS.L := (1 + Amount) * HLS.L; + Result := HLSToRGB(HLS); +end; + +function DarkenColor(const RGB: TCommonRGB; Amount: Double): TCommonRGB; +var + HLS: TCommonHLS; + +begin + HLS := RGBToHLS(RGB); + // Darken means to decrease luminance. + HLS.L := (1 - Amount) * HLS.L; + Result := HLSToRGB(HLS); +end; + +function RGBToHLS(const RGB: TCommonRGB): TCommonHLS; + +// Converts from RGB to HLS. +// Input parameters and result values are all in the range 0..1. +// Note: Hue is normalized so 360° corresponds to 1. + +var + Delta, + Max, + Min: Double; + +begin + with RGB, Result do + begin + Max := MaxValue([R, G, B]); + Min := MinValue([R, G, B]); + + L := (Max + Min) / 2; + + if Max = Min then + begin + // Achromatic case. + S := 0; + H := 0; // Undefined + end + else + begin + Delta := Max - Min; + + if L < 0.5 then + S := Delta / (Max + Min) + else + S := Delta / (2 - (Max + Min)); + + if R = Max then + H := (G - B) / Delta + else + if G = Max then + H := 2 + (B - R) / Delta + else + if B = Max then + H := 4 + (R - G) / Delta; + + H := H / 6; + if H < 0 then + H := H + 1; + end + end; +end; + +function HLSToRGB(const HLS: TCommonHLS): TCommonRGB; + +// Converts from HLS (hue, luminance, saturation) to RGB. +// Input parameters and result values are all in the range 0..1. +// Note: Hue is normalized so 360° corresponds to 1. + + //--------------- local function -------------------------------------------- + + function HueToRGB(m1, m2, Hue: Double): Double; + + begin + if Hue > 1 then + Hue := Hue - 1 + else + if Hue < 0 then + Hue := Hue + 1; + + if 6 * Hue < 1 then + Result := m1 + (m2 - m1) * Hue * 6 + else + if 2 * Hue < 1 then + Result := m2 + else + if 3 * Hue < 2 then + Result := m1 + (m2 - m1) * (2 / 3 - Hue) * 6 + else + Result := m1; + end; + + //--------------- end local function ---------------------------------------- + +var + m1, m2: Double; + +begin + with HLS, Result do + begin + if S = 0 then + begin + // Achromatic case (no hue). + R := L; + G := L; + B := L; + end + else + begin + if L <= 0.5 then + m2 := L * (S + 1) + else + m2 := L + S - L * S; + m1 := 2 * L - m2; + + R := HueToRGB(m1, m2, H + 1 / 3); + G := HueToRGB(m1, m2, H); + B := HueToRGB(m1, m2, H - 1 / 3) + end; + end; +end; + +function MakeTRBG(Color: TColor): TCommonRGB; +var + RGB: Longint; +begin + RGB := ColorToRGB(Color); + Result.B := GetBValue(RGB) / 255; + Result.G := GetGValue(RGB) / 255; + Result.R := GetRValue(RGB) / 255; +end; + +function MakeTColor(RGB: TCommonRGB): TColor; +begin + Result := TColor(MakeColorRef(RGB)); +end; + +function MakeColorRef(RGB: TCommonRGB; Gamma: Double = 1): COLORREF; +// Converts a floating point RGB color to an 8 bit color reference as used by Windows. +// The function takes care not to produce out-of-gamut colors and allows to apply an optional gamma correction +// (inverse gamma). +begin + GammaCorrection(RGB, Gamma); + with RGB do + Result := Windows.RGB(Round(R * 255), Round(G * 255), Round(B * 255)); +end; + +procedure GammaCorrection(var RGB: TCommonRGB; Gamma: Double); + +// Computes the gamma corrected RGB color and ensures the result is in-gamut. + +begin + if Gamma <> 1 then + begin + Gamma := 1 / Gamma; + with RGB do + begin + if R > 0 then + R := Power(R, Gamma) + else + R := 0; + if G > 0 then + G := Power(G, Gamma) + else + G := 0; + if B > 0 then + B := Power(B, Gamma) + else + B := 0; + end; + end; + + MakeSafeColor(RGB); +end; + +function MakeSafeColor(var RGB: TCommonRGB): Boolean; +// Ensures the given RGB color is in-gamut, that is, no component is < 0 or > 1. +// Returns True if the color had to be adjusted to be in-gamut, otherwise False. +begin + Result := False; + + if RGB.R < 0 then + begin + Result := True; + RGB.R := 0; + end; + if RGB.R > 1 then + begin + Result := True; + RGB.R := 1; + end; + + if RGB.G < 0 then + begin + Result := True; + RGB.G := 0; + end; + if RGB.G > 1 then + begin + Result := True; + RGB.G := 1; + end; + + if RGB.B < 0 then + begin + Result := True; + RGB.B := 0; + end; + if RGB.B > 1 then + begin + Result := True; + RGB.B := 1; + end; +end; + + function UpsideDownDIB(Bits: TBitmap): Boolean; +var + OldRGB, TempRGB: LongInt; + P: PLongInt; +begin + Result := False; + Assert(Bits.PixelFormat = pf32Bit, 'UpsideDownDIB only works with 32 bit bitmaps'); + if Bits.PixelFormat = pf32Bit then + begin + P := Bits.ScanLine[0]; + OldRGB := P^; + Result := True; + // if Equal then we can can't be sure if upsidedown + if (P^ and $00FFFFFF) = (ColorToRGB(Bits.Canvas.Pixels[0, 0]) and $00FFFFFF) then + begin + // Flip the pixel bits + TempRGB := not OldRGB and $00FFFFFF; + Bits.Canvas.Pixels[0, 0] := TempRGB; + + Result := (P^ and $00FFFFFF) <> (ColorToRGB(Bits.Canvas.Pixels[0, 0]) and $00FFFFFF); + P^ := OldRGB + end + end +end; + +procedure ActivateTopLevelWindow(Child: HWND); +var + Parent: HWND; + Style: LongWord; +begin + Parent := GetParent(Child); + while Parent <> 0 do + begin + Style := GetWindowLong(Parent, GWL_STYLE); + if ((Style and WS_POPUP <> 0)) or (Style and WS_CHILD = 0) then + begin + BringWindowToTop(Parent); + Exit + end; + Parent := GetParent(Parent); + end +end; + +initialization + PIDLMgr := TCommonPIDLManager.Create; + + // We can be sure these are already loaded. This keeps us from having to + // reference count when VSTools is being used in an OCX + Shell32Handle := GetModuleHandle(Shell32); + Kernel32Handle := GetModuleHandle(Kernel32); + User32Handle := GetModuleHandle(User32); + GDI32Handle := GetModuleHandle(GDI32); + AdvAPI32Handle := GetModuleHandle(AdvAPI32); + ShlwapiHandle := CommonLoadLibrary(Shlwapi); + + GetDiskFreeSpaceExA_MP := GetProcAddress(Kernel32Handle, 'GetDiskFreeSpaceA'); + TrackMouseEvent_MP := GetProcAddress(User32Handle, 'TrackMouseEvent'); + + if Win32Platform = VER_PLATFORM_WIN32_NT then + begin + GetDriveTypeW_MP := GetProcAddress(Kernel32Handle, 'GetDriveTypeW'); + DrawTextW_MP := GetProcAddress(User32Handle, 'DrawTextW'); + SHGetFileInfoW_MP := GetProcAddress(Shell32Handle, 'SHGetFileInfoW'); + CreateFileW_MP := GetProcAddress(Kernel32Handle, 'CreateFileW'); + SHGetDataFromIDListW_MP := GetProcAddress(Shell32Handle, 'SHGetDataFromIDListW'); + FindFirstFileW_MP := GetProcAddress(Kernel32Handle, 'FindFirstFileW'); + FindNextFileW_MP := GetProcAddress(Kernel32Handle, 'FindNextFileW'); + lstrcmpiW_MP := GetProcAddress(Kernel32Handle, 'lstrcmpiW'); + lstrcmpW_MP := GetProcAddress(Kernel32Handle, 'lstrcmpW'); + lstrcpynW_MP := GetProcAddress(Kernel32Handle, 'lstrcpynW'); + lstrcpyW_MP := GetProcAddress(Kernel32Handle, 'lstrcpyW'); + CharLowerBuffW_MP := GetProcAddress(User32Handle, 'CharLowerBuffW'); + CharUpperBuffW_MP := GetProcAddress(User32Handle, 'CharUpperBuffW'); + CreateDirectoryW_MP := GetProcAddress(Kernel32Handle, 'CreateDirectoryW'); + GetFullPathNameW_MP := GetProcAddress(Kernel32Handle, 'GetFullPathNameW'); + ShellExecuteExW_MP := GetProcAddress(Shell32Handle, 'ShellExecuteExW'); + ShellExecuteW_MP := GetProcAddress(Shell32Handle, 'ShellExecuteW'); + FindFirstChangeNotificationW_MP := GetProcAddress(Kernel32Handle, 'FindFirstChangeNotificationW'); + GetCharABCWidthsW_MP := GetProcAddress(GDI32Handle, 'GetCharABCWidthsW'); + GetFileAttributesW_MP := GetProcAddress(Kernel32Handle, 'GetFileAttributesW'); + GetSystemDirectoryW_MP := GetProcAddress(Kernel32Handle, 'GetSystemDirectoryW'); + GetWindowsDirectoryW_MP := GetProcAddress(Kernel32Handle, 'GetWindowsDirectoryW'); + GetDiskFreeSpaceExW_MP := GetProcAddress(Kernel32Handle, 'GetDiskFreeSpaceExW'); + SetWindowTextW_MP := GetProcAddress(User32Handle, 'SetWindowTextW'); + GetNumberFormatW_MP := GetProcAddress(Kernel32Handle, 'GetNumberFormatW'); + RegOpenKeyW_MP := GetProcAddress(AdvAPI32Handle, 'RegOpenKeyW'); + RegOpenKeyExW_MP := GetProcAddress(AdvAPI32Handle, 'RegOpenKeyExW'); + RegQueryValueW_MP := GetProcAddress(AdvAPI32Handle, 'RegQueryValueW'); + WritePrivateProfileStringW_MP := GetProcAddress(Kernel32Handle, 'WritePrivateProfileStringW'); + GetPrivateProfileStringW_MP := GetProcAddress(Kernel32Handle, 'GetPrivateProfileStringW'); + TryEnterCriticalSection_MP := GetProcAddress(Kernel32Handle, 'TryEnterCriticalSection'); + InsertMenuItemW_MP := GetProcAddress(User32Handle, 'InsertMenuItemW'); + SendMessageW_MP := GetProcAddress(User32Handle, 'SendMessageW'); + SetFileAttributesW_MP := GetProcAddress(Kernel32Handle, 'SetFileAttributesW'); + CreateFontIndirectW_MP := GetProcAddress(GDI32Handle, 'CreateFontIndirectW'); + SystemParametersInfoW_MP := GetProcAddress(User32Handle, 'SystemParametersInfoW'); + SHGetPathFromIDListW_MP := GetProcAddress(Shell32Handle, 'SHGetPathFromIDListW'); + SHFileOperationW_MP := GetProcAddress(Shell32Handle, 'SHFileOperationW'); + SHBrowseForFolderW_MP := GetProcAddress(Shell32Handle, 'SHBrowseForFolderW'); + GetDiskFreeSpaceW_MP := GetProcAddress(Kernel32Handle, 'GetDiskFreeSpaceW'); + GetCurrentDirectoryW_MP := GetProcAddress(Kernel32Handle, 'GetCurrentDirW'); + GetTempPathW_MP := GetProcAddress(Kernel32Handle, 'GetTempPathW'); + if ShlwapiHandle <> 0 then + begin + PathMatchSpecA_MP := GetProcAddress(ShlwapiHandle, 'PathMatchSpecA'); + PathMatchSpecW_MP := GetProcAddress(ShlwapiHandle, 'PathMatchSpecW'); + end; + CreateProcessW_MP := GetProcAddress(Kernel32Handle, 'CreateProcessW'); + SHDoDragDrop_MP := GetProcAddress(Shell32Handle, 'SHDoDragDrop'); + SHGetKnownFolderPath_MP := GetProcAddress(Shell32Handle, 'SHGetKnownFolderPath'); + ExpandEnvironmentStringsW_MP := GetProcAddress(Kernel32Handle, 'ExpandEnvironmentStringsW'); + + // NTFS Volume (Junction) only functions + DeleteVolumeMountPoint_MP := GetProcAddress(Kernel32Handle, 'DeleteVolumeMountPointA'); + GetVolumeNameForVolumeMountPoint_MP := GetProcAddress(Kernel32Handle, 'GetVolumeNameForVolumeMountPointA'); + GetVolumePathName_MP := GetProcAddress(Kernel32Handle, 'GetVolumePathNameA'); + SetVolumeMountPoint_MP := GetProcAddress(Kernel32Handle, 'SetVolumeMountPointA'); + FindFirstVolume_MP := GetProcAddress(Kernel32Handle, 'FindFirstVolumeA'); + FindNextVolume_MP := GetProcAddress(Kernel32Handle, 'FindNextVolumeA'); + FindVolumeClose_MP := GetProcAddress(Kernel32Handle, 'FindVolumeClose'); + FindFirstVolumeMountPoint_MP := GetProcAddress(Kernel32Handle, 'FindFirstVolumeMountPointA'); + FindNextVolumeMountPoint_MP := GetProcAddress(Kernel32Handle, 'FindNextVolumeMountPointA'); + FindVolumeMountPointClose_MP := GetProcAddress(Kernel32Handle, 'FindVolumeMountPointClose'); + FindFirstFileExW_MP := GetProcAddress(Kernel32Handle, 'FindFirstFileExW'); + end; + FindFirstFileExA_MP := GetProcAddress(Kernel32Handle, 'FindFirstFileExA'); + + // SHMultiFileProperties only supported on Win2k and WinXP + // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shmultifileproperties.asp + SHMultiFileProperties_MP := GetProcAddress(Shell32Handle, PChar(716)); + CDefFolderMenu_Create2_MP := GetProcAddress(Shell32Handle, PChar(701)); + CDefFolderMenu_Create_MP := GetProcAddress(Shell32Handle, PChar(700)); + + + +// If this unit is to be weak packages this must be removed +finalization + FreeAndNil(PIDLMgr); + CommonUnloadAllLibraries; + +end. + diff --git a/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.hpp b/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.hpp new file mode 100644 index 0000000..b894361 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.hpp @@ -0,0 +1,695 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpcommonwizardhelpers.pas' rev: 11.00 + +#ifndef MpcommonwizardhelpersHPP +#define MpcommonwizardhelpersHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpcommonwizardhelpers +{ +//-- type declarations ------------------------------------------------------- +typedef AnsiString MPCommonWizardHelpers__1[8]; + +typedef AnsiString MPCommonWizardHelpers__2[1]; + +class DELPHICLASS TCommonOTAFile; +class PASCALIMPLEMENTATION TCommonOTAFile : public Toolsapi::TOTAFile +{ + typedef Toolsapi::TOTAFile inherited; + +private: + AnsiString FAncestorIdent; + AnsiString FFormIdent; + AnsiString FModuleIdent; + Classes::TStringList* FUsesIdent; + +public: + __property AnsiString AncestorIdent = {read=FAncestorIdent, write=FAncestorIdent}; + __property AnsiString FormIdent = {read=FFormIdent, write=FFormIdent}; + __property AnsiString ModuleIdent = {read=FModuleIdent, write=FModuleIdent}; + __property Classes::TStringList* IncludeIdent = {read=FUsesIdent, write=FUsesIdent}; +public: + #pragma option push -w-inl + /* TOTAFile.Create */ inline __fastcall TCommonOTAFile(const AnsiString StringCode, const System::TDateTime Age) : Toolsapi::TOTAFile(StringCode, Age) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonOTAFile(void) { } + #pragma option pop + +private: + void *__IOTAFile; /* Toolsapi::IOTAFile */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAFile() + { + Toolsapi::_di_IOTAFile intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAFile*(void) { return (IOTAFile*)&__IOTAFile; } + #endif + +}; + + +class DELPHICLASS TCommonOTAFileForm; +class PASCALIMPLEMENTATION TCommonOTAFileForm : public TCommonOTAFile +{ + typedef TCommonOTAFile inherited; + +public: + virtual AnsiString __fastcall GetSource(); +public: + #pragma option push -w-inl + /* TOTAFile.Create */ inline __fastcall TCommonOTAFileForm(const AnsiString StringCode, const System::TDateTime Age) : TCommonOTAFile(StringCode, Age) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonOTAFileForm(void) { } + #pragma option pop + +private: + void *__IOTAFile; /* Toolsapi::IOTAFile */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAFile() + { + Toolsapi::_di_IOTAFile intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAFile*(void) { return (IOTAFile*)&__IOTAFile; } + #endif + +}; + + +class DELPHICLASS TCommonWizardModuleCreator; +class PASCALIMPLEMENTATION TCommonWizardModuleCreator : public System::TInterfacedObject +{ + typedef System::TInterfacedObject inherited; + +private: + AnsiString FAncestorName; + AnsiString FFormName; + bool FMainForm; + bool FShowForm; + bool FShowSource; + Classes::TStringList* FUsesIdent; + bool __fastcall GetIsDelphi(void); + +public: + __fastcall virtual TCommonWizardModuleCreator(void); + __fastcall virtual ~TCommonWizardModuleCreator(void); + virtual void __fastcall InitializeCreator(void); + virtual AnsiString __fastcall GetCreatorType(); + virtual bool __fastcall GetExisting(void); + virtual AnsiString __fastcall GetFileSystem(); + virtual Toolsapi::_di_IOTAModule __fastcall GetOwner(); + virtual bool __fastcall GetUnnamed(void); + virtual AnsiString __fastcall GetAncestorName(); + virtual AnsiString __fastcall GetImplFileName(); + virtual AnsiString __fastcall GetIntfFileName(); + virtual AnsiString __fastcall GetFormName(); + virtual bool __fastcall GetMainForm(void); + virtual bool __fastcall GetShowForm(void); + virtual bool __fastcall GetShowSource(void); + virtual Toolsapi::_di_IOTAFile __fastcall NewFormFile(const AnsiString FormIdent, const AnsiString AncestorIdent); + virtual Toolsapi::_di_IOTAFile __fastcall NewImplSource(const AnsiString ModuleIdent, const AnsiString FormIdent, const AnsiString AncestorIdent); + virtual Toolsapi::_di_IOTAFile __fastcall NewIntfSource(const AnsiString ModuleIdent, const AnsiString FormIdent, const AnsiString AncestorIdent); + virtual void __fastcall FormCreated(const Toolsapi::_di_IOTAFormEditor FormEditor); + void __fastcall LoadDefaultBuilderIncludeStrings(bool ClearFirst); + void __fastcall LoadDefaultDelphiUsesStrings(bool ClearFirst); + __property AnsiString CreatorType = {read=GetCreatorType}; + __property bool Existing = {read=GetExisting, nodefault}; + __property AnsiString FileSystem = {read=GetFileSystem}; + __property Toolsapi::_di_IOTAModule Owner = {read=GetOwner}; + __property bool Unnamed = {read=GetUnnamed, nodefault}; + __property AnsiString AncestorName = {read=GetAncestorName, write=FAncestorName}; + __property AnsiString FormName = {read=GetFormName, write=FFormName}; + __property AnsiString ImplFileName = {read=GetImplFileName}; + __property AnsiString IntfFileName = {read=GetIntfFileName}; + __property bool IsDelphi = {read=GetIsDelphi, nodefault}; + __property bool MainForm = {read=GetMainForm, write=FMainForm, nodefault}; + __property bool ShowForm = {read=GetShowForm, write=FShowForm, nodefault}; + __property bool ShowSource = {read=GetShowSource, write=FShowSource, nodefault}; + __property Classes::TStringList* IncludeIdent = {read=FUsesIdent, write=FUsesIdent}; +private: + void *__IOTAModuleCreator; /* Toolsapi::IOTAModuleCreator */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAModuleCreator() + { + Toolsapi::_di_IOTAModuleCreator intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAModuleCreator*(void) { return (IOTAModuleCreator*)&__IOTAModuleCreator; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTACreator() + { + Toolsapi::_di_IOTACreator intf; + GetInterface(intf); + return intf; + } + #else + operator IOTACreator*(void) { return (IOTACreator*)&__IOTAModuleCreator; } + #endif + +}; + + +typedef TMetaClass* TCommonWizardModuleCreatorClass; + +class DELPHICLASS TCommonWizardEmptyUnitCreator; +class PASCALIMPLEMENTATION TCommonWizardEmptyUnitCreator : public TCommonWizardModuleCreator +{ + typedef TCommonWizardModuleCreator inherited; + +public: + virtual AnsiString __fastcall GetCreatorType(); +public: + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Create */ inline __fastcall virtual TCommonWizardEmptyUnitCreator(void) : TCommonWizardModuleCreator() { } + #pragma option pop + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Destroy */ inline __fastcall virtual ~TCommonWizardEmptyUnitCreator(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonWizardEmptyFormCreator; +class PASCALIMPLEMENTATION TCommonWizardEmptyFormCreator : public TCommonWizardModuleCreator +{ + typedef TCommonWizardModuleCreator inherited; + +public: + virtual AnsiString __fastcall GetCreatorType(); + virtual Toolsapi::_di_IOTAFile __fastcall NewImplSource(const AnsiString ModuleIdent, const AnsiString FormIdent, const AnsiString AncestorIdent); +public: + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Create */ inline __fastcall virtual TCommonWizardEmptyFormCreator(void) : TCommonWizardModuleCreator() { } + #pragma option pop + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Destroy */ inline __fastcall virtual ~TCommonWizardEmptyFormCreator(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonWizardEmptyTextCreator; +class PASCALIMPLEMENTATION TCommonWizardEmptyTextCreator : public TCommonWizardModuleCreator +{ + typedef TCommonWizardModuleCreator inherited; + +public: + virtual AnsiString __fastcall GetCreatorType(); +public: + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Create */ inline __fastcall virtual TCommonWizardEmptyTextCreator(void) : TCommonWizardModuleCreator() { } + #pragma option pop + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Destroy */ inline __fastcall virtual ~TCommonWizardEmptyTextCreator(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonWizardNotifierObject; +class PASCALIMPLEMENTATION TCommonWizardNotifierObject : public Toolsapi::TNotifierObject +{ + typedef Toolsapi::TNotifierObject inherited; + +private: + AnsiString FAuthor; + AnsiString FCaption; + AnsiString FComment; + AnsiString FGlyphResourceID; + AnsiString FPage; + Toolsapi::TWizardState FState; + AnsiString FUniqueID; + Toolsapi::_di_IOTAGalleryCategory FGalleryCategory; + +protected: + virtual AnsiString __fastcall GetGlpyhResourceID(); + +public: + __fastcall TCommonWizardNotifierObject(void); + virtual void __fastcall InitializeWizard(void); + virtual AnsiString __fastcall GetIDString(); + virtual AnsiString __fastcall GetName(); + Toolsapi::TWizardState __fastcall GetState(void); + virtual void __fastcall Execute(void); + AnsiString __fastcall GetAuthor(); + virtual AnsiString __fastcall GetComment(); + virtual AnsiString __fastcall GetPage(); + unsigned __fastcall GetGlyph(void); + AnsiString __fastcall GetDesigner(); + virtual Toolsapi::_di_IOTAGalleryCategory __fastcall GetGalleryCategory(); + virtual AnsiString __fastcall GetPersonality(void) = 0 ; + __property AnsiString Designer = {read=GetDesigner}; + __property AnsiString Personality = {read=GetPersonality}; + __property AnsiString Author = {read=GetAuthor, write=FAuthor}; + __property AnsiString Caption = {read=GetName, write=FCaption}; + __property AnsiString Comment = {read=GetComment, write=FComment}; + __property Toolsapi::_di_IOTAGalleryCategory GalleryCategory = {read=GetGalleryCategory, write=FGalleryCategory}; + __property AnsiString GlyphResourceID = {read=GetIDString, write=FGlyphResourceID}; + __property AnsiString Page = {read=GetPage, write=FPage}; + __property Toolsapi::TWizardState State = {read=GetState, write=FState, nodefault}; + __property AnsiString UniqueID = {read=GetIDString, write=FUniqueID}; +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonWizardNotifierObject(void) { } + #pragma option pop + +private: + void *__IOTAProjectWizard; /* Toolsapi::IOTAProjectWizard */ + void *__IOTARepositoryWizard80; /* Toolsapi::IOTARepositoryWizard80 */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAProjectWizard() + { + Toolsapi::_di_IOTAProjectWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAProjectWizard*(void) { return (IOTAProjectWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard() + { + Toolsapi::_di_IOTARepositoryWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard*(void) { return (IOTARepositoryWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAWizard() + { + Toolsapi::_di_IOTAWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAWizard*(void) { return (IOTAWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard80() + { + Toolsapi::_di_IOTARepositoryWizard80 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard80*(void) { return (IOTARepositoryWizard80*)&__IOTARepositoryWizard80; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard60() + { + Toolsapi::_di_IOTARepositoryWizard60 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard60*(void) { return (IOTARepositoryWizard60*)&__IOTARepositoryWizard80; } + #endif + +}; + + +class DELPHICLASS TCommonWizardModuleCreate; +class PASCALIMPLEMENTATION TCommonWizardModuleCreate : public TCommonWizardNotifierObject +{ + typedef TCommonWizardNotifierObject inherited; + +private: + TMetaClass* FCreatorClass; + +public: + virtual void __fastcall Execute(void); + __property TMetaClass* CreatorClass = {read=FCreatorClass, write=FCreatorClass}; +public: + #pragma option push -w-inl + /* TCommonWizardNotifierObject.Create */ inline __fastcall TCommonWizardModuleCreate(void) : TCommonWizardNotifierObject() { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonWizardModuleCreate(void) { } + #pragma option pop + +private: + void *__IOTAProjectWizard; /* Toolsapi::IOTAProjectWizard */ + void *__IOTARepositoryWizard80; /* Toolsapi::IOTARepositoryWizard80 */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAProjectWizard() + { + Toolsapi::_di_IOTAProjectWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAProjectWizard*(void) { return (IOTAProjectWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard() + { + Toolsapi::_di_IOTARepositoryWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard*(void) { return (IOTARepositoryWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAWizard() + { + Toolsapi::_di_IOTAWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAWizard*(void) { return (IOTAWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard80() + { + Toolsapi::_di_IOTARepositoryWizard80 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard80*(void) { return (IOTARepositoryWizard80*)&__IOTARepositoryWizard80; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard60() + { + Toolsapi::_di_IOTARepositoryWizard60 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard60*(void) { return (IOTARepositoryWizard60*)&__IOTARepositoryWizard80; } + #endif + +}; + + +class DELPHICLASS TCommonWizardDelphiForm; +class PASCALIMPLEMENTATION TCommonWizardDelphiForm : public TCommonWizardModuleCreate +{ + typedef TCommonWizardModuleCreate inherited; + +public: + virtual AnsiString __fastcall GetPersonality(); +public: + #pragma option push -w-inl + /* TCommonWizardNotifierObject.Create */ inline __fastcall TCommonWizardDelphiForm(void) : TCommonWizardModuleCreate() { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonWizardDelphiForm(void) { } + #pragma option pop + +private: + void *__IOTAProjectWizard; /* Toolsapi::IOTAProjectWizard */ + void *__IOTARepositoryWizard80; /* Toolsapi::IOTARepositoryWizard80 */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAProjectWizard() + { + Toolsapi::_di_IOTAProjectWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAProjectWizard*(void) { return (IOTAProjectWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard() + { + Toolsapi::_di_IOTARepositoryWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard*(void) { return (IOTARepositoryWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAWizard() + { + Toolsapi::_di_IOTAWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAWizard*(void) { return (IOTAWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard80() + { + Toolsapi::_di_IOTARepositoryWizard80 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard80*(void) { return (IOTARepositoryWizard80*)&__IOTARepositoryWizard80; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard60() + { + Toolsapi::_di_IOTARepositoryWizard60 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard60*(void) { return (IOTARepositoryWizard60*)&__IOTARepositoryWizard80; } + #endif + +}; + + +class DELPHICLASS TCommonWizardBuilderForm; +class PASCALIMPLEMENTATION TCommonWizardBuilderForm : public TCommonWizardDelphiForm +{ + typedef TCommonWizardDelphiForm inherited; + +public: + virtual AnsiString __fastcall GetPersonality(); +public: + #pragma option push -w-inl + /* TCommonWizardNotifierObject.Create */ inline __fastcall TCommonWizardBuilderForm(void) : TCommonWizardDelphiForm() { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonWizardBuilderForm(void) { } + #pragma option pop + +private: + void *__IOTAProjectWizard; /* Toolsapi::IOTAProjectWizard */ + void *__IOTARepositoryWizard80; /* Toolsapi::IOTARepositoryWizard80 */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAProjectWizard() + { + Toolsapi::_di_IOTAProjectWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAProjectWizard*(void) { return (IOTAProjectWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard() + { + Toolsapi::_di_IOTARepositoryWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard*(void) { return (IOTARepositoryWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTAWizard() + { + Toolsapi::_di_IOTAWizard intf; + GetInterface(intf); + return intf; + } + #else + operator IOTAWizard*(void) { return (IOTAWizard*)&__IOTAProjectWizard; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard80() + { + Toolsapi::_di_IOTARepositoryWizard80 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard80*(void) { return (IOTARepositoryWizard80*)&__IOTARepositoryWizard80; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Toolsapi::_di_IOTARepositoryWizard60() + { + Toolsapi::_di_IOTARepositoryWizard60 intf; + GetInterface(intf); + return intf; + } + #else + operator IOTARepositoryWizard60*(void) { return (IOTARepositoryWizard60*)&__IOTARepositoryWizard80; } + #endif + +}; + + +class DELPHICLASS TPersistentHack; +class PASCALIMPLEMENTATION TPersistentHack : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TPersistentHack(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TPersistentHack(void) : Classes::TPersistent() { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonImageIndexProperty; +class PASCALIMPLEMENTATION TCommonImageIndexProperty : public Designeditors::TIntegerProperty +{ + typedef Designeditors::TIntegerProperty inherited; + +private: + Imglist::TCustomImageList* __fastcall GetImageList(void); + Imglist::TCustomImageList* __fastcall GetImageListAt(int ComponentIndex); + +protected: + virtual bool __fastcall ExtractImageList(Classes::TPersistent* Inst, /* out */ Imglist::TCustomImageList* &ImageList); + __property Imglist::TCustomImageList* ImageList = {read=GetImageList}; + +public: + virtual Designintf::TPropertyAttributes __fastcall GetAttributes(void); + virtual void __fastcall GetValues(Classes::TGetStrProc Proc); + virtual AnsiString __fastcall GetValue(); + virtual void __fastcall SetValue(const AnsiString Value)/* overload */; + void __fastcall ListMeasureWidth(const AnsiString Value, Graphics::TCanvas* ACanvas, int &AWidth); + void __fastcall ListMeasureHeight(const AnsiString Value, Graphics::TCanvas* ACanvas, int &AHeight); + void __fastcall ListDrawValue(const AnsiString Value, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool ASelected); + void __fastcall PropDrawName(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool ASelected); + void __fastcall PropDrawValue(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool ASelected); +public: + #pragma option push -w-inl + /* TPropertyEditor.Create */ inline __fastcall virtual TCommonImageIndexProperty(const Designintf::_di_IDesigner ADesigner, int APropCount) : Designeditors::TIntegerProperty(ADesigner, APropCount) { } + #pragma option pop + #pragma option push -w-inl + /* TPropertyEditor.Destroy */ inline __fastcall virtual ~TCommonImageIndexProperty(void) { } + #pragma option pop + + +/* Hoisted overloads: */ + +public: + inline void __fastcall SetValue(const WideString Value){ TPropertyEditor::SetValue(Value); } + +private: + void *__ICustomPropertyListDrawing; /* Vcleditors::ICustomPropertyListDrawing */ + void *__ICustomPropertyDrawing; /* Vcleditors::ICustomPropertyDrawing */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Vcleditors::_di_ICustomPropertyListDrawing() + { + Vcleditors::_di_ICustomPropertyListDrawing intf; + GetInterface(intf); + return intf; + } + #else + operator ICustomPropertyListDrawing*(void) { return (ICustomPropertyListDrawing*)&__ICustomPropertyListDrawing; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Vcleditors::_di_ICustomPropertyDrawing() + { + Vcleditors::_di_ICustomPropertyDrawing intf; + GetInterface(intf); + return intf; + } + #else + operator ICustomPropertyDrawing*(void) { return (ICustomPropertyDrawing*)&__ICustomPropertyDrawing; } + #endif + +}; + + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE AnsiString DELPHI_USES_UNITS[8]; +extern PACKAGE AnsiString BUIDLER_INCLUDE[1]; +extern PACKAGE Toolsapi::_di_IOTAProjectGroup __fastcall GetCurrentProjectGroup(); +extern PACKAGE Toolsapi::_di_IOTAProject __fastcall GetCurrentProject(); +extern PACKAGE Toolsapi::_di_IOTAGalleryCategory __fastcall AddDelphiCategory(AnsiString CategoryID, AnsiString CategoryCaption); +extern PACKAGE Toolsapi::_di_IOTAGalleryCategory __fastcall AddBuilderCategory(AnsiString CategoryID, AnsiString CategoryCaption); +extern PACKAGE void __fastcall RemoveCategory(Toolsapi::_di_IOTAGalleryCategory Category); +extern PACKAGE bool __fastcall IsDelphiPersonality(void); + +} /* namespace Mpcommonwizardhelpers */ +using namespace Mpcommonwizardhelpers; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpcommonwizardhelpers diff --git a/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.obj b/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.obj new file mode 100644 index 0000000000000000000000000000000000000000..acd92be38f5687fb8e545afc8a1b14f620455e13 GIT binary patch literal 28918 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.pas b/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.pas new file mode 100644 index 0000000..08e7e45 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonWizardHelpers.pas @@ -0,0 +1,1054 @@ +unit MPCommonWizardHelpers; + +// +// This unit is to be used in DesignTime packages and units ONLY +// + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$include Compilers.Inc} +{$I ..\Include\Addins.inc} + +uses + SysUtils, + Windows, + Controls, + ImgList, + ToolsApi, + Dialogs, + Menus, + {$IFDEF COMPILER_6_UP} + DesignIntf, + DesignEditors, + TreeIntf, + VCLEditors, + TypInfo, + Graphics, + {$ELSE} + DsgnIntf, + DsgnWnds, + {$IFDEF COMPILER_6_UP} + ParentageSupport, // Sprig support in DsnIDE5.dpk, D4 has no equivalent + {$ELSE} + {$IFDEF DELPHI_5} + ParentageSupport, // Sprig support in DsnIDE5.dpk, D4 has no equivalent + {$ENDIF} + {$ENDIF} + {$ENDIF} + Classes, + MPCommonWizardTemplates; + +const + DELPHI_USES_UNITS: array[0..7] of string = ( + 'Windows', + 'Messages', + 'SysUtils', + 'Classes', + 'Controls', + 'Forms', + 'Dialogs', + 'Graphics' + ); + + BUIDLER_INCLUDE: array[0..0] of string = ( + 'vcl.h' + ); + +type + {$IFNDEF COMPILER_7_UP} + // *************************************************************************** + // TOTAFile + // The implements the basic IOTAFile interface + // *************************************************************************** + TOTAFile = class(TInterfacedObject, IOTAFile) + FSource: string; + FAge: TDateTime; + public + constructor Create(const StringCode: String; const Age: TDateTime = -1); + function GetSource: string; virtual; + function GetAge: TDateTime; virtual; + end; + {$ENDIF} + + {$IFNDEF COMPILER_5_UP} + TNotifierObject = class(TInterfacedObject) + public + procedure AfterSave; + procedure BeforeSave; + procedure Destroyed; + procedure Modified; + end; + {$ENDIF} + + // --------------------------------------------------------------------------- + // OTAFile Module + // --------------------------------------------------------------------------- + TCommonOTAFile = class(TOTAFile, IOTAFile) + private + FAncestorIdent: string; + FFormIdent: string; + FModuleIdent: string; + FUsesIdent: TStringList; + public + property AncestorIdent: string read FAncestorIdent write FAncestorIdent; + property FormIdent: string read FFormIdent write FFormIdent; + property ModuleIdent: string read FModuleIdent write FModuleIdent; + property IncludeIdent: TStringList read FUsesIdent write FUsesIdent; + end; + + TCommonOTAFileForm = class(TCommonOTAFile, IOTAFile) + private + public + function GetSource: string; override; + end; + + // --------------------------------------------------------------------------- + // ModuleCreator Classes + // --------------------------------------------------------------------------- + + // *************************************************************************** + // TCommonWizardModuleCreator + // Implements the basic functionality of IOTAModuleCreator + // *************************************************************************** + TCommonWizardModuleCreator = class(TInterfacedObject, IOTACreator, IOTAModuleCreator) + private + FAncestorName: string; + FFormName: string; + FMainForm: Boolean; + FShowForm: Boolean; + FShowSource: Boolean; + FUsesIdent: TStringList; + function GetIsDelphi: Boolean; + public + constructor Create; virtual; + destructor Destroy; override; + // Override to initalize the creator + procedure InitializeCreator; virtual; + + // IOTACreator + function GetCreatorType: string; virtual; + function GetExisting: Boolean; virtual; + function GetFileSystem: string; virtual; + function GetOwner: IOTAModule; virtual; + function GetUnnamed: Boolean; virtual; + + // IOTAModuleCreator + function GetAncestorName: string; virtual; + function GetImplFileName: string; virtual; + function GetIntfFileName: string;virtual; + function GetFormName: string; virtual; + function GetMainForm: Boolean; virtual; + function GetShowForm: Boolean; virtual; + function GetShowSource: Boolean; virtual; + function NewFormFile(const FormIdent, AncestorIdent: string): IOTAFile; virtual; + function NewImplSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile; virtual; + function NewIntfSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile; virtual; + procedure FormCreated(const FormEditor: IOTAFormEditor); virtual; + + procedure LoadDefaultBuilderIncludeStrings(ClearFirst: Boolean); + procedure LoadDefaultDelphiUsesStrings(ClearFirst: Boolean); + + property CreatorType: string read GetCreatorType; + property Existing: Boolean read GetExisting; + property FileSystem: string read GetFileSystem; + property Owner: IOTAModule read GetOwner; + property Unnamed: Boolean read GetUnnamed; + + property AncestorName: string read GetAncestorName write FAncestorName; + property FormName: string read GetFormName write FFormName; + property ImplFileName: string read GetImplFileName; + property IntfFileName: string read GetIntfFileName; + property IsDelphi: Boolean read GetIsDelphi; + property MainForm: Boolean read GetMainForm write FMainForm; + property ShowForm: Boolean read GetShowForm write FShowForm; + property ShowSource: Boolean read GetShowSource write FShowSource; + property IncludeIdent: TStringList read FUsesIdent write FUsesIdent; + end; + TCommonWizardModuleCreatorClass = class of TCommonWizardModuleCreator; + + // *************************************************************************** + // TCommonWizardEmptyUnitCreator + // The Creator that creates a basic unit for the project + // *************************************************************************** + TCommonWizardEmptyUnitCreator = class(TCommonWizardModuleCreator) + public + function GetCreatorType: string; override; + end; + + // *************************************************************************** + // TCommonWizardEmptyFormCreator + // The Creator that creates a basic blank Form for the project + // *************************************************************************** + TCommonWizardEmptyFormCreator = class(TCommonWizardModuleCreator) + private + public + function GetCreatorType: string; override; + function NewImplSource(const ModuleIdent: string; const FormIdent: string; const AncestorIdent: string): IOTAFile; override; + end; + + // *************************************************************************** + // TCommonWizardEmptyTextCreator + // The Creator that creates a basic text file for the project + // *************************************************************************** + TCommonWizardEmptyTextCreator = class(TCommonWizardModuleCreator) + public + function GetCreatorType: string; override; + end; + + // --------------------------------------------------------------------------- + // Repository Wizard Classes + // --------------------------------------------------------------------------- + + // *************************************************************************** + // TCommonWizardNotifierObject + // + // Use as basis for Wizards. + // + // *************************************************************************** + TCommonWizardNotifierObject = class(TNotifierObject, + {$IFDEF COMPILER_6_UP}IOTARepositoryWizard60, {$ENDIF} + {$IFDEF COMPILER_8_UP}IOTARepositoryWizard80, {$ENDIF} + IOTAWizard, + IOTARepositoryWizard, + IOTAProjectWizard) + private + FAuthor: string; + FCaption: string; + FComment: string; + FGlyphResourceID: string; + FPage: string; + FState: TWizardState; + FUniqueID: string; + {$IFDEF COMPILER_8_UP} + FGalleryCategory: IOTAGalleryCategory; + {$ENDIF COMPILER_8_UP} + protected + function GetGlpyhResourceID: string; virtual; + public + constructor Create; + + // Override to load the wizard with the necessary information + procedure InitializeWizard; virtual; + + // IOTAWizard + function GetIDString: string; virtual; + function GetName: string; virtual; + function GetState: TWizardState; + procedure Execute; virtual; + // + function GetAuthor: string; + function GetComment: string; virtual; + function GetPage: string; virtual; + {$IFDEF COMPILER_6_UP} + function GetGlyph: Cardinal; + {$ELSE} + function GetGlyph: HICON; + {$ENDIF} + + {$IFDEF COMPILER_6_UP} + // IOTARepositoryWizard60 + function GetDesigner: string; + {$ENDIF} + + {$IFDEF COMPILER_8_UP} + // IOTARepositoryWizard80 + function GetGalleryCategory: IOTAGalleryCategory; virtual; + function GetPersonality: string; virtual; abstract; + {$ENDIF} + + {$IFDEF COMPILER_6_UP} + property Designer: string read GetDesigner; + {$ENDIF} + {$IFDEF COMPILER_8_UP} + property Personality: string read GetPersonality; + {$ENDIF} + + // Set to the Author that will show up in the Details View of the Object + property Author: string read GetAuthor write FAuthor; + // Set to the Caption that will show up in the View of the Object + property Caption: string read GetName write FCaption; + // Set to the Comment that will show up in the Details View of the Object + property Comment: string read GetComment write FComment; + // Set to the Resource ID (in the a *.res file) that defines the icon for the object + {$IFDEF COMPILER_8_UP} + // Set the Gallery Category where the Wizard reside, it is the value returned from AddDelphiCategory or AddBuilderCategory + property GalleryCategory: IOTAGalleryCategory read GetGalleryCategory write FGalleryCategory; + {$ENDIF COMPILER_8_UP} + property GlyphResourceID: string read GetIDString write FGlyphResourceID; + // Set to the Page that Object will show up on when selecting File>New>Other... + property Page: string read GetPage write FPage; + // Set special attributes for the Wizard (enabled, checked etc) + property State: TWizardState read GetState write FState; + // Set to a unique string that will identify the Object to Delphi (i.e. "Mustangpeak.CommonWizards.Demo") + property UniqueID: string read GetIDString write FUniqueID; + end; + + TCommonWizardModuleCreate = class(TCommonWizardNotifierObject, + {$IFDEF COMPILER_6_UP}IOTARepositoryWizard60, {$ENDIF} + {$IFDEF COMPILER_8_UP}IOTARepositoryWizard80, {$ENDIF} + IOTAWizard, + IOTARepositoryWizard, + IOTAProjectWizard) + private + FCreatorClass: TCommonWizardModuleCreatorClass; + public + procedure Execute; override; + + property CreatorClass: TCommonWizardModuleCreatorClass read FCreatorClass write FCreatorClass; + end; + + // *************************************************************************** + // TCommonWizardDelphiForm + // Wizard to Create a new Delphi Form + // *************************************************************************** + TCommonWizardDelphiForm = class(TCommonWizardModuleCreate, + {$IFDEF COMPILER_6_UP}IOTARepositoryWizard60, {$ENDIF} + {$IFDEF COMPILER_8_UP}IOTARepositoryWizard80, {$ENDIF} + IOTAWizard, + IOTARepositoryWizard, + IOTAProjectWizard) + protected + public + // IOTAWizard + {$IFDEF COMPILER_8_UP} + function GetPersonality: string; override; + {$ENDIF COMPILER_8_UP} + end; + + TCommonWizardBuilderForm = class(TCommonWizardDelphiForm, + {$IFDEF COMPILER_6_UP}IOTARepositoryWizard60, {$ENDIF} + {$IFDEF COMPILER_8_UP}IOTARepositoryWizard80, {$ENDIF} + IOTAWizard, + IOTARepositoryWizard, + IOTAProjectWizard) + public + // IOTAWizard + {$IFDEF COMPILER_8_UP} + function GetPersonality: string; override; + {$ENDIF COMPILER_8_UP} + end; + + {$IFDEF COMPILER_6_UP} + TPersistentHack = class(TPersistent); + + // *************************************************************************** + // TImageIndexProperty + // Creates a property that implmements a customdraw dropdown list for + // ImageList index properties. + // *************************************************************************** + TCommonImageIndexProperty = class(TIntegerProperty, ICustomPropertyDrawing, ICustomPropertyListDrawing) + private + function GetImageList: TCustomImageList; + function GetImageListAt(ComponentIndex: Integer): TCustomImageList; + protected + function ExtractImageList(Inst: TPersistent; out ImageList: TCustomImageList): Boolean; virtual; + property ImageList: TCustomImageList read GetImageList; + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + function GetValue: string; override; + procedure SetValue(const Value: string); override; + + procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas; var AWidth: Integer); + procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas; var AHeight: Integer); + procedure ListDrawValue(const Value: string; ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean); + + procedure PropDrawName(ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean); + procedure PropDrawValue(ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean); + end; +{$ENDIF COMPILER_6_UP} + + +function GetCurrentProjectGroup: IOTAProjectGroup; +function GetCurrentProject: IOTAProject; +{$IFDEF COMPILER_8_UP} +// These must be called in the initialization section of a unit +function AddDelphiCategory(CategoryID, CategoryCaption: string): IOTAGalleryCategory; +function AddBuilderCategory(CategoryID, CategoryCaption: string): IOTAGalleryCategory; +procedure RemoveCategory(Category: IOTAGalleryCategory); + +function IsDelphiPersonality: Boolean; +{$ENDIF COMPILER_8_UP} + +implementation + + +function GetCurrentProjectGroup: IOTAProjectGroup; +var + IModuleServices: IOTAModuleServices; + IModule: IOTAModule; + IProjectGroup: IOTAProjectGroup; + i: Integer; +begin + Result := nil; + IModuleServices := BorlandIDEServices as IOTAModuleServices; + for i := 0 to IModuleServices.ModuleCount - 1 do + begin + IModule := IModuleServices.Modules[i]; + if IModule.QueryInterface(IOTAProjectGroup, IProjectGroup) = S_OK then + begin + Result := IProjectGroup; + Break; + end; + end; +end; + +function GetCurrentProject: IOTAProject; +var + ProjectGroup: IOTAProjectGroup; + // i: Integer; +begin + Result := nil; + ProjectGroup := GetCurrentProjectGroup; + + if Assigned(ProjectGroup) then + if ProjectGroup.ProjectCount > 0 then + Result := ProjectGroup.ActiveProject +end; + +{$IFDEF COMPILER_8_UP} +function AddDelphiCategory(CategoryID, CategoryCaption: string): IOTAGalleryCategory; +var + Manager: IOTAGalleryCategoryManager; + ParentCategory: IOTAGalleryCategory; +begin + Result := nil; + Manager := BorlandIDEServices as IOTAGalleryCategoryManager; + if Assigned(Manager) then + begin + ParentCategory := Manager.FindCategory(sCategoryDelphiNew); + if Assigned(ParentCategory) then + Result := Manager.AddCategory(ParentCategory, CategoryID, CategoryCaption); + end +end; + +function AddBuilderCategory(CategoryID, CategoryCaption: string): IOTAGalleryCategory; +var + Manager: IOTAGalleryCategoryManager; + ParentCategory: IOTAGalleryCategory; +begin + Result := nil; + Manager := BorlandIDEServices as IOTAGalleryCategoryManager; + if Assigned(Manager) then + begin + ParentCategory := Manager.FindCategory(sCategoryCBuilderNew); + if Assigned(ParentCategory) then + Result := Manager.AddCategory(ParentCategory, CategoryID, CategoryCaption); + end +end; + +procedure RemoveCategory(Category: IOTAGalleryCategory); +var + Manager: IOTAGalleryCategoryManager; +begin + Manager := BorlandIDEServices as IOTAGalleryCategoryManager; + if Assigned(Manager) then + begin + if Assigned(Category) then + Manager.DeleteCategory(Category) + end +end; + +function IsDelphiPersonality: Boolean; +var + Personalities: IOTAPersonalityServices; +begin + Personalities := BorlandIDEServices as IOTAPersonalityServices; + Result := Personalities.CurrentPersonality = sDelphiPersonality; +end; +{$ENDIF} + +{$IFNDEF COMPILER_7_UP} +{ TOTAFile } + +constructor TOTAFile.Create(const StringCode: String; const Age: TDateTime); +begin + FSource := StringCode; + FAge := Age; +end; + +function TOTAFile.GetSource: string; +begin + Result := FSource; +end; + +function TOTAFile.GetAge: TDateTime; +begin + Result := FAge; +end; +{$ENDIF} + + +{$IFNDEF COMPILER_5_UP} +{ TNotifierObject } + +procedure TNotifierObject.AfterSave; +begin + // do nothing stub implementation +end; + +procedure TNotifierObject.BeforeSave; +begin + // do nothing stub implementation +end; + +procedure TNotifierObject.Destroyed; +begin + // do nothing stub implementation +end; + +procedure TNotifierObject.Modified; +begin + // do nothing stub implementation +end; +{$ENDIF} + +{ TCommonWizardDelphiForm } + +{$IFDEF COMPILER_8_UP} +function TCommonWizardDelphiForm.GetPersonality: string; +begin + Result := sDelphiPersonality +end; +{$ENDIF COMPILER_8_UP} + +{ TCommonWizardBuilderForm } + +{$IFDEF COMPILER_8_UP} +function TCommonWizardBuilderForm.GetPersonality: string; +begin + Result := sCBuilderPersonality +end; +{$ENDIF COMPILER_8_UP} + +{$IFDEF COMPILER_6_UP} + +{ TImageIndexProperty} + +function TCommonImageIndexProperty.ExtractImageList(Inst: TPersistent; out ImageList: TCustomImageList): Boolean; +var + P: PPropList; + I, C: Integer; + s: string; +begin + s := Inst.ClassName; + C := GetPropList(Inst.ClassInfo, P); + try + for I := 0 to C - 1 do + if (P[I].PropType^.Kind = tkClass) and GetTypeData(P[I].PropType^).ClassType.InheritsFrom(TCustomImageList) then + begin + Result := True; + ImageList := TCustomImageList(TypInfo.GetObjectProp(Inst, P[I])); + Exit; + end; + Result := False; + finally + FreeMem(P); + end; +end; + + +function TCommonImageIndexProperty.GetImageListAt(ComponentIndex: Integer): TCustomImageList; +var + Inst: TPersistent; +begin + Inst := GetComponent(ComponentIndex); + while Assigned(Inst) do + begin + if ExtractImageList(Inst, Result) then Exit; + + Inst := TPersistentHack(Inst).GetOwner; + end; + Result := nil; +end; + + +function TCommonImageIndexProperty.GetImageList: TCustomImageList; +var + I, J: Integer; + ImgList: TCustomImageList; +begin + Result := nil; + for I := 0 to PropCount - 1 do + begin + ImgList := GetImageListAt(I); + if Assigned(ImgList) then + begin + for J := I + 1 to PropCount - 1 do + if GetImageListAt(J) <> ImgList then + begin + Result := nil; + Exit; + end; + Result := ImgList; + Exit; + end; + end; +end; + + +function TCommonImageIndexProperty.GetAttributes: TPropertyAttributes; +begin + Result := [paValueList, paRevertable, paMultiSelect]; +end; + + +function TCommonImageIndexProperty.GetValue: string; +begin + Result:= IntToStr(GetOrdValue); +end; + + +procedure TCommonImageIndexProperty.SetValue(const Value: string); +var + XValue: integer; +begin + try + XValue := StrToInt(Value); + SetOrdValue(XValue); + except + inherited SetValue(Value); + end; +end; + + +procedure TCommonImageIndexProperty.GetValues(Proc: TGetStrProc); +var + XImageList: TCustomImageList; + I: integer; +begin + XImageList:=GetImageList; + if Assigned(XImageList) then + for I := 0 to XImageList.Count - 1 do + Proc(IntToStr(i)); +end; + + +procedure TCommonImageIndexProperty.ListMeasureWidth(const Value: string; ACanvas: TCanvas; + var AWidth: Integer); +begin + AWidth := AWidth + ACanvas.TextHeight('M'); + if AWidth < 17 then AWidth := 17; +end; + + +procedure TCommonImageIndexProperty.ListMeasureHeight(const Value: string; ACanvas: TCanvas; + var AHeight: Integer); +var + ImageList: TCustomImageList; +begin + ImageList := GetImageList; + if Assigned(ImageList) then + AHeight := ImageList.Height + 4 + else + AHeight := 20; + if AHeight < 17 then AHeight := 17; +end; + + +procedure TCommonImageIndexProperty.ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean); +var + ImageList: TCustomImageList; + XRight: Integer; + XOldPenColor, XOldBrushColor: TColor; + Index: TImageIndex; +begin + ImageList := GetImageList; + Index := StrToIntDef(Value, -1); + XRight := ARect.Left; + try + if Assigned(ImageList) and (Index >= 0) then + begin + XRight := ARect.Left + ImageList.Width + 4; + XOldPenColor := ACanvas.Pen.Color; + XOldBrushColor := ACanvas.Brush.Color; + + ACanvas.Pen.Color := ACanvas.Brush.Color; + ACanvas.Rectangle(ARect.Left, ARect.Top, XRight, ARect.Bottom); + + ImageList.DrawOverlay(ACanvas, ARect.Left + 2, ARect.Top + 2, Index, 0); + ACanvas.Brush.Color := XOldBrushColor; + ACanvas.Pen.Color := XOldPenColor; + end; + finally + DefaultPropertyListDrawValue(Value, ACanvas, Rect(XRight, ARect.Top, ARect.Right, ARect.Bottom), ASelected); + end; +end; + + +procedure TCommonImageIndexProperty.PropDrawName(ACanvas: TCanvas; const ARect: TRect; + ASelected: Boolean); +begin + DefaultPropertyDrawName(Self, ACanvas, ARect); +end; + + +procedure TCommonImageIndexProperty.PropDrawValue(ACanvas: TCanvas; const ARect: TRect; + ASelected: Boolean); +var + ImageList: TCustomImageList; +begin + ImageList := GetImageList; + if (GetVisualValue <> '') and Assigned(ImageList) and (ImageList.Height < 17) then + ListDrawValue(GetVisualValue, ACanvas, ARect, True{ASelected}) + else + DefaultPropertyDrawValue(Self, ACanvas, ARect); +end; + +{$ENDIF COMPILER_6_UP} + + +{ TCommonWizardNotifierObject } + +constructor TCommonWizardNotifierObject.Create; +begin + inherited Create; + InitializeWizard; +end; + +function TCommonWizardNotifierObject.GetAuthor: string; +begin + Result := FAuthor +end; + +function TCommonWizardNotifierObject.GetComment: string; +begin + Result := FComment +end; + +{$IFDEF COMPILER_8_UP} +function TCommonWizardNotifierObject.GetGalleryCategory: IOTAGalleryCategory; +begin + Result := FGalleryCategory +end; +{$ENDIF COMPILER_8_UP} + +function TCommonWizardNotifierObject.GetGlpyhResourceID: string; +begin + Result := FGlyphResourceID +end; + +function TCommonWizardNotifierObject.GetIDString: string; +begin + Result := FUniqueID +end; + +function TCommonWizardNotifierObject.GetName: string; +begin + Result := FCaption +end; + +function TCommonWizardNotifierObject.GetPage: string; +begin + Result := FPage +end; + +function TCommonWizardNotifierObject.GetState: TWizardState; +begin + Result := FState +end; + +{$IFDEF COMPILER_6_UP} +function TCommonWizardNotifierObject.GetGlyph: Cardinal; +begin + Result := LoadIcon(hInstance, PChar(GetGlpyhResourceID)); +end; +{$ELSE} +function TCommonWizardNotifierObject.GetGlyph: HICON; +begin + Result := LoadIcon(hInstance, PChar(GetGlpyhResourceID)); +end; +{$ENDIF} + +{$IFDEF COMPILER_6_UP} + +function TCommonWizardNotifierObject.GetDesigner: string; +begin + Result := dVCL +end; +{$ENDIF} + +procedure TCommonWizardNotifierObject.InitializeWizard; +begin + // Override in descendent +end; + +procedure TCommonWizardNotifierObject.Execute; +begin + // Override in descendent +end; + +{ TCommonWizardModuleCreator } + +constructor TCommonWizardModuleCreator.Create; +begin + inherited; + ShowSource := True; + ShowForm := True; + IncludeIdent := TStringList.Create; + if IsDelphi then + LoadDefaultDelphiUsesStrings(True) + else + LoadDefaultBuilderIncludeStrings(True); + InitializeCreator +end; + +destructor TCommonWizardModuleCreator.Destroy; +begin + inherited; + IncludeIdent.Free +end; + +function TCommonWizardModuleCreator.GetIsDelphi: Boolean; +begin +{$IFDEF CPPB} + Result := False; +{$ELSE} + {$IFDEF COMPILER_10_UP} + if IsDelphiPersonality then + Result := True + else + Result := False; + {$ELSE} + Result := True; + {$ENDIF} +{$ENDIF} +end; + +procedure TCommonWizardModuleCreator.FormCreated(const FormEditor: IOTAFormEditor); +begin + +end; + +function TCommonWizardModuleCreator.GetAncestorName: string; +begin + Result := FAncestorName +end; + +function TCommonWizardModuleCreator.GetCreatorType: string; +begin + Result := '' +end; + +function TCommonWizardModuleCreator.GetExisting: Boolean; +begin + Result := False; +end; + +function TCommonWizardModuleCreator.GetFileSystem: string; +begin + Result := ''; +end; + +function TCommonWizardModuleCreator.GetFormName: string; +begin + Result := FFormName +end; + +function TCommonWizardModuleCreator.GetImplFileName: string; +begin + Result := '' +end; + +function TCommonWizardModuleCreator.GetIntfFileName: string; +begin + Result := '' +end; + +function TCommonWizardModuleCreator.GetMainForm: Boolean; +begin + Result := FMainForm +end; + +function TCommonWizardModuleCreator.GetOwner: IOTAModule; +begin + Result := GetCurrentProjectGroup; + if Assigned(Result) then + Result := (Result as IOTAProjectGroup).ActiveProject + else + Result := GetCurrentProject +end; + +function TCommonWizardModuleCreator.GetShowForm: Boolean; +begin + Result := FShowForm +end; + +function TCommonWizardModuleCreator.GetShowSource: Boolean; +begin + Result := FShowSource +end; + +function TCommonWizardModuleCreator.GetUnnamed: Boolean; +begin + Result := True +end; + +function TCommonWizardModuleCreator.NewFormFile(const FormIdent, + AncestorIdent: string): IOTAFile; +begin + Result := nil +end; + +function TCommonWizardModuleCreator.NewImplSource(const ModuleIdent, + FormIdent, AncestorIdent: string): IOTAFile; +begin + Result := nil +end; + +function TCommonWizardModuleCreator.NewIntfSource(const ModuleIdent, + FormIdent, AncestorIdent: string): IOTAFile; +begin + Result := nil +end; + +procedure TCommonWizardModuleCreator.LoadDefaultBuilderIncludeStrings(ClearFirst: Boolean); +var + i: Integer; +begin + if ClearFirst then + IncludeIdent.Clear; + for i := 0 to High(BUIDLER_INCLUDE) do + IncludeIdent.Add(BUIDLER_INCLUDE[i]) +end; + +procedure TCommonWizardModuleCreator.LoadDefaultDelphiUsesStrings(ClearFirst: Boolean); +var + i: Integer; +begin + if ClearFirst then + IncludeIdent.Clear; + for i := 0 to High(DELPHI_USES_UNITS) do + IncludeIdent.Add(DELPHI_USES_UNITS[i]) +end; + +procedure TCommonWizardModuleCreator.InitializeCreator; +begin + // Override in descendent +end; + +{ TCommonWizardEmptyUnitCreator } + +function TCommonWizardEmptyUnitCreator.GetCreatorType: string; +begin + Result := sUnit; +end; + +{ TCommonWizardEmptyFormCreator } + +function TCommonWizardEmptyFormCreator.GetCreatorType: string; +begin + Result := sForm +end; + +function TCommonWizardEmptyFormCreator.NewImplSource(const ModuleIdent: string; const FormIdent: string; const AncestorIdent: string): IOTAFile; +var + OTAFile: TCommonOTAFileForm; +begin + Result := nil; + // Create the default source code for a new application + // Slip in the default ProjectName to the IOTAFile instance + OTAFile := TCommonOTAFileForm.Create(FormIdent); + OTAFile.ModuleIdent := ModuleIdent; + OTAFile.FormIdent := FormIdent; + OTAFile.AncestorIdent := AncestorIdent; + OTAFile.IncludeIdent := IncludeIdent; + Result := OTAFile as IOTAFile; +end; + +{ TCommonWizardEmptyTextCreator } + +function TCommonWizardEmptyTextCreator.GetCreatorType: string; +begin + Result := sText +end; + +{ TCommonWizardModuleCreate } + +procedure TCommonWizardModuleCreate.Execute; +var + Module: IOTAModule; +begin + if Assigned(CreatorClass) then + Module := (BorlandIDEServices as IOTAModuleServices).CreateModule(CreatorClass.Create) + else + beep(500, 50); +end; + +{ TCommonOTAFileForm } +function TCommonOTAFileForm.GetSource: string; +var + UsesClause: string; + i: Integer; + IsBCB: Boolean; +begin +{$IFDEF CPPB} + Result := FILE_FORM_TEMPLATE_BCB; + IsBCB := True; +{$ELSE} + {$IFDEF COMPILER_10_UP} + if IsDelphiPersonality then + begin + Result := FILE_FORM_TEMPLATE_DELPHI; + IsBCB := False + end else + begin + Result := FILE_FORM_TEMPLATE_BCB; + IsBCB := True + end; + {$ELSE} + Result := FILE_FORM_TEMPLATE_DELPHI; + IsBCB := False; + {$ENDIF} +{$ENDIF} + Result := StringReplace(Result, '%FormIdent', FormIdent, [rfIgnoreCase, rfReplaceAll]); + Result := StringReplace(Result, '%AncestorIdent', AncestorIdent, [rfIgnoreCase, rfReplaceAll]); + Result := StringReplace(Result, '%ModuleIdent', ModuleIdent, [rfIgnoreCase, rfReplaceAll]); + UsesClause := ''; + for i := 0 to IncludeIdent.Count - 1 do + begin + if i < IncludeIdent.Count - 1 then + begin + if IsBCB then + UsesClause := UsesClause + '#include "' + IncludeIdent[i] +'"' + #13#10 + else begin + if i = 0 then + UsesClause := UsesClause + IncludeIdent[i] + ',' + #13#10 + else + UsesClause := UsesClause + ' ' + IncludeIdent[i] + ',' + #13#10 + end + end else + begin + if IsBCB then + UsesClause := UsesClause + '#include "' + IncludeIdent[i] +'"' + #13#10 + else + UsesClause := UsesClause + ' ' + IncludeIdent[i] + ';' + #13#10 + end + end; + + Result := StringReplace(Result, '%IncludeList', UsesClause, [rfIgnoreCase, rfReplaceAll]); +end; + +end. diff --git a/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.hpp b/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.hpp new file mode 100644 index 0000000..090d0b7 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.hpp @@ -0,0 +1,82 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpcommonwizardtemplates.pas' rev: 11.00 + +#ifndef MpcommonwizardtemplatesHPP +#define MpcommonwizardtemplatesHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpcommonwizardtemplates +{ +//-- type declarations ------------------------------------------------------- +//-- var, const, procedure --------------------------------------------------- +#define FILE_FORM_TEMPLATE_DELPHI "unit %ModuleIdent; "\ + " \r\n "\ + " \r\ninterface "\ + " \r\n "\ + " \r\n "\ + " \r"\ + "\nuses "\ + " \r\n %IncludeList "\ + " \r\n "\ + " \r\ntype "\ + " \r\n T%Form"\ + "Ident= class(T%AncestorIdent) "\ + "\r\n private "\ + " \r\n { Private declarations } "\ + " \r\n public "\ + " \r\n { Public decla"\ + "rations } \r\n end;"\ + " "\ + " \r\n "\ + " \r\nvar "\ + " \r\n %FormIdent: T%FormIdent; "\ + " \r\n "\ + " \r\nimpl"\ + "ementation "\ + " \r\n "\ + " \r\n{$R *.dfm} "\ + " \r\n "\ + " \r\n "\ + " \r\nend"\ + ". "\ + " " +#define FILE_FORM_TEMPLATE_BCB "//--------------------------------------------------------"\ + "--------\r\n%IncludeList "\ + " \r\n#pragma hdrstop "\ + " \r\n "\ + " \r\n#include \""\ + "%ModuleIdent.h\" \r"\ + "\n//------------------------------------------------------"\ + "----------\r\n#pragma package(smart_init) "\ + " \r\n#pragma resource \"*.dfm\" "\ + " \r\nT%FormIdent *%Form"\ + "Ident; \r\n//----"\ + "----------------------------------------------------------"\ + "--\r\n__fastcall T%FormIdent::T%FormIdent(TComponent* Owne"\ + "r) \r\n : T%AncestorIdent(Owner) "\ + " \r\n{ "\ + " \r\n} "\ + " \r\n//--"\ + "----------------------------------------------------------"\ + "----" + +} /* namespace Mpcommonwizardtemplates */ +using namespace Mpcommonwizardtemplates; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpcommonwizardtemplates diff --git a/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.obj b/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.obj new file mode 100644 index 0000000000000000000000000000000000000000..e6af749c8d63f96f80ddd4b9d19178a9e420c20b GIT binary patch literal 631 zcmZ{g&1%~~6orp0c`QtSLY&s=rfA``n^v@#LYHQiKu-tRhQ}?H1CN zp&N&E9YSd#gl@XaBM9;;-jwzM3R$>!EPE3uV(y&t&6zvm4xeI0*Z1xCL+{YvuQk@< zPA86bgHLYH<9??bx&yzjcilclMGR3e{IJ^&w1(S1bVF_DvQ{_DtYcJpRhbrN)wX3?xl(D> zZq;mNm||DS@>au~dJ@8KRcomyA^diI*EVPQeCpS&%{gJl#&*5gP#nH#%e0tdZCTt= zMHMeI$J`TMRN--+!%rY1W2TgBsuZx?oE4U)%3^r%aIT8Wz*mOFNoFGBs))tPdJwrG z&3q8VQR(QY_Ysngt4CO>1T>`J_L+(=MLMgzaU(DErYOv<((|FpOLx#CD8A`@2>H^fN_o|(zw9ou}0#@lN}iscada(&(B3p nqEr^+3@4t4==NA(d}9JqjwriLC0yPE4M>4RA2k6^sU!XYP=cdH literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.pas b/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.pas new file mode 100644 index 0000000..0860f6a --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPCommonWizardTemplates.pas @@ -0,0 +1,76 @@ +unit MPCommonWizardTemplates; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I ..\Include\Addins.inc} + +const + FILE_FORM_TEMPLATE_DELPHI = + + 'unit %ModuleIdent; ' + #13#10 + + ' ' + #13#10 + + 'interface ' + #13#10 + + ' ' + #13#10 + + ' ' + #13#10 + + 'uses ' + #13#10 + + ' %IncludeList ' + #13#10 + + ' ' + #13#10 + + 'type ' + #13#10 + + ' T%FormIdent= class(T%AncestorIdent) ' + #13#10 + + ' private ' + #13#10 + + ' { Private declarations } ' + #13#10 + + ' public ' + #13#10 + + ' { Public declarations } ' + #13#10 + + ' end; ' + #13#10 + + ' ' + #13#10 + + 'var ' + #13#10 + + ' %FormIdent: T%FormIdent; ' + #13#10 + + ' ' + #13#10 + + 'implementation ' + #13#10 + + ' ' + #13#10 + + '{$R *.dfm} ' + #13#10 + + ' ' + #13#10 + + ' ' + #13#10 + + 'end. '; + + FILE_FORM_TEMPLATE_BCB = + '//----------------------------------------------------------------' + #13#10 + + '%IncludeList ' + #13#10 + + '#pragma hdrstop ' + #13#10 + + ' ' + #13#10 + + '#include "%ModuleIdent.h" ' + #13#10 + + '//----------------------------------------------------------------' + #13#10 + + '#pragma package(smart_init) ' + #13#10 + + '#pragma resource "*.dfm" ' + #13#10 + + 'T%FormIdent *%FormIdent; ' + #13#10 + + '//----------------------------------------------------------------' + #13#10 + + '__fastcall T%FormIdent::T%FormIdent(TComponent* Owner) ' + #13#10 + + ' : T%AncestorIdent(Owner) ' + #13#10 + + '{ ' + #13#10 + + '} ' + #13#10 + + '//----------------------------------------------------------------'; + +implementation + +end. diff --git a/official/1.7.0/Common Library/Source/MPDataObject.hpp b/official/1.7.0/Common Library/Source/MPDataObject.hpp new file mode 100644 index 0000000..9dd2422 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPDataObject.hpp @@ -0,0 +1,521 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpdataobject.pas' rev: 11.00 + +#ifndef MpdataobjectHPP +#define MpdataobjectHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpdataobject +{ +//-- type declarations ------------------------------------------------------- +#pragma option push -b- +enum TPerformedDropEffect { effectNone, effectCopy, effectMove, effectLink }; +#pragma option pop + +typedef TPerformedDropEffect *PPerformedDropEffect; + +typedef DynamicArray TFormatEtcArray; + +#pragma pack(push,4) +struct TDataObjectInfo +{ + +public: + tagFORMATETC FormatEtc; + tagSTGMEDIUM StgMedium; + bool OwnedByDataObject; +} ; +#pragma pack(pop) + +typedef DynamicArray TDataObjectInfoArray; + +typedef tagFORMATETC TeltArray[256]; + +class DELPHICLASS TCommonEnumFormatEtc; +class PASCALIMPLEMENTATION TCommonEnumFormatEtc : public System::TInterfacedObject +{ + typedef System::TInterfacedObject inherited; + +private: + int FInternalIndex; + DynamicArray FFormats; + +protected: + HRESULT __stdcall Next(int celt, /* out */ void *elt, PLongint pceltFetched); + HRESULT __stdcall Skip(int celt); + HRESULT __stdcall Reset(void); + HRESULT __stdcall Clone(/* out */ _di_IEnumFORMATETC &Enum); + __property int InternalIndex = {read=FInternalIndex, write=FInternalIndex, nodefault}; + +public: + __fastcall TCommonEnumFormatEtc(void); + __fastcall virtual ~TCommonEnumFormatEtc(void); + void __fastcall SetFormatLength(int Size); + __property TFormatEtcArray Formats = {read=FFormats, write=FFormats}; +private: + void *__IEnumFORMATETC; /* IEnumFORMATETC */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IEnumFORMATETC() + { + _di_IEnumFORMATETC intf; + GetInterface(intf); + return intf; + } + #else + operator IEnumFORMATETC*(void) { return (IEnumFORMATETC*)&__IEnumFORMATETC; } + #endif + +}; + + +__interface ICommonDataObject; +typedef System::DelphiInterface _di_ICommonDataObject; +__interface INTERFACE_UUID("{F8B3EE47-C6C1-4FE3-9D94-757AA35DC038}") ICommonDataObject : public IDataObject +{ + +public: + virtual bool __fastcall AssignDragImage(Graphics::TBitmap* Image, const Types::TPoint &HotSpot, Graphics::TColor TransparentColor) = 0 ; + virtual bool __fastcall SaveGlobalBlock(Word Format, void * MemoryBlock, int MemoryBlockSize) = 0 ; + virtual bool __fastcall LoadGlobalBlock(Word Format, void * &MemoryBlock) = 0 ; +}; + +typedef void __fastcall (__closure *TGetDataEvent)(System::TObject* Sender, const tagFORMATETC &FormatEtcIn, tagSTGMEDIUM &Medium, bool &Handled); + +typedef void __fastcall (__closure *TQueryGetDataEvent)(System::TObject* Sender, const tagFORMATETC &FormatEtcIn, bool &FormatAvailable, bool &Handled); + +class DELPHICLASS TCommonDataObject; +class PASCALIMPLEMENTATION TCommonDataObject : public System::TObject +{ + typedef System::TObject inherited; + +private: + int FRefCount; + +protected: + _di_IDataAdviseHolder FAdviseHolder; + DynamicArray FFormats; + TGetDataEvent FOnGetData; + TQueryGetDataEvent FOnQueryGetData; + HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj); + int __stdcall _AddRef(void); + int __stdcall _Release(void); + System::_di_IInterface __fastcall CanonicalIUnknown(System::_di_IInterface TestUnknown); + virtual HRESULT __stdcall DAdvise(const tagFORMATETC &formatetc, int advf, const _di_IAdviseSink advSink, /* out */ int &dwConnection); + virtual HRESULT __stdcall DUnadvise(int dwConnection); + virtual HRESULT __stdcall EnumDAdvise(/* out */ _di_IEnumSTATDATA &enumAdvise); + virtual HRESULT __stdcall EnumFormatEtc(int dwDirection, /* out */ _di_IEnumFORMATETC &enumFormatEtc); + bool __fastcall EqualFormatEtc(const tagFORMATETC &FormatEtc1, const tagFORMATETC &FormatEtc2); + int __fastcall FindFormatEtc(const tagFORMATETC &TestFormatEtc); + virtual HRESULT __stdcall GetCanonicalFormatEtc(const tagFORMATETC &formatetc, /* out */ tagFORMATETC &formatetcOut); + virtual HRESULT __stdcall GetData(const tagFORMATETC &FormatEtcIn, /* out */ tagSTGMEDIUM &Medium); + virtual HRESULT __stdcall GetDataHere(const tagFORMATETC &formatetc, /* out */ tagSTGMEDIUM &medium); + unsigned __fastcall HGlobalClone(unsigned HGlobal); + virtual HRESULT __stdcall QueryGetData(const tagFORMATETC &formatetc); + virtual HRESULT __stdcall SetData(const tagFORMATETC &formatetc, tagSTGMEDIUM &medium, BOOL fRelease); + virtual void __fastcall DoGetCustomFormats(TFormatEtcArray &Formats); + virtual void __fastcall DoOnGetData(const tagFORMATETC &FormatEtcIn, tagSTGMEDIUM &Medium, bool &Handled); + virtual void __fastcall DoOnQueryGetData(const tagFORMATETC &FormatEtcIn, bool &FormatAvailable, bool &Handled); + HRESULT __fastcall RetrieveOwnedStgMedium(const tagFORMATETC &Format, tagSTGMEDIUM &StgMedium); + HRESULT __fastcall StgMediumIncRef(const tagSTGMEDIUM &InStgMedium, tagSTGMEDIUM &OutStgMedium, bool CopyInMedium); + System::TObject* __fastcall GetObj(void); + __property _di_IDataAdviseHolder AdviseHolder = {read=FAdviseHolder}; + __property TDataObjectInfoArray Formats = {read=FFormats, write=FFormats}; + __property System::TObject* Obj = {read=GetObj}; + __property int RefCount = {read=FRefCount, nodefault}; + +public: + __fastcall TCommonDataObject(void); + __fastcall virtual ~TCommonDataObject(void); + virtual void __fastcall AfterConstruction(void); + virtual void __fastcall BeforeDestruction(void); + /* virtual class method */ virtual System::TObject* __fastcall NewInstance(TMetaClass* vmt); + bool __fastcall AssignDragImage(Graphics::TBitmap* Image, const Types::TPoint &HotSpot, Graphics::TColor TransparentColor); + virtual bool __fastcall GetUserData(const tagFORMATETC &Format, tagSTGMEDIUM &StgMedium); + bool __fastcall LoadGlobalBlock(Word Format, void * &MemoryBlock); + bool __fastcall SaveGlobalBlock(Word Format, void * MemoryBlock, int MemoryBlockSize); + __property TGetDataEvent OnGetData = {read=FOnGetData, write=FOnGetData}; + __property TQueryGetDataEvent OnQueryGetData = {read=FOnQueryGetData, write=FOnQueryGetData}; +private: + void *__ICommonExtractObj; /* Mpcommonobjects::ICommonExtractObj */ + void *__ICommonDataObject; /* Mpdataobject::ICommonDataObject */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Mpcommonobjects::_di_ICommonExtractObj() + { + Mpcommonobjects::_di_ICommonExtractObj intf; + GetInterface(intf); + return intf; + } + #else + operator ICommonExtractObj*(void) { return (ICommonExtractObj*)&__ICommonExtractObj; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_ICommonDataObject() + { + _di_ICommonDataObject intf; + GetInterface(intf); + return intf; + } + #else + operator ICommonDataObject*(void) { return (ICommonDataObject*)&__ICommonDataObject; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IDataObject() + { + _di_IDataObject intf; + GetInterface(intf); + return intf; + } + #else + operator IDataObject*(void) { return (IDataObject*)&__ICommonDataObject; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator System::_di_IInterface() + { + System::_di_IInterface intf; + GetInterface(intf); + return intf; + } + #else + operator IInterface*(void) { return (IInterface*)&__ICommonExtractObj; } + #endif + +}; + + +class DELPHICLASS TCommonClipboardFormat; +class PASCALIMPLEMENTATION TCommonClipboardFormat : public System::TObject +{ + typedef System::TObject inherited; + +public: + virtual tagFORMATETC __fastcall GetFormatEtc(); + virtual bool __fastcall LoadFromClipboard(void); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject) = 0 ; + virtual bool __fastcall SaveToClipboard(void); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject) = 0 ; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonClipboardFormat(void) : System::TObject() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonClipboardFormat(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonStreamClipFormat; +class PASCALIMPLEMENTATION TCommonStreamClipFormat : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +public: + virtual tagFORMATETC __fastcall GetFormatEtc(); + virtual bool __fastcall LoadFromClipboard(void); + HIDESBASE bool __fastcall LoadFromDataObject(_di_IDataObject DataObject, Mpcommonobjects::TCommonStream* CoolStream); + virtual bool __fastcall SaveToClipboard(void); + HIDESBASE bool __fastcall SaveToDataObject(_di_IDataObject DataObject, Mpcommonobjects::TCommonStream* CoolStream); +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonStreamClipFormat(void) : TCommonClipboardFormat() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonStreamClipFormat(void) { } + #pragma option pop + +}; + + +typedef DynamicArray<_FILEDESCRIPTORA > TDescriptorAArray; + +typedef DynamicArray<_FILEDESCRIPTORW > TDescriptorWArray; + +class DELPHICLASS TFileGroupDescriptorA; +class PASCALIMPLEMENTATION TFileGroupDescriptorA : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +private: + Classes::TStream* FStream; + int __fastcall GetDescriptorCount(void); + _FILEDESCRIPTORA __fastcall GetFileDescriptorA(int Index); + void __fastcall SetFileDescriptor(int Index, const _FILEDESCRIPTORA &Value); + +protected: + DynamicArray<_FILEDESCRIPTORA > FFileDescriptors; + __property Classes::TStream* Stream = {read=FStream, write=FStream}; + +public: + void __fastcall AddFileDescriptor(const _FILEDESCRIPTORA &FileDescriptor); + void __fastcall DeleteFileDescriptor(int Index); + virtual tagFORMATETC __fastcall GetFormatEtc(); + _FILEDESCRIPTORA __fastcall FillDescriptor(AnsiString FileName); + Classes::TStream* __fastcall GetFileStream(const _di_IDataObject DataObject, int FileIndex); + void __fastcall LoadFileGroupDestriptor(Shlobj::PFileGroupDescriptorA FileGroupDiscriptor); + virtual bool __fastcall LoadFromClipboard(void); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject); + virtual bool __fastcall SaveToClipboard(void); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject); + __property int DescriptorCount = {read=GetDescriptorCount, nodefault}; + __property _FILEDESCRIPTORA FileDescriptor[int Index] = {read=GetFileDescriptorA, write=SetFileDescriptor}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TFileGroupDescriptorA(void) : TCommonClipboardFormat() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TFileGroupDescriptorA(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TFileGroupDescriptorW; +class PASCALIMPLEMENTATION TFileGroupDescriptorW : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +private: + Classes::TStream* FStream; + int __fastcall GetDescriptorCount(void); + _FILEDESCRIPTORW __fastcall GetFileDescriptorW(int Index); + void __fastcall SetFileDescriptor(int Index, const _FILEDESCRIPTORW &Value); + +protected: + DynamicArray<_FILEDESCRIPTORW > FFileDescriptors; + __property Classes::TStream* Stream = {read=FStream, write=FStream}; + +public: + void __fastcall AddFileDescriptor(const _FILEDESCRIPTORW &FileDescriptor); + void __fastcall DeleteFileDescriptor(int Index); + _FILEDESCRIPTORW __fastcall FillDescriptor(WideString FileName); + Classes::TStream* __fastcall GetFileStream(const _di_IDataObject DataObject, int FileIndex); + virtual tagFORMATETC __fastcall GetFormatEtc(); + void __fastcall LoadFileGroupDestriptor(Shlobj::PFileGroupDescriptorW FileGroupDiscriptor); + virtual bool __fastcall LoadFromClipboard(void); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject); + virtual bool __fastcall SaveToClipboard(void); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject); + __property int DescriptorCount = {read=GetDescriptorCount, nodefault}; + __property _FILEDESCRIPTORW FileDescriptor[int Index] = {read=GetFileDescriptorW, write=SetFileDescriptor}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TFileGroupDescriptorW(void) : TCommonClipboardFormat() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TFileGroupDescriptorW(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonHDrop; +class PASCALIMPLEMENTATION TCommonHDrop : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +private: + void __fastcall SetDropFiles(const Shlobj::PDropFiles Value); + unsigned __fastcall GetHDropStruct(void); + +protected: + _DROPFILES *FDropFiles; + int FStructureSize; + int FFileCount; + void __fastcall AllocStructure(int Size); + int __fastcall CalculateDropFileStructureSizeA(Shlobj::PDropFiles Value); + int __fastcall CalculateDropFileStructureSizeW(Shlobj::PDropFiles Value); + int __fastcall FileCountA(void); + int __fastcall FileCountW(void); + AnsiString __fastcall FileNameA(int Index); + WideString __fastcall FileNameW(int Index); + void __fastcall FreeStructure(void); + +public: + __fastcall virtual ~TCommonHDrop(void); + bool __fastcall AssignFromClipboard(void); + virtual bool __fastcall LoadFromClipboard(void); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject); + int __fastcall FileCount(void); + WideString __fastcall FileName(int Index); + virtual tagFORMATETC __fastcall GetFormatEtc(); + void __fastcall AssignFilesA(Classes::TStringList* FileList); + void __fastcall FileNamesA(Classes::TStrings* FileList); + __property unsigned HDropStruct = {read=GetHDropStruct, nodefault}; + virtual bool __fastcall SaveToClipboard(void); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject); + __property int StructureSize = {read=FStructureSize, nodefault}; + __property Shlobj::PDropFiles DropFiles = {read=FDropFiles, write=SetDropFiles}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonHDrop(void) : TCommonClipboardFormat() { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonShellIDList; +class PASCALIMPLEMENTATION TCommonShellIDList : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +private: + _IDA *FCIDA; + int __fastcall GetCIDASize(void); + Shlobj::PItemIDList __fastcall InternalChildPIDL(int Index); + Shlobj::PItemIDList __fastcall InternalParentPIDL(void); + void __fastcall SetCIDA(const Shlobj::PIDA Value); + +public: + Shlobj::PItemIDList __fastcall AbsolutePIDL(int Index); + void __fastcall AbsolutePIDLs(Mpcommonobjects::TCommonPIDLList* APIDLList); + void __fastcall AssignPIDLs(Mpcommonobjects::TCommonPIDLList* APIDLList); + __fastcall virtual ~TCommonShellIDList(void); + virtual tagFORMATETC __fastcall GetFormatEtc(); + virtual bool __fastcall LoadFromClipboard(void); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject); + Shlobj::PItemIDList __fastcall ParentPIDL(void); + int __fastcall PIDLCount(void); + Shlobj::PItemIDList __fastcall RelativePIDL(int Index); + void __fastcall RelativePIDLs(Mpcommonobjects::TCommonPIDLList* APIDLList); + virtual bool __fastcall SaveToClipboard(void); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject); + __property Shlobj::PIDA CIDA = {read=FCIDA, write=SetCIDA}; + __property int CIDASize = {read=GetCIDASize, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonShellIDList(void) : TCommonClipboardFormat() { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonLogicalPerformedDropEffect; +class PASCALIMPLEMENTATION TCommonLogicalPerformedDropEffect : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +private: + TPerformedDropEffect FAction; + +public: + virtual tagFORMATETC __fastcall GetFormatEtc(); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject); + __property TPerformedDropEffect Action = {read=FAction, write=FAction, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonLogicalPerformedDropEffect(void) : TCommonClipboardFormat() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonLogicalPerformedDropEffect(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonPreferredDropEffect; +class PASCALIMPLEMENTATION TCommonPreferredDropEffect : public TCommonLogicalPerformedDropEffect +{ + typedef TCommonLogicalPerformedDropEffect inherited; + +public: + virtual tagFORMATETC __fastcall GetFormatEtc(); +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonPreferredDropEffect(void) : TCommonLogicalPerformedDropEffect() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonPreferredDropEffect(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonInShellDragLoop; +class PASCALIMPLEMENTATION TCommonInShellDragLoop : public TCommonClipboardFormat +{ + typedef TCommonClipboardFormat inherited; + +private: + unsigned FData; + +public: + virtual tagFORMATETC __fastcall GetFormatEtc(); + virtual bool __fastcall LoadFromDataObject(_di_IDataObject DataObject); + virtual bool __fastcall SaveToDataObject(_di_IDataObject DataObject); + __property unsigned Data = {read=FData, write=FData, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TCommonInShellDragLoop(void) : TCommonClipboardFormat() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TCommonInShellDragLoop(void) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +#define CFSTR_LOGICALPERFORMEDDROPEFFECT "Logical Performed DropEffect" +#define CFSTR_PREFERREDDROPEFFECT "Preferred DropEffect" +#define CFSTR_PERFORMEDDROPEFFECT "Performed DropEffect" +#define CFSTR_PASTESUCCEEDED "Paste Succeeded" +#define CFSTR_INDRAGLOOP "InShellDragLoop" +#define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets" +static const Shortint SIZE_SHELLDRAGLOOPDATA = 0x4; +extern PACKAGE Word CF_SHELLIDLIST; +extern PACKAGE Word CF_PERFORMEDDROPEFFECT; +extern PACKAGE Word CF_PASTESUCCEEDED; +extern PACKAGE Word CF_INDRAGLOOP; +extern PACKAGE Word CF_SHELLIDLISTOFFSET; +extern PACKAGE Word CF_LOGICALPERFORMEDDROPEFFECT; +extern PACKAGE Word CF_PREFERREDDROPEFFECT; +extern PACKAGE Word CF_FILECONTENTS; +extern PACKAGE Word CF_FILEDESCRIPTORA; +extern PACKAGE Word CF_FILEDESCRIPTORW; +extern PACKAGE bool __fastcall DataObjectContainsPIDL(Shlobj::PItemIDList APIDL, const _di_IDataObject DataObj); +extern PACKAGE bool __fastcall DataObjectSupportsShell(const _di_IDataObject DataObj); +extern PACKAGE tagFORMATETC __fastcall HDropFormat(); +extern PACKAGE tagFORMATETC __fastcall ShellIDListFormat(); +extern PACKAGE tagFORMATETC __fastcall FileDescriptorAFormat(); +extern PACKAGE tagFORMATETC __fastcall FileDescriptorWFormat(); +extern PACKAGE tagFORMATETC __fastcall FillFormatEtc(Word cfFormat, Activex::PDVTargetDevice ptd = (void *)(0x0), int dwAspect = 0x1, int lindex = 0xffffffff, int tymed = 0x1); + +} /* namespace Mpdataobject */ +using namespace Mpdataobject; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpdataobject diff --git a/official/1.7.0/Common Library/Source/MPDataObject.obj b/official/1.7.0/Common Library/Source/MPDataObject.obj new file mode 100644 index 0000000000000000000000000000000000000000..56130cb742ee35aadfd9483a8eb540cb3129a57c GIT binary patch literal 45565 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Source/MPDataObject.pas b/official/1.7.0/Common Library/Source/MPDataObject.pas new file mode 100644 index 0000000..2cc028d --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPDataObject.pas @@ -0,0 +1,2354 @@ +unit MPDataObject; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{.$DEFINE GX_DEBUG} + +{$I Compilers.inc} +{$I Options.inc} +{$I ..\Include\Debug.inc} +{$I ..\Include\Addins.inc} + +uses + Windows, + Messages, + SysUtils, + Classes, + Graphics, + Controls, + Forms, + ActiveX, + ShlObj, + ShellAPI, + {$IFDEF GX_DEBUG} + DbugIntf, + {$ENDIF} + MPShellTypes, + MPCommonUtilities, + MPCommonObjects, + {$IFDEF TNTSUPPORT} + TntStdCtrls, + TntClasses, + TntWideStrings, + {$ENDIF} + AxCtrls; + +const + // Standard Shell Formats + CFSTR_LOGICALPERFORMEDDROPEFFECT = 'Logical Performed DropEffect'; + CFSTR_PREFERREDDROPEFFECT = 'Preferred DropEffect'; + CFSTR_PERFORMEDDROPEFFECT = 'Performed DropEffect'; + CFSTR_PASTESUCCEEDED = 'Paste Succeeded'; + CFSTR_INDRAGLOOP = 'InShellDragLoop'; + CFSTR_SHELLIDLISTOFFSET = 'Shell Object Offsets'; + SIZE_SHELLDRAGLOOPDATA = 4; + +type + PPerformedDropEffect = ^TPerformedDropEffect; + TPerformedDropEffect = ( + effectNone, // No Operation (DROPEFFECT_NONE) + effectCopy, // Operation was a copy (DROPEFFECT_COPY) + effectMove, // Operation was a move (DROPEFFECT_MOVE) + effectLink // Operation was a link (DROPEFFECT_LINK) + ); + +type + TFormatEtcArray = array of TFormatEtc; + TDataObjectInfo = record + FormatEtc: TFormatEtc; + StgMedium: TStgMedium; + OwnedByDataObject: Boolean + end; + TDataObjectInfoArray = array of TDataObjectInfo; + +type + // This is just a WAG for the size. I can't imagine it ever needing this + // many formats + TeltArray = array[0..255] of TFormatEtc; + + {$IFNDEF COMPILER_6_UP} + PCardinal = ^Cardinal; + {$ENDIF} + +//------------------------------------------------------------------------------ +// TCommonEnumFormatEtc : +// Implements the IEnumFormatEtc interface for the IDataObject +// implementation. This interface is called by a potential droptarget to see it +// the IDataObject contains data that the target knows how to handle and would +// like a shot at accepting it. +//------------------------------------------------------------------------------- + + TCommonEnumFormatEtc = class(TInterfacedObject, IEnumFormatEtc) + private + FInternalIndex: integer; + FFormats: TFormatEtcArray; + protected + { IEnumFormatEtc } + function Next(celt: Longint; out elt; pceltFetched: PLongint): HResult; stdcall; + function Skip(celt: Longint): HResult; stdcall; + function Reset: HResult; stdcall; + function Clone(out Enum: IEnumFormatEtc): HResult; stdcall; + + property InternalIndex: integer read FInternalIndex write FInternalIndex; + public + constructor Create; + destructor Destroy; override; + + procedure SetFormatLength(Size: Integer); + property Formats: TFormatEtcArray read FFormats write FFormats; + end; + +//-------------------------------------------------------------------------------} +// TCommonDataObject : } +// Implements the IDataObject interface. This interface is called by a } +// potential droptarget to see it the IDataObject contains data that the target } +// knows how to handle and would like a shot at accepting it. } +//-------------------------------------------------------------------------------} + + ICommonDataObject = interface(IDataObject) + ['{F8B3EE47-C6C1-4FE3-9D94-757AA35DC038}'] + function AssignDragImage(Image: TBitmap; HotSpot: TPoint; TransparentColor: TColor): Boolean; + function SaveGlobalBlock(Format: TClipFormat; MemoryBlock: Pointer; MemoryBlockSize: integer): Boolean; + function LoadGlobalBlock(Format: TClipFormat; var MemoryBlock: Pointer): Boolean; + end; + + TGetDataEvent = procedure(Sender: TObject; const FormatEtcIn: TFormatEtc; var Medium: TStgMedium; var Handled: Boolean) of object; + TQueryGetDataEvent = procedure(Sender: TObject; const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean) of object; + + TCommonDataObject = class(TObject, IUnknown, IDataObject, ICommonDataObject, ICommonExtractObj) + private + FRefCount: Integer; + protected + FAdviseHolder: IDataAdviseHolder; + FFormats: TDataObjectInfoArray; + FOnGetData: TGetDataEvent; + FOnQueryGetData: TQueryGetDataEvent; // Reference to an OLE supplied implementation for advising. + + function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + + function CanonicalIUnknown(TestUnknown: IUnknown): IUnknown; + function DAdvise(const formatetc: TFormatEtc; advf: Longint; const advSink: IAdviseSink; out dwConnection: Longint): HResult; virtual; stdcall; + function DUnadvise(dwConnection: Longint): HResult; virtual; stdcall; + function EnumDAdvise(out enumAdvise: IEnumStatData): HResult;virtual; stdcall; + function EnumFormatEtc(dwDirection: Longint; out enumFormatEtc: IEnumFormatEtc): HResult;virtual; stdcall; + function EqualFormatEtc(FormatEtc1, FormatEtc2: TFormatEtc): Boolean; + function FindFormatEtc(TestFormatEtc: TFormatEtc): integer; + function GetCanonicalFormatEtc(const formatetc: TFormatEtc; out formatetcOut: TFormatEtc): HResult;virtual; stdcall; + function GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium): HResult;virtual; stdcall; + function GetDataHere(const formatetc: TFormatEtc; out medium: TStgMedium): HResult;virtual; stdcall; + function HGlobalClone(HGlobal: THandle): THandle; + function QueryGetData(const formatetc: TFormatEtc): HResult;virtual; stdcall; + function SetData(const formatetc: TFormatEtc; var medium: TStgMedium; fRelease: BOOL): HResult;virtual; stdcall; + procedure DoGetCustomFormats(var Formats: TFormatEtcArray); virtual; + procedure DoOnGetData(const FormatEtcIn: TFormatEtc; var Medium: TStgMedium; var Handled: Boolean); virtual; + procedure DoOnQueryGetData(const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean); virtual; + function RetrieveOwnedStgMedium(Format: TFormatEtc; var StgMedium: TStgMedium): HRESULT; + function StgMediumIncRef(const InStgMedium: TStgMedium; var OutStgMedium: TStgMedium; CopyInMedium: Boolean): HRESULT; + + function GetObj: TObject; + + + property AdviseHolder: IDataAdviseHolder read FAdviseHolder; + property Formats: TDataObjectInfoArray read FFormats write FFormats; + property Obj: TObject read GetObj; + property RefCount: Integer read FRefCount; + public + constructor Create; + destructor Destroy; override; + procedure AfterConstruction; override; + procedure BeforeDestruction; override; + class function NewInstance: TObject; override; + function AssignDragImage(Image: TBitmap; HotSpot: TPoint; TransparentColor: TColor): Boolean; + function GetUserData(Format: TFormatEtc; var StgMedium: TStgMedium): Boolean; virtual; + function LoadGlobalBlock(Format: TClipFormat; var MemoryBlock: Pointer): Boolean; + function SaveGlobalBlock(Format: TClipFormat; MemoryBlock: Pointer; MemoryBlockSize: integer): Boolean; + + property OnGetData: TGetDataEvent read FOnGetData write FOnGetData; + property OnQueryGetData: TQueryGetDataEvent read FOnQueryGetData write FOnQueryGetData; + end; + + TCommonClipboardFormat = class + public + function GetFormatEtc: TFormatEtc; virtual; + function LoadFromClipboard: Boolean; virtual; + function LoadFromDataObject(DataObject: IDataObject): Boolean; virtual; abstract; + function SaveToClipboard: Boolean; virtual; + function SaveToDataObject(DataObject: IDataObject): Boolean; virtual; abstract; + end; + + TCommonStreamClipFormat = class(TCommonClipboardFormat) + public + function GetFormatEtc: TFormatEtc; override; + function LoadFromClipboard: Boolean; override; + function LoadFromDataObject(DataObject: IDataObject; CoolStream: TCommonStream): Boolean; reintroduce; + function SaveToClipboard: Boolean; override; + function SaveToDataObject(DataObject: IDataObject; CoolStream: TCommonStream): Boolean; reintroduce; + end; + +// Simpifies dealing with the CFSTR_FILEGROUPDESCRIPTOR format + TDescriptorAArray = array of TFileDescriptorA; + TDescriptorWArray = array of TFileDescriptorW; + + TFileGroupDescriptorA = class(TCommonClipboardFormat) + private + FStream: TStream; + function GetDescriptorCount: Integer; + function GetFileDescriptorA(Index: Integer): TFileDescriptorA; + procedure SetFileDescriptor(Index: Integer; + const Value: TFileDescriptorA); + protected + FFileDescriptors: TDescriptorAArray; + property Stream: TStream read FStream write FStream; + public + procedure AddFileDescriptor(FileDescriptor: TFileDescriptorA); + procedure DeleteFileDescriptor(Index: integer); + function GetFormatEtc: TFormatEtc; override; + function FillDescriptor(FileName: string): TFileDescriptorA; + function GetFileStream(const DataObject: IDataObject; FileIndex: Integer): TStream; + procedure LoadFileGroupDestriptor(FileGroupDiscriptor: PFileGroupDescriptorA); + function LoadFromClipboard: Boolean; override; + function LoadFromDataObject(DataObject: IDataObject): Boolean; override; + function SaveToClipboard: Boolean; override; + function SaveToDataObject(DataObject: IDataObject): Boolean; override; + + property DescriptorCount: Integer read GetDescriptorCount; + property FileDescriptor[Index: Integer]: TFileDescriptorA read GetFileDescriptorA write SetFileDescriptor; + end; + + TFileGroupDescriptorW = class(TCommonClipboardFormat) + private + FStream: TStream; + function GetDescriptorCount: Integer; + function GetFileDescriptorW(Index: Integer): TFileDescriptorW; + procedure SetFileDescriptor(Index: Integer; + const Value: TFileDescriptorW); + protected + FFileDescriptors: TDescriptorWArray; + property Stream: TStream read FStream write FStream; + public + procedure AddFileDescriptor(FileDescriptor: TFileDescriptorW); + procedure DeleteFileDescriptor(Index: integer); + function FillDescriptor(FileName: WideString): TFileDescriptorW; + function GetFileStream(const DataObject: IDataObject; FileIndex: Integer): TStream; + function GetFormatEtc: TFormatEtc; override; + procedure LoadFileGroupDestriptor(FileGroupDiscriptor: PFileGroupDescriptorW); + function LoadFromClipboard: Boolean; override; + function LoadFromDataObject(DataObject: IDataObject): Boolean; override; + function SaveToClipboard: Boolean; override; + function SaveToDataObject(DataObject: IDataObject): Boolean; override; + + property DescriptorCount: Integer read GetDescriptorCount; + property FileDescriptor[Index: Integer]: TFileDescriptorW read GetFileDescriptorW write SetFileDescriptor; + end; + + // Simpifies dealing with the CF_HDROP format + TCommonHDrop = class(TCommonClipboardFormat) + private + procedure SetDropFiles(const Value: PDropFiles); + function GetHDropStruct: THandle; + protected + FDropFiles: PDropFiles; + FStructureSize: integer; + FFileCount: integer; + + procedure AllocStructure(Size: integer); + function CalculateDropFileStructureSizeA(Value: PDropFiles): integer; + function CalculateDropFileStructureSizeW(Value: PDropFiles): integer; + function FileCountA: Integer; + function FileCountW: Integer; + function FileNameA(Index: integer): string; + function FileNameW(Index: integer): WideString; + procedure FreeStructure; // Frees memory allocated + public + destructor Destroy; override; + function AssignFromClipboard: Boolean; + function LoadFromClipboard: Boolean; override; + function LoadFromDataObject(DataObject: IDataObject): Boolean; override; + function FileCount: integer; + function FileName(Index: integer): WideString; + function GetFormatEtc: TFormatEtc; override; + procedure AssignFilesA(FileList: TStringList); + {$IFDEF TNTSUPPORT} + procedure AssignFilesW(FileList: TWideStrings); + procedure FileNamesW(FileList: TWideStrings); + {$ENDIF} + procedure FileNamesA(FileList: TStrings); + + property HDropStruct: THandle read GetHDropStruct; + function SaveToClipboard: Boolean; override; + function SaveToDataObject(DataObject: IDataObject): Boolean; override; + property StructureSize: integer read FStructureSize; + property DropFiles: PDropFiles read FDropFiles write SetDropFiles; + end; + + // Simpifies dealing with the CFSTR_SHELLIDLIST format +type + TCommonShellIDList = class(TCommonClipboardFormat) + private + FCIDA: PIDA; + function GetCIDASize: integer; + function InternalChildPIDL(Index: integer): PItemIDList; + function InternalParentPIDL: PItemIDList; + procedure SetCIDA(const Value: PIDA); + public + function AbsolutePIDL(Index: integer): PItemIDList; + procedure AbsolutePIDLs(APIDLList: TCommonPIDLList); + procedure AssignPIDLs(APIDLList: TCommonPIDLList); + destructor Destroy; override; + function GetFormatEtc: TFormatEtc; override; + function LoadFromClipboard: Boolean; override; + function LoadFromDataObject(DataObject: IDataObject): Boolean; override; + function ParentPIDL: PItemIDList; + function PIDLCount: integer; + function RelativePIDL(Index: integer): PItemIDList; + procedure RelativePIDLs(APIDLList: TCommonPIDLList); + function SaveToClipboard: Boolean; override; + function SaveToDataObject(DataObject: IDataObject): Boolean; override; + + property CIDA: PIDA read FCIDA write SetCIDA; + property CIDASize: integer read GetCIDASize; + end; + + // Simpilies dealing with the CFSTR_LOGICALPERFORMEDDROPEFFECT format + TCommonLogicalPerformedDropEffect = class(TCommonClipboardFormat) + private + FAction: TPerformedDropEffect; + public + function GetFormatEtc: TFormatEtc; override; + function LoadFromDataObject(DataObject: IDataObject): Boolean; override; + function SaveToDataObject(DataObject: IDataObject): Boolean; override; + + property Action: TPerformedDropEffect read FAction write FAction; + end; + + // Simpilies dealing with the CFSTR_PerferredDropEffect format + TCommonPreferredDropEffect = class(TCommonLogicalPerformedDropEffect) + public + function GetFormatEtc: TFormatEtc; override; + end; + + TCommonInShellDragLoop = class(TCommonClipboardFormat) + private + FData: Cardinal; + public + function GetFormatEtc: TFormatEtc; override; + function LoadFromDataObject(DataObject: IDataObject): Boolean; override; + function SaveToDataObject(DataObject: IDataObject): Boolean; override; + property Data: Cardinal read FData write FData; + end; + + function FillFormatEtc(cfFormat: Word; ptd: PDVTargetDevice = nil; + dwAspect: Longint = DVASPECT_CONTENT; lindex: Longint = -1; tymed: Longint = TYMED_HGLOBAL): TFormatEtc; + function DataObjectSupportsShell(const DataObj: IDataObject): Boolean; + function DataObjectContainsPIDL(APIDL: PItemIDList; const DataObj: IDataObject): Boolean; + + function HDropFormat: TFormatEtc; + function ShellIDListFormat: TFormatEtc; + function FileDescriptorAFormat: TFormatEtc; + function FileDescriptorWFormat: TFormatEtc; + +var + CF_SHELLIDLIST, + CF_PERFORMEDDROPEFFECT, + CF_PASTESUCCEEDED, + CF_INDRAGLOOP, + CF_SHELLIDLISTOFFSET, + CF_LOGICALPERFORMEDDROPEFFECT, + CF_PREFERREDDROPEFFECT, + CF_FILECONTENTS, + CF_FILEDESCRIPTORA, + CF_FILEDESCRIPTORW: TClipFormat; + +implementation + +var + PIDLMgr: TCommonPIDLManager; + ShellILIsEqual: function(PIDL1: PItemIDList; PIDL2: PItemIDList): LongBool; stdcall; + ShellILIsEqualChecked: Boolean = False; + + +function LoadShellILIsEqual: Boolean; +begin + if not ShellILIsEqualChecked then + begin + ShellILIsEqual := GetProcAddress(GetModuleHandle(PChar(Shell32)), PChar(21)); + ShellILIsEqualChecked := True; + end; + Result := Assigned(ShellILIsEqual) +end; + +function DataObjectContainsPIDL(APIDL: PItemIDList; const DataObj: IDataObject): Boolean; +var + ShellIDList: TCommonShellIDList; + i: Integer; + P: PItemIDList; +begin + Result := False; + ; + if Assigned(DataObj) and Assigned(APIDL) and LoadShellILIsEqual then + begin + if Succeeded(DataObj.QueryGetData(ShellIDListFormat)) then + begin + ShellIDList := TCommonShellIDList.Create; + try + if ShellIDList.LoadFromDataObject(DataObj) then + begin + i := 0; + while not Result and (i < ShellIDList.PIDLCount) do + begin + P := ShellIDList.AbsolutePIDL(i); + Result := ShellILIsEqual(P, APIDL); + PIDLMgr.FreePIDL(P); + Inc(i) + end + end + finally + ShellIDList.Free + end + end + end +end; + +function DataObjectSupportsShell(const DataObj: IDataObject): Boolean; +begin + Result := False; + if Assigned(DataObj) then + begin + Result := Succeeded(DataObj.QueryGetData(HDropFormat)) or + Succeeded(DataObj.QueryGetData(ShellIDListFormat)) or + Succeeded(DataObj.QueryGetData(FileDescriptorAFormat)) or + Succeeded(DataObj.QueryGetData(FileDescriptorWFormat)) + end +end; + +function HDropFormat: TFormatEtc; +begin + Result.cfFormat := CF_HDROP; // This guy is always registered for all applications + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function ShellIDListFormat: TFormatEtc; +begin + Result.cfFormat := CF_SHELLIDLIST; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL; +end; + +function FileDescriptorAFormat: TFormatEtc; +begin + Result.cfFormat := CF_FILEDESCRIPTORA; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function FileDescriptorWFormat: TFormatEtc; +begin + Result.cfFormat := CF_FILEDESCRIPTORW; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function FillFormatEtc(cfFormat: Word; ptd: PDVTargetDevice = nil; + dwAspect: Longint = DVASPECT_CONTENT; lindex: Longint = -1; tymed: Longint = TYMED_HGLOBAL): TFormatEtc; +begin + Result.cfFormat := cfFormat; + Result.ptd := ptd; + Result.dwAspect := dwAspect; + Result.lindex := lindex; + Result.tymed := tymed +end; + +{ TCommonClipboardFormat } + +function TCommonClipboardFormat.GetFormatEtc: TFormatEtc; +begin + FillChar(Result, SizeOf(Result), #0); +end; + +function TCommonClipboardFormat.LoadFromClipboard: Boolean; +begin + Result := False; +end; + +function TCommonClipboardFormat.SaveToClipboard: Boolean; +begin + Result := False; +end; + +{ TLogicalPerformedDropEffect } + +function TCommonLogicalPerformedDropEffect.GetFormatEtc: TFormatEtc; +begin + Result.cfFormat := CF_LOGICALPERFORMEDDROPEFFECT; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function TCommonLogicalPerformedDropEffect.LoadFromDataObject(DataObject: IDataObject): Boolean; +var + Ptr: PPerformedDropEffect; + StgMedium: TStgMedium; +begin + Result := False; + FillChar(StgMedium, SizeOf(StgMedium), #0); + + if Succeeded(DataObject.GetData(GetFormatEtc, StgMedium)) then + try + Ptr := GlobalLock(StgMedium.hGlobal); + try + if Assigned(Ptr) then + begin + FAction := Ptr^; + Result := True; + end; + finally + GlobalUnLock(StgMedium.hGlobal); + end + finally + ReleaseStgMedium(StgMedium) + end +end; + +function TCommonLogicalPerformedDropEffect.SaveToDataObject(DataObject: IDataObject): Boolean; +var + Ptr: PPerformedDropEffect; + StgMedium: TStgMedium; +begin + FillChar(StgMedium, SizeOf(StgMedium), #0); + + StgMedium.hGlobal := GlobalAlloc(GPTR, SizeOf(FAction)); + Ptr := GlobalLock(StgMedium.hGlobal); + try + Ptr^ := FAction; + StgMedium.tymed := TYMED_HGLOBAL; + Result := Succeeded(DataObject.SetData(GetFormatEtc, StgMedium, True)) + finally + GlobalUnLock(StgMedium.hGlobal); + end +end; + +{ THDrop } + +procedure TCommonHDrop.AllocStructure(Size: integer); +begin + FreeStructure; + GetMem(FDropFiles, Size); + FStructureSize := Size; + FillChar(FDropFiles^, Size, #0); +end; + +procedure TCommonHDrop.AssignFilesA(FileList: TStringList); +var + i: Integer; + Size: integer; + Path: PChar; +begin + if Assigned(FileList) then + begin + FreeStructure; + Size := 0; + for i := 0 to FileList.Count - 1 do + Inc(Size, Length(FileList[i]) + SizeOf(Char)); // add spot for the null + Inc(Size, SizeOf(TDropFiles)); + Inc(Size, SizeOf(Char)); // room for the terminating null + AllocStructure(Size); + DropFiles.pFiles := SizeOf(TDropFiles); + DropFiles.pt.x := 0; + DropFiles.pt.y := 0; + DropFiles.fNC := False; + DropFiles.fWide := False; // Don't support wide char let NT convert it + Path := PChar(FDropFiles) + FDropFiles.pFiles; + for i := 0 to FileList.Count - 1 do + begin + MoveMemory(Path, Pointer(FileList[i]), Length(FileList[i])); + Inc(Path, Length(FileList[i]) + 1); // skip over the single null #0 + end + end +end; + +function TCommonHDrop.AssignFromClipboard: Boolean; +var + Handle: THandle; + Ptr: PDropFiles; +begin + Result := False; + Handle := 0; + OpenClipboard(Application.Handle); + try + Handle := GetClipboardData(CF_HDROP); + if Handle <> 0 then + begin + Ptr := GlobalLock(Handle); + if Assigned(Ptr) then + begin + DropFiles := Ptr; + Result := True; + end; + end; + finally + CloseClipboard; + GlobalUnLock(Handle); + end; +end; + +function TCommonHDrop.CalculateDropFileStructureSizeA( + Value: PDropFiles): integer; +var + Head: PChar; + Len: integer; +begin + if Assigned(Value) then + begin + Result := Value^.pFiles; + Head := PChar( Value) + Value^.pFiles; + Len := lstrlen(Head); + while Len > 0 do + begin + Result := Result + Len + 1; + Head := Head + Len + 1; + Len := lstrlen(Head); + end; + Inc(Result, 1); // Add second null + end else + Result := 0 +end; + +function TCommonHDrop.CalculateDropFileStructureSizeW( + Value: PDropFiles): integer; +var + Head: PChar; + Len: integer; +begin + if Assigned(Value) then + begin + Result := Value^.pFiles; + Head := PChar( Value) + Value^.pFiles; + Len := 2 * (lstrlenW(PWideChar( Head))); + while Len > 0 do + begin + Result := Result + Len + 2; + Head := Head + Len + 2; + Len := 2 * (lstrlenW(PWideChar( Head))); + end; + Inc(Result, 2); // Add second null + end else + Result := 0 +end; + +destructor TCommonHDrop.Destroy; +begin + FreeStructure; + inherited; +end; + +function TCommonHDrop.FileCount: integer; +begin + if Assigned(DropFiles) then + begin + if FFileCount = 0 then + begin + if DropFiles.fWide then + Result := FileCountW + else + Result := FileCountA; + FFileCount := Result; + end; + end else + FFileCount := 0; + Result := FFileCount +end; + +function TCommonHDrop.FileCountA: Integer; +var + Head: PChar; + Len: integer; +begin + Result := 0; + if Assigned(DropFiles) then + begin + Head := PChar( DropFiles) + DropFiles^.pFiles; + Len := lstrlen(Head); + while Len > 0 do + begin + Head := Head + Len + 1; + Inc(Result); + Len := lstrlen(Head); + end + end +end; + +function TCommonHDrop.FileCountW: Integer; +var + Head: PChar; + Len: integer; +begin + Result := 0; + if Assigned(DropFiles) then + begin + Head := PChar( DropFiles) + DropFiles^.pFiles; + Len := 2 * (lstrlenW(PWideChar( Head))); + while Len > 0 do + begin + Head := Head + Len + 2; + Inc(Result); + Len := 2 * (lstrlenW(PWideChar( Head))); + end + end; +end; + +function TCommonHDrop.FileName(Index: integer): WideString; +begin + if Assigned(DropFiles) then + begin + if DropFiles.fWide then + Result := FileNameW(Index) + else + Result := FileNameA(Index) + end +end; + +function TCommonHDrop.FileNameA(Index: integer): string; +var + Head: PChar; + PathNameCount: integer; + Done: Boolean; + Len: integer; +begin + PathNameCount := 0; + Done := False; + if Assigned(DropFiles) then + begin + Head := PChar( DropFiles) + DropFiles^.pFiles; + Len := lstrlen(Head); + while (not Done) and (PathNameCount < FileCount) do + begin + if PathNameCount = Index then + begin + SetLength(Result, Len + 1); + CopyMemory(@Result[1], Head, Len + 1); // Include the NULL + Done := True; + end; + Head := Head + Len + 1; + Inc(PathNameCount); + Len := lstrlen(Head); + end + end +end; + +{$IFDEF TNTSUPPORT} +procedure TCommonHDrop.AssignFilesW(FileList: TWideStrings); +var + i: Integer; + Size: integer; + Path: PChar; + ByteSize: Integer; +begin + if Assigned(FileList) then + begin + FreeStructure; + Size := 0; + if UnicodeStringLists then + ByteSize := 2 + else + ByteSize := 1; + for i := 0 to FileList.Count - 1 do + Inc(Size, (Length(FileList[i])+1)*(SizeOf(Char)*ByteSize)); // add spot for the null + Inc(Size, SizeOf(TDropFiles)); + Inc(Size, SizeOf(Char)*2); // room for the terminating null + AllocStructure(Size); + DropFiles.pFiles := SizeOf(TDropFiles); + DropFiles.pt.x := 0; + DropFiles.pt.y := 0; + DropFiles.fNC := False; + DropFiles.fWide := UnicodeStringLists; + Path := PChar(FDropFiles) + FDropFiles.pFiles; + for i := 0 to FileList.Count - 1 do + begin + MoveMemory(Path, Pointer(FileList[i]), Length(FileList[i])*ByteSize); + Inc(Path, (Length(FileList[i]) + 1)*ByteSize); // skip over the single null #0 + end + end +end; + +procedure TCommonHDrop.FileNamesW(FileList: TWideStrings); +var + i: integer; +begin + if Assigned(FileList) then + begin + for i := 0 to FileCount - 1 do + FileList.Add(FileNameW(i)); + end; +end; +{$ENDIF} + +procedure TCommonHDrop.FileNamesA(FileList: TStrings); +var + i: integer; +begin + if Assigned(FileList) then + begin + for i := 0 to FileCount - 1 do + FileList.Add(FileName(i)); + end; +end; + +function TCommonHDrop.FileNameW(Index: integer): WideString; +var + Head: PChar; + PathNameCount: integer; + Done: Boolean; + Len: integer; +begin + PathNameCount := 0; + Done := False; + if Assigned(DropFiles) then + begin + Head := PChar( DropFiles) + DropFiles^.pFiles; + Len := 2 * (lstrlenW(PWideChar( Head))); + while (not Done) and (PathNameCount < FileCount) do + begin + if PathNameCount = Index then + begin + SetLength(Result, (Len + 1) div 2); + CopyMemory(@Result[1], Head, Len + 2); // Include the NULL + Done := True; + end; + Head := Head + Len + 2; + Inc(PathNameCount); + Len := 2 * (lstrlenW(PWideChar( Head))); + end + end +end; + +procedure TCommonHDrop.FreeStructure; +begin + FFileCount := 0; + if Assigned(FDropFiles) then + FreeMem(FDropFiles, FStructureSize); + FDropFiles := nil; + FStructureSize := 0; +end; + +function TCommonHDrop.GetFormatEtc: TFormatEtc; +begin + Result.cfFormat := CF_HDROP; // This guy is always registered for all applications + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function TCommonHDrop.GetHDropStruct: THandle; +var + Files: PDropFiles; +begin + Result := GlobalAlloc(GHND, StructureSize); + Files := GlobalLock(Result); + try + MoveMemory(Files, FDropFiles, StructureSize); + finally + GlobalUnlock(Result) + end; +end; + +function TCommonHDrop.LoadFromClipboard: Boolean; +var + Handle: THandle; + Ptr: PDropFiles; +begin + Result := False; + Handle := 0; + OpenClipboard(Application.Handle); + try + Handle := GetClipboardData(CF_HDROP); + if Handle <> 0 then + begin + Ptr := GlobalLock(Handle); + if Assigned(Ptr) then + begin + DropFiles := Ptr; + Result := True; + end; + end; + finally + CloseClipboard; + GlobalUnLock(Handle); + end; +end; + +function TCommonHDrop.LoadFromDataObject(DataObject: IDataObject): Boolean; +var + Medium: TStgMedium; + Files: PDropFiles; +begin + Result := False; + if Assigned(DataObject) then + begin + if Succeeded(DataObject.GetData(GetFormatEtc, Medium)) then + try + Files := GlobalLock(Medium.hGlobal); + try + DropFiles := Files + finally + GlobalUnlock(Medium.hGlobal) + end + finally + ReleaseStgMedium(Medium) + end; + Result := Assigned(DropFiles) + end +end; + +function TCommonHDrop.SaveToClipboard: Boolean; +begin + Result := False; + OpenClipboard(Application.Handle); + try + SetClipboardData(CF_HDROP, HDropStruct) + finally + CloseClipboard; + end; +end; + +function TCommonHDrop.SaveToDataObject(DataObject: IDataObject): Boolean; +var + Medium: TStgMedium; +begin + Result := False; + FillChar(Medium, SizeOf(Medium), #0); + Medium.tymed := TYMED_HGLOBAL; + Medium.hGlobal := HDropStruct; + // Give the block to the DataObject + if Succeeded(DataObject.SetData(GetFormatEtc, Medium, True)) then + Result := True + else + GlobalFree(Medium.hGlobal) +end; + +procedure TCommonHDrop.SetDropFiles(const Value: PDropFiles); +begin + FreeStructure; + if Assigned(Value) then + begin + if Value.fWide then + FStructureSize := CalculateDropFileStructureSizeW(Value) + else + FStructureSize := CalculateDropFileStructureSizeA(Value); + AllocStructure(StructureSize); + CopyMemory(FDropFiles, Value, StructureSize); + end; +end; + +{ TPreferredDropEffect } + +function TCommonPreferredDropEffect.GetFormatEtc: TFormatEtc; +begin + Result.cfFormat := CF_PREFERREDDROPEFFECT; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +{ TCoolStreamClipFormat } + +function TCommonStreamClipFormat.GetFormatEtc: TFormatEtc; +begin + Result.cfFormat := 0; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function TCommonStreamClipFormat.LoadFromClipboard: Boolean; +begin + Result := False; + Assert(True=False, 'TCoolStream.LoadFromClipboard not Implemented'); +end; + +function TCommonStreamClipFormat.LoadFromDataObject(DataObject: IDataObject; + CoolStream: TCommonStream): Boolean; +var + Medium: TStgMedium; + PMem, PSize: Pointer; + Size: Int64; +begin + Result := False; + if Succeeded(DataObject.GetData(GetFormatEtc, Medium)) then + begin + PMem := GlobalLock(Medium.hGlobal); + try + PSize := @Size; + // Get the size of the Stream + MoveMemory(PMem, PSize, SizeOf(Int64)); + + CoolStream.Seek(0, soFromBeginning); + CoolStream.SetSize(Size); + + Inc(PChar( PMem), SizeOf(Int64)); + + // Copy the data to the stream + MoveMemory(PMem, CoolStream.Memory, Size); + finally + GlobalUnlock(Medium.hGlobal); + ReleaseStgMedium(Medium); + end + end +end; + +function TCommonStreamClipFormat.SaveToClipboard: Boolean; +begin + Result := False; + Assert(True=False, 'TCoolStream.SaveToClipboard not Implemented'); +end; + +function TCommonStreamClipFormat.SaveToDataObject(DataObject: IDataObject; + CoolStream: TCommonStream): Boolean; +var + Medium: TStgMedium; + Mem: HGlobal; + PMem: Pointer; + Size: Int64; + PSize: Pointer; +begin + Mem := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE, CoolStream.Size + SizeOf(Int64)); + PMem := GlobalLock(Mem); + try + FillChar(Medium, SizeOf(Medium), #0); + + PSize := @Size; + + // Write the size of the Stream to the block + Size := CoolStream.Size; + MoveMemory(PMem, PSize, SizeOf(Int64)); + + // Copy the Stream to a global memory block + MoveMemory(PMem, CoolStream.Memory, CoolStream.Size); + + // Transfer the data with a global memory block + Medium.tymed := TYMED_HGLOBAL; + Medium.hGlobal := Mem; + + // Give it to the DataObject so it may destroy it when the clients are done + Result := Succeeded(DataObject.SetData(GetFormatEtc, Medium, True)) + finally + GlobalUnlock(Mem) + end +end; + +{ TShellIDList } + +function TCommonShellIDList.AbsolutePIDL(Index: integer): PItemIDList; +{ Appends the single ItemID with the Parent folder to create an Absolute PIDL } +begin + if Assigned(FCIDA) then + begin + Result := PIDLMgr.AppendPIDL(InternalParentPIDL, InternalChildPIDL(Index)); + end else + Result := nil +end; + +procedure TCommonShellIDList.AbsolutePIDLs(APIDLList: TCommonPIDLList); +var + i: integer; +begin + if Assigned(APIDLList) and Assigned(FCIDA) then + begin + for i := 0 to PIDLCount - 1 do + APIDLList.Add( PIDLMgr.AppendPIDL(InternalParentPIDL, InternalChildPIDL(i))) + end; +end; + +procedure TCommonShellIDList.AssignPIDLs(APIDLList: TCommonPIDLList); +{ PIDLs[0] must be the Absolute Parent PIDL and the rest single ItemID children } +var + Count: Integer; + i: Integer; + Head: Pointer; + PIDLLength: Integer; +begin + Count := 0; + if Assigned(APIDLList) then + begin + { Free previously assigned CIDA } + if Assigned(FCIDA) then + FreeMem(FCIDA, CIDASize); + FCIDA := nil; + Inc(Count, SizeOf(FCIDA.cidl)); + Inc(Count, SizeOf(FCIDA.aoffset) * (APIDLList.Count)); + for i := 0 to APIDLList.Count - 1 do + Inc(Count, PIDLMgr.PIDLSize( APIDLList[i])); + GetMem(FCIDA, Count); + Head := FCIDA; + { Head points to the position of the first PIDL } + Inc(PChar(Head), SizeOf(FCIDA.cidl) + (SizeOf(FCIDA.aoffset) * APIDLList.Count)); + { Don't count the absolute parent PIDL } + FCIDA.cidl := APIDLList.Count - 1; + for i := 0 to APIDLList.Count - 1 do + begin + { Set up the array index to point to the actual PIDL data } + FCIDA.aoffset[i] := LongWord(Head-PChar( CIDA)); + PIDLLength := PIDLMgr.PIDLSize(APIDLList[i]); + Move(APIDLList[i]^, Head^, PIDLLength); + Inc(PChar(Head), PIDLLength); + end; + end; +end; + +destructor TCommonShellIDList.Destroy; +begin + { Free previously assigned CIDA } + if Assigned(FCIDA) then + FreeMem(FCIDA, CIDASize); + inherited; +end; + +function TCommonShellIDList.GetCIDASize: integer; +var + Count: integer; + i: integer; +begin + Count := 0; + if Assigned(FCIDA) then + begin + Inc(Count, SizeOf( FCIDA.cidl)); + Inc(Count, SizeOf( FCIDA.aoffset) * (PIDLCount + 1)); // Does't count [0] + Inc(Count, PIDLMgr.PIDLSize(InternalParentPIDL)); + for i := 0 to PIDLCount - 1 do + Inc(Count, PIDLMgr.PIDLSize(InternalChildPIDL(i))); + end; + Result := Count; +end; + +function TCommonShellIDList.GetFormatEtc: TFormatEtc; +begin + Result.cfFormat := CF_SHELLIDLIST; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL; +end; + +function TCommonShellIDList.InternalChildPIDL(Index: integer): PItemIDList; +{ Remember PIDLCount does not count index [0] where the Absolute Parent is } +begin + if Assigned(FCIDA) and (Index > -1) and (Index < PIDLCount) then + Result := PItemIDList( PChar(FCIDA) + PDWORD(PChar(@FCIDA^.aoffset)+sizeof(FCIDA^.aoffset[0])*(1+Index))^) + else + Result := nil +end; + +function TCommonShellIDList.InternalParentPIDL: PItemIDList; +{ Remember PIDLCount does not count index [0] where the Absolute Parent is } +begin + if Assigned(FCIDA) then + Result := PItemIDList( PChar(FCIDA) + FCIDA^.aoffset[0]) + else + Result := nil +end; + +function TCommonShellIDList.LoadFromClipboard: Boolean; +var + Handle: THandle; + Ptr: PIDA; +begin + Result := True; + Handle := 0; + if Result then + begin + try + try + Handle := GetClipboardData(CF_SHELLIDLIST); + if Handle <> 0 then + begin + Ptr := GlobalLock(Handle); + if Assigned(Ptr) then + begin + CIDA := Ptr; + Result := True; + end; + end; + except + Result := False; + raise; + end; + finally + GlobalUnLock(Handle); + end; + end +end; + +function TCommonShellIDList.LoadFromDataObject(DataObject: IDataObject): Boolean; +var + Ptr: PIDA; + StgMedium: TStgMedium; +begin + Result := False; + FillChar(StgMedium, SizeOf(StgMedium), #0); + if Succeeded(DataObject.GetData(GetFormatEtc, StgMedium)) then + try + Ptr := GlobalLock(StgMedium.hGlobal); + try + if Assigned(Ptr) then + begin + CIDA := Ptr; + Result := True; + end; + finally + GlobalUnLock(StgMedium.hGlobal); + end; + finally + ReleaseStgMedium(StgMedium) + end; +end; + +function TCommonShellIDList.ParentPIDL: PItemIDList; +begin + Result := PIDLMgr.CopyPIDL( InternalParentPIDL) +end; + +function TCommonShellIDList.PIDLCount: integer; +{ indexing is a bit weird. Index 0 is the Absolute Parent PIDL but it is not } +{ counted in the first byte of the structure. } +begin + if Assigned(FCIDA) then + Result := FCIDA^.cidl + else + Result := 0 +end; + +function TCommonShellIDList.RelativePIDL(Index: integer): PItemIDList; +{ Retrieves the single ItemID child by index } +begin + Result := PIDLMgr.CopyPIDL( InternalChildPIDL(Index)) +end; + +procedure TCommonShellIDList.RelativePIDLs(APIDLList: TCommonPIDLList); +{ Loads APIDLList with PIDL's stored in the CIDA. ReturnCopy flags if the } +{ contents will be the origionals or copies created by the PIDLMgr. } +var + i: integer; +begin + if Assigned(APIDLList) and Assigned(FCIDA) then + begin + APIDLList.CopyAdd( InternalParentPIDL); + for i := 0 to PIDLCount - 1 do + APIDLList.CopyAdd( InternalChildPIDL(i)) + end; +end; + +function TCommonShellIDList.SaveToClipboard: Boolean; +var + DataObject: IDataObject; +begin + Result := False; + DataObject := TCommonDataObject.Create; + if SaveToDataObject(DataObject) then + Result := Succeeded(OleSetClipboard(DataObject)) +end; + +function TCommonShellIDList.SaveToDataObject(DataObject: IDataObject): Boolean; +var + StgMedium: TStgMedium; + Ptr: PIDA; +begin + FillChar(StgMedium, SizeOf(StgMedium), #0); + + StgMedium.hGlobal := GlobalAlloc(GPTR, GetCIDASize); + Ptr := GlobalLock(StgMedium.hGlobal); + try + StgMedium.tymed := TYMED_HGLOBAL; + CopyMemory(Ptr, CIDA, GetCIDASize); + Result := Succeeded(DataObject.SetData(GetFormatEtc, StgMedium, True)) + finally + GlobalUnLock(StgMedium.hGlobal); + end; +end; + +procedure TCommonShellIDList.SetCIDA(const Value: PIDA); +var + TempSize: integer; +begin + { Free previously assigned CIDA } + if Assigned(FCIDA) then + begin + FreeMem(FCIDA, CIDASize); + FCIDA := nil; + end; + if Value <> nil then + begin + { Temporally assign the passed PIDA to the object } + FCIDA := Value; + { Get the size of the passed PIDA } + TempSize := CIDASize; + { Get memory to make a copy of the passed PIDA } + GetMem(FCIDA, TempSize); + { Copy the passed PIDA } + Move(Value^, FCIDA^, TempSize); + end; +end; + +{ TCommonEnumFormatEtc } + +function TCommonEnumFormatEtc.Clone(out Enum: IEnumFormatEtc): HResult; +// Creates a exact copy of the current object. +var + EnumFormatEtc: TCommonEnumFormatEtc; +begin + Result := S_OK; // Think positive + EnumFormatEtc := TCommonEnumFormatEtc.Create; // Does not increase COM reference + if Assigned(EnumFormatEtc) then + begin + SetLength(EnumFormatEtc.FFormats, Length(Formats)); + // Make copy of Format info + Move(FFormats[0], EnumFormatEtc.FFormats[0], Length(Formats) * SizeOf(TFormatEtc)); + EnumFormatEtc.InternalIndex := InternalIndex; + Enum := EnumFormatEtc as IEnumFormatEtc; // Sets COM reference to 1 + end else + Result := E_UNEXPECTED +end; + +constructor TCommonEnumFormatEtc.Create; +begin + inherited Create; + InternalIndex := 0; +end; + +destructor TCommonEnumFormatEtc.Destroy; +begin + inherited; +end; + +function TCommonEnumFormatEtc.Next(celt: Integer; out elt; pceltFetched: PLongint): HResult; +// Another EnumXXXX function. This function returns the number of objects +// requested by the caller in celt. The return buffer, elt, is a pointer to an} +// array of, in this case, TFormatEtc structures. The total number of +// structures returned is placed in pceltFetched. pceltFetched may be nil if +// celt is only asking for one structure at a time. +var + i: integer; +begin + if Assigned(Formats) then + begin + i := 0; + while (i < celt) and (InternalIndex < Length(Formats)) do + begin + TeltArray( elt)[i] := Formats[InternalIndex]; + inc(i); + inc(FInternalIndex); + end; // while + if assigned(pceltFetched) then + pceltFetched^ := i; + if i = celt then + Result := S_OK + else + Result := S_FALSE + end else + Result := E_UNEXPECTED +end; + +function TCommonEnumFormatEtc.Reset: HResult; +begin + InternalIndex := 0; + Result := S_OK +end; + +function TCommonEnumFormatEtc.Skip(celt: Integer): HResult; +// Allows the caller to skip over unwanted TFormatEtc structures. Simply adds +// celt to the index as long as it does not skip past the last structure in +// the list. +begin + if Assigned(Formats) then + begin + if InternalIndex + celt < Length(Formats) then + begin + InternalIndex := InternalIndex + celt; + Result := S_OK + end else + Result := S_FALSE + end else + Result := E_UNEXPECTED +end; + +procedure TCommonEnumFormatEtc.SetFormatLength(Size: Integer); +begin + SetLength(FFormats, Size) +end; + +{ TCommonDataObject } +class function TCommonDataObject.NewInstance: TObject; +begin + Result := inherited NewInstance; + TCommonDataObject(Result).FRefCount := 1; +end; + + +function TCommonDataObject.AssignDragImage(Image: TBitmap; + HotSpot: TPoint; TransparentColor: TColor): Boolean; +// +// Stores the Bitmap in the IDataObject to support the IDragSourceHelper drag image +// in Win2K and above. +// +var + DragSourceHelper: IDragSourceHelper; + SHDragImage: TSHDragImage; +begin + Result := False; + // NT can't swallow this CoCreateInstance call + if not IsWinNT4 then + begin + if Succeeded(CoCreateInstance(CLSID_DragDropHelper, nil, CLSCTX_INPROC_SERVER, IID_IDragSourceHelper, DragSourceHelper)) then + begin + FillChar(SHDragImage, SizeOf(SHDragImage), #0); + + SHDragImage.sizeDragImage.cx := Image.Width; + SHDragImage.sizeDragImage.cy := Image.Height; + SHDragImage.ptOffset := HotSpot; + SHDragImage.ColorRef := ColorToRGB(TransparentColor); + SHDragImage.hbmpDragImage := CopyImage(Image.Handle, IMAGE_BITMAP, Image.Width, + Image.Height, LR_COPYRETURNORG); + if SHDragImage.hbmpDragImage <> 0 then + if Succeeded(DragSourceHelper.InitializeFromBitmap(SHDragImage, Self as IDataObject)) then + Result := True + else + DeleteObject(SHDragImage.hbmpDragImage); + end + end +end; + +function TCommonDataObject.CanonicalIUnknown(TestUnknown: IUnknown): IUnknown; +// Uses COM object identity: An explicit call to the IUnknown::QueryInterface +// method, requesting the IUnknown interface, will always return the same +// pointer. +begin + if Assigned(TestUnknown) then + begin + if CommonSupports(TestUnknown, IUnknown, Result) then + IUnknown(Result)._Release // Don't actually need it just need the pointer value + else + Result := TestUnknown + end else + Result := TestUnknown +end; + +constructor TCommonDataObject.Create; +begin + inherited; +end; + +function TCommonDataObject.DAdvise(const formatetc: TFormatEtc; advf: Integer; + const advSink: IAdviseSink; out dwConnection: Integer): HResult; +begin + if not Assigned(AdviseHolder) then + CreateDataAdviseHolder(FAdviseHolder); + if Assigned(FAdviseHolder) then + Result := AdviseHolder.Advise(Self as IDataObject, formatetc, advf, advSink, dwConnection) + else + Result := OLE_E_ADVISENOTSUPPORTED; +end; + +destructor TCommonDataObject.Destroy; +begin + inherited; +end; + +function TCommonDataObject.GetObj: TObject; +begin + Result := Self +end; + +function TCommonDataObject.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE; +end; + +function TCommonDataObject._AddRef: Integer; +begin + Result := InterlockedIncrement(FRefCount); + {$IFDEF GX_DEBUG} + SendDebug('TCommonDataObject: ' + IntToHex(Integer(Self), 8) + ' AddRef: Count = ' + IntToStr(FRefCount)); + {$ENDIF} +end; + +function TCommonDataObject._Release: Integer; +begin + Result := InterlockedDecrement(FRefCount); + {$IFDEF GX_DEBUG} + SendDebug('TCommonDataObject: ' + IntToHex(Integer(Self), 8) + ' Release: Count = ' + IntToStr(FRefCount)); + {$ENDIF} + if Result = 0 then + Destroy; +end; + +procedure TCommonDataObject.AfterConstruction; +begin +// Release the constructor's implicit refcount + InterlockedDecrement(FRefCount); +end; + +procedure TCommonDataObject.BeforeDestruction; +begin +// if RefCount <> 0 then +// Error(reInvalidPtr); +end; + +procedure TCommonDataObject.DoGetCustomFormats(var Formats: TFormatEtcArray); +begin + +end; + +procedure TCommonDataObject.DoOnGetData(const FormatEtcIn: TFormatEtc; + var Medium: TStgMedium; var Handled: Boolean); +begin + if Assigned(FOnGetData) then + OnGetData(Self, FormatEtcIn, Medium, Handled); +end; + +procedure TCommonDataObject.DoOnQueryGetData( + const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean); +begin + if Assigned(FOnQueryGetData) then + OnQueryGetData(Self, FormatEtcIn, FormatAvailable, Handled); +end; + +function TCommonDataObject.DUnadvise(dwConnection: Integer): HResult; +begin + if Assigned(AdviseHolder) then + Result := AdviseHolder.Unadvise(dwConnection) + else + Result := OLE_E_ADVISENOTSUPPORTED; +end; + +function TCommonDataObject.EnumDAdvise(out enumAdvise: IEnumStatData): HResult; +begin + if Assigned(AdviseHolder) then + Result := AdviseHolder.EnumAdvise(enumAdvise) + else + Result := OLE_E_ADVISENOTSUPPORTED; +end; + +function TCommonDataObject.EnumFormatEtc(dwDirection: Integer; + out enumFormatEtc: IEnumFormatEtc): HResult; +// Called when DoDragDrop wants to know what clipboard formats are supported +// by Enumerating the TFormatEtc array through an IEnumFormatEtc object. +var + LocalEnumFormatEtc: TCommonEnumFormatEtc; + i: integer; +begin + // Always return an object even if it is empty + LocalEnumFormatEtc := TCommonEnumFormatEtc.Create; + // Get the reference count in sync + enumFormatEtc := LocalEnumFormatEtc as IEnumFormatEtc; +{ if Assigned(Formats) then + begin } + Result := S_OK; + if dwDirection = DATADIR_GET then + begin + // Copy the internal supported Formats for the EnumFormatEtc + SetLength(LocalEnumFormatEtc.FFormats, Length(Formats)); + for i := 0 to Length(Formats) - 1 do + LocalEnumFormatEtc.Formats[i] := Formats[i].FormatEtc; + + // Now copy any custom formats + DoGetCustomFormats(LocalEnumFormatEtc.FFormats); + + if not Assigned(enumFormatEtc) then + Result := E_OUTOFMEMORY + end else + begin + enumFormatEtc := nil; + Result := E_NOTIMPL; + end; + { end else + begin + if dwDirection = DATADIR_GET then + Result := S_OK + else + Result := E_NOTIMPL + end } +end; + +function TCommonDataObject.EqualFormatEtc(FormatEtc1, FormatEtc2: TFormatEtc): Boolean; +begin + Result := (FormatEtc1.cfFormat = FormatEtc2.cfFormat) and + (FormatEtc1.ptd = FormatEtc2.ptd) and + (FormatEtc1.dwAspect = FormatEtc2.dwAspect) and + (FormatEtc1.lindex = FormatEtc2.lindex) and + (FormatEtc1.tymed = FormatEtc2.tymed) +end; + +function TCommonDataObject.FindFormatEtc(TestFormatEtc: TFormatEtc): integer; +var + i: integer; + Found: Boolean; +begin + i := 0; + Found := False; + Result := -1; + while (i < Length(FFormats)) and not Found do + begin + Found := EqualFormatEtc(Formats[i].FormatEtc, TestFormatEtc); + if Found then + Result := i; + Inc(i); + end +end; + +function TCommonDataObject.GetCanonicalFormatEtc(const formatetc: TFormatEtc; + out formatetcOut: TFormatEtc): HResult; +// Since we do not have two TFormatEtcs that return the same type of data we can +// ingore this function. It is only for TFormatEtc structures that will return +// the exact same data if each is called. This could happen if the data is +// target dependant and the target can handle both types of data. This keeps +// the target from asking for redundant information. +begin + formatetcOut.ptd := nil; + Result := E_NOTIMPL; +end; + +function TCommonDataObject.GetData(const FormatEtcIn: TFormatEtc; + out Medium: TStgMedium): HResult; +// This is the workhorse of the functions. It looks at the clipboard format +// the IDropTarget wants, makes sure we can support it. If supported then see +// if it is owned by the object or the program will supply the data. +var + Handled: Boolean; +begin + Result := E_UNEXPECTED; + Handled := False; + DoOnGetData(FormatEtcIn, Medium, Handled); + if not Handled then + begin + if Assigned(Formats) then + begin + { Do we support this type of Data? } + Result := QueryGetData(FormatEtcIn); + if Result = S_OK then + begin + // If the data is owned by the IDataObject just retrieve and return it. + if RetrieveOwnedStgMedium(FormatEtcIn, Medium) = E_INVALIDARG then + { This data is defined by the Object Inspector or a custom format need to } + { Retrive it from the DragSourceManager } + if not GetUserData(FormatEtcIn, Medium) then + Result := E_UNEXPECTED + end + end + end else + Result := S_OK +end; + +function TCommonDataObject.GetDataHere(const formatetc: TFormatEtc; + out medium: TStgMedium): HResult; +begin + Result := E_NOTIMPL; +end; + +function TCommonDataObject.GetUserData(Format: TFormatEtc; var StgMedium: TStgMedium): Boolean; +begin + Result := False; +end; + +function TCommonDataObject.HGlobalClone(HGlobal: THandle): THandle; +// Returns a global memory block that is a copy of the passed memory block. +var + Size: LongWord; + Data, NewData: PChar; +begin + Size := GlobalSize(HGlobal); + Result := GlobalAlloc(GPTR, Size); + Data := GlobalLock(hGlobal); + try + NewData := GlobalLock(Result); + try + Move(Data, NewData, Size); + finally + GlobalUnLock(Result); + end + finally + GlobalUnLock(hGlobal) + end +end; + +function TCommonDataObject.LoadGlobalBlock(Format: TClipFormat; + var MemoryBlock: Pointer): Boolean; +var + FormatEtc: TFormatEtc; + StgMedium: TStgMedium; + GlobalObject: Pointer; +begin + Result := False; + + FormatEtc.cfFormat := Format; + FormatEtc.ptd := nil; + FormatEtc.dwAspect := DVASPECT_CONTENT; + FormatEtc.lindex := -1; + FormatEtc.tymed := TYMED_HGLOBAL; + + if Succeeded(QueryGetData(FormatEtc)) and Succeeded(GetData(FormatEtc, StgMedium)) then + begin + MemoryBlock := AllocMem( GlobalSize(StgMedium.hGlobal)); + GlobalObject := GlobalLock(StgMedium.hGlobal); + try + if Assigned(MemoryBlock) and Assigned(GlobalObject) then + begin + Move(GlobalObject^, MemoryBlock^, GlobalSize(StgMedium.hGlobal)); + end + finally + GlobalUnLock(StgMedium.hGlobal); + end + end; +end; + +function TCommonDataObject.QueryGetData(const formatetc: TFormatEtc): HResult; +// This function allows the IDragTarget to see if we can possibly support some +// type of data transfer. +var + i: integer; + FormatAvailable, Handled: Boolean; +begin + Handled := False; + FormatAvailable := False; + DoOnQueryGetData(FormatEtc, FormatAvailable, Handled); + if Handled then + begin + if FormatAvailable then + Result := S_OK + else + Result := DV_E_FORMATETC + end else + begin + if not FormatAvailable then + begin + if Assigned(Formats) then + begin + i := 0; + Result := DV_E_FORMATETC; + while (i < Length(Formats)) and (Result = DV_E_FORMATETC) do + begin + if Formats[i].FormatEtc.cfFormat = formatetc.cfFormat then + begin + if (Formats[i].FormatEtc.dwAspect = formatetc.dwAspect) then + begin + if (Formats[i].FormatEtc.tymed and formatetc.tymed <> 0) then + Result := S_OK + else + Result := DV_E_TYMED; + end else + Result := DV_E_DVASPECT; + end else + Result := DV_E_FORMATETC; + Inc(i) + end + end else + Result := E_UNEXPECTED; + end else + Result := S_OK + end +end; + +function TCommonDataObject.RetrieveOwnedStgMedium(Format: TFormatEtc; var StgMedium: TStgMedium): HRESULT; +var + i: integer; +begin + Result := E_INVALIDARG; + i := FindFormatEtc(Format); + if (i > -1) and Formats[i].OwnedByDataObject then + Result := StgMediumIncRef(Formats[i].StgMedium, StgMedium, False) +end; + +function TCommonDataObject.SaveGlobalBlock(Format: TClipFormat; + MemoryBlock: Pointer; MemoryBlockSize: integer): Boolean; +var + FormatEtc: TFormatEtc; + StgMedium: TStgMedium; + GlobalObject: Pointer; +begin + FormatEtc.cfFormat := Format; + FormatEtc.ptd := nil; + FormatEtc.dwAspect := DVASPECT_CONTENT; + FormatEtc.lindex := -1; + FormatEtc.tymed := TYMED_HGLOBAL; + + StgMedium.tymed := TYMED_HGLOBAL; + StgMedium.unkForRelease := nil; + StgMedium.hGlobal := GlobalAlloc(GHND or GMEM_SHARE, MemoryBlockSize); + GlobalObject := GlobalLock(StgMedium.hGlobal); + try + try + Move(MemoryBlock^, GlobalObject^, MemoryBlockSize); + Result := Succeeded( SetData(FormatEtc, StgMedium, True)) + except + Result := False; + end + finally + GlobalUnLock(StgMedium.hGlobal); + end +end; + +function TCommonDataObject.SetData(const formatetc: TFormatEtc; var medium: TStgMedium; fRelease: BOOL): HResult; +// Allows dynamic adding to the IDataObject during its existance. Most noteably +// it is used to implement IDropSourceHelper in win2k +var + Index: integer; +begin + // See if we already have a format of that type available. + Index := FindFormatEtc(FormatEtc); + if Index > - 1 then + begin + // Yes we already have that format type stored. Just use the TCommonClipboardFormat + // in the List after releasing the data + ReleaseStgMedium(Formats[Index].StgMedium); + FillChar(Formats[Index].StgMedium, SizeOf(Formats[Index].StgMedium), #0); + end else + begin + // It is a new format so create a new TDataObjectInfo record and store it in + // the Format array + SetLength(FFormats, Length(Formats) + 1); + Formats[Length(Formats) - 1].FormatEtc := FormatEtc; + Index := Length(Formats) - 1; + end; + // The data is owned by the TCommonClipboardFormat object + Formats[Index].OwnedByDataObject := True; + + if fRelease then + begin + // We are simply being given the data and we take control of it. + Formats[Index].StgMedium := Medium; + Result := S_OK + end else + // We need to reference count or copy the data and keep our own references + // to it. + Result := StgMediumIncRef(Medium, Formats[Index].StgMedium, True); + + // Can get a circular reference if the client calls GetData then calls + // SetData with the same StgMedium. Because the unkForRelease and for + // the IDataObject can be marshalled it is necessary to get pointers that + // can be correctly compared. + // See the IDragSourceHelper article by Raymond Chen at MSDN. + if Assigned(Formats[Index].StgMedium.unkForRelease) then + begin + if CanonicalIUnknown(Self) = + CanonicalIUnknown(IUnknown( Formats[Index].StgMedium.unkForRelease)) then + begin + IUnknown( Formats[Index].StgMedium.unkForRelease)._Release; + Formats[Index].StgMedium.unkForRelease := nil + end; + end; + // Tell all registered advice sinks about the data change. + if Assigned(AdviseHolder) then + AdviseHolder.SendOnDataChange(Self as IDataObject, 0, 0); +end; + +function TCommonDataObject.StgMediumIncRef(const InStgMedium: TStgMedium; + var OutStgMedium: TStgMedium; CopyInMedium: Boolean): HRESULT; +// This function increases the reference count of the passed StorageMedium in a +// variety of ways depending on the value of CopyInMedium. +// InStgMedium is the data that is requested a copy of, OutStgMedium is the data that +// we are to return either a copy of or increase the IDataObject's reference and +// send ourselves back as the data (unkForRelease). The InStgMedium is usually +// the result of a call to find a particular FormatEtc that has been stored +// locally through a call to SetData. If CopyInMedium is not true we +// already have a local copy of the data when the SetData function was called +// (during that call the CopyInMedium must be true). Then as the caller asks +// for the data through GetData we do not have to make copy of the data for the +// caller only to have them destroy it then need us to copy it again if +// necessary. This way we increase the reference count to ourselves and pass +// the STGMEDIUM structure initially stored in SetData. This way when the +// caller frees the structure it sees the unkForRelease is not nil and calls +// Release on the object instead of destroying the actual data. +begin + Result := S_OK; + // Simply copy all fields to start with. + OutStgMedium := InStgMedium; + case InStgMedium.tymed of + TYMED_HGLOBAL: + begin + if CopyInMedium then + begin + // Generate a unique copy of the data passed + OutStgMedium.hGlobal := HGlobalClone(InStgMedium.hGlobal); + if OutStgMedium.hGlobal = 0 then + Result := E_OUTOFMEMORY + end else + // Don't generate a copy just use ourselves and the copy previoiusly saved + OutStgMedium.unkForRelease := Pointer(Self as IDataObject) // Does increase RefCount + end; + TYMED_FILE: + begin + if CopyInMedium then + begin + OutStgMedium.lpszFileName := CoTaskMemAlloc(lstrLenW(InStgMedium.lpszFileName)); + MoveMemory(PWideChar(OutStgMedium.lpszFileName), PWideChar(InStgMedium.lpszFileName), lstrlenW(InStgMedium.lpszFileName) * 2); + end else + OutStgMedium.unkForRelease := Pointer(Self as IDataObject) // Does increase RefCount + end; + TYMED_ISTREAM: + // Simply increase the reference so the stream object + // Note here stm is a pointer to the auto reference counting won't work and + // we have to call _AddRef explicitly + IUnknown( OutStgMedium.stm)._AddRef; + TYMED_ISTORAGE: + // Simply increase the reference so the storage object + // Note here stm is a pointer to the auto reference counting won't work and + // we have to call _AddRef explicitly + IUnknown( OutStgMedium.stg)._AddRef; + TYMED_GDI: + if not CopyInMedium then + // Don't generate a copy just use ourselves and the copy previoiusly saved data + OutStgMedium.unkForRelease := Pointer(Self as IDataObject) // Does not increase RefCount + else + Result := DV_E_TYMED; // Don't know how to copy GDI objects right now + TYMED_MFPICT: + if not CopyInMedium then + OutStgMedium.unkForRelease := Pointer(Self as IDataObject) // Does not increase RefCount + else + Result := DV_E_TYMED; // Don't know how to copy MetaFile objects right now + TYMED_ENHMF: + if not CopyInMedium then + { Don't generate a copy just use ourselves and the copy previoiusly saved data } + OutStgMedium.unkForRelease := Pointer(Self as IDataObject) // Does not increase RefCount + else + Result := DV_E_TYMED; // Don't know how to copy enhanced metafiles objects right now + else + Result := DV_E_TYMED + end; + + // I still have to do this. The Compiler will call _Release on the above Self as IDataObject + // casts which is not what is necessary. The DataObject is released correctly. + if Assigned(OutStgMedium.unkForRelease) and (Result = S_OK) then + IUnknown(OutStgMedium.unkForRelease)._AddRef +end; + +{ TFileGroupDescriptorA } + +procedure TFileGroupDescriptorA.AddFileDescriptor( + FileDescriptor: TFileDescriptorA); +begin + SetLength(FFileDescriptors, Length(FFileDescriptors) + 1); + FFileDescriptors[Length(FFileDescriptors) - 1] := FileDescriptor; +end; + +procedure TFileGroupDescriptorA.DeleteFileDescriptor(Index: integer); +var + i: Integer; +begin + for i := Index to Length(FFileDescriptors) - 1 do + FileDescriptor[i] := FileDescriptor[i+1]; + SetLength(FFileDescriptors, Length(FFileDescriptors) - 1); +end; + +function TFileGroupDescriptorA.FillDescriptor(FileName: string): TFileDescriptorA; +begin + FillChar(Result, SizeOf(Result), #0); + StrCopy(Result.cFileName, PChar(FileName)); +end; + +function TFileGroupDescriptorA.GetDescriptorCount: Integer; +begin + Result := Length(FFileDescriptors) +end; + +function TFileGroupDescriptorA.GetFileDescriptorA(Index: Integer): TFileDescriptorA; +begin + FillChar(Result, SizeOf(Result), #0); + if (Index > -1) and (Index < Length(FFileDescriptors)) then + Result := FFileDescriptors[Index] +end; + +function TFileGroupDescriptorA.GetFileStream(const DataObject: IDataObject; + FileIndex: Integer): TStream; +var + Format: TFormatEtc; + Medium: TStgMedium; +begin + if Assigned(Stream) then + FreeAndNil(FStream); + + if Assigned(DataObject) and (FileIndex > 0) and (FileIndex < DescriptorCount) then + begin + Format.cfFormat := CF_FILECONTENTS; + Format.ptd := nil; + Format.dwAspect := DVASPECT_CONTENT; + Format.lindex := FileIndex; + Format.tymed := TYMED_ISTREAM; + if Succeeded(DataObject.GetData(Format, Medium)) then + begin + Stream := TOLEStream.Create(IStream(Medium.stm)); + ReleaseStgMedium(Medium); + end + end; + Result := Stream; +end; + +function TFileGroupDescriptorA.GetFormatEtc: TFormatEtc; +begin + Result := FileDescriptorAFormat +end; + +procedure TFileGroupDescriptorA.LoadFileGroupDestriptor(FileGroupDiscriptor: PFileGroupDescriptorA); +var + i: Cardinal; +begin + if Assigned(FileGroupDiscriptor) then + begin + SetLength(FFileDescriptors, FileGroupDiscriptor.cItems); + for i := 0 to FileGroupDiscriptor.cItems - 1 do + begin + FFileDescriptors[i] := FileGroupDiscriptor.fgd[i] + end + end else + FFileDescriptors := nil; +end; + +function TFileGroupDescriptorA.LoadFromClipboard: Boolean; +var + DataObject: IDataObject; +begin + Result := False; + if Succeeded(OleGetClipboard(DataObject)) then + Result := LoadFromDataObject(DataObject); +end; + +function TFileGroupDescriptorA.LoadFromDataObject(DataObject: IDataObject): Boolean; +var + GroupDescriptor: PFileGroupDescriptorA; + Medium: TStgMedium; + i: Integer; +begin + Result := False; + if Succeeded(DataObject.GetData(GetFormatEtc, Medium)) then + begin + GroupDescriptor := GlobalLock(Medium.hGlobal); + try + for i := 0 to GroupDescriptor^.cItems - 1 do + AddFileDescriptor(GroupDescriptor^.fgd[i]) + finally + GlobalUnlock(Medium.hGlobal); + ReleaseStgMedium(Medium); + Result := True + end + end +end; + +function TFileGroupDescriptorA.SaveToClipboard: Boolean; +var + DataObject: IDataObject; +begin + Result := False; + DataObject := TCommonDataObject.Create; + if SaveToDataObject(DataObject) then + Result := Succeeded(OleSetClipboard(DataObject)) +end; + +function TFileGroupDescriptorA.SaveToDataObject(DataObject: IDataObject): Boolean; +var + Mem: THandle; + GroupDescriptor: PFileGroupDescriptorA; + Medium: TStgMedium; + Format: TFormatEtc; +begin + Result := False; + if Assigned(DataObject) and (DescriptorCount > 0) then + begin + Mem := GlobalAlloc(GHND, DescriptorCount * SizeOf(TFileDescriptorA) + SizeOf(GroupDescriptor.cItems)); + GroupDescriptor := GlobalLock(Mem); + try + GroupDescriptor.cItems := DescriptorCount; + CopyMemory(@GroupDescriptor^.fgd[0], @FFileDescriptors[0], DescriptorCount * SizeOf(TFileDescriptorA)); + finally + GlobalUnlock(Mem) + end; + FillChar(Medium, SizeOf(Medium), #0); + Medium.tymed := TYMED_HGLOBAL; + Medium.hGlobal := Mem; + + DataObject.SetData(GetFormatEtc, Medium, True); + + Medium.tymed := TYMED_ISTREAM; + Medium.stm := nil; + + Format.cfFormat := CF_FILECONTENTS; + Format.ptd := nil; + Format.dwAspect := DVASPECT_CONTENT; + Format.lindex := -1; + Format.tymed := TYMED_ISTREAM; + DataObject.SetData(Format, Medium, True); + end +end; + +procedure TFileGroupDescriptorA.SetFileDescriptor(Index: Integer; const Value: TFileDescriptorA); +begin + if (Index > -1) and (Index < Length(FFileDescriptors)) then + FFileDescriptors[Index] := Value +end; + +{ TFileGroupDescriptorW } + +procedure TFileGroupDescriptorW.AddFileDescriptor( + FileDescriptor: TFileDescriptorW); +begin + SetLength(FFileDescriptors, Length(FFileDescriptors) + 1); + FFileDescriptors[Length(FFileDescriptors) - 1] := FileDescriptor; +end; + +procedure TFileGroupDescriptorW.DeleteFileDescriptor(Index: integer); +var + i: Integer; +begin + for i := Index to Length(FFileDescriptors) - 1 do + FileDescriptor[i] := FileDescriptor[i+1]; + SetLength(FFileDescriptors, Length(FFileDescriptors) - 1); +end; + +function TFileGroupDescriptorW.FillDescriptor(FileName: WideString): TFileDescriptorW; +begin + FillChar(Result, SizeOf(Result), #0); + StrCopyW(Result.cFileName, PWideChar(FileName)); +end; + +function TFileGroupDescriptorW.GetDescriptorCount: Integer; +begin + Result := Length(FFileDescriptors) +end; + +function TFileGroupDescriptorW.GetFileDescriptorW(Index: Integer): TFileDescriptorW; +begin + FillChar(Result, SizeOf(Result), #0); + if (Index > -1) and (Index < Length(FFileDescriptors)) then + Result := FFileDescriptors[Index] +end; + +function TFileGroupDescriptorW.GetFileStream(const DataObject: IDataObject; FileIndex: Integer): TStream; +var + Format: TFormatEtc; + Medium: TStgMedium; +begin + if Assigned(Stream) then + FreeAndNil(FStream); + + if Assigned(DataObject) and (FileIndex > -1) and (FileIndex < DescriptorCount) then + begin + Format.cfFormat := CF_FILECONTENTS; + Format.ptd := nil; + Format.dwAspect := DVASPECT_CONTENT; + Format.lindex := FileIndex; + Format.tymed := TYMED_ISTREAM; + if Succeeded(DataObject.GetData(Format, Medium)) then + begin + Stream := TOLEStream.Create(IStream(Medium.stm)); + ReleaseStgMedium(Medium); + end; + end; + Result := Stream; +end; + +function TFileGroupDescriptorW.GetFormatEtc: TFormatEtc; +begin + Result := FileDescriptorWFormat +end; + +procedure TFileGroupDescriptorW.LoadFileGroupDestriptor(FileGroupDiscriptor: PFileGroupDescriptorW); +var + i: Cardinal; +begin + if Assigned(FileGroupDiscriptor) then + begin + SetLength(FFileDescriptors, FileGroupDiscriptor.cItems); + for i := 0 to FileGroupDiscriptor.cItems - 1 do + begin + FFileDescriptors[i] := FileGroupDiscriptor.fgd[i] + end + end else + FFileDescriptors := nil; +end; + +function TFileGroupDescriptorW.LoadFromClipboard: Boolean; +var + DataObject: IDataObject; +begin + Result := False; + if Succeeded(OleGetClipboard(DataObject)) then + Result := LoadFromDataObject(DataObject); +end; + +function TFileGroupDescriptorW.LoadFromDataObject(DataObject: IDataObject): Boolean; +var + GroupDescriptor: PFileGroupDescriptorW; + Medium: TStgMedium; + i: Integer; +begin + Result := False; + if Succeeded(DataObject.GetData(GetFormatEtc, Medium)) then + begin + GroupDescriptor := GlobalLock(Medium.hGlobal); + try + for i := 0 to GroupDescriptor^.cItems - 1 do + AddFileDescriptor(GroupDescriptor^.fgd[i]) + finally + GlobalUnlock(Medium.hGlobal); + ReleaseStgMedium(Medium); + Result := True; + end + end +end; + +function TFileGroupDescriptorW.SaveToClipboard: Boolean; +var + DataObject: IDataObject; +begin + Result := False; + DataObject := TCommonDataObject.Create; + if SaveToDataObject(DataObject) then + Result := Succeeded(OleSetClipboard(DataObject)) +end; + +function TFileGroupDescriptorW.SaveToDataObject(DataObject: IDataObject): Boolean; +var + Mem: THandle; + GroupDescriptor: PFileGroupDescriptorW; + Medium: TStgMedium; + Format: TFormatEtc; +begin + Result := False; + if Assigned(DataObject) and (DescriptorCount > 0) then + begin + Mem := GlobalAlloc(GHND, DescriptorCount * SizeOf(TFileDescriptorW) + SizeOf(GroupDescriptor.cItems)); + GroupDescriptor := GlobalLock(Mem); + try + GroupDescriptor.cItems := DescriptorCount; + CopyMemory(@GroupDescriptor^.fgd[0], @FFileDescriptors[0], DescriptorCount * SizeOf(TFileDescriptorW)); + finally + GlobalUnlock(Mem) + end; + FillChar(Medium, SizeOf(Medium), #0); + Medium.tymed := TYMED_HGLOBAL; + Medium.hGlobal := Mem; + + DataObject.SetData(GetFormatEtc, Medium, True); + + Medium.tymed := TYMED_ISTREAM; + Medium.stm := nil; + + Format.cfFormat := CF_FILECONTENTS; + Format.ptd := nil; + Format.dwAspect := DVASPECT_CONTENT; + Format.lindex := -1; + Format.tymed := TYMED_ISTREAM; + DataObject.SetData(Format, Medium, True); + end +end; + +procedure TFileGroupDescriptorW.SetFileDescriptor(Index: Integer; const Value: TFileDescriptorW); +begin + if (Index > -1) and (Index < Length(FFileDescriptors)) then + FFileDescriptors[Index] := Value +end; + +{ TCommonInShellDragLoop } +function TCommonInShellDragLoop.GetFormatEtc: TFormatEtc; +begin + Result.cfFormat := CF_INDRAGLOOP; + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +function TCommonInShellDragLoop.LoadFromDataObject(DataObject: IDataObject): Boolean; +var + StgMedium: TStgMedium; + DataPtr: PCardinal; +begin + Result := False; + FillChar(StgMedium, SizeOf(StgMedium), #0); + + if Succeeded(DataObject.GetData(GetFormatEtc, StgMedium)) then + try + DataPtr := GlobalLock(StgMedium.hGlobal); + try + if Assigned(DataPtr) then + begin + Data := DataPtr^; + Result := True; + end; + finally + GlobalUnLock(StgMedium.hGlobal); + end + finally + ReleaseStgMedium(StgMedium) + end +end; + +function TCommonInShellDragLoop.SaveToDataObject(DataObject: IDataObject): Boolean; +var + StgMedium: TStgMedium; + Ptr: PCardinal; +begin + FillChar(StgMedium, SizeOf(StgMedium), #0); + StgMedium.hGlobal := GlobalAlloc(GPTR, SIZE_SHELLDRAGLOOPDATA); + Ptr := GlobalLock(StgMedium.hGlobal); + try + StgMedium.tymed := TYMED_HGLOBAL; + Ptr^ := FData; + Result := Succeeded(DataObject.SetData(GetFormatEtc, StgMedium, True)) + finally + GlobalUnLock(StgMedium.hGlobal); + end +end; + +initialization + CF_SHELLIDLIST := RegisterClipboardFormat(CFSTR_SHELLIDLIST); + CF_LOGICALPERFORMEDDROPEFFECT := RegisterClipboardFormat(CFSTR_LOGICALPERFORMEDDROPEFFECT); + CF_PREFERREDDROPEFFECT := RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT); + CF_PERFORMEDDROPEFFECT := RegisterClipboardFormat(CFSTR_PERFORMEDDROPEFFECT); + CF_PASTESUCCEEDED := RegisterClipboardFormat(CFSTR_PASTESUCCEEDED); + CF_INDRAGLOOP := RegisterClipboardFormat(CFSTR_INDRAGLOOP); + CF_SHELLIDLISTOFFSET := RegisterClipboardFormat(CFSTR_SHELLIDLISTOFFSET); + CF_FILECONTENTS := RegisterClipboardFormat(CFSTR_FILECONTENTS); + CF_FILEDESCRIPTORA := RegisterClipboardFormat(CFSTR_FILEDESCRIPTORA); + CF_FILEDESCRIPTORW := RegisterClipboardFormat(CFSTR_FILEDESCRIPTORW); + PIDLMgr := TCommonPIDLManager.Create; + +finalization + PIDLMgr.Free; + +end. diff --git a/official/1.7.0/Common Library/Source/MPResources.hpp b/official/1.7.0/Common Library/Source/MPResources.hpp new file mode 100644 index 0000000..9ca4df5 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPResources.hpp @@ -0,0 +1,62 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpresources.pas' rev: 11.00 + +#ifndef MpresourcesHPP +#define MpresourcesHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpresources +{ +//-- type declarations ------------------------------------------------------- +typedef WideString MPResources__1[10]; + +//-- var, const, procedure --------------------------------------------------- +#define STR_LINKMANAGERDISABLED "ERROR: Accessing the Link Manager when it is not enabled" +#define STR_NONEXISTENTCOLUMN "ERROR: Accessing a non-existent column index" +#define STR_NONEXISTENTCOLUMNBANDROW "ERROR: Accessing a non-existent Column Band Row" +#define STR_NONEXISTENTGROUP "ERROR: Accessing a non-existent Group ID" +#define STR_UNREGISTEREDCONTROL "Error: Attemping to add a thread request for control or me"\ + "ssage id that is not registered" +#define STR_ZEROWIDTHRECT "Error: Trying to fit text to a 0 width rectangle in the Sp"\ + "litTextW function" +#define STR_BACKGROUNDALPHABLEND "Error: Background AlphaBlend mode requires an AlphaImage" +extern PACKAGE WideString STR_ERROR; +extern PACKAGE WideString STR_NEWFOLDER; +extern PACKAGE WideString STR_UNKNOWNCOMMAN; +extern PACKAGE WideString STR_PROPERTIES; +extern PACKAGE WideString STR_PASTE; +extern PACKAGE WideString STR_PASTELINK; +extern PACKAGE WideString STR_COLUMN_NAMES[10]; +extern PACKAGE WideString STR_ARCHIVE; +extern PACKAGE WideString STR_HIDDEN; +extern PACKAGE WideString STR_READONLY; +extern PACKAGE WideString STR_SYSTEM; +extern PACKAGE WideString STR_COMPRESS; +extern PACKAGE WideString STR_FILE_SIZE_IN_KB; +extern PACKAGE WideString STR_ZERO_KB; +extern PACKAGE WideString STR_ONE_KB; +extern PACKAGE WideString STR_SYSTEMFOLDER; +extern PACKAGE WideString STR_FILE; +extern PACKAGE WideString STR_NOTARGETDEFINED; +extern PACKAGE WideString STR_ERR_BAD_PIDL_RELATIONSHIP; + +} /* namespace Mpresources */ +using namespace Mpresources; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpresources diff --git a/official/1.7.0/Common Library/Source/MPResources.obj b/official/1.7.0/Common Library/Source/MPResources.obj new file mode 100644 index 0000000000000000000000000000000000000000..4ac05929df482d4e99b588ba3da7eb94cfad0154 GIT binary patch literal 4372 zcmcImZ)jWB6+eTkZe8I!m=dvuI)I>cvB)RR_jQv zrDRPhBcU6(G=nk1Rz?D9c#MthgFbA~l|nCVKeSNBO8223HW=f6SlM7-S{Q_p{my-U ziR4IZZRr*Fz280O+}}O-oOAEf)x9(}F>%%`UD`aKKf9RD$wU>1_FYc0IH_b#mfy+Ug{_)9s-M(N>VI-U-xCEuDK7;(mxb%`4@2u~3N<$Guo|KR78FHVa=Fk8+u1LJY%jdn*Nx8jEobg;d;Y$3mXELd!w9gU=vkl#E#glPib@G!}_FKkj9`lpO^jZh~ zipbkW+sN1MARqZVT-i`iqqv`jce`k0l<4Pv8ocYh+eWoM3RtGdSVkt3%8=JbTLVN@ zZ-bO-qcjw$3uVNbdg8>%C&<%JwIS-&1W99ME|rKG4#}`4*{Nwkbdo&#s5U}_nrJDx zkW8&4XH$!d(WLfhOp`U!HYYqaNuDs(g4Cx8)0tG-$cVUMYBmG{`+Gpug6g>T&5cqz zY6|0lC^^y=1k(*s(x!=cazT^SN9n$%1rfrHP3@uKNce?~@YHl&J}hgBJVDwDVQYRL zp|vog+HM-qL77b@mKKwiu2J%i(-x`%VQHe|H6P6WsZ->+_90PifVwqdG&4INUv`2s zq`4a9O?Ndt3CBCB)=#@M$$UH(Gn}LkYK{hR3yKq(Vvu??MaGE6Qpv=s4lv3eo7$mh zLGyTnC*~?Ly{Jj*J=qqwpm?&u6I5_IW0+3W)q8SJ(Sin{MNGyhs5iuSgk{Fh7`PCu zg&FPAUcIm8`sSol2z2-TY@IPODVMB1TduqX2||q{?`A8NG+d7Q7;TGNP$0~paLdq% zXWhk7Uxp3J7IX-Ch-$smbuU&rK>a#Eb;1_Y5o&njhB}!N(abZ3h#7P7q!D`{)I0Uf zNslAc5vm=c{n{totkz64W~Jk?gq1N8Q4voi&G~p*(;wE3{x8d>XK?yB(sAu3&fpjg zM&=5|?0VtFY^6{thM#|a^D=b*!S`gjrr z2An%;a;1>Vo0ZK%@d7;Q!e^F_>g(zHx2P`?S%GSHeUrW2xJ+Xa*T;Nxb2EFz5m%-z z6(|^q%x8jAL-H`}?#P6?BcJ@uxE|MO;1<|U*B)vodK!Y~%E1|O-Hu!Yv zRy{xxZsCYhlJfLD3eg~`EJist z=5_En){WP}9~53Etv%V${1qzTUEa2VeU}5Z?{J)bPlK^c71*IM=PuU?6Y7 z5Wp<9uieyR6PtUnZY<~u@wU0)kkTUD%)#cnItV&sIzUl4T|tlvbWU%;4G_CE3wa*v za5#7d^F*=H^B9-$bEJ+x9JmUC!Hw-=ltOSq4Sphi;Jl;*%<0pOgUl1SReMO{ZxQMU z>+l#l+<3aN4mT+4=2^fx&M-ID;TzAoj2=UWzaP4>Zp6`0omlt z6=1^$i;p7LNYTwMultD0`8vr*iEdz+rZ{q(fWOSl{3Ts)o0=`J$IQoT@`#TvuUiK9 zIlXQXzVPf4)?e-}&(+(eL>@zlxIkYBXQP1wHqKJhQr*d!>Kv4m^4HQ}*W{ z|Ni#7bn6{b9YT()A18r0UQ^y-F_0_X(2o8D8QVMUG@S%TF71Y z62KWDdsTk->yJ`v5Ns8ML`zHWD6LQqP3Glj*d+c8T z{94F;b`9WnLhiTU1bAD>ko_LO2SOgS{{Zl@kYW21fWHX&i2XN!f5C72^W_PueoFF) zbLH~J_#|@sI^KL}-a-$d+vt4Axyt#XcnO^^nl*I3s1oRWlTD*{qVrt#iEX$s=Jti& zx5hlmhX|-nAs%qbNR4(3;|Y?LO!IX5p#7? z$i1A>Q56w#OvR8HH813dN+4OB*OoPLAo +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} +{$I ..\Include\Debug.inc} +{$I ..\Include\Addins.inc} + +{$B-} + +{$IFDEF WEAKPACKAGING} + // WARNING YOU CAN NOT REMOTE DEBUG A WEAK PACKAGE UNIT + {$WEAKPACKAGEUNIT ON} +{$ENDIF} + +const + STR_LINKMANAGERDISABLED = 'ERROR: Accessing the Link Manager when it is not enabled'; + STR_NONEXISTENTCOLUMN = 'ERROR: Accessing a non-existent column index'; + STR_NONEXISTENTCOLUMNBANDROW = 'ERROR: Accessing a non-existent Column Band Row'; + STR_NONEXISTENTGROUP = 'ERROR: Accessing a non-existent Group ID'; + STR_UNREGISTEREDCONTROL = 'Error: Attemping to add a thread request for control or message id that is not registered'; + STR_ZEROWIDTHRECT = 'Error: Trying to fit text to a 0 width rectangle in the SplitTextW function'; + STR_BACKGROUNDALPHABLEND = 'Error: Background AlphaBlend mode requires an AlphaImage'; + +var + // General Error message + STR_ERROR: WideString = 'Error'; + + // The name given a new folder when CreateNewFolder is called. + STR_NEWFOLDER: WideString = 'New Folder'; + + // The verb sent to the context menu notification events if the selected context + // menu item is a non standard verb. + STR_UNKNOWNCOMMAN: WideString = 'Unknown Command'; + + STR_PROPERTIES: WideString = 'Properties'; + STR_PASTE: WideString = 'Paste'; + STR_PASTELINK: WideString = 'Paste Shortcut'; + + // Names shown in column headers if toShellColumnDetails is not used. In that + // case the shell handles the names based on local. + STR_COLUMN_NAMES: array[0..9] of WideString = ( + 'Name', + 'Size', + 'Type', + 'Modified', + 'Attributes', + 'Created', + 'Accessed', + 'Path', + 'DOS Name', + 'Custom' + ); + + // Strings that are used to show the attributes of a file in Details view. Only + // applies if toShellColumnDetails is not used. + STR_ARCHIVE: WideString = 'A'; + STR_HIDDEN: WideString = 'H'; + STR_READONLY: WideString = 'R'; + STR_SYSTEM: WideString = 'S'; + STR_COMPRESS: WideString = 'C'; + + // Strings that format the Details view in KB. Only applies if toShellColumnDetails + // is not used. + STR_FILE_SIZE_IN_KB: WideString = 'KB'; + STR_ZERO_KB: WideString = '0 KB'; + STR_ONE_KB: WideString = '1 KB'; + + // What is displayed in the FileType column if VET could not get the information + // the normal way and it had determined that the item is a system folder. + STR_SYSTEMFOLDER: WideString = 'System Folder'; + STR_FILE: WideString = ' File'; // NT is lax in the FileType column if the file is not registered + // it returns nothing. This is tacked on the end of the file extension + // for example 'PAS Files', BAK Files, ZIP Files and so on. + + // -------------------------------------------------------------------------- + // VirtualShellLink strings + // -------------------------------------------------------------------------- + // Message shown if an attempt to create a new link is made with no target defined + STR_NOTARGETDEFINED: WideString = 'No target application defined'; + // -------------------------------------------------------------------------- + + // Shown when an operation in the TNamspace is being done on item that are not the + // direct children of the TNamespace. This is only a debugging aid, if the tree + // is set up right this should never occur, i.e. restricted multiselect to one level + STR_ERR_BAD_PIDL_RELATIONSHIP: WideString = 'PIDLs to operate on are not siblings of the Namespace doing the operation.'; + +implementation + +end. diff --git a/official/1.7.0/Common Library/Source/MPShellTypes.hpp b/official/1.7.0/Common Library/Source/MPShellTypes.hpp new file mode 100644 index 0000000..a4a3ff8 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPShellTypes.hpp @@ -0,0 +1,1387 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpshelltypes.pas' rev: 11.00 + +#ifndef MpshelltypesHPP +#define MpshelltypesHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- +#include +#include +#include +#include +#include +#include +namespace Mpshellutilities { class TNamespace; } +typedef DelphiInterface _di_IDropTarget; +typedef DelphiInterface _di_IQueryInfo; +typedef DelphiInterface _di_IEnumString; +typedef DelphiInterface _di_IBindCtx; +typedef DelphiInterface _di_IClassFactory; +typedef DelphiInterface _di_IDeskBand; +typedef DelphiInterface _di_IDropSource; +typedef _SHELLDETAILS tagSHELLDETAILS; +namespace Activex { typedef System::DelphiInterface _di_IEnumGUID; } + +namespace Mpshelltypes +{ +//-- type declarations ------------------------------------------------------- +__interface IShellIconOverlayIdentifier; +typedef System::DelphiInterface _di_IShellIconOverlayIdentifier; +__interface INTERFACE_UUID("{0C6C4200-C589-11D0-999A-00C04FD655E1}") IShellIconOverlayIdentifier : public IInterface +{ + +public: + virtual HRESULT __stdcall IsMemberOf(WideChar * pwszPath, unsigned dwAttrib) = 0 ; + virtual HRESULT __stdcall GetOverlayInfo(WideChar * pwszIconFile, int cchMax, int &pIndex, unsigned &pdwFlags) = 0 ; + virtual HRESULT __stdcall GetPriority(int &pPriority) = 0 ; +}; + +typedef AnsiString MPShellTypes__1[55]; + +#pragma pack(push,1) +struct TNotifyRegister +{ + +public: + _ITEMIDLIST *ItemIDList; + BOOL bWatchSubTree; +} ; +#pragma pack(pop) + +struct TDWordItemID; +typedef TDWordItemID *PDWordItemID; + +#pragma pack(push,1) +struct TDWordItemID +{ + +public: + Word cb; + unsigned dwItem1; + unsigned dwItem2; +} ; +#pragma pack(pop) + +#pragma pack(push,1) +struct TShellNotifyRec +{ + +public: + _ITEMIDLIST *PIDL1; + _ITEMIDLIST *PIDL2; +} ; +#pragma pack(pop) + +typedef TShellNotifyRec *PShellNotifyRec; + +__interface IContextMenu; +typedef System::DelphiInterface _di_IContextMenu; +__interface INTERFACE_UUID("{000214E4-0000-0000-C000-000000000046}") IContextMenu : public IInterface +{ + +public: + virtual HRESULT __stdcall QueryContextMenu(HMENU Menu, unsigned indexMenu, unsigned idCmdFirst, unsigned idCmdLast, unsigned uFlags) = 0 ; + virtual HRESULT __stdcall InvokeCommand(_CMINVOKECOMMANDINFOEX &lpici) = 0 ; + virtual HRESULT __stdcall GetCommandString(unsigned idCmd, unsigned uType, PUINT pwReserved, char * pszName, unsigned cchMax) = 0 ; +}; + +__interface IContextMenu2; +typedef System::DelphiInterface _di_IContextMenu2; +__interface INTERFACE_UUID("{000214F4-0000-0000-C000-000000000046}") IContextMenu2 : public IContextMenu +{ + +public: + virtual HRESULT __stdcall HandleMenuMsg(unsigned uMsg, int WParam, int LParam) = 0 ; +}; + +__interface IContextMenu3; +typedef System::DelphiInterface _di_IContextMenu3; +__interface INTERFACE_UUID("{BCFCE0A0-EC17-11D0-8D10-00A0C90F2719}") IContextMenu3 : public IContextMenu2 +{ + +public: + virtual HRESULT __stdcall HandleMenuMsg2(unsigned uMsg, int wParam, int lParam, int &lpResult) = 0 ; +}; + +__interface IShellIconOverlay; +typedef System::DelphiInterface _di_IShellIconOverlay; +__interface INTERFACE_UUID("{7D688A70-C613-11D0-999B-00C04FD655E1}") IShellIconOverlay : public IInterface +{ + +public: + virtual HRESULT __stdcall GetOverlayIndex(Shlobj::PItemIDList pidl, void *pIndex) = 0 ; + virtual HRESULT __stdcall GetOverlayIconIndex(Shlobj::PItemIDList pidl, void *pIconIndex) = 0 ; +}; + +__interface IDropTargetHelper; +typedef System::DelphiInterface _di_IDropTargetHelper; +__interface INTERFACE_UUID("{4657278B-411B-11D2-839A-00C04FD918D0}") IDropTargetHelper : public IInterface +{ + +public: + virtual HRESULT __stdcall DragEnter(HWND hwndTarget, _di_IDataObject pDataObject, Types::TPoint &ppt, int dwEffect) = 0 ; + virtual HRESULT __stdcall DragLeave(void) = 0 ; + virtual HRESULT __stdcall DragOver(Types::TPoint &ppt, int dwEffect) = 0 ; + virtual HRESULT __stdcall Drop(_di_IDataObject pDataObject, Types::TPoint &ppt, int dwEffect) = 0 ; + virtual HRESULT __stdcall Show(bool fShow) = 0 ; +}; + +struct TSHDragImage; +typedef TSHDragImage *PSHDragImage; + +#pragma pack(push,1) +struct TSHDragImage +{ + +public: + tagSIZE sizeDragImage; + Types::TPoint ptOffset; + HBITMAP hbmpDragImage; + unsigned ColorRef; +} ; +#pragma pack(pop) + +__interface IExtractImage; +typedef System::DelphiInterface _di_IExtractImage; +__interface INTERFACE_UUID("{BB2E617C-0920-11D1-9A0B-00C04FC2D6C1}") IExtractImage : public IInterface +{ + +public: + virtual HRESULT __stdcall GetLocation(WideChar * Buffer, unsigned BufferSize, unsigned &Priority, tagSIZE &Size, unsigned ColorDepth, unsigned &Flags) = 0 ; + virtual HRESULT __stdcall Extract(HBITMAP &BmpImage) = 0 ; +}; + +__interface IExtractImage2; +typedef System::DelphiInterface _di_IExtractImage2; +__interface INTERFACE_UUID("{953BB1EE-93B4-11D1-98A3-00C04FB687DA}") IExtractImage2 : public IExtractImage +{ + +public: + virtual HRESULT __stdcall GetTimeStamp(_FILETIME &DateStamp) = 0 ; +}; + +__interface IShellDetailsBCB6; +typedef System::DelphiInterface _di_IShellDetailsBCB6; +__interface INTERFACE_UUID("{000214EC-0000-0000-C000-000000000046}") IShellDetailsBCB6 : public IInterface +{ + +public: + virtual HRESULT __stdcall GetDetailsOf(Shlobj::PItemIDList PIDL, unsigned iColumn, tagSHELLDETAILS &data) = 0 ; + virtual HRESULT __stdcall ColumnClick(unsigned iColumn) = 0 ; +}; + +#pragma pack(push,1) +struct tagEXTRASEARCH +{ + +public: + GUID guidSearch; + WideChar wszFriendlyName[80]; + WideChar wszUrl[2084]; +} ; +#pragma pack(pop) + +typedef tagEXTRASEARCH *PExtraSearch; + +typedef tagEXTRASEARCH TExtraSearch; + +#pragma pack(push,1) +struct tagSHCOLUMNID +{ + +public: + GUID fmtid; + unsigned pid; +} ; +#pragma pack(pop) + +typedef tagSHCOLUMNID *PSHColumnID; + +typedef tagSHCOLUMNID TSHColumnID; + +#pragma pack(push,4) +struct PERSIST_FOLDER_TARGET_INFO +{ + +public: + _ITEMIDLIST *pidlTargetFolder; + WideChar szTargetParsingName[260]; + WideChar szNetworkProvider[260]; + unsigned dwAttributes; + int csidl; +} ; +#pragma pack(pop) + +typedef PERSIST_FOLDER_TARGET_INFO TPersistFolderTargetInfo; + +typedef PERSIST_FOLDER_TARGET_INFO *PPersistFolderTargetInfo; + +struct TSHColumnInit; +typedef TSHColumnInit *PSHColumnInit; + +#pragma pack(push,1) +struct TSHColumnInit +{ + +public: + unsigned dwFlags; + unsigned dwReserved; + WideChar wszFolder[261]; +} ; +#pragma pack(pop) + +#pragma pack(push,1) +struct TSHColumnInfo +{ + +public: + tagSHCOLUMNID scid; + Word vt; + unsigned fmt; + unsigned cChars; + unsigned csFlags; + WideChar wszTitle[80]; + WideChar wszDescription[128]; +} ; +#pragma pack(pop) + +struct TSHColumnData; +typedef TSHColumnData *PSHColumnData; + +#pragma pack(push,1) +struct TSHColumnData +{ + +public: + unsigned dwFlags; + unsigned dwFileAttributes; + unsigned dwReserved; + WideChar *pwszExt; + WideChar wszFile[261]; +} ; +#pragma pack(pop) + +__interface IAutoComplete; +typedef System::DelphiInterface _di_IAutoComplete; +__interface INTERFACE_UUID("{00BB2762-6A77-11D0-A535-00C04FD7D062}") IAutoComplete : public IInterface +{ + +public: + virtual HRESULT __stdcall Init(HWND hWndEdit, System::_di_IInterface punkACL, WideChar * RegKeyPath, WideChar * QuickComplete) = 0 ; + virtual HRESULT __stdcall Enabled(BOOL fEnable) = 0 ; +}; + +__interface IAutoComplete2; +typedef System::DelphiInterface _di_IAutoComplete2; +__interface INTERFACE_UUID("{EAC04BC0-3791-11D2-BB95-0060977B464C}") IAutoComplete2 : public IAutoComplete +{ + +public: + virtual HRESULT __stdcall SetOptions(unsigned dwFlag) = 0 ; + virtual HRESULT __stdcall GetOptions(/* out */ unsigned &pdwFlag) = 0 ; +}; + +__interface IACList; +typedef System::DelphiInterface _di_IACList; +__interface INTERFACE_UUID("{77A130B0-94FD-11D0-A544-00C04FD7D062}") IACList : public IInterface +{ + +public: + virtual HRESULT __stdcall Expand(WideChar * pazExpand) = 0 ; +}; + +__interface IACList2; +typedef System::DelphiInterface _di_IACList2; +__interface INTERFACE_UUID("{470141A0-5186-11D2-BBB6-0060977B464C}") IACList2 : public IACList +{ + +public: + virtual HRESULT __stdcall SetOptions(unsigned pdwFlag) = 0 ; + virtual HRESULT __stdcall GetOptions(unsigned &pdwFlag) = 0 ; +}; + +__interface ICurrentWorkingDirectory; +typedef System::DelphiInterface _di_ICurrentWorkingDirectory; +__interface INTERFACE_UUID("{91956D21-9276-11D1-921A-006097DF5BD4}") ICurrentWorkingDirectory : public IInterface +{ + +public: + virtual HRESULT __stdcall GetDirectory(WideChar * pwzPath, unsigned cchSize) = 0 ; + virtual HRESULT __stdcall SetDirectory(WideChar * pwzPath) = 0 ; +}; + +#pragma pack(push,1) +struct tagACTCTXA +{ + +public: + unsigned cbSize; + unsigned dwFlags; + char *lpSource; + Word wProcessorArchitecture; + Word wLangId; + char *lpAssemblyDirectory; + char *lpResourceName; + char *lpApplicationName; + unsigned hModule; +} ; +#pragma pack(pop) + +typedef tagACTCTXA TActCTXA; + +typedef tagACTCTXA *PActCTXA; + +#pragma pack(push,1) +struct tagACTCTXW +{ + +public: + unsigned cbSize; + unsigned dwFlags; + WideChar *lpSource; + Word wProcessorArchitecture; + Word wLangId; + WideChar *lpAssemblyDirectory; + WideChar *lpResourceName; + WideChar *lpApplicationName; + unsigned hModule; +} ; +#pragma pack(pop) + +typedef tagACTCTXW TActCTXW; + +typedef tagACTCTXW *PActCTXW; + +typedef _PROPSHEETPAGEA TPropSheetPageA; + +typedef _PROPSHEETPAGEW TPropSheetPageW; + +typedef _PROPSHEETPAGEA TPropSheetPage; + +typedef unsigned __stdcall (*TThreadProc)(void * lpParameter); + +typedef Activex::TOleEnum CommandStateChangeConstants; + +typedef Activex::TOleEnum OLECMDID; + +typedef Activex::TOleEnum OLECMDF; + +typedef Activex::TOleEnum OLECMDEXECOPT; + +typedef Activex::TOleEnum tagREADYSTATE; + +typedef Activex::TOleEnum ShellWindowTypeConstants; + +typedef Activex::TOleEnum ShellWindowFindWindowOptions; + +typedef Activex::TOleEnum RefreshConstants; + +typedef Activex::TOleEnum BrowserNavConstants; + +typedef OleVariant *POleVariant1; + +__interface IWebBrowser; +typedef System::DelphiInterface _di_IWebBrowser; +__interface INTERFACE_UUID("{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}") IWebBrowser : public IDispatch +{ + +public: + virtual HRESULT __safecall GoBack(void) = 0 ; + virtual HRESULT __safecall GoForward(void) = 0 ; + virtual HRESULT __safecall GoHome(void) = 0 ; + virtual HRESULT __safecall GoSearch(void) = 0 ; + virtual HRESULT __safecall Navigate(const WideString URL, OleVariant &Flags, OleVariant &TargetFrameName, OleVariant &PostData, OleVariant &Headers) = 0 ; + virtual HRESULT __safecall Refresh(void) = 0 ; + virtual HRESULT __safecall Refresh2(OleVariant &Level) = 0 ; + virtual HRESULT __safecall Stop(void) = 0 ; + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Get_Container(_di_IDispatch &Get_Container_result) = 0 ; + virtual HRESULT __safecall Get_Document(_di_IDispatch &Get_Document_result) = 0 ; + virtual HRESULT __safecall Get_TopLevelContainer(Word &Get_TopLevelContainer_result) = 0 ; + virtual HRESULT __safecall Get_Type_(WideString &Get_Type__result) = 0 ; + virtual HRESULT __safecall Get_Left(int &Get_Left_result) = 0 ; + virtual HRESULT __safecall Set_Left(int pl) = 0 ; + virtual HRESULT __safecall Get_Top(int &Get_Top_result) = 0 ; + virtual HRESULT __safecall Set_Top(int pl) = 0 ; + virtual HRESULT __safecall Get_Width(int &Get_Width_result) = 0 ; + virtual HRESULT __safecall Set_Width(int pl) = 0 ; + virtual HRESULT __safecall Get_Height(int &Get_Height_result) = 0 ; + virtual HRESULT __safecall Set_Height(int pl) = 0 ; + virtual HRESULT __safecall Get_LocationName(WideString &Get_LocationName_result) = 0 ; + virtual HRESULT __safecall Get_LocationURL(WideString &Get_LocationURL_result) = 0 ; + virtual HRESULT __safecall Get_Busy(Word &Get_Busy_result) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Container() { _di_IDispatch r; HRESULT hr = Get_Container(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Container = {read=_scw_Get_Container}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Document() { _di_IDispatch r; HRESULT hr = Get_Document(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Document = {read=_scw_Get_Document}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_TopLevelContainer() { Word r; HRESULT hr = Get_TopLevelContainer(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word TopLevelContainer = {read=_scw_Get_TopLevelContainer}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Type_() { WideString r; HRESULT hr = Get_Type_(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Type_ = {read=_scw_Get_Type_}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Left() { int r; HRESULT hr = Get_Left(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Left = {read=_scw_Get_Left, write=Set_Left}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Top() { int r; HRESULT hr = Get_Top(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Top = {read=_scw_Get_Top, write=Set_Top}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Width() { int r; HRESULT hr = Get_Width(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Width = {read=_scw_Get_Width, write=Set_Width}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Height() { int r; HRESULT hr = Get_Height(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Height = {read=_scw_Get_Height, write=Set_Height}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_LocationName() { WideString r; HRESULT hr = Get_LocationName(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString LocationName = {read=_scw_Get_LocationName}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_LocationURL() { WideString r; HRESULT hr = Get_LocationURL(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString LocationURL = {read=_scw_Get_LocationURL}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_Busy() { Word r; HRESULT hr = Get_Busy(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word Busy = {read=_scw_Get_Busy}; +}; + +__interface IWebBrowserApp; +typedef System::DelphiInterface _di_IWebBrowserApp; +__interface INTERFACE_UUID("{0002DF05-0000-0000-C000-000000000046}") IWebBrowserApp : public IWebBrowser +{ + +public: + virtual HRESULT __safecall Quit(void) = 0 ; + virtual HRESULT __safecall ClientToWindow(int &pcx, int &pcy) = 0 ; + virtual HRESULT __safecall PutProperty(const WideString Property_, const OleVariant vtValue) = 0 ; + virtual HRESULT __safecall GetProperty(const WideString Property_, OleVariant &GetProperty_result) = 0 ; + virtual HRESULT __safecall Get_Name(WideString &Get_Name_result) = 0 ; + virtual HRESULT __safecall Get_HWND(int &Get_HWND_result) = 0 ; + virtual HRESULT __safecall Get_FullName(WideString &Get_FullName_result) = 0 ; + virtual HRESULT __safecall Get_Path(WideString &Get_Path_result) = 0 ; + virtual HRESULT __safecall Get_Visible(Word &Get_Visible_result) = 0 ; + virtual HRESULT __safecall Set_Visible(Word pBool) = 0 ; + virtual HRESULT __safecall Get_StatusBar(Word &Get_StatusBar_result) = 0 ; + virtual HRESULT __safecall Set_StatusBar(Word pBool) = 0 ; + virtual HRESULT __safecall Get_StatusText(WideString &Get_StatusText_result) = 0 ; + virtual HRESULT __safecall Set_StatusText(const WideString StatusText) = 0 ; + virtual HRESULT __safecall Get_ToolBar(int &Get_ToolBar_result) = 0 ; + virtual HRESULT __safecall Set_ToolBar(int Value) = 0 ; + virtual HRESULT __safecall Get_MenuBar(Word &Get_MenuBar_result) = 0 ; + virtual HRESULT __safecall Set_MenuBar(Word Value) = 0 ; + virtual HRESULT __safecall Get_FullScreen(Word &Get_FullScreen_result) = 0 ; + virtual HRESULT __safecall Set_FullScreen(Word pbFullScreen) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Name() { WideString r; HRESULT hr = Get_Name(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Name = {read=_scw_Get_Name}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_HWND() { int r; HRESULT hr = Get_HWND(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int HWND = {read=_scw_Get_HWND}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_FullName() { WideString r; HRESULT hr = Get_FullName(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString FullName = {read=_scw_Get_FullName}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Path() { WideString r; HRESULT hr = Get_Path(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Path = {read=_scw_Get_Path}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_Visible() { Word r; HRESULT hr = Get_Visible(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word Visible = {read=_scw_Get_Visible, write=Set_Visible}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_StatusBar() { Word r; HRESULT hr = Get_StatusBar(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word StatusBar = {read=_scw_Get_StatusBar, write=Set_StatusBar}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_StatusText() { WideString r; HRESULT hr = Get_StatusText(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString StatusText = {read=_scw_Get_StatusText, write=Set_StatusText}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_ToolBar() { int r; HRESULT hr = Get_ToolBar(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int ToolBar = {read=_scw_Get_ToolBar, write=Set_ToolBar}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_MenuBar() { Word r; HRESULT hr = Get_MenuBar(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word MenuBar = {read=_scw_Get_MenuBar, write=Set_MenuBar}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_FullScreen() { Word r; HRESULT hr = Get_FullScreen(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word FullScreen = {read=_scw_Get_FullScreen, write=Set_FullScreen}; +}; + +__interface IWebBrowser2; +typedef System::DelphiInterface _di_IWebBrowser2; +__interface INTERFACE_UUID("{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}") IWebBrowser2 : public IWebBrowserApp +{ + +public: + virtual HRESULT __safecall Navigate2(OleVariant &URL, OleVariant &Flags, OleVariant &TargetFrameName, OleVariant &PostData, OleVariant &Headers) = 0 ; + virtual HRESULT __safecall QueryStatusWB(Activex::TOleEnum cmdID, Activex::TOleEnum &QueryStatusWB_result) = 0 ; + virtual HRESULT __safecall ExecWB(Activex::TOleEnum cmdID, Activex::TOleEnum cmdexecopt, OleVariant &pvaIn, OleVariant &pvaOut) = 0 ; + virtual HRESULT __safecall ShowBrowserBar(OleVariant &pvaClsid, OleVariant &pvarShow, OleVariant &pvarSize) = 0 ; + virtual HRESULT __safecall Get_ReadyState(Activex::TOleEnum &Get_ReadyState_result) = 0 ; + virtual HRESULT __safecall Get_Offline(Word &Get_Offline_result) = 0 ; + virtual HRESULT __safecall Set_Offline(Word pbOffline) = 0 ; + virtual HRESULT __safecall Get_Silent(Word &Get_Silent_result) = 0 ; + virtual HRESULT __safecall Set_Silent(Word pbSilent) = 0 ; + virtual HRESULT __safecall Get_RegisterAsBrowser(Word &Get_RegisterAsBrowser_result) = 0 ; + virtual HRESULT __safecall Set_RegisterAsBrowser(Word pbRegister) = 0 ; + virtual HRESULT __safecall Get_RegisterAsDropTarget(Word &Get_RegisterAsDropTarget_result) = 0 ; + virtual HRESULT __safecall Set_RegisterAsDropTarget(Word pbRegister) = 0 ; + virtual HRESULT __safecall Get_TheaterMode(Word &Get_TheaterMode_result) = 0 ; + virtual HRESULT __safecall Set_TheaterMode(Word pbRegister) = 0 ; + virtual HRESULT __safecall Get_AddressBar(Word &Get_AddressBar_result) = 0 ; + virtual HRESULT __safecall Set_AddressBar(Word Value) = 0 ; + virtual HRESULT __safecall Get_Resizable(Word &Get_Resizable_result) = 0 ; + virtual HRESULT __safecall Set_Resizable(Word Value) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline Activex::TOleEnum _scw_Get_ReadyState() { Activex::TOleEnum r; HRESULT hr = Get_ReadyState(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Activex::TOleEnum ReadyState = {read=_scw_Get_ReadyState}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_Offline() { Word r; HRESULT hr = Get_Offline(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word Offline = {read=_scw_Get_Offline, write=Set_Offline}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_Silent() { Word r; HRESULT hr = Get_Silent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word Silent = {read=_scw_Get_Silent, write=Set_Silent}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_RegisterAsBrowser() { Word r; HRESULT hr = Get_RegisterAsBrowser(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word RegisterAsBrowser = {read=_scw_Get_RegisterAsBrowser, write=Set_RegisterAsBrowser}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_RegisterAsDropTarget() { Word r; HRESULT hr = Get_RegisterAsDropTarget(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word RegisterAsDropTarget = {read=_scw_Get_RegisterAsDropTarget, write=Set_RegisterAsDropTarget}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_TheaterMode() { Word r; HRESULT hr = Get_TheaterMode(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word TheaterMode = {read=_scw_Get_TheaterMode, write=Set_TheaterMode}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_AddressBar() { Word r; HRESULT hr = Get_AddressBar(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word AddressBar = {read=_scw_Get_AddressBar, write=Set_AddressBar}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_Resizable() { Word r; HRESULT hr = Get_Resizable(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word Resizable = {read=_scw_Get_Resizable, write=Set_Resizable}; +}; + +__interface FolderItemVerb; +typedef System::DelphiInterface _di_FolderItemVerb; +__interface INTERFACE_UUID("{08EC3E00-50B0-11CF-960C-0080C7F4EE85}") FolderItemVerb : public IDispatch +{ + +public: + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Get_Name(WideString &Get_Name_result) = 0 ; + virtual HRESULT __safecall DoIt(void) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Name() { WideString r; HRESULT hr = Get_Name(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Name = {read=_scw_Get_Name}; +}; + +__interface FolderItemVerbs; +typedef System::DelphiInterface _di_FolderItemVerbs; +__interface INTERFACE_UUID("{1F8352C0-50B0-11CF-960C-0080C7F4EE85}") FolderItemVerbs : public IDispatch +{ + +public: + virtual HRESULT __safecall Get_Count(int &Get_Count_result) = 0 ; + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Item(const OleVariant index, _di_FolderItemVerb &Item_result) = 0 ; + virtual HRESULT __safecall _NewEnum(System::_di_IInterface &_NewEnum_result) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Count() { int r; HRESULT hr = Get_Count(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Count = {read=_scw_Get_Count}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; +}; + +__interface FolderItem; +typedef System::DelphiInterface _di_FolderItem; +__interface INTERFACE_UUID("{FAC32C80-CBE4-11CE-8350-444553540000}") FolderItem : public IDispatch +{ + +public: + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Get_Name(WideString &Get_Name_result) = 0 ; + virtual HRESULT __safecall Set_Name(const WideString pbs) = 0 ; + virtual HRESULT __safecall Get_Path(WideString &Get_Path_result) = 0 ; + virtual HRESULT __safecall Get_GetLink(_di_IDispatch &Get_GetLink_result) = 0 ; + virtual HRESULT __safecall Get_GetFolder(_di_IDispatch &Get_GetFolder_result) = 0 ; + virtual HRESULT __safecall Get_IsLink(Word &Get_IsLink_result) = 0 ; + virtual HRESULT __safecall Get_IsFolder(Word &Get_IsFolder_result) = 0 ; + virtual HRESULT __safecall Get_IsFileSystem(Word &Get_IsFileSystem_result) = 0 ; + virtual HRESULT __safecall Get_IsBrowsable(Word &Get_IsBrowsable_result) = 0 ; + virtual HRESULT __safecall Get_ModifyDate(System::TDateTime &Get_ModifyDate_result) = 0 ; + virtual HRESULT __safecall Set_ModifyDate(System::TDateTime pdt) = 0 ; + virtual HRESULT __safecall Get_Size(int &Get_Size_result) = 0 ; + virtual HRESULT __safecall Get_type_(WideString &Get_type__result) = 0 ; + virtual HRESULT __safecall Verbs(_di_FolderItemVerbs &Verbs_result) = 0 ; + virtual HRESULT __safecall InvokeVerb(const OleVariant vVerb) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Name() { WideString r; HRESULT hr = Get_Name(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Name = {read=_scw_Get_Name, write=Set_Name}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Path() { WideString r; HRESULT hr = Get_Path(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Path = {read=_scw_Get_Path}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_GetLink() { _di_IDispatch r; HRESULT hr = Get_GetLink(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch GetLink = {read=_scw_Get_GetLink}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_GetFolder() { _di_IDispatch r; HRESULT hr = Get_GetFolder(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch GetFolder = {read=_scw_Get_GetFolder}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_IsLink() { Word r; HRESULT hr = Get_IsLink(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word IsLink = {read=_scw_Get_IsLink}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_IsFolder() { Word r; HRESULT hr = Get_IsFolder(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word IsFolder = {read=_scw_Get_IsFolder}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_IsFileSystem() { Word r; HRESULT hr = Get_IsFileSystem(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word IsFileSystem = {read=_scw_Get_IsFileSystem}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_IsBrowsable() { Word r; HRESULT hr = Get_IsBrowsable(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word IsBrowsable = {read=_scw_Get_IsBrowsable}; + #pragma option push -w-inl + /* safecall wrapper */ inline System::TDateTime _scw_Get_ModifyDate() { System::TDateTime r; HRESULT hr = Get_ModifyDate(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property System::TDateTime ModifyDate = {read=_scw_Get_ModifyDate, write=Set_ModifyDate}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Size() { int r; HRESULT hr = Get_Size(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Size = {read=_scw_Get_Size}; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_type_() { WideString r; HRESULT hr = Get_type_(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString type_ = {read=_scw_Get_type_}; +}; + +__interface FolderItem2; +typedef System::DelphiInterface _di_FolderItem2; +__interface INTERFACE_UUID("{EDC817AA-92B8-11D1-B075-00C04FC33AA5}") FolderItem2 : public FolderItem +{ + +public: + virtual HRESULT __safecall InvokeVerbEx(const OleVariant vVerb, const OleVariant vArgs) = 0 ; + virtual HRESULT __safecall ExtendedProperty(const WideString bstrPropName, OleVariant &ExtendedProperty_result) = 0 ; +}; + +__interface FolderItems; +typedef System::DelphiInterface _di_FolderItems; +__interface INTERFACE_UUID("{744129E0-CBE5-11CE-8350-444553540000}") FolderItems : public IDispatch +{ + +public: + virtual HRESULT __safecall Get_Count(int &Get_Count_result) = 0 ; + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Item(const OleVariant index, _di_FolderItem &Item_result) = 0 ; + virtual HRESULT __safecall _NewEnum(System::_di_IInterface &_NewEnum_result) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_Count() { int r; HRESULT hr = Get_Count(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int Count = {read=_scw_Get_Count}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; +}; + +__interface FolderItems2; +typedef System::DelphiInterface _di_FolderItems2; +__interface INTERFACE_UUID("{C94F0AD0-F363-11D2-A327-00C04F8EEC7F}") FolderItems2 : public FolderItems +{ + +public: + virtual HRESULT __safecall InvokeVerbEx(const OleVariant vVerb, const OleVariant vArgs) = 0 ; +}; + +__interface FolderItems3; +typedef System::DelphiInterface _di_FolderItems3; +__interface INTERFACE_UUID("{EAA7C309-BBEC-49D5-821D-64D966CB667F}") FolderItems3 : public FolderItems2 +{ + +public: + virtual HRESULT __safecall Filter(int grfFlags, const WideString bstrFileSpec) = 0 ; + virtual HRESULT __safecall Get_Verbs(_di_FolderItemVerbs &Get_Verbs_result) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_FolderItemVerbs _scw_Get_Verbs() { _di_FolderItemVerbs r; HRESULT hr = Get_Verbs(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_FolderItemVerbs Verbs = {read=_scw_Get_Verbs}; +}; + +__interface Folder; +typedef System::DelphiInterface _di_Folder; +__interface INTERFACE_UUID("{BBCBDE60-C3FF-11CE-8350-444553540000}") Folder : public IDispatch +{ + +public: + virtual HRESULT __safecall Get_Title(WideString &Get_Title_result) = 0 ; + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Get_ParentFolder(_di_Folder &Get_ParentFolder_result) = 0 ; + virtual HRESULT __safecall Items(_di_FolderItems &Items_result) = 0 ; + virtual HRESULT __safecall ParseName(const WideString bName, _di_FolderItem &ParseName_result) = 0 ; + virtual HRESULT __safecall NewFolder(const WideString bName, const OleVariant vOptions) = 0 ; + virtual HRESULT __safecall MoveHere(const OleVariant vItem, const OleVariant vOptions) = 0 ; + virtual HRESULT __safecall CopyHere(const OleVariant vItem, const OleVariant vOptions) = 0 ; + virtual HRESULT __safecall GetDetailsOf(const OleVariant vItem, int iColumn, WideString &GetDetailsOf_result) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline WideString _scw_Get_Title() { WideString r; HRESULT hr = Get_Title(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property WideString Title = {read=_scw_Get_Title}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_Folder _scw_Get_ParentFolder() { _di_Folder r; HRESULT hr = Get_ParentFolder(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_Folder ParentFolder = {read=_scw_Get_ParentFolder}; +}; + +__interface Folder2; +typedef System::DelphiInterface _di_Folder2; +__interface INTERFACE_UUID("{F0D2D8EF-3890-11D2-BF8B-00C04FB93661}") Folder2 : public Folder +{ + +public: + virtual HRESULT __safecall Get_Self(_di_FolderItem &Get_Self_result) = 0 ; + virtual HRESULT __safecall Get_OfflineStatus(int &Get_OfflineStatus_result) = 0 ; + virtual HRESULT __safecall Synchronize(void) = 0 ; + virtual HRESULT __safecall Get_HaveToShowWebViewBarricade(Word &Get_HaveToShowWebViewBarricade_result) = 0 ; + virtual HRESULT __safecall DismissedWebViewBarricade(void) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_FolderItem _scw_Get_Self() { _di_FolderItem r; HRESULT hr = Get_Self(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_FolderItem Self = {read=_scw_Get_Self}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_OfflineStatus() { int r; HRESULT hr = Get_OfflineStatus(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int OfflineStatus = {read=_scw_Get_OfflineStatus}; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_HaveToShowWebViewBarricade() { Word r; HRESULT hr = Get_HaveToShowWebViewBarricade(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word HaveToShowWebViewBarricade = {read=_scw_Get_HaveToShowWebViewBarricade}; +}; + +__interface Folder3; +typedef System::DelphiInterface _di_Folder3; +__interface INTERFACE_UUID("{A7AE5F64-C4D7-4D7F-9307-4D24EE54B841}") Folder3 : public Folder2 +{ + +public: + virtual HRESULT __safecall Get_ShowWebViewBarricade(Word &Get_ShowWebViewBarricade_result) = 0 ; + virtual HRESULT __safecall Set_ShowWebViewBarricade(Word pbShowWebViewBarricade) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline Word _scw_Get_ShowWebViewBarricade() { Word r; HRESULT hr = Get_ShowWebViewBarricade(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property Word ShowWebViewBarricade = {read=_scw_Get_ShowWebViewBarricade, write=Set_ShowWebViewBarricade}; +}; + +__interface IShellFolderViewDual; +typedef System::DelphiInterface _di_IShellFolderViewDual; +__interface INTERFACE_UUID("{E7A1AF80-4D96-11CF-960C-0080C7F4EE85}") IShellFolderViewDual : public IDispatch +{ + +public: + virtual HRESULT __safecall Get_Application(_di_IDispatch &Get_Application_result) = 0 ; + virtual HRESULT __safecall Get_Parent(_di_IDispatch &Get_Parent_result) = 0 ; + virtual HRESULT __safecall Get_Folder(_di_Folder &Get_Folder_result) = 0 ; + virtual HRESULT __safecall SelectedItems(_di_FolderItems &SelectedItems_result) = 0 ; + virtual HRESULT __safecall Get_FocusedItem(_di_FolderItem &Get_FocusedItem_result) = 0 ; + virtual HRESULT __safecall SelectItem(OleVariant &pvfi, int dwFlags) = 0 ; + virtual HRESULT __safecall PopupItemMenu(const _di_FolderItem pfi, const OleVariant vx, const OleVariant vy, WideString &PopupItemMenu_result) = 0 ; + virtual HRESULT __safecall Get_Script(_di_IDispatch &Get_Script_result) = 0 ; + virtual HRESULT __safecall Get_ViewOptions(int &Get_ViewOptions_result) = 0 ; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Application() { _di_IDispatch r; HRESULT hr = Get_Application(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Application = {read=_scw_Get_Application}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Parent() { _di_IDispatch r; HRESULT hr = Get_Parent(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Parent = {read=_scw_Get_Parent}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_Folder _scw_Get_Folder() { _di_Folder r; HRESULT hr = Get_Folder(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_Folder Folder = {read=_scw_Get_Folder}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_FolderItem _scw_Get_FocusedItem() { _di_FolderItem r; HRESULT hr = Get_FocusedItem(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_FolderItem FocusedItem = {read=_scw_Get_FocusedItem}; + #pragma option push -w-inl + /* safecall wrapper */ inline _di_IDispatch _scw_Get_Script() { _di_IDispatch r; HRESULT hr = Get_Script(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property _di_IDispatch Script = {read=_scw_Get_Script}; + #pragma option push -w-inl + /* safecall wrapper */ inline int _scw_Get_ViewOptions() { int r; HRESULT hr = Get_ViewOptions(r); System::CheckSafecallResult(hr); return r; } + #pragma option pop + __property int ViewOptions = {read=_scw_Get_ViewOptions}; +}; + +__dispinterface DShellFolderViewEvents; +typedef System::DelphiInterface _di_DShellFolderViewEvents; +__dispinterface INTERFACE_UUID("{62112AA2-EBE4-11CF-A5FB-0020AFE7292D}") DShellFolderViewEvents : public IDispatch +{ + +}; + +#pragma pack(push,4) +struct QCMINFO_IDMAP_PLACEMENT +{ + +public: + unsigned id; + unsigned fFlags; +} ; +#pragma pack(pop) + +typedef QCMINFO_IDMAP_PLACEMENT *PQCMINFO_IDMAP_PLACEMENT; + +typedef QCMINFO_IDMAP_PLACEMENT TQCMInfoIDMapPlacement; + +typedef QCMINFO_IDMAP_PLACEMENT *PQCMInfoIDMapPlacement; + +#pragma pack(push,4) +struct QCMINFO_IDMAP +{ + +public: + unsigned nMaxIDs; + QCMINFO_IDMAP_PLACEMENT pIdList[1]; +} ; +#pragma pack(pop) + +typedef QCMINFO_IDMAP *PQCMINFO_IDMAP; + +#pragma pack(push,4) +struct QCMINFO +{ + +public: + HMENU menu; + unsigned indexMenu; + unsigned idCmdFirst; + unsigned idCmdLast; + QCMINFO_IDMAP *pIDMap; +} ; +#pragma pack(pop) + +typedef QCMINFO *PQCMINFO; + +typedef QCMINFO TQCMInfo; + +#pragma pack(push,4) +struct TBINFO +{ + +public: + unsigned cbuttons; + unsigned uFlags; +} ; +#pragma pack(pop) + +typedef TBINFO TTBInfo; + +typedef TBINFO *PTBInfo; + +#pragma pack(push,1) +struct TCategoryInfo +{ + +public: + unsigned CategoryInfo; + WideChar wscName[260]; +} ; +#pragma pack(pop) + +__interface ICategorizer; +typedef System::DelphiInterface _di_ICategorizer; +__interface INTERFACE_UUID("{A3B14589-9174-49A8-89A3-06A1AE2B9BA7}") ICategorizer : public IInterface +{ + +public: + virtual HRESULT __stdcall GetDescription(WideChar * pszDesc, unsigned cch) = 0 ; + virtual HRESULT __stdcall GetCategory(unsigned cidl, Shlobj::PItemIDList apidl, Word * rgCategoryIds) = 0 ; + virtual HRESULT __stdcall GetCategoryInfo(unsigned dwCategoryId, TCategoryInfo &pci) = 0 ; + virtual HRESULT __stdcall CompareCategory(unsigned csfFlags, unsigned dwCategoryId1, unsigned dwCategoryId2) = 0 ; +}; + +__interface ICategoryProvider; +typedef System::DelphiInterface _di_ICategoryProvider; +__interface INTERFACE_UUID("{9AF64809-5864-4C26-A720-C1F78C086EE3}") ICategoryProvider : public IInterface +{ + +public: + virtual HRESULT __stdcall CanCategorizeOnSCID(tagSHCOLUMNID &pscid) = 0 ; + virtual HRESULT __stdcall GetDefaultCategory(const GUID &pguid, tagSHCOLUMNID &pscid) = 0 ; + virtual HRESULT __stdcall GetCategoryForSCID(tagSHCOLUMNID &pscid, GUID &pguid) = 0 ; + virtual HRESULT __stdcall EnumCategories(/* out */ Activex::_di_IEnumGUID &penum) = 0 ; + virtual HRESULT __stdcall GetCategoryName(const GUID &pguid, WideChar * pszName, unsigned cch) = 0 ; + virtual HRESULT __stdcall CreateCategory(const GUID &pguid, const GUID &riid, /* out */ _di_ICategorizer &ppv) = 0 ; +}; + +#pragma option push -b- +enum TBrowserFrameOption { bfoBrowserPersistSettings, bfoRenameFolderOptionsToInternet, bfoBothOptions, bfoPreferInternetShortcut, bfoBrowseNoInNewProcess, bfoEnableHyperlinkTracking, bfoUseIEOfflineSupport, bfoSubstituteInternetStartPage, bfoUseIELogoBanding, bfoAddIEToCaptionBar, bfoUseDialupRef, bfoUseIEToolbar, bfoNoParentFolderSupport, bfoNoReopenNextRestart, bfoGoHomePage, bfoPreferIEProcess, bfoShowNavigationCancelled }; +#pragma option pop + +typedef Set TBrowserFrameOptions; + +__interface IBrowserFrameOptions; +typedef System::DelphiInterface _di_IBrowserFrameOptions; +__interface INTERFACE_UUID("{10DF43C8-1DBE-11D3-8B34-006097DF5BD4}") IBrowserFrameOptions : public IInterface +{ + +public: + virtual HRESULT __stdcall GetFrameOptions(unsigned dwRequested, unsigned &pdwResult) = 0 ; +}; + +__interface IQueryAssociations; +typedef System::DelphiInterface _di_IQueryAssociations; +__interface INTERFACE_UUID("{C46CA590-3C3F-11D2-BEE6-0000F805CA57}") IQueryAssociations : public IInterface +{ + +public: + virtual HRESULT __stdcall Init(unsigned flags, WideChar * pwszAssoc, HKEY hkProgid, HWND hwnd) = 0 ; + virtual HRESULT __stdcall GetString(unsigned flags, unsigned str, WideChar * pwszExtra, WideChar * pwszOut, unsigned &pcchOut) = 0 ; + virtual HRESULT __stdcall GetKey(unsigned flags, unsigned key, WideChar * pwszExtra, HKEY &phkeyOut) = 0 ; + virtual HRESULT __stdcall GetData(unsigned flags, unsigned data, WideChar * pwszExtra, /* out */ void * &pvOut, unsigned &pcbOut) = 0 ; + virtual HRESULT __stdcall GetEnum(unsigned flags, unsigned assocenum, WideChar * pszExtra, const GUID &riid, /* out */ void * &ppvOut) = 0 ; +}; + +__interface IImageList; +typedef System::DelphiInterface _di_IImageList; +__interface INTERFACE_UUID("{46EB5926-582E-4017-9FDF-E8998DAA0950}") IImageList : public IInterface +{ + +public: + virtual HRESULT __stdcall Add(HBITMAP Image, HBITMAP Mask, int &Index) = 0 ; + virtual HRESULT __stdcall ReplaceIcon(int IndexToReplace, HICON Icon, int &Index) = 0 ; + virtual HRESULT __stdcall SetOverlayImage(int iImage, int iOverlay) = 0 ; + virtual HRESULT __stdcall Replace(int Index, HBITMAP Image, HBITMAP Mask) = 0 ; + virtual HRESULT __stdcall AddMasked(HBITMAP Image, unsigned MaskColor, int &Index) = 0 ; + virtual HRESULT __stdcall Draw(_IMAGELISTDRAWPARAMS &DrawParams) = 0 ; + virtual HRESULT __stdcall Remove(int Index) = 0 ; + virtual HRESULT __stdcall GetIcon(int Index, unsigned Flags, HICON &Icon) = 0 ; + virtual HRESULT __stdcall GetImageInfo(int Index, _IMAGEINFO &ImageInfo) = 0 ; + virtual HRESULT __stdcall Copy(int iDest, System::_di_IInterface SourceList, int iSource, unsigned Flags) = 0 ; + virtual HRESULT __stdcall Merge(int i1, System::_di_IInterface List2, int i2, int dx, int dy, const GUID ID, /* out */ void *ppvOut) = 0 ; + virtual HRESULT __stdcall Clone(const GUID ID, /* out */ void *ppvOut) = 0 ; + virtual HRESULT __stdcall GetImageRect(int Index, Types::TRect &rc) = 0 ; + virtual HRESULT __stdcall GetIconSize(int &cx, int &cy) = 0 ; + virtual HRESULT __stdcall SetIconSize(int cx, int cy) = 0 ; + virtual HRESULT __stdcall GetImageCount(int &Count) = 0 ; + virtual HRESULT __stdcall SetImageCount(unsigned NewCount) = 0 ; + virtual HRESULT __stdcall SetBkColor(unsigned BkColor, unsigned &OldColor) = 0 ; + virtual HRESULT __stdcall GetBkColor(unsigned &BkColor) = 0 ; + virtual HRESULT __stdcall BeginDrag(int iTrack, int dxHotSpot, int dyHotSpot) = 0 ; + virtual HRESULT __stdcall EndDrag(void) = 0 ; + virtual HRESULT __stdcall DragEnter(HWND hWndLock, int x, int y) = 0 ; + virtual HRESULT __stdcall DragLieave(HWND hWndLock) = 0 ; + virtual HRESULT __stdcall DragMove(int x, int y) = 0 ; + virtual HRESULT __stdcall SetDragCursorImage(System::_di_IInterface Image, int iDrag, int dxHotSpot, int dyHotSpot) = 0 ; + virtual HRESULT __stdcall DragShowNoLock(BOOL fShow) = 0 ; + virtual HRESULT __stdcall GetDragImage(Types::TPoint &CurrentPos, Types::TPoint &HotSpot, const GUID ID, /* out */ void *ppvOut) = 0 ; + virtual HRESULT __stdcall GetImageFlags(int i, unsigned dwFlags) = 0 ; + virtual HRESULT __stdcall GetOverlayImage(int iOverlay, int &iIndex) = 0 ; +}; + +typedef HRESULT __stdcall (*TSHGetImageList)(int iImageList, const GUID &RefID, /* out */ void *ImageList); + +typedef _IMAGELISTDRAWPARAMS *PImageListDrawParams; + +typedef _IMAGELISTDRAWPARAMS TImageListDrawParams; + +struct TDFMICS; +typedef TDFMICS *PDFMICS; + +#pragma pack(push,1) +struct TDFMICS +{ + +public: + unsigned cbSize; + unsigned fMask; + int lParam; + unsigned idCmdFirst; + unsigned idDefMax; + _CMINVOKECOMMANDINFO *pici; + System::_di_IInterface punkSite; +} ; +#pragma pack(pop) + +typedef HRESULT __stdcall (*TFNDFMCallback)(_di_IShellFolder psf, HWND wnd, _di_IDataObject pdtObj, unsigned uMsg, int WParm, int lParm); + +__interface IShellFolderViewCB; +typedef System::DelphiInterface _di_IShellFolderViewCB; +__interface INTERFACE_UUID("{2047E320-F2A9-11CE-AE65-08002B2E1262}") IShellFolderViewCB : public IInterface +{ + +public: + virtual HRESULT __stdcall MessageSFVCB(unsigned uMsg, int WParam, int LParam) = 0 ; +}; + +#pragma pack(push,1) +struct TSFVM_WEBVIEW_CONTENT_DATA +{ + +public: + int l1; + int l2; + System::_di_IInterface pUnk; + System::_di_IInterface pUnk2; + _di_IEnumIDList pEnum; +} ; +#pragma pack(pop) + +typedef TSFVM_WEBVIEW_CONTENT_DATA *PSFVM_WEBVIEW_CONTENT_DATA; + +#pragma pack(push,4) +struct TSFVM_WEBVIEW_TASKSECTION_DATA +{ + +public: + System::_di_IInterface pEnum; + System::_di_IInterface pEnum2; +} ; +#pragma pack(pop) + +typedef TSFVM_WEBVIEW_TASKSECTION_DATA *PSFVM_WEBVIEW_TASKSECTION_DATA; + +#pragma pack(push,4) +struct TSFVM_WEBVIEW_THEME_DATA +{ + +public: + WideChar *pszTheme; +} ; +#pragma pack(pop) + +typedef TSFVM_WEBVIEW_THEME_DATA *PSFVM_WEBVIEW_THEME_DATA; + +#pragma pack(push,4) +struct TSFVM_WEBVIEW_LAYOUT_DATA +{ + +public: + unsigned flags; + System::_di_IInterface pUnk; +} ; +#pragma pack(pop) + +typedef TSFVM_WEBVIEW_LAYOUT_DATA *PSFVM_WEBVIEW_LAYOUT_DATA; + +struct TSFVCBSelectInfo; +typedef TSFVCBSelectInfo *PSFVCBSelectInfo; + +#pragma pack(push,4) +struct TSFVCBSelectInfo +{ + +public: + unsigned uOldState; + unsigned uNewState; + _ITEMIDLIST *pidl; +} ; +#pragma pack(pop) + +struct TBDDDATA; +typedef TBDDDATA *PBDDDATA; + +#pragma pack(push,1) +struct TBDDDATA +{ + +public: + HWND hwndFrom; + Variant *pva; + unsigned dwUnused; +} ; +#pragma pack(pop) + +__interface IShellItem; +typedef System::DelphiInterface _di_IShellItem; +__interface INTERFACE_UUID("{43826D1E-E718-42EE-BC55-A1E261C37BFE}") IShellItem : public IInterface +{ + +public: + virtual HRESULT __stdcall BindToHandler(_di_IBindCtx pbc, const GUID rbhid, const GUID &riid, /* out */ void * &ppvOut) = 0 ; + virtual HRESULT __stdcall GetParent(_di_IShellItem &ppsi) = 0 ; + virtual HRESULT __stdcall GetDisplayName(unsigned sigdnName, WideChar * &ppszName) = 0 ; + virtual HRESULT __stdcall GetAttributes(unsigned sfgaoMask, unsigned &psfgaoAttribs) = 0 ; + virtual HRESULT __stdcall Compare(_di_IShellItem psi, unsigned hint, int &piOrder) = 0 ; +}; + +__interface IEnumShellItems; +typedef System::DelphiInterface _di_IEnumShellItems; +__interface INTERFACE_UUID("{4670AC35-34A6-4D2B-B7B6-CD665C6189A5}") IEnumShellItems : public IInterface +{ + +public: + virtual HRESULT __stdcall Next(unsigned celt, /* out */ _di_IShellItem &rgelt, /* out */ unsigned &pceltFetched) = 0 ; + virtual HRESULT __stdcall Skip(unsigned celt) = 0 ; + virtual HRESULT __stdcall Reset(void) = 0 ; + virtual HRESULT __stdcall Clone(/* out */ _di_IEnumShellItems &ppenum) = 0 ; +}; + +__interface IShellItemArray; +typedef System::DelphiInterface _di_IShellItemArray; +__interface INTERFACE_UUID("{90CF20DE-73B4-4AA4-BA7A-82FF310AF24A}") IShellItemArray : public IInterface +{ + +public: + virtual HRESULT __stdcall BindToHandler(_di_IBindCtx pbc, const GUID &rbhid, const GUID &riid, /* out */ void *ppvOut) = 0 ; + virtual HRESULT __stdcall GetAttrributes(int nEnum, unsigned dwRequested, /* out */ unsigned &pdwResult) = 0 ; + virtual HRESULT __stdcall GetCount(/* out */ unsigned &pCount) = 0 ; + virtual HRESULT __stdcall GetItemAt(unsigned nIndex, /* out */ _di_IShellItem &ppItem) = 0 ; + virtual HRESULT __stdcall EnumItems(/* out */ _di_IEnumShellItems &enumShellItems) = 0 ; +}; + +__interface IUIElement; +typedef System::DelphiInterface _di_IUIElement; +__interface INTERFACE_UUID("{EC6FE84F-DC14-4FBB-889F-EA50FE27FE0F}") IUIElement : public IInterface +{ + +public: + virtual HRESULT __stdcall get_Name(_di_IShellItemArray pItemArray, WideChar * &bstrName) = 0 ; + virtual HRESULT __stdcall get_Icon(_di_IShellItemArray pItemArray, WideChar * &bstrName) = 0 ; + virtual HRESULT __stdcall get_Tooltip(_di_IShellItemArray pItemArray, WideChar * &bstrName) = 0 ; +}; + +struct TDetailsInfo; +typedef TDetailsInfo *PDetailsInfo; + +#pragma pack(push,1) +struct TDetailsInfo +{ + +public: + _ITEMIDLIST *pidl; + int Fmt; + int cxChar; + _STRRET str; + int iImage; +} ; +#pragma pack(pop) + +typedef HRESULT __stdcall (*TShellViewExProc)(_di_IShellView psvOuter, _di_IShellFolder psf, HWND hwndMain, unsigned uMsg, int wParam, int lParam); + +#pragma pack(push,1) +struct TShellViewCreate +{ + +public: + unsigned dwSize; + _di_IShellFolder pShellFolder; + _di_IShellView psvOuter; + _di_IShellFolderViewCB pfnCallback; +} ; +#pragma pack(pop) + +typedef HRESULT __stdcall (*TSHCreateShellFolderView)(TShellViewCreate &psvcbi, /* out */ void *ppv); + +typedef BOOL __stdcall (*TSHCreateThread)(TThreadProc pfnThreadProc, void * pData, unsigned dwFlags, TThreadProc pfnCallback); + +#pragma pack(push,4) +struct BANDSITEINFO +{ + +public: + unsigned dwMask; + unsigned dwState; + unsigned dwStyle; +} ; +#pragma pack(pop) + +typedef BANDSITEINFO TBandSiteInfo; + +typedef BANDSITEINFO *PBandSiteInfo; + +__interface IBandSite; +typedef System::DelphiInterface _di_IBandSite; +__interface INTERFACE_UUID("{4CF504B0-DE96-11D0-8B3F-00A0C911E8E5}") IBandSite : public IInterface +{ + +public: + virtual HRESULT __stdcall AddBand(System::_di_IInterface pUnk) = 0 ; + virtual HRESULT __stdcall EnumBands(unsigned Band, unsigned &pdwBandID) = 0 ; + virtual HRESULT __stdcall QueryBand(unsigned BandID, _di_IDeskBand &ppstb, unsigned &pdwState, WideChar * pszName, int cchName) = 0 ; + virtual HRESULT __stdcall SetBandState(unsigned dwBandID, unsigned dwMask, unsigned dwState) = 0 ; + virtual HRESULT __stdcall RemoveBand(unsigned dwBandID) = 0 ; + virtual HRESULT __stdcall GetBandObject(unsigned dwBandID, const GUID &riid, /* out */ void * &ppv) = 0 ; + virtual HRESULT __stdcall SetBandSiteInfo(const BANDSITEINFO &pbsinfo) = 0 ; + virtual HRESULT __stdcall GetBandSiteInfo(BANDSITEINFO &pbsInfo) = 0 ; +}; + +typedef unsigned __stdcall (*TFindFirstFileExW)(WideChar * lpFileName, unsigned fInfoLevelId, _WIN32_FIND_DATAW &lpFindFileData, unsigned fSearchOp, void * lpSearchFilter, unsigned dwAdditionalFlags); + +typedef unsigned __stdcall (*TFindFirstFileExA)(char * lpFileName, unsigned fInfoLevelId, _WIN32_FIND_DATAW &lpFindFileData, unsigned fSearchOp, void * lpSearchFilter, unsigned dwAdditionalFlags); + +//-- var, const, procedure --------------------------------------------------- +static const int ComCtl_470 = 0x40046; +static const int ComCtl_471 = 0x40047; +static const int ComCtl_472 = 0x40048; +static const int ComCtl_580 = 0x50050; +static const int ComCtl_581 = 0x50050; +static const int ComCtl_600 = 0x60000; +#define SID_IShellIconOverlayIdentifier "{0C6C4200-C589-11D0-999A-00C04FD655E1}" +extern PACKAGE GUID IID_IShellIconOverlayIdentifier; +extern PACKAGE unsigned NETWORK_PROVIDER_TYPES[55]; +extern PACKAGE AnsiString NETWORK_PROVIDER_TYPE_IDS[55]; +static const int LVS_EX_DOUBLEBUFFER = 0x10000; +static const Shortint ICON_BLANK = 0x0; +static const Shortint ICON_DATA = 0x1; +static const Shortint ICON_APP = 0x2; +static const Shortint ICON_FOLDER = 0x3; +static const Shortint ICON_FOLDEROPEN = 0x4; +extern PACKAGE GUID IID_IPersistFolder3; +#define SID_IColumnProvider "{E8025004-1C42-11d2-BE2C-00A0C9A83DA1}" +static const Shortint ACLO_ALLOBJECTS = 0xf; +extern PACKAGE GUID DIID_DWebBrowserEvents; +extern PACKAGE GUID DIID_DWebBrowserEvents2; +extern PACKAGE GUID CLSID_ToolbarExtButtons; +extern PACKAGE GUID DIID_DShellFolderViewEvents; +extern PACKAGE GUID IID_FolderItemVerbs; +extern PACKAGE GUID IID_FolderItemVerb; +extern PACKAGE GUID IID_FolderItems; +extern PACKAGE GUID IID_FolderItems2; +extern PACKAGE GUID IID_FolderItems3; +extern PACKAGE GUID IID_Folder; +extern PACKAGE GUID IID_Folder2; +extern PACKAGE GUID IID_Folder3; +#define SID_IBrowserFrameOptions "{10DF43C8-1DBE-11D3-8B34-006097DF5BD4}" +static const Shortint BFO_BROWSER_PERSIST_SETTINGS = 0x1; +static const Shortint BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = 0x2; +static const Shortint BFO_BOTH_OPTIONS = 0x4; +static const Shortint BIF_PREFER_INTERNET_SHORTCUT = 0x8; +static const Shortint BFO_BROWSE_NO_IN_NEW_PROCESS = 0x10; +static const Shortint BFO_ENABLE_HYPERLINK_TRACKING = 0x20; +static const Shortint BFO_USE_IE_OFFLINE_SUPPORT = 0x40; +static const Byte BFO_SUBSTITUE_INTERNET_START_PAGE = 0x80; +static const Word BFO_USE_IE_LOGOBANDING = 0x100; +static const Word BFO_ADD_IE_TOCAPTIONBAR = 0x200; +static const Word BFO_USE_DIALUP_REF = 0x400; +static const Word BFO_USE_IE_TOOLBAR = 0x800; +static const Word BFO_NO_PARENT_FOLDER_SUPPORT = 0x1000; +static const Word BFO_NO_REOPEN_NEXT_RESTART = 0x2000; +static const Word BFO_GO_HOME_PAGE = 0x4000; +static const Word BFO_PREFER_IEPROCESS = 0x8000; +static const int BFO_SHOW_NAVIGATION_CANCELLED = 0x10000; +static const unsigned BFO_QUERY_ALL = 0xffffffff; +#define bfoNone EMPTYSET +#define bfoQueryAll (Set () << bfoBrowserPersistSettings << bfoRenameFolderOptionsToInternet << bfoBothOptions << bfoPreferInternetShortcut << bfoBrowseNoInNewProcess << bfoEnableHyperlinkTracking << bfoUseIEOfflineSupport << bfoSubstituteInternetStartPage << bfoUseIELogoBanding << bfoAddIEToCaptionBar << bfoUseDialupRef << bfoUseIEToolbar << bfoNoParentFolderSupport << bfoNoReopenNextRestart << bfoGoHomePage << bfoPreferIEProcess << bfoShowNavigationCancelled ) +static const Shortint ASSOCENUM_NONE = 0x1; +#define SID_IImageList "{46EB5926-582E-4017-9FDF-E8998DAA0950}" +extern PACKAGE GUID IID_IImageList; +#define SID_IShellFolderViewCB "{2047E320-F2A9-11CE-AE65-08002B2E1262}" +extern PACKAGE GUID IID_IShellFolderViewCB; +static const Shortint SFVM_GETHELPTEXTA = 0x45; +static const Shortint SFVM_GETTOOLTIPTEXTA = 0x46; +static const Shortint SFVM_GETICONOVERLAY = 0x47; +static const Shortint SFVM_SETICONOVERLAY = 0x48; +static const Shortint SFVM_ALTERDROPEFFECT = 0x49; +#define SID_IAssociationArray "{3B877E3C-67DE-4F9A-B29B-17D0A1521C6A}" + +} /* namespace Mpshelltypes */ +using namespace Mpshelltypes; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpshelltypes diff --git a/official/1.7.0/Common Library/Source/MPShellTypes.obj b/official/1.7.0/Common Library/Source/MPShellTypes.obj new file mode 100644 index 0000000000000000000000000000000000000000..a5cde8a3cead7185087175daf6d7a63bcab2e0a9 GIT binary patch literal 25961 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Source/MPShellTypes.pas b/official/1.7.0/Common Library/Source/MPShellTypes.pas new file mode 100644 index 0000000..61e8be2 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPShellTypes.pas @@ -0,0 +1,3466 @@ +unit MPShellTypes; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} +{$I Options.inc} +{$I ..\Include\Debug.inc} +{$I ..\Include\Addins.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, + ImgList, ShlObj, ShellAPI, ActiveX, ComObj, CommCtrl; + + +{$HPPEMIT '#include '} +{$HPPEMIT '#include '} +{$HPPEMIT '#include '} +{$HPPEMIT '#include '} + +{$IFDEF CPPB_6_UP} + {$HPPEMIT '#include '} // if BCB6 or later +{$ENDIF} +{$HPPEMIT '#include '} + +(*$HPPEMIT 'namespace Mpshellutilities { class TNamespace; }' *) +{$HPPEMIT 'typedef DelphiInterface _di_IDropTarget;'} +{$HPPEMIT 'typedef DelphiInterface _di_IQueryInfo;'} +{$HPPEMIT 'typedef DelphiInterface _di_IEnumString;'} +{$HPPEMIT 'typedef DelphiInterface _di_IBindCtx;'} +{$HPPEMIT 'typedef DelphiInterface _di_IClassFactory;'} +{$HPPEMIT 'typedef DelphiInterface _di_IDeskBand;'} +{$HPPEMIT 'typedef DelphiInterface _di_IDropSource;'} + +{$HPPEMIT 'typedef _SHELLDETAILS tagSHELLDETAILS;'} +(*$HPPEMIT 'namespace Activex { typedef System::DelphiInterface _di_IEnumGUID; }' *) + + + +//------------------------------------------------------------------------------ +// Missing Windows Message definitions +//------------------------------------------------------------------------------ + +{$IFDEF COMPILER_4} +type + TWMContextMenu = packed record + Msg: Cardinal; + hWnd: HWND; + case Integer of + 0: ( + XPos: Smallint; + YPos: Smallint); + 1: ( + Pos: TSmallPoint; + Result: Longint); + end; +{$ENDIF} + +{$IFNDEF DELPHI_7_UP} +type + TWMPrint = packed record + Msg: Cardinal; + DC: HDC; + Flags: Cardinal; + Result: Integer; + end; + + TWMPrintClient = TWMPrint; +{$ENDIF} + +const + ComCtl_470 = $00040046; + ComCtl_471 = $00040047; + ComCtl_472 = $00040048; + ComCtl_580 = $00050050; + ComCtl_581 = $00050050; + ComCtl_600 = $00060000; + +const + {$EXTERNALSYM FOF_NO_CONNECTED_ELEMENTS} + FOF_NO_CONNECTED_ELEMENTS = $0000; + {$EXTERNALSYM FOF_NOCOPYSECURITYATTRIBS} + FOF_NOCOPYSECURITYATTRIBS = $0000; + {$EXTERNALSYM FOF_NORECURSION} + FOF_NORECURSION = $0000; + {$EXTERNALSYM FOF_NORECURSEREPARSE} + FOF_NORECURSEREPARSE = $0000; + {$EXTERNALSYM FOF_WANTNUKEWARNING} + FOF_WANTNUKEWARNING = $0000; + + {$EXTERNALSYM GIL_DEFAULTICON} + GIL_DEFAULTICON = $0040; // get the default icon location if the final one takes too long to get + {$EXTERNALSYM GIL_FORSHORTCUT} + GIL_FORSHORTCUT = $0080; // the icon is for a shortcut to the object + + SID_IShellIconOverlayIdentifier = '{0C6C4200-C589-11D0-999A-00C04FD655E1}'; + IID_IShellIconOverlayIdentifier: TGUID = SID_IShellIconOverlayIdentifier; + + {$EXTERNALSYM ISIOI_ICONFILE} + ISIOI_ICONFILE = $00000001; // path is returned through pwszIconFile + {$EXTERNALSYM ISIOI_ICONINDEX} + ISIOI_ICONINDEX = $00000002; // icon index in pwszIconFile is returned through pIndex + +type + IShellIconOverlayIdentifier = interface(IUnknown) + [SID_IShellIconOverlayIdentifier] + function IsMemberOf(pwszPath: LPCWSTR; dwAttrib: DWORD): HRESULT; stdcall; + function GetOverlayInfo(pwszIconFile: LPWSTR; cchMax: Integer; var pIndex: Integer; var pdwFlags: DWORD): HRESULT; stdcall; + function GetPriority(var pPriority: Integer): HRESULT; stdcall; + end; + +const + {$EXTERNALSYM FILE_ATTRIBUTE_ENCRYPTED} + FILE_ATTRIBUTE_ENCRYPTED = $00004000; + {$EXTERNALSYM FILE_ATTRIBUTE_REPARSE_POINT} + FILE_ATTRIBUTE_REPARSE_POINT = $00000400; + {$EXTERNALSYM FILE_ATTRIBUTE_SPARSE_FILE} + FILE_ATTRIBUTE_SPARSE_FILE = $00000200; + {$EXTERNALSYM FILE_ATTRIBUTE_NOT_CONTENT_INDEXED} + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000; + +//------------------------------------------------------------------------------ +// Property Sheets +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM PSN_TRANSLATEACCELERATOR} + PSN_TRANSLATEACCELERATOR = PSN_FIRST - 12; + {$EXTERNALSYM PSN_QUERYINITIALFOCUS} + PSN_QUERYINITIALFOCUS = PSN_FIRST - 13; + + {$EXTERNALSYM PSM_GETCURRENTPAGEHWND} + PSM_GETCURRENTPAGEHWND = WM_USER + 118; + +//------------------------------------------------------------------------------ +// IRunnableTask +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM SID_IRunnableTask} + SID_IRunnableTask = '{85788D00-6807-11d0-B810-00C04FD706EC}'; + +type + {$EXTERNALSYM IRunnableTask} + IRunnableTask = interface(IUnknown) + [SID_IRunnableTask] + function Run: HRESULT; stdcall; + function Kill(fWait: BOOL): HRESULT; stdcall; + function Suspend: HRESULT; stdcall; + function Resume: HRESULT; stdcall; + function IsRunning: ULONG; stdcall; // Returns one of the IRTIR_TASK_xxxx constants + end; + +const + {$EXTERNALSYM IRTIR_TASK_NOT_RUNNING} + IRTIR_TASK_NOT_RUNNING = 0; // Extraction has not yet started. + {$EXTERNALSYM IRTIR_TASK_RUNNING} + IRTIR_TASK_RUNNING = 1; // The task is running. + {$EXTERNALSYM IRTIR_TASK_SUSPENDED} + IRTIR_TASK_SUSPENDED = 2; // The task is suspended. + {$EXTERNALSYM IRTIR_TASK_PENDING} + IRTIR_TASK_PENDING = 3; // The thread has been killed but has not completely shut down yet. + {$EXTERNALSYM IRTIR_TASK_FINISHED} + IRTIR_TASK_FINISHED = 4; // The task is finished. + + //------------------------------------------------------------------------------ +// IQueryInfo +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM QITIPF_DEFAULT} + QITIPF_DEFAULT = $00000000; // Normal Tip + {$EXTERNALSYM QITIPF_USENAME} + QITIPF_USENAME = $00000001; // Provide the name of the item in ppwszTip rather than the info tip text. + {$EXTERNALSYM QITIPF_LINKNOTARGET} + QITIPF_LINKNOTARGET = $00000002; // If the item is a shortcut, retrieve the info tip text of the shortcut rather than its target. + {$EXTERNALSYM QITIPF_LINKUSETARGET} + QITIPF_LINKUSETARGET = $00000004; // If the item is a shortcut, retrieve the info tip text of the shortcut's target. + {$EXTERNALSYM QITIPF_USESLOWTIP} + QITIPF_USESLOWTIP = $00000008; // Flag says it's OK to take a long time generating tip. Search the entire namespace for the information. This may result in a delayed response time. + + +//------------------------------------------------------------------------------ +// Network Types +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM WNNC_NET_MSNET} + WNNC_NET_MSNET = $00010000; + {$EXTERNALSYM WNNC_NET_LANMAN} + WNNC_NET_LANMAN = $00020000; + {$EXTERNALSYM WNNC_NET_NETWARE} + WNNC_NET_NETWARE = $00030000; + {$EXTERNALSYM WNNC_NET_VINES} + WNNC_NET_VINES = $00040000; + {$EXTERNALSYM WNNC_NET_10NET} + WNNC_NET_10NET = $00050000; + {$EXTERNALSYM WNNC_NET_LOCUS} + WNNC_NET_LOCUS = $00060000; + {$EXTERNALSYM WNNC_NET_SUN_PC_NFS} + WNNC_NET_SUN_PC_NFS = $00070000; + {$EXTERNALSYM WNNC_NET_LANSTEP} + WNNC_NET_LANSTEP = $00080000; + {$EXTERNALSYM WNNC_NET_9TILES} + WNNC_NET_9TILES = $00090000; + {$EXTERNALSYM WNNC_NET_LANTASTIC} + WNNC_NET_LANTASTIC = $000A0000; + {$EXTERNALSYM WNNC_NET_AS400} + WNNC_NET_AS400 = $000B0000; + {$EXTERNALSYM WNNC_NET_FTP_NFS} + WNNC_NET_FTP_NFS = $000C0000; + {$EXTERNALSYM WNNC_NET_PATHWORKS} + WNNC_NET_PATHWORKS = $000D0000; + {$EXTERNALSYM WNNC_NET_LIFENET} + WNNC_NET_LIFENET = $000E0000; + {$EXTERNALSYM WNNC_NET_POWERLAN} + WNNC_NET_POWERLAN = $000F0000; + {$EXTERNALSYM WNNC_NET_BWNFS} + WNNC_NET_BWNFS = $00100000; + {$EXTERNALSYM WNNC_NET_COGENT} + WNNC_NET_COGENT = $00110000; + {$EXTERNALSYM WNNC_NET_FARALLON} + WNNC_NET_FARALLON = $00120000; + {$EXTERNALSYM WNNC_NET_APPLETALK} + WNNC_NET_APPLETALK = $00130000; + {$EXTERNALSYM WNNC_NET_INTERGRAPH} + WNNC_NET_INTERGRAPH = $00140000; + {$EXTERNALSYM WNNC_NET_SYMFONET} + WNNC_NET_SYMFONET = $00150000; + {$EXTERNALSYM WNNC_NET_CLEARCASE} + WNNC_NET_CLEARCASE = $00160000; + {$EXTERNALSYM WNNC_NET_FRONTIER} + WNNC_NET_FRONTIER = $00170000; + {$EXTERNALSYM WNNC_NET_BMC} + WNNC_NET_BMC = $00180000; + {$EXTERNALSYM WNNC_NET_DCE} + WNNC_NET_DCE = $00190000; + {$EXTERNALSYM WNNC_NET_AVID} + WNNC_NET_AVID = $001A0000; + {$EXTERNALSYM WNNC_NET_DOCUSPACE} + WNNC_NET_DOCUSPACE = $001B0000; + {$EXTERNALSYM WNNC_NET_MANGOSOFT} + WNNC_NET_MANGOSOFT = $001C0000; + {$EXTERNALSYM WNNC_NET_SERNET} + WNNC_NET_SERNET = $001D0000; + {$EXTERNALSYM WNNC_NET_RIVERFRONT1} + WNNC_NET_RIVERFRONT1 = $001E0000; + {$EXTERNALSYM WNNC_NET_RIVERFRONT2} + WNNC_NET_RIVERFRONT2 = $001F0000; + {$EXTERNALSYM WNNC_NET_DECORB} + WNNC_NET_DECORB = $00200000; + {$EXTERNALSYM WNNC_NET_PROTSTOR} + WNNC_NET_PROTSTOR = $00210000; + {$EXTERNALSYM WNNC_NET_FJ_REDIR} + WNNC_NET_FJ_REDIR = $00220000; + {$EXTERNALSYM WNNC_NET_DISTINCT} + WNNC_NET_DISTINCT = $00230000; + {$EXTERNALSYM WNNC_NET_TWINS} + WNNC_NET_TWINS = $00240000; + {$EXTERNALSYM WNNC_NET_RDR2SAMPLE} + WNNC_NET_RDR2SAMPLE = $00250000; + {$EXTERNALSYM WNNC_NET_CSC} + WNNC_NET_CSC = $00260000; + {$EXTERNALSYM WNNC_NET_3IN1} + WNNC_NET_3IN1 = $00270000; + {$EXTERNALSYM WNNC_NET_EXTENDNET} + WNNC_NET_EXTENDNET = $00290000; + {$EXTERNALSYM WNNC_NET_STAC} + WNNC_NET_STAC = $002A0000; + {$EXTERNALSYM WNNC_NET_FOXBAT} + WNNC_NET_FOXBAT = $002B0000; + {$EXTERNALSYM WNNC_NET_YAHOO} + WNNC_NET_YAHOO = $002C0000; + {$EXTERNALSYM WNNC_NET_EXIFS} + WNNC_NET_EXIFS = $002D0000; + {$EXTERNALSYM WNNC_NET_DAV} + WNNC_NET_DAV = $002E0000; + {$EXTERNALSYM WNNC_NET_KNOWARE} + WNNC_NET_KNOWARE = $002F0000; + {$EXTERNALSYM WNNC_NET_OBJECT_DIRE} + WNNC_NET_OBJECT_DIRE = $00300000; + {$EXTERNALSYM WNNC_NET_MASFAX} + WNNC_NET_MASFAX = $00310000; + {$EXTERNALSYM WNNC_NET_HOB_NFS} + WNNC_NET_HOB_NFS = $00320000; + {$EXTERNALSYM WNNC_NET_SHIVA} + WNNC_NET_SHIVA = $00330000; + {$EXTERNALSYM WNNC_NET_IBMAL} + WNNC_NET_IBMAL = $00340000; + {$EXTERNALSYM WNNC_NET_LOCK} + WNNC_NET_LOCK = $00350000; + {$EXTERNALSYM WNNC_NET_TERMSRV} + WNNC_NET_TERMSRV = $00360000; + {$EXTERNALSYM WNNC_NET_SRT} + WNNC_NET_SRT = $00370000; + {$EXTERNALSYM WNNC_NET_QUINCY} + WNNC_NET_QUINCY = $00380000; + + + NETWORK_PROVIDER_TYPES: array[0..54] of LongWord = ( + $00010000, + $00020000, + $00030000, + $00040000, + $00050000, + $00060000, + $00070000, + $00080000, + $00090000, + $000A0000, + $000B0000, + $000C0000, + $000D0000, + $000E0000, + $000F0000, + $00100000, + $00110000, + $00120000, + $00130000, + $00140000, + $00150000, + $00160000, + $00170000, + $00180000, + $00190000, + $001A0000, + $001B0000, + $001C0000, + $001D0000, + $001E0000, + $001F0000, + $00200000, + $00210000, + $00220000, + $00230000, + $00240000, + $00250000, + $00260000, + $00270000, + $00290000, + $002A0000, + $002B0000, + $002C0000, + $002D0000, + $002E0000, + $002F0000, + $00300000, + $00310000, + $00320000, + $00330000, + $00340000, + $00350000, + $00360000, + $00370000, + $00380000 + ); + + NETWORK_PROVIDER_TYPE_IDS: array[0..54] of string = ( + 'WNNC_NET_MSNET', + 'WNNC_NET_LANMAN', + 'WNNC_NET_NETWARE', + 'WNNC_NET_VINES', + 'WNNC_NET_10NET', + 'WNNC_NET_LOCUS', + 'WNNC_NET_SUN_PC_NFS', + 'WNNC_NET_LANSTEP', + 'WNNC_NET_9TILES', + 'WNNC_NET_LANTASTIC', + 'WNNC_NET_AS400', + 'WNNC_NET_FTP_NFS', + 'WNNC_NET_PATHWORKS', + 'WNNC_NET_LIFENET', + 'WNNC_NET_POWERLAN', + 'WNNC_NET_BWNFS', + 'WNNC_NET_COGENT', + 'WNNC_NET_FARALLON', + 'WNNC_NET_APPLETALK', + 'WNNC_NET_INTERGRAPH', + 'WNNC_NET_SYMFONET', + 'WNNC_NET_CLEARCASE', + 'WNNC_NET_FRONTIER ', + 'WNNC_NET_BMC', + 'WNNC_NET_DCE', + 'WNNC_NET_AVID', + 'WNNC_NET_DOCUSPACE', + 'WNNC_NET_MANGOSOFT', + 'WNNC_NET_SERNET', + 'WNNC_NET_RIVERFRONT1', + 'WNNC_NET_RIVERFRONT2', + 'WNNC_NET_DECORB', + 'WNNC_NET_PROTSTOR', + 'WNNC_NET_FJ_REDIR', + 'WNNC_NET_DISTINCT', + 'WNNC_NET_TWINS', + 'WNNC_NET_RDR2SAMPLE', + 'WNNC_NET_CSC', + 'WNNC_NET_3IN1', + 'WNNC_NET_EXTENDNET', + 'WNNC_NET_STAC', + 'WNNC_NET_FOXBAT', + 'WNNC_NET_YAHOO', + 'WNNC_NET_EXIFS', + 'WNNC_NET_DAV', + 'WNNC_NET_KNOWARE', + 'WNNC_NET_OBJECT_DIRE', + 'WNNC_NET_MASFAX', + 'WNNC_NET_HOB_NFS', + 'WNNC_NET_SHIVA', + 'WNNC_NET_IBMAL', + 'WNNC_NET_LOCK', + 'WNNC_NET_TERMSRV', + 'WNNC_NET_SRT', + 'WNNC_NET_QUINCY' + ); + +{$IFNDEF COMPILER_7_UP} +{$EXTERNALSYM TBSTYLE_BUTTON} + TBSTYLE_BUTTON = $00; + {$EXTERNALSYM TBSTYLE_SEP} + TBSTYLE_SEP = $01; + {$EXTERNALSYM TBSTYLE_CHECK} + TBSTYLE_CHECK = $02; + {$EXTERNALSYM TBSTYLE_GROUP} + TBSTYLE_GROUP = $04; + {$EXTERNALSYM TBSTYLE_CHECKGROUP} + TBSTYLE_CHECKGROUP = TBSTYLE_GROUP or TBSTYLE_CHECK; + {$EXTERNALSYM TBSTYLE_DROPDOWN} + TBSTYLE_DROPDOWN = $08; + {$EXTERNALSYM TBSTYLE_AUTOSIZE} + TBSTYLE_AUTOSIZE = $0010; + {$EXTERNALSYM TBSTYLE_NOPREFIX} + TBSTYLE_NOPREFIX = $0020; + {$EXTERNALSYM BTNS_BUTTON} + BTNS_BUTTON = TBSTYLE_BUTTON; + {$EXTERNALSYM BTNS_SEP} + BTNS_SEP = TBSTYLE_SEP; + {$EXTERNALSYM BTNS_CHECK} + BTNS_CHECK = TBSTYLE_CHECK; + {$EXTERNALSYM BTNS_GROUP} + BTNS_GROUP = TBSTYLE_GROUP; + {$EXTERNALSYM BTNS_CHECKGROUP} + BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP; + {$EXTERNALSYM BTNS_DROPDOWN} + BTNS_DROPDOWN = TBSTYLE_DROPDOWN; + {$EXTERNALSYM BTNS_AUTOSIZE} + BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE; + {$EXTERNALSYM BTNS_NOPREFIX} + BTNS_NOPREFIX = TBSTYLE_NOPREFIX; + {$EXTERNALSYM BTNS_SHOWTEXT} + BTNS_SHOWTEXT = $0040; + {$EXTERNALSYM BTNS_WHOLEDROPDOWN} + BTNS_WHOLEDROPDOWN = $0080; +{$ENDIF} + +//------------------------------------------------------------------------------ +// New ImageList styles +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM ILD_PRESERVEALPHA} + ILD_PRESERVEALPHA = $00001000; + +//------------------------------------------------------------------------------ +// Some new magic extended Listview Styles +//------------------------------------------------------------------------------ +const + LVS_EX_DOUBLEBUFFER = $00010000; + +//------------------------------------------------------------------------------ +// Undocumented SHChangeNotifier Registration Constants and Types +//------------------------------------------------------------------------------ +const + {$EXTERNALSYM SHCNF_ACCEPT_INTERRUPTS} + SHCNF_ACCEPT_INTERRUPTS = $0001; + {$EXTERNALSYM SHCNF_ACCEPT_NON_INTERRUPTS} + SHCNF_ACCEPT_NON_INTERRUPTS = $0002; + {$EXTERNALSYM SHCNF_NO_PROXY} + SHCNF_NO_PROXY = $8000; + +type + // Structures for the undocumented ChangeNotify handler + TNotifyRegister = packed record // Structure that is passed to the SHChangeNotifyRegister Function + ItemIDList: PItemIDList; + bWatchSubTree: Bool; + end; + + PDWordItemID = ^TDWordItemID; // Structure is what is passed in the wParam of the notify message when the notification is FreeSpace, ImageUpdate or anything with the SHCNF_DWORD flag. + TDWordItemID = packed record + cb: Word; { Size of Structure } + dwItem1: DWORD; + dwItem2: DWORD; + end; + + PShellNotifyRec = ^TShellNotifyRec; // Structure is what is passed in the wParam of the notify message when the notification is anything with the SHCNF_IDLIST flag. + TShellNotifyRec = packed record + PIDL1, // Most ne_xxxx Notifications + PIDL2: PItemIDList; + end; + +//------------------------------------------------------------------------------ +// IContextMenu interfaces redefined to take advanatage of the Unicode Support +//------------------------------------------------------------------------------ +type + IContextMenu = interface(IUnknown) + [SID_IContextMenu] + function QueryContextMenu(Menu: HMENU; + indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): HResult; stdcall; + function InvokeCommand(var lpici: TCMInvokeCommandInfoEx): HResult; stdcall; + function GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; + pszName: LPSTR; cchMax: UINT): HResult; stdcall; + end; + + IContextMenu2 = interface(IContextMenu) + [SID_IContextMenu2] + function HandleMenuMsg(uMsg: UINT; WParam, LParam: Integer): HResult; stdcall; + end; + + IContextMenu3 = interface(IContextMenu2) + [SID_IContextMenu3] + function HandleMenuMsg2(uMsg: UINT; wParam, lParam: Integer; + var lpResult: Integer): HResult; stdcall; + end; + +type + IShellIconOverlay = interface(IUnknown) + [SID_IShellIconOverlay] + function GetOverlayIndex(pidl: PItemIDList; var pIndex): HResult; stdcall; + function GetOverlayIconIndex(pidl: PItemIDList; var pIconIndex): HResult; stdcall; + end; + +//------------------------------------------------------------------------------ +// Button Constants +//------------------------------------------------------------------------------ +const + {$EXTERNALSYM MK_ALT} + MK_ALT = $0020; + {$EXTERNALSYM MK_BUTTON} + MK_BUTTON = MK_LBUTTON or MK_RBUTTON or MK_MBUTTON; + {$EXTERNALSYM MK_XBUTTON1} + MK_XBUTTON1 = $0001; + {$EXTERNALSYM MK_XBUTTON2} + MK_XBUTTON2 = $0002; + +//------------------------------------------------------------------------------ +// Listview Column Constants +//------------------------------------------------------------------------------ +const + {$EXTERNALSYM LVCFMT_LEFT} + LVCFMT_LEFT = $0000; + {$EXTERNALSYM LVCFMT_RIGHT} + LVCFMT_RIGHT = $0001; + {$EXTERNALSYM LVCFMT_CENTER} + LVCFMT_CENTER = $0002; + {$EXTERNALSYM LVCFMT_COL_HAS_IMAGES} + LVCFMT_COL_HAS_IMAGES = $8000; + +//------------------------------------------------------------------------------ +// New IShellFolder Constants and Types +//------------------------------------------------------------------------------ + {$EXTERNALSYM SFGAO_CANMONIKER} + SFGAO_CANMONIKER = $400000; // Defunct + {$EXTERNALSYM SFGAO_HASSTORAGE} + SFGAO_HASSTORAGE = $400000; // Defunct + {$EXTERNALSYM SFGAO_ENCRYPTED} + SFGAO_ENCRYPTED = $2000; + {$EXTERNALSYM SFGAO_ISSLOW} + SFGAO_ISSLOW = $4000; + {$EXTERNALSYM SFGAO_STORAGE} + SFGAO_STORAGE = $0008; // supports BindToObject(IID_IStorage) + {$EXTERNALSYM SFGAO_STORAGEANCESTOR} + SFGAO_STORAGEANCESTOR = $800000;// may contain children with SFGAO_STORAGE or SFGAO_STREAM + {$EXTERNALSYM SFGAO_STREAM} + SFGAO_STREAM = $400000; // supports BindToObject(IID_IStream) + + + +//------------------------------------------------------------------------------ +// IShellIcon Constants and Types +//------------------------------------------------------------------------------ +const + // Constants for IShellIcon interface + ICON_BLANK = 0; // Unassocaiated file + ICON_DATA = 1; // With data + ICON_APP = 2; // Application, bat file etc + ICON_FOLDER = 3; // Plain folder + ICON_FOLDEROPEN = 4; // Open Folder + +//------------------------------------------------------------------------------ +// Drag Drop Image Helper Interfaces +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM IID_IDropTargetHelper} + IID_IDropTargetHelper: TGUID = ( + D1:$4657278B; D2:$411B; D3:$11d2; D4:($83,$9A,$00,$C0,$4F,$D9,$18,$D0)); + {$EXTERNALSYM IID_IDragSourceHelper} + IID_IDragSourceHelper: TGUID = ( + D1:$DE5BF786; D2:$477A; D3:$11d2; D4:($83,$9D,$00,$C0,$4F,$D9,$18,$D0)); + {$EXTERNALSYM CLSID_DragDropHelper} + CLSID_DragDropHelper: TGUID = ( + D1:$4657278A; D2:$411B; D3:$11d2; D4:($83,$9A,$00,$C0,$4F,$D9,$18,$D0)); + + {$EXTERNALSYM SID_IDropTargetHelper} + SID_IDropTargetHelper = '{4657278B-411B-11d2-839A-00C04FD918D0}'; + {$EXTERNALSYM SID_IDragSourceHelper} + SID_IDragSourceHelper = '{DE5BF786-477A-11d2-839D-00C04FD918D0}'; + {$EXTERNALSYM SID_IDropTarget} + SID_IDropTarget = '{00000122-0000-0000-C000-000000000046}'; + +type + IDropTargetHelper = interface(IUnknown) + [SID_IDropTargetHelper] + function DragEnter(hwndTarget: HWND; pDataObject: IDataObject; var ppt: TPoint; dwEffect: Integer): HRESULT; stdcall; + function DragLeave: HRESULT; stdcall; + function DragOver(var ppt: TPoint; dwEffect: Integer): HRESULT; stdcall; + function Drop(pDataObject: IDataObject; var ppt: TPoint; dwEffect: Integer): HRESULT; stdcall; + function Show(fShow: Boolean): HRESULT; stdcall; + end; + + PSHDragImage = ^TSHDragImage; + TSHDragImage = packed record + sizeDragImage: TSize; + ptOffset: TPoint; + hbmpDragImage: HBITMAP; + ColorRef: TColorRef; + end; + + {$EXTERNALSYM IDragSourceHelper} + IDragSourceHelper = interface(IUnknown) + [SID_IDragSourceHelper] + function InitializeFromBitmap(var SHDragImage: TSHDragImage; pDataObject: IDataObject): HRESULT; stdcall; + function InitializeFromWindow(Window: HWND; var ppt: TPoint; pDataObject: IDataObject): HRESULT; stdcall; + end; + +//------------------------------------------------------------------------------ +// IExtractImage definitions. +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM SID_IExtractImage} + SID_IExtractImage = '{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}'; + {$EXTERNALSYM SID_IExtractImage2} + SID_IExtractImage2 = '{953BB1EE-93B4-11d1-98A3-00C04FB687DA}'; + {$EXTERNALSYM IID_IExtractImage} + IID_IExtractImage: TGUID = SID_IExtractImage; + {$EXTERNALSYM IID_IExtractImage2} + IID_IExtractImage2: TGUID = SID_IExtractImage2; + +type + IExtractImage = interface(IUnknown) + [SID_IExtractImage] + function GetLocation(Buffer: PWideChar; + BufferSize: DWORD; + var Priority: DWORD; + var Size: TSize; + ColorDepth: DWORD; + var Flags: DWORD ): HResult; stdcall; + function Extract(var BmpImage: HBITMAP): HResult; stdcall; + end; + + IExtractImage2 = interface(IExtractImage) + [SID_IExtractImage2] + function GetTimeStamp(var DateStamp: TFILETIME): HResult; stdcall; + end; + +const + {$EXTERNALSYM IEI_PRIORITY_MAX} + IEI_PRIORITY_MAX = $0002; + {$EXTERNALSYM IEI_PRIORITY_MIN} + IEI_PRIORITY_MIN = $0001; + {$EXTERNALSYM IEI_PRIORITY_NORMAL} + IEI_PRIORITY_NORMAL = $0000; + + {$EXTERNALSYM IEIFLAG_ASYNC} + IEIFLAG_ASYNC = $0001; // ask the extractor if it supports ASYNC extract (free threaded) + {$EXTERNALSYM IEIFLAG_CACHE} + IEIFLAG_CACHE = $0002; // returned from the extractor if it does NOT cache the thumbnail + {$EXTERNALSYM IEIFLAG_ASPECT} + IEIFLAG_ASPECT = $0004; // passed to the extractor to beg it to render to the aspect ratio of the supplied rect + {$EXTERNALSYM IEIFLAG_OFFLINE} + IEIFLAG_OFFLINE = $0008; // if the extractor shouldn't hit the net to get any content neede for the rendering + {$EXTERNALSYM IEIFLAG_GLEAM} + IEIFLAG_GLEAM = $0010; // does the image have a gleam ? this will be returned if it does + {$EXTERNALSYM IEIFLAG_SCREEN} + IEIFLAG_SCREEN = $0020; // render as if for the screen (this is exlusive with IEIFLAG_ASPECT ) + {$EXTERNALSYM IEIFLAG_ORIGSIZE} + IEIFLAG_ORIGSIZE = $0040; // render to the approx size passed, but crop ifneccessary + {$EXTERNALSYM IEIFLAG_NOSTAMP} + IEIFLAG_NOSTAMP = $0080; // returned from the extractor if it does NOT want an icon stamp on the thumbnail + {$EXTERNALSYM IEIFLAG_NOBORDER} + IEIFLAG_NOBORDER = $0100; // returned from the extractor if it does NOT want an a border around the thumbnail + {$EXTERNALSYM IEIFLAG_QUALITY} + IEIFLAG_QUALITY = $0200; // passed to the Extract method to indicate that a slower, higher quality image is desired, re-compute the thumbnail + {$EXTERNALSYM IEIFLAG_REFRESH} + IEIFLAG_REFRESH = $0400; // returned from the extractor if it would like to have Refresh Thumbnail available + + + +//------------------------------------------------------------------------------ +// IShellLink definitions. +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM CLSID_ShellLinkW} + CLSID_ShellLinkW: TGUID = ( + D1:$000214F9; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46)); + + { IShellLink HotKey Mofifiers } + {$EXTERNALSYM HOTKEYF_SHIFT} + HOTKEYF_SHIFT = $01; + {$EXTERNALSYM HOTKEYF_CONTROL} + HOTKEYF_CONTROL = $02; + {$EXTERNALSYM HOTKEYF_ALT} + HOTKEYF_ALT = $04; + {$EXTERNALSYM HOTKEYF_EXT} + HOTKEYF_EXT = $08; + + +{$IFNDEF DELPHI_7_UP} +// D7 defines this right, D5 and D6 do not +// _FILEGROUPDESCRIPTORW Corrected definitions. +type + PFileGroupDescriptorW = ^TFileGroupDescriptorW; + {$EXTERNALSYM _FILEGROUPDESCRIPTORW} + _FILEGROUPDESCRIPTORW = packed record + cItems: UINT; + fgd: array[0..0] of TFileDescriptorW; + end; + TFileGroupDescriptorW = _FILEGROUPDESCRIPTORW; +{$ENDIF} + +// IShellLinkW Corrected definitions. +type + {$EXTERNALSYM IShellLinkW} + IShellLinkW = interface(IUnknown) { sl } + [SID_IShellLinkW] + function GetPath(pszFile: PWideChar; cchMaxPath: Integer; + var pfd: TWin32FindDataW; fFlags: DWORD): HResult; stdcall; + function GetIDList(var ppidl: PItemIDList): HResult; stdcall; + function SetIDList(pidl: PItemIDList): HResult; stdcall; + function GetDescription(pszName: PWideChar; cchMaxName: Integer): HResult; stdcall; + function SetDescription(pszName: PWideChar): HResult; stdcall; + function GetWorkingDirectory(pszDir: PWideChar; cchMaxPath: Integer): HResult; stdcall; + function SetWorkingDirectory(pszDir: PWideChar): HResult; stdcall; + function GetArguments(pszArgs: PWideChar; cchMaxPath: Integer): HResult; stdcall; + function SetArguments(pszArgs: PWideChar): HResult; stdcall; + function GetHotkey(var pwHotkey: Word): HResult; stdcall; + function SetHotkey(wHotkey: Word): HResult; stdcall; + function GetShowCmd(out piShowCmd: Integer): HResult; stdcall; + function SetShowCmd(iShowCmd: Integer): HResult; stdcall; + function GetIconLocation(pszIconPath: PWideChar; cchIconPath: Integer; + out piIcon: Integer): HResult; stdcall; + function SetIconLocation(pszIconPath: PWideChar; iIcon: Integer): HResult; stdcall; + function SetRelativePath(pszPathRel: PWideChar; dwReserved: DWORD): HResult; stdcall; + function Resolve(Wnd: HWND; fFlags: DWORD): HResult; stdcall; + function SetPath(pszFile: PWideChar): HResult; stdcall; + end; + +//------------------------------------------------------------------------------ +// IShellDetails definitions. +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM SID_IShellDetails} + SID_IShellDetails = '{000214EC-0000-0000-C000-000000000046}'; + {$EXTERNALSYM IID_IShellDetails} + IID_IShellDetails: TGUID = SID_IShellDetails; + +type + {$EXTERNALSYM PShellDetails} + PShellDetails=^TShellDetails; + {$EXTERNALSYM tagSHELLDETAILS} + tagSHELLDETAILS = packed record + Fmt: Integer; + cxChar: Integer; + str: TStrRet; + end; + {$EXTERNALSYM TShellDetails} + TShellDetails = tagSHELLDETAILS; + + // BCB6 is all screwed up with IShellDetails. Can't get it to not see + // my definition and it dissagrees that mine is right compared to the h file + {$IFNDEF CPPB_6_UP} + IShellDetails=interface(IUnknown) + {$ELSE} + IShellDetailsBCB6=interface(IUnknown) + {$ENDIF CPPB_6_UP} + [SID_IShellDetails] + function GetDetailsOf(PIDL: PItemIDList; iColumn: LongWord; var data: TShellDetails): HResult; stdcall; + function ColumnClick(iColumn: LongWord): HResult; stdcall; + end; + +//------------------------------------------------------------------------------ +// IShellFolder2 definitions. +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM IID_IEnumExtraSearch} + IID_IEnumExtraSearch: TGUID = ( + D1:$0E700BE1; D2:$9DB6; D3:$11D1; D4:($A1,$CE,$00,$00,$4F,$D7,$5D,$13)); + {$EXTERNALSYM IID_IShellFolder2} + IID_IShellFolder2: TGUID = ( + D1:$93F2F68C; D2:$1D1B; D3:$11D3; D4:($A3,$0E,$00,$C0,$4F,$79,$AB,$D1)); + IID_IPersistFolder3: TGUID = ( + D1:$CEF04FDF; D2:$FE72; D3:$11D2; D4:($87, $A5, $0, $C0, $4F, $68, $37, $CF)); + {$EXTERNALSYM SID_IPersistFolder3} + SID_IPersistFolder3 = '{CEF04FDF-FE72-11D2-87A5-00C04F6837CF}'; + {$EXTERNALSYM IID_ITaskbarList} + IID_ITaskbarList: TGUID = ( + D1:$56FDF342; D2:$FD6D; D3:$11D0; D4:($95,$8A,$00,$60,$97,$C9,$A0,$90)); + {$EXTERNALSYM IID_IDropTarget} + IID_IDropTarget: TGUID = ( + D1:$00000122; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46)); + + CLSID_TaskbarList: TGUID = ( + D1:$56FDF344; D2:$FD6D; D3:$11D0; D4:($95,$8A,$00,$60,$97,$C9,$A0,$90)); + + {$EXTERNALSYM SID_IShellFolder2} + SID_IShellFolder2 = '{93F2F68C-1D1B-11D3-A30E-00C04F79ABD1}'; + {$EXTERNALSYM SID_IEnumExtraSearch} + SID_IEnumExtraSearch = '{0E700BE1-9DB6-11D1-A1CE-00004FD75D13}'; + {$EXTERNALSYM CLSID_TaskbarList} + +const + {$EXTERNALSYM SHCOLSTATE_TYPE_STR} + SHCOLSTATE_TYPE_STR = $00000001; + {$EXTERNALSYM SHCOLSTATE_TYPE_INT} + SHCOLSTATE_TYPE_INT = $00000002; + {$EXTERNALSYM SHCOLSTATE_TYPE_DATE} + SHCOLSTATE_TYPE_DATE = $00000003; + {$EXTERNALSYM SHCOLSTATE_TYPEMASK} + SHCOLSTATE_TYPEMASK = $0000000F; + {$EXTERNALSYM SHCOLSTATE_ONBYDEFAULT} + SHCOLSTATE_ONBYDEFAULT = $00000010; // should on by default in details view + {$EXTERNALSYM SHCOLSTATE_TYPE_SLOW} + SHCOLSTATE_TYPE_SLOW = $00000020; // will be slow to compute, do on a background thread + {$EXTERNALSYM SHCOLSTATE_EXTENDED} + SHCOLSTATE_EXTENDED = $00000040; // provided by a handler, not the folder + {$EXTERNALSYM SHCOLSTATE_SECONDARYUI} + SHCOLSTATE_SECONDARYUI = $00000080; // not displayed in context menu, but listed in the "More..." dialog + {$EXTERNALSYM SHCOLSTATE_HIDDEN} + SHCOLSTATE_HIDDEN = $00000100; // not displayed in the UI + +type + tagEXTRASEARCH = packed record + guidSearch: TGUID; + wszFriendlyName: array[0..79] of WideChar; + wszUrl: array[0..2083] of WideChar; + end; + PExtraSearch = ^TExtraSearch; + TExtraSearch = tagEXTRASEARCH; + + {$EXTERNALSYM IEnumExtraSearch} + IEnumExtraSearch = interface(IUnknown) + [SID_IEnumExtraSearch] + function Next(celt: ULONG; out rgElt: tagEXTRASEARCH; out pceltFetched: ULONG): HRESULT; stdcall; + function Skip(celt: ULONG): HRESULT; stdcall; + function Reset: HRESULT; stdcall; + function Clone(out ppEnum: IEnumExtraSearch): HRESULT; stdcall; + end; + + tagSHCOLUMNID = packed record + fmtid: TGUID; + pid: Cardinal; + end; + PSHColumnID = ^TSHColumnID; + TSHColumnID = tagSHCOLUMNID; + + {$EXTERNALSYM IShellFolder2} + IShellFolder2 = interface(IShellFolder) + [SID_IShellFolder2] + function GetDefaultSearchGUID(out pguid: TGUID): HRESULT; stdcall; + function EnumSearches(out ppEnum: IEnumExtraSearch): HRESULT; stdcall; + function GetDefaultColumn (dwRes: DWORD; out pSort: ULONG; out pDisplay: ULONG): HRESULT; stdcall; + function GetDefaultColumnState(iColumn: UINT; out pcsFlags: DWORD): HRESULT; stdcall; + function GetDetailsEx(pidl: PItemIDList; const pscid: TSHCOLUMNID; out pv: OleVariant): HRESULT; stdcall; + function GetDetailsOf(pidl: PItemIDList; iColumn: UINT; out psd: tagSHELLDETAILS): HRESULT; stdcall; + function MapColumnToSCID(iColumn: UINT; out pscid: tagSHCOLUMNID): HRESULT; stdcall; + end; + +type + PERSIST_FOLDER_TARGET_INFO = record + pidlTargetFolder : PItemIdList; // pidl for the folder we want to intiailize + szTargetParsingName : array [0..MAX_PATH-1] of WideChar; // optional parsing name for the target + szNetworkProvider : array [0..MAX_PATH-1] of WideChar; // optional network provider + dwAttributes : DWORD; // optional FILE_ATTRIBUTES_ flags (-1 if not used) + csidl : integer; // optional folder index (SHGetFolderPath()) -1 if not used + end; + TPersistFolderTargetInfo = PERSIST_FOLDER_TARGET_INFO; + PPersistFolderTargetInfo = ^PERSIST_FOLDER_TARGET_INFO; + + {$EXTERNALSYM IPersistFolder3} + IPersistFolder3 = interface(IPersistFolder2) + [SID_IPersistFolder3] + function InitializeEx(pbc : IBindCtx; pidlRoot : PItemIdList; const ppfti : TPersistFolderTargetInfo) : HResult; stdcall; + function GetFolderTargetInfo(var ppfti : TPersistFolderTargetInfo) : HResult; stdcall; + end; + +//------------------------------------------------------------------------------ +// IColumnProvider types +//------------------------------------------------------------------------------ + +const + SID_IColumnProvider = '{E8025004-1C42-11d2-BE2C-00A0C9A83DA1}'; + + {$EXTERNALSYM IID_IColumnProvider} + IID_IColumnProvider: TGUID = ( + D1:$E8025004; D2:$1C42; D3:$11D2; D4:($BE,$2C,$00,$A0,$C9,$A8,$3D,$A1)); + {$EXTERNALSYM CLSID_DocFileColumnProvider} + CLSID_DocFileColumnProvider: TGUID = ( + D1:$24F14F01; D2:$7B1C; D3:$11D1; D4:($83,$8F,$00,$00,$F8,$04,$61,$CF)); + {$EXTERNALSYM CLSID_LinkColumnProvider} + CLSID_LinkColumnProvider: TGUID = ( + D1:$24F14F02; D2:$7B1C; D3:$11D1; D4:($83,$8F,$00,$00,$F8,$04,$61,$CF)); + {$EXTERNALSYM CLSID_FileSysColumnProvider} + CLSID_FileSysColumnProvider: TGUID = ( + D1:$0D2E74C4; D2:$3C34; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71)); + +const + + {$EXTERNALSYM MAX_COLUMN_NAME_LEN} + MAX_COLUMN_NAME_LEN = 80; // Windows Defined + {$EXTERNALSYM MAX_COLUMN_DESC_LEN} + MAX_COLUMN_DESC_LEN = 128; // Windows Defined + +type + PSHColumnInit = ^TSHColumnInit; + TSHColumnInit = packed record + dwFlags: ULONG; + dwReserved: ULONG; + wszFolder: array[0..MAX_PATH] of WideChar; + end; + + TSHColumnInfo = packed record + scid: TSHColumnID; // Unique identifier for column + vt: TVarType; // Variant type + fmt: DWORD; // Alignment of the column, LVCFMT_xxx constants (ListviewColumn Format) + cChars: UINT; // Default Width of Column, in characters + csFlags: DWORD; // Default Column State + wszTitle: array[0..MAX_COLUMN_NAME_LEN-1] of WideChar; // Title of the Column + wszDescription: array[0..MAX_COLUMN_DESC_LEN-1] of WideChar; // Description of the Column + end; + +const + {$EXTERNALSYM SHCDF_UPDATEITEM} + SHCDF_UPDATEITEM = $00000001; // this flag is a hint that the file has changed since the last call to GetItemData + + type + PSHColumnData = ^TSHColumnData; + TSHColumnData = packed record + dwFlags: ULONG; + dwFileAttributes: DWORD; + dwReserved: ULONG; + pwszExt: PWideChar; + wszFile: array[0..MAX_PATH] of WideChar; + end; + + {$EXTERNALSYM IColumnProvider} + IColumnProvider = interface(IUnknown) + [SID_IColumnProvider] + function Initialize(psci: PSHColumnInit): HResult; stdcall; + function GetColumnInfo(dwIndex: Longword; out psci: TSHColumnInfo): HResult; stdcall; + function GetItemData(pscid: PSHColumnID; pscd: PSHColumnData; out pvarData: OLEVariant): HResult; stdcall; + end; +//------------------------------------------------------------------------------ +// SpecialFolder constants +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS} + CSIDL_COMMON_ADMINTOOLS = $002f; // All Users\Start Menu\Programs\Administrative Tools + {$EXTERNALSYM CSIDL_ADMINTOOLS} + CSIDL_ADMINTOOLS = $0030; + {$EXTERNALSYM CSIDL_LOCAL_APPDATA} + CSIDL_LOCAL_APPDATA = $001C; // non roaming, user\Local Settings\Application Data + {$EXTERNALSYM CSIDL_COOKIES} + CSIDL_COOKIES = $0021; + {$EXTERNALSYM CSIDL_COMMON_APPDATA} + CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data + {$EXTERNALSYM CSIDL_COMMON_TEMPLATES} + CSIDL_COMMON_TEMPLATES = $002D; + {$EXTERNALSYM CSIDL_WINDOWS} + CSIDL_WINDOWS = $0024; // GetWindowsDirectory() + {$EXTERNALSYM CSIDL_SYSTEM} + CSIDL_SYSTEM = $0025; // GetSystemDirectory() + {$EXTERNALSYM CSIDL_PROFILE} + CSIDL_PROFILE = $0028; // USERPROFILE + {$EXTERNALSYM CSIDL_PROGRAM_FILES} + CSIDL_PROGRAM_FILES = $0026; // C:\Program Files + {$EXTERNALSYM CSIDL_MYPICTURES} + CSIDL_MYPICTURES = $0027; // My Pictures, new for Win2K + {$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON} + CSIDL_PROGRAM_FILES_COMMON = $002b; // C:\Program Files\Common + {$EXTERNALSYM CSIDL_COMMON_DOCUMENTS} + CSIDL_COMMON_DOCUMENTS = $002E; + +//------------------------------------------------------------------------------ +// AutoComplete definitions +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM CLSID_AutoComplete} + CLSID_AutoComplete: TGUID = ( + D1:$00BB2763; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62)); + {$EXTERNALSYM CLSID_ACLHistory} + CLSID_ACLHistory: TGUID = ( + D1:$00BB2764; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62)); + {$EXTERNALSYM CLSID_ACListISF} + CLSID_ACListISF: TGUID = ( + D1:$03C036F1; D2:$A186; D3:$11D0; D4:($82,$4A,$00,$AA,$00,$5B,$43,$83)); + {$EXTERNALSYM CLSID_ACLMRU} + CLSID_ACLMRU: TGUID = ( + D1:$6756a641; D2:$DE71; D3:$11D0; D4:($83,$1B,$00,$AA,$00,$5B,$43,$83)); + {$EXTERNALSYM CLSID_ACLMulti} + CLSID_ACLMulti: TGUID = ( + D1:$00BB2765; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62)); + + {$EXTERNALSYM IID_IAutoComplete} + IID_IAutoComplete: TGUID = ( + D1:$00BB2762; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62)); + {$EXTERNALSYM IID_IAutoComplete2} + IID_IAutoComplete2: TGUID = ( + D1:$EAC04BC0; D2:$3791; D3:$11D2; D4:($BB,$95,$00,$60,$97,$7B,$46,$4C)); + {$EXTERNALSYM IID_IAutoCompList} + IID_IAutoCompList: TGUID = ( + D1:$00BB2760; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62)); + {$EXTERNALSYM IID_IObjMgr} + IID_IObjMgr: TGUID = ( + D1:$00BB2761; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62)); + {$EXTERNALSYM IID_IACList} + IID_IACList: TGUID = ( + D1:$77A130B0; D2:$94FD; D3:$11D0; D4:($A5,$44,$00,$C0,$4F,$D7,$D0,$62)); + {$EXTERNALSYM IID_IACList2} + IID_IACList2: TGUID = ( + D1:$470141A0; D2:$5186; D3:$11D2; D4:($BB,$B6,$00,$60,$97,$7B,$46,$4C)); + {$EXTERNALSYM IID_ICurrentWorkingDirectory} + IID_ICurrentWorkingDirectory: TGUID = ( + D1:$91956d21; D2:$9276; D3:$11D1; D4:($92,$1A,$00,$60,$97,$DF,$5B,$D4)); + {$EXTERNALSYM IID_IEnumString} + IID_IEnumString: TGUID = ( + D1:$00000101; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46)); + + {$EXTERNALSYM SID_IEmumString} + SID_IEmumString = '{00000101-0000-0000-C000-000000000046}'; + {$EXTERNALSYM SID_IAutoComplete} + SID_IAutoComplete = '{00BB2762-6A77-11D0-A535-00C04FD7D062}'; + {$EXTERNALSYM SID_IAutoComplete2} + SID_IAutoComplete2 = '{EAC04BC0-3791-11D2-BB95-0060977B464C}'; + {$EXTERNALSYM SID_IACList} + SID_IACList = '{77A130B0-94FD-11D0-A544-00C04FD7d062}'; + {$EXTERNALSYM SID_IACList2} + SID_IACList2 = '{470141A0-5186-11D2-BBB6-0060977B464C}'; + {$EXTERNALSYM SID_ICurrentWorkingDirectory} + SID_ICurrentWorkingDirectory = '{91956D21-9276-11D1-921A-006097DF5BD4}'; + {$EXTERNALSYM SID_IObjMgr} + SID_IObjMgr = '{00BB2761-6A77-11D0-A535-00C04FD7D062}'; + + { AutoComplete2 Options } + {$EXTERNALSYM ACO_NONE} + ACO_NONE = $0000; + {$EXTERNALSYM ACO_AUTOSUGGEST} + ACO_AUTOSUGGEST = $0001; + {$EXTERNALSYM ACO_AUTOAPPEND} + ACO_AUTOAPPEND = $0002; + {$EXTERNALSYM ACO_SEARCH} + ACO_SEARCH = $0004; + {$EXTERNALSYM ACO_FILTERPREFIXES} + ACO_FILTERPREFIXES = $0008; + {$EXTERNALSYM ACO_USETAB} + ACO_USETAB = $0010; + {$EXTERNALSYM ACO_UPDOWNKEYDROPSLIST} + ACO_UPDOWNKEYDROPSLIST = $0020; + {$EXTERNALSYM ACO_RTLREADING} + ACO_RTLREADING = $0040; + + // ACList2 Options + {$EXTERNALSYM ACLO_NONE} + ACLO_NONE = $0000; // don't enumerate anything + {$EXTERNALSYM ACLO_CURRENTDIR} + ACLO_CURRENTDIR = $0001; // enumerate current directory + {$EXTERNALSYM ACLO_MYCOMPUTER} + ACLO_MYCOMPUTER = $0002; // enumerate MyComputer + {$EXTERNALSYM ACLO_DESKTOP} + ACLO_DESKTOP = $0004; // enumerate Desktop Folder + {$EXTERNALSYM ACLO_FAVORITES} + ACLO_FAVORITES = $0008; // enumerate Favorites Folder + {$EXTERNALSYM ACLO_FILESYSONLY} + ACLO_FILESYSONLY = $0010; // enumerate only the file system + {$EXTERNALSYM ACLO_FILESYSDIRS} + ACLO_FILESYSDIRS = $0020; // Enumerate only the file system directories, Universal Naming Convention (UNC) shares, and UNC servers. + + + ACLO_ALLOBJECTS = ACLO_CURRENTDIR or ACLO_MYCOMPUTER or ACLO_DESKTOP or ACLO_FAVORITES; + +type + IAutoComplete = interface(IUnknown) + [SID_IAutoComplete] + function Init( hWndEdit: HWND; punkACL: IUnknown; RegKeyPath, QuickComplete: POleStr): HRESULT; stdcall; + function Enabled(fEnable: BOOL): HRESULT; stdcall; + end; + + IAutoComplete2 = interface(IAutoComplete) + ['{EAC04BC0-3791-11d2-BB95-0060977B464C}'] + function SetOptions(dwFlag: DWORD): HRESULT; stdcall; + function GetOptions(out pdwFlag: DWORD): HRESULT; stdcall; + end; + + IACList = interface(IUnknown) + [SID_IACList] + function Expand(pazExpand: LPCWSTR): HRESULT; stdcall; + end; + + IACList2 = interface(IACList) + [SID_IACList2] + function SetOptions(pdwFlag: DWORD): HRESULT; stdcall; + function GetOptions(var pdwFlag: DWORD): HRESULT; stdcall; + end; + + ICurrentWorkingDirectory = interface(IUnknown) + [SID_ICurrentWorkingDirectory] + function GetDirectory(pwzPath: LPCWSTR; cchSize: DWORD): HRESULT; stdcall; + function SetDirectory(pwzPath: LPCWSTR): HRESULT; stdcall; + end; +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// Win Base; Activation Context API +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID} + ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = $00000001; + {$EXTERNALSYM ACTCTX_FLAG_LANGID_VALID} + ACTCTX_FLAG_LANGID_VALID = $00000002; + {$EXTERNALSYM ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID} + ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = $00000004; + {$EXTERNALSYM ACTCTX_FLAG_RESOURCE_NAME_VALID} + ACTCTX_FLAG_RESOURCE_NAME_VALID = $00000008; + {$EXTERNALSYM ACTCTX_FLAG_SET_PROCESS_DEFAULT} + ACTCTX_FLAG_SET_PROCESS_DEFAULT = $00000010; + {$EXTERNALSYM ACTCTX_FLAG_APPLICATION_NAME_VALID} + ACTCTX_FLAG_APPLICATION_NAME_VALID = $00000020; + {$EXTERNALSYM ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF} + ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = $00000040; + {$EXTERNALSYM ACTCTX_FLAG_HMODULE_VALID} + ACTCTX_FLAG_HMODULE_VALID = $00000080; + + + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_INTEL} + PROCESSOR_ARCHITECTURE_INTEL = 0; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_MIPS} + PROCESSOR_ARCHITECTURE_MIPS = 1; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_ALPHA} + PROCESSOR_ARCHITECTURE_ALPHA = 2; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_PPC} + PROCESSOR_ARCHITECTURE_PPC = 3; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_SHX} + PROCESSOR_ARCHITECTURE_SHX = 4; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_ARM} + PROCESSOR_ARCHITECTURE_ARM = 5; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_IA64} + PROCESSOR_ARCHITECTURE_IA64 = 6; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_ALPHA64} + PROCESSOR_ARCHITECTURE_ALPHA64 = 7; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_MSIL} + PROCESSOR_ARCHITECTURE_MSIL = 8; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_AMD64} + PROCESSOR_ARCHITECTURE_AMD64 = 9; + {$EXTERNALSYM PROCESSOR_ARCHITECTURE_IA32_ON_WIN64} + PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10; + + +type + tagACTCTXA = packed record + cbSize: ULONG; + dwFlags: DWORD; + lpSource: LPCSTR; + wProcessorArchitecture: WORD; + wLangId: LANGID; + lpAssemblyDirectory: LPCSTR; + lpResourceName: LPCSTR; + lpApplicationName: LPCSTR; + hModule: HMODULE; + end; + TActCTXA = tagACTCTXA; + PActCTXA = ^TActCTXA; + + tagACTCTXW = packed record + cbSize: ULONG; + dwFlags: DWORD; + lpSource: LPCWSTR; + wProcessorArchitecture: WORD; + wLangId: LANGID; + lpAssemblyDirectory: LPCWSTR; + lpResourceName: LPCWSTR; + lpApplicationName: LPCWSTR; + hModule: HMODULE; + end; + TActCTXW = tagACTCTXW; + PActCTXW = ^TActCTXW; + +//------------------------------------------------------------------------------ +// Property Page records with Activation Context fields +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM PSP_USEFUSIONCONTEXT} + PSP_USEFUSIONCONTEXT = $00004000; + +type + {$EXTERNALSYM _PROPSHEETPAGEA} + _PROPSHEETPAGEA = record + dwSize: Longint; + dwFlags: Longint; + hInstance: THandle; + case Integer of + 0: ( + pszTemplate: PAnsiChar); + 1: ( + pResource: Pointer; + case Integer of + 0: ( + hIcon: THandle); + 1: ( + pszIcon: PAnsiChar; + pszTitle: PAnsiChar; + pfnDlgProc: Pointer; + lParam: Longint; + pfnCallback: TFNPSPCallbackA; + pcRefParent: PInteger; + pszHeaderTitle: PAnsiChar; // this is displayed in the header + pszHeaderSubTitle: PAnsiChar; + hActCtx: THandle) + ); // + + end; + {$EXTERNALSYM _PROPSHEETPAGEW} + _PROPSHEETPAGEW = record + dwSize: Longint; + dwFlags: Longint; + hInstance: THandle; + case Integer of + 0: ( + pszTemplate: PWideChar); + 1: ( + pResource: Pointer; + case Integer of + 0: ( + hIcon: THandle); + 1: ( + pszIcon: PWideChar; + pszTitle: PWideChar; + pfnDlgProc: Pointer; + lParam: Longint; + pfnCallback: TFNPSPCallbackW; + pcRefParent: PInteger; + pszHeaderTitle: PWideChar; // this is displayed in the header + pszHeaderSubTitle: PWideChar; + hActCtx: THandle)); // + end; + {$EXTERNALSYM _PROPSHEETPAGE} + _PROPSHEETPAGE = _PROPSHEETPAGEA; + TPropSheetPageA = _PROPSHEETPAGEA; + TPropSheetPageW = _PROPSHEETPAGEW; + TPropSheetPage = TPropSheetPageA; + {$EXTERNALSYM PROPSHEETPAGEA} + PROPSHEETPAGEA = _PROPSHEETPAGEA; + {$EXTERNALSYM PROPSHEETPAGEW} + PROPSHEETPAGEW = _PROPSHEETPAGEW; + {$EXTERNALSYM PROPSHEETPAGE} + PROPSHEETPAGE = PROPSHEETPAGEA; + + TThreadProc = function(lpParameter: Pointer): DWORD; stdcall; + +//------------------------------------------------------------------------------ +// WebBrowser Interfaces +//------------------------------------------------------------------------------ + +const + DIID_DWebBrowserEvents: TGUID = '{EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B}'; + DIID_DWebBrowserEvents2: TGUID = '{34A715A0-6587-11D0-924A-0020AFC7AC4D}'; + CLSID_ToolbarExtButtons: TGUID = '{2CE4B5D8-A28F-11D2-86C5-00C04F8EEA99}'; + +// *********************************************************************// +// Declaration of Enumerations defined in Type Library +// *********************************************************************// +// CommandStateChangeConstants constants +type + {$IFNDEF COMPILER_5_UP} + TOleEnum = type Integer; + {$ENDIF} + + CommandStateChangeConstants = TOleEnum; +const + {$EXTERNALSYM CSC_UPDATECOMMANDS} + CSC_UPDATECOMMANDS = $FFFFFFFF; + {$EXTERNALSYM CSC_NAVIGATEFORWARD} + CSC_NAVIGATEFORWARD = $00000001; + {$EXTERNALSYM CSC_NAVIGATEBACK} + CSC_NAVIGATEBACK = $00000002; + +// OLECMDID constants +type + OLECMDID = TOleEnum; +const + {$EXTERNALSYM OLECMDID_OPEN} + OLECMDID_OPEN = $00000001; + {$EXTERNALSYM OLECMDID_NEW} + OLECMDID_NEW = $00000002; + {$EXTERNALSYM OLECMDID_SAVE} + OLECMDID_SAVE = $00000003; + {$EXTERNALSYM OLECMDID_SAVEAS} + OLECMDID_SAVEAS = $00000004; + {$EXTERNALSYM OLECMDID_SAVECOPYAS} + OLECMDID_SAVECOPYAS = $00000005; + {$EXTERNALSYM OLECMDID_PRINT} + OLECMDID_PRINT = $00000006; + {$EXTERNALSYM OLECMDID_PRINTPREVIEW} + OLECMDID_PRINTPREVIEW = $00000007; + {$EXTERNALSYM OLECMDID_PAGESETUP} + OLECMDID_PAGESETUP = $00000008; + {$EXTERNALSYM OLECMDID_SPELL} + OLECMDID_SPELL = $00000009; + {$EXTERNALSYM OLECMDID_PROPERTIES} + OLECMDID_PROPERTIES = $0000000A; + {$EXTERNALSYM OLECMDID_CUT} + OLECMDID_CUT = $0000000B; + {$EXTERNALSYM OLECMDID_COPY} + OLECMDID_COPY = $0000000C; + {$EXTERNALSYM OLECMDID_PASTE} + OLECMDID_PASTE = $0000000D; + {$EXTERNALSYM OLECMDID_PASTESPECIAL} + OLECMDID_PASTESPECIAL = $0000000E; + {$EXTERNALSYM OLECMDID_UNDO} + OLECMDID_UNDO = $0000000F; + {$EXTERNALSYM OLECMDID_REDO} + OLECMDID_REDO = $00000010; + {$EXTERNALSYM OLECMDID_SELECTALL} + OLECMDID_SELECTALL = $00000011; + {$EXTERNALSYM OLECMDID_CLEARSELECTION} + OLECMDID_CLEARSELECTION = $00000012; + {$EXTERNALSYM OLECMDID_ZOOM} + OLECMDID_ZOOM = $00000013; + {$EXTERNALSYM OLECMDID_GETZOOMRANGE} + OLECMDID_GETZOOMRANGE = $00000014; + {$EXTERNALSYM OLECMDID_UPDATECOMMANDS} + OLECMDID_UPDATECOMMANDS = $00000015; + {$EXTERNALSYM OLECMDID_REFRESH} + OLECMDID_REFRESH = $00000016; + {$EXTERNALSYM OLECMDID_STOP} + OLECMDID_STOP = $00000017; + {$EXTERNALSYM OLECMDID_HIDETOOLBARS} + OLECMDID_HIDETOOLBARS = $00000018; + {$EXTERNALSYM OLECMDID_SETPROGRESSMAX} + OLECMDID_SETPROGRESSMAX = $00000019; + {$EXTERNALSYM OLECMDID_SETPROGRESSPOS} + OLECMDID_SETPROGRESSPOS = $0000001A; + {$EXTERNALSYM OLECMDID_SETPROGRESSTEXT} + OLECMDID_SETPROGRESSTEXT = $0000001B; + {$EXTERNALSYM OLECMDID_SETTITLE} + OLECMDID_SETTITLE = $0000001C; + {$EXTERNALSYM OLECMDID_SETDOWNLOADSTATE} + OLECMDID_SETDOWNLOADSTATE = $0000001D; + {$EXTERNALSYM OLECMDID_STOPDOWNLOAD} + OLECMDID_STOPDOWNLOAD = $0000001E; + {$EXTERNALSYM OLECMDID_ONTOOLBARACTIVATED} + OLECMDID_ONTOOLBARACTIVATED = $0000001F; + {$EXTERNALSYM OLECMDID_FIND} + OLECMDID_FIND = $00000020; + {$EXTERNALSYM OLECMDID_DELETE} + OLECMDID_DELETE = $00000021; + {$EXTERNALSYM OLECMDID_HTTPEQUIV} + OLECMDID_HTTPEQUIV = $00000022; + {$EXTERNALSYM OLECMDID_HTTPEQUIV_DONE} + OLECMDID_HTTPEQUIV_DONE = $00000023; + {$EXTERNALSYM OLECMDID_ENABLE_INTERACTION} + OLECMDID_ENABLE_INTERACTION = $00000024; + {$EXTERNALSYM OLECMDID_ONUNLOAD} + OLECMDID_ONUNLOAD = $00000025; + {$EXTERNALSYM OLECMDID_PROPERTYBAG2} + OLECMDID_PROPERTYBAG2 = $00000026; + {$EXTERNALSYM OLECMDID_PREREFRESH} + OLECMDID_PREREFRESH = $00000027; + {$EXTERNALSYM OLECMDID_SHOWSCRIPTERROR} + OLECMDID_SHOWSCRIPTERROR = $00000028; + {$EXTERNALSYM OLECMDID_SHOWMESSAGE} + OLECMDID_SHOWMESSAGE = $00000029; + {$EXTERNALSYM OLECMDID_SHOWFIND} + OLECMDID_SHOWFIND = $0000002A; + {$EXTERNALSYM OLECMDID_SHOWPAGESETUP} + OLECMDID_SHOWPAGESETUP = $0000002B; + {$EXTERNALSYM OLECMDID_SHOWPRINT} + OLECMDID_SHOWPRINT = $0000002C; + {$EXTERNALSYM OLECMDID_CLOSE} + OLECMDID_CLOSE = $0000002D; + {$EXTERNALSYM OLECMDID_ALLOWUILESSSAVEAS} + OLECMDID_ALLOWUILESSSAVEAS = $0000002E; + {$EXTERNALSYM OLECMDID_DONTDOWNLOADCSS} + OLECMDID_DONTDOWNLOADCSS = $0000002F; + +// OLECMDF constants +type + OLECMDF = TOleEnum; +const + {$EXTERNALSYM OLECMDF_SUPPORTED} + OLECMDF_SUPPORTED = $00000001; + {$EXTERNALSYM OLECMDF_ENABLED} + OLECMDF_ENABLED = $00000002; + {$EXTERNALSYM OLECMDF_LATCHED} + OLECMDF_LATCHED = $00000004; + {$EXTERNALSYM OLECMDF_NINCHED} + OLECMDF_NINCHED = $00000008; + {$EXTERNALSYM OLECMDF_INVISIBLE} + OLECMDF_INVISIBLE = $00000010; + {$EXTERNALSYM OLECMDF_DEFHIDEONCTXTMENU} + OLECMDF_DEFHIDEONCTXTMENU = $00000020; + +// OLECMDEXECOPT constants +type + OLECMDEXECOPT = TOleEnum; +const + {$EXTERNALSYM OLECMDEXECOPT_DODEFAULT} + OLECMDEXECOPT_DODEFAULT = $00000000; + {$EXTERNALSYM OLECMDEXECOPT_PROMPTUSER} + OLECMDEXECOPT_PROMPTUSER = $00000001; + {$EXTERNALSYM OLECMDEXECOPT_DONTPROMPTUSER} + OLECMDEXECOPT_DONTPROMPTUSER = $00000002; + {$EXTERNALSYM OLECMDEXECOPT_SHOWHELP} + OLECMDEXECOPT_SHOWHELP = $00000003; + +// tagREADYSTATE constants +type + tagREADYSTATE = TOleEnum; +const + {$EXTERNALSYM READYSTATE_UNINITIALIZED} + READYSTATE_UNINITIALIZED = $00000000; + {$EXTERNALSYM READYSTATE_LOADING} + READYSTATE_LOADING = $00000001; + {$EXTERNALSYM READYSTATE_LOADED} + READYSTATE_LOADED = $00000002; + {$EXTERNALSYM READYSTATE_INTERACTIVE} + READYSTATE_INTERACTIVE = $00000003; + {$EXTERNALSYM READYSTATE_COMPLETE} + READYSTATE_COMPLETE = $00000004; + +// ShellWindowTypeConstants constants +type + ShellWindowTypeConstants = TOleEnum; +const + {$EXTERNALSYM SWC_EXPLORER} + SWC_EXPLORER = $00000000; + {$EXTERNALSYM SWC_BROWSER} + SWC_BROWSER = $00000001; + {$EXTERNALSYM SWC_3RDPARTY} + SWC_3RDPARTY = $00000002; + {$EXTERNALSYM SWC_CALLBACK} + SWC_CALLBACK = $00000004; + +// ShellWindowFindWindowOptions constants +type + ShellWindowFindWindowOptions = TOleEnum; +const + {$EXTERNALSYM SWFO_NEEDDISPATCH} + SWFO_NEEDDISPATCH = $00000001; + {$EXTERNALSYM SWFO_INCLUDEPENDING} + SWFO_INCLUDEPENDING = $00000002; + {$EXTERNALSYM SWFO_COOKIEPASSED} + SWFO_COOKIEPASSED = $00000004; + +type + RefreshConstants = TOleEnum; +const + {$EXTERNALSYM REFRESH_NORMAL} + REFRESH_NORMAL = 0; + {$EXTERNALSYM REFRESH_IFEXPIRED} + REFRESH_IFEXPIRED = 1; + {$EXTERNALSYM REFRESH_CONTINUE} + REFRESH_CONTINUE = 2; + {$EXTERNALSYM REFRESH_COMPLETELY} + REFRESH_COMPLETELY = 3; + +type + BrowserNavConstants = TOleEnum; +const + {$EXTERNALSYM navOpenInNewWindow} + navOpenInNewWindow = $00000001; + {$EXTERNALSYM navNoHistory} + navNoHistory = $00000002; + {$EXTERNALSYM navNoReadFromCache} + navNoReadFromCache = $00000004; + {$EXTERNALSYM navNoWriteToCache} + navNoWriteToCache = $00000008; + {$EXTERNALSYM navAllowAutosearch} + navAllowAutosearch = $00000010; + {$EXTERNALSYM navBrowserBar} + navBrowserBar = $00000020; + +type + +// *********************************************************************// +// Forward declaration of types defined in TypeLibrary +// *********************************************************************// + IWebBrowser = interface; + IWebBrowser2 = interface; + +// *********************************************************************// +// Declaration of structures, unions and aliases. +// *********************************************************************// + POleVariant1 = ^OleVariant; {*} + +// *********************************************************************// +// Interface: IWebBrowser +// *********************************************************************// + IWebBrowser = interface(IDispatch) + ['{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}'] + procedure GoBack; safecall; + procedure GoForward; safecall; + procedure GoHome; safecall; + procedure GoSearch; safecall; + procedure Navigate(const URL: WideString; var Flags: OleVariant; + var TargetFrameName: OleVariant; var PostData: OleVariant; + var Headers: OleVariant); safecall; + procedure Refresh; safecall; + procedure Refresh2(var Level: OleVariant); safecall; + procedure Stop; safecall; + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Get_Container: IDispatch; safecall; + function Get_Document: IDispatch; safecall; + function Get_TopLevelContainer: WordBool; safecall; + function Get_Type_: WideString; safecall; + function Get_Left: Integer; safecall; + procedure Set_Left(pl: Integer); safecall; + function Get_Top: Integer; safecall; + procedure Set_Top(pl: Integer); safecall; + function Get_Width: Integer; safecall; + procedure Set_Width(pl: Integer); safecall; + function Get_Height: Integer; safecall; + procedure Set_Height(pl: Integer); safecall; + function Get_LocationName: WideString; safecall; + function Get_LocationURL: WideString; safecall; + function Get_Busy: WordBool; safecall; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + property Container: IDispatch read Get_Container; + property Document: IDispatch read Get_Document; + property TopLevelContainer: WordBool read Get_TopLevelContainer; + property Type_: WideString read Get_Type_; + property Left: Integer read Get_Left write Set_Left; + property Top: Integer read Get_Top write Set_Top; + property Width: Integer read Get_Width write Set_Width; + property Height: Integer read Get_Height write Set_Height; + property LocationName: WideString read Get_LocationName; + property LocationURL: WideString read Get_LocationURL; + property Busy: WordBool read Get_Busy; + end; + +// *********************************************************************// +// Interface: IWebBrowserApp +// *********************************************************************// + IWebBrowserApp = interface(IWebBrowser) + ['{0002DF05-0000-0000-C000-000000000046}'] + procedure Quit; safecall; + procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT); safecall; + procedure PutProperty(const Property_: WideString; vtValue: OleVariant); safecall; + function GetProperty(const Property_: WideString): OleVariant; safecall; + function Get_Name: WideString; safecall; + function Get_HWND: Integer; safecall; + function Get_FullName: WideString; safecall; + function Get_Path: WideString; safecall; + function Get_Visible: WordBool; safecall; + procedure Set_Visible(pBool: WordBool); safecall; + function Get_StatusBar: WordBool; safecall; + procedure Set_StatusBar(pBool: WordBool); safecall; + function Get_StatusText: WideString; safecall; + procedure Set_StatusText(const StatusText: WideString); safecall; + function Get_ToolBar: SYSINT; safecall; + procedure Set_ToolBar(Value: SYSINT); safecall; + function Get_MenuBar: WordBool; safecall; + procedure Set_MenuBar(Value: WordBool); safecall; + function Get_FullScreen: WordBool; safecall; + procedure Set_FullScreen(pbFullScreen: WordBool); safecall; + property Name: WideString read Get_Name; + property HWND: Integer read Get_HWND; + property FullName: WideString read Get_FullName; + property Path: WideString read Get_Path; + property Visible: WordBool read Get_Visible write Set_Visible; + property StatusBar: WordBool read Get_StatusBar write Set_StatusBar; + property StatusText: WideString read Get_StatusText write Set_StatusText; + property ToolBar: SYSINT read Get_ToolBar write Set_ToolBar; + property MenuBar: WordBool read Get_MenuBar write Set_MenuBar; + property FullScreen: WordBool read Get_FullScreen write Set_FullScreen; + end; + +// *********************************************************************// +// Interface: IWebBrowser2 +// *********************************************************************// + IWebBrowser2 = interface(IWebBrowserApp) + ['{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}'] + procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; + var TargetFrameName: OleVariant; var PostData: OleVariant; + var Headers: OleVariant); safecall; + function QueryStatusWB(cmdID: OLECMDID): OLECMDF; safecall; + procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant; + var pvaOut: OleVariant); safecall; + procedure ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant; + var pvarSize: OleVariant); safecall; + function Get_ReadyState: tagREADYSTATE; safecall; + function Get_Offline: WordBool; safecall; + procedure Set_Offline(pbOffline: WordBool); safecall; + function Get_Silent: WordBool; safecall; + procedure Set_Silent(pbSilent: WordBool); safecall; + function Get_RegisterAsBrowser: WordBool; safecall; + procedure Set_RegisterAsBrowser(pbRegister: WordBool); safecall; + function Get_RegisterAsDropTarget: WordBool; safecall; + procedure Set_RegisterAsDropTarget(pbRegister: WordBool); safecall; + function Get_TheaterMode: WordBool; safecall; + procedure Set_TheaterMode(pbRegister: WordBool); safecall; + function Get_AddressBar: WordBool; safecall; + procedure Set_AddressBar(Value: WordBool); safecall; + function Get_Resizable: WordBool; safecall; + procedure Set_Resizable(Value: WordBool); safecall; + property ReadyState: tagREADYSTATE read Get_ReadyState; + property Offline: WordBool read Get_Offline write Set_Offline; + property Silent: WordBool read Get_Silent write Set_Silent; + property RegisterAsBrowser: WordBool read Get_RegisterAsBrowser write Set_RegisterAsBrowser; + property RegisterAsDropTarget: WordBool read Get_RegisterAsDropTarget write Set_RegisterAsDropTarget; + property TheaterMode: WordBool read Get_TheaterMode write Set_TheaterMode; + property AddressBar: WordBool read Get_AddressBar write Set_AddressBar; + property Resizable: WordBool read Get_Resizable write Set_Resizable; + end; + +const + DIID_DShellFolderViewEvents: TGUID = '{62112AA2-EBE4-11CF-A5FB-0020AFE7292D}'; + IID_FolderItemVerbs: TGUID = '{1F8352C0-50B0-11CF-960C-0080C7F4EE85}'; + IID_FolderItemVerb: TGUID = '{08EC3E00-50B0-11CF-960C-0080C7F4EE85}'; + IID_FolderItems: TGUID = '{744129E0-CBE5-11CE-8350-444553540000}'; + IID_FolderItems2: TGUID = '{C94F0AD0-F363-11D2-A327-00C04F8EEC7F}'; + IID_FolderItems3: TGUID = '{EAA7C309-BBEC-49D5-821D-64D966CB667F}'; + IID_Folder: TGUID = '{BBCBDE60-C3FF-11CE-8350-444553540000}'; + IID_Folder2: TGUID = '{F0D2D8EF-3890-11D2-BF8B-00C04FB93661}'; + IID_Folder3: TGUID = '{A7AE5F64-C4D7-4D7F-9307-4D24EE54B841}'; + +type +// *********************************************************************// +// Interface: FolderItemVerb +// GUID: {08EC3E00-50B0-11CF-960C-0080C7F4EE85} +// *********************************************************************// + FolderItemVerb = interface(IDispatch) + ['{08EC3E00-50B0-11CF-960C-0080C7F4EE85}'] + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Get_Name: WideString; safecall; + procedure DoIt; safecall; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + property Name: WideString read Get_Name; + end; + +// *********************************************************************// +// Interface: FolderItemVerbs +// GUID: {1F8352C0-50B0-11CF-960C-0080C7F4EE85} +// *********************************************************************// + FolderItemVerbs = interface(IDispatch) + ['{1F8352C0-50B0-11CF-960C-0080C7F4EE85}'] + function Get_Count: Integer; safecall; + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Item(index: OleVariant): FolderItemVerb; safecall; + function _NewEnum: IUnknown; safecall; + property Count: Integer read Get_Count; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + end; + +// *********************************************************************// +// Interface: FolderItem +// *********************************************************************// + FolderItem = interface(IDispatch) + ['{FAC32C80-CBE4-11CE-8350-444553540000}'] + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Get_Name: WideString; safecall; + procedure Set_Name(const pbs: WideString); safecall; + function Get_Path: WideString; safecall; + function Get_GetLink: IDispatch; safecall; + function Get_GetFolder: IDispatch; safecall; + function Get_IsLink: WordBool; safecall; + function Get_IsFolder: WordBool; safecall; + function Get_IsFileSystem: WordBool; safecall; + function Get_IsBrowsable: WordBool; safecall; + function Get_ModifyDate: TDateTime; safecall; + procedure Set_ModifyDate(pdt: TDateTime); safecall; + function Get_Size: Integer; safecall; + function Get_type_: WideString; safecall; + function Verbs: FolderItemVerbs; safecall; + procedure InvokeVerb(vVerb: OleVariant); safecall; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + property Name: WideString read Get_Name write Set_Name; + property Path: WideString read Get_Path; + property GetLink: IDispatch read Get_GetLink; + property GetFolder: IDispatch read Get_GetFolder; + property IsLink: WordBool read Get_IsLink; + property IsFolder: WordBool read Get_IsFolder; + property IsFileSystem: WordBool read Get_IsFileSystem; + property IsBrowsable: WordBool read Get_IsBrowsable; + property ModifyDate: TDateTime read Get_ModifyDate write Set_ModifyDate; + property Size: Integer read Get_Size; + property type_: WideString read Get_type_; + end; + +// *********************************************************************// +// Interface: FolderItem2 +// *********************************************************************// + FolderItem2 = interface(FolderItem) + ['{EDC817AA-92B8-11D1-B075-00C04FC33AA5}'] + procedure InvokeVerbEx(vVerb: OleVariant; vArgs: OleVariant); safecall; + function ExtendedProperty(const bstrPropName: WideString): OleVariant; safecall; + end; + +// *********************************************************************// +// Interface: FolderItems +// *********************************************************************// + FolderItems = interface(IDispatch) + ['{744129E0-CBE5-11CE-8350-444553540000}'] + function Get_Count: Integer; safecall; + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Item(index: OleVariant): FolderItem; safecall; + function _NewEnum: IUnknown; safecall; + property Count: Integer read Get_Count; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + end; + +// *********************************************************************// +// Interface: FolderItems2 +// *********************************************************************// + FolderItems2 = interface(FolderItems) + ['{C94F0AD0-F363-11D2-A327-00C04F8EEC7F}'] + procedure InvokeVerbEx(vVerb: OleVariant; vArgs: OleVariant); safecall; + end; + + +// *********************************************************************// +// Interface: FolderItems3 +// *********************************************************************// + FolderItems3 = interface(FolderItems2) + ['{EAA7C309-BBEC-49D5-821D-64D966CB667F}'] + procedure Filter(grfFlags: Integer; const bstrFileSpec: WideString); safecall; + function Get_Verbs: FolderItemVerbs; safecall; + property Verbs: FolderItemVerbs read Get_Verbs; + end; + + +// *********************************************************************// +// Interface: Folder +// *********************************************************************// + Folder = interface(IDispatch) + ['{BBCBDE60-C3FF-11CE-8350-444553540000}'] + function Get_Title: WideString; safecall; + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Get_ParentFolder: Folder; safecall; + function Items: FolderItems; safecall; + function ParseName(const bName: WideString): FolderItem; safecall; + procedure NewFolder(const bName: WideString; vOptions: OleVariant); safecall; + procedure MoveHere(vItem: OleVariant; vOptions: OleVariant); safecall; + procedure CopyHere(vItem: OleVariant; vOptions: OleVariant); safecall; + function GetDetailsOf(vItem: OleVariant; iColumn: SYSINT): WideString; safecall; + property Title: WideString read Get_Title; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + property ParentFolder: Folder read Get_ParentFolder; + end; + +// *********************************************************************// +// Interface: Folder2 +// *********************************************************************// + Folder2 = interface(Folder) + ['{F0D2D8EF-3890-11D2-BF8B-00C04FB93661}'] + function Get_Self: FolderItem; safecall; + function Get_OfflineStatus: Integer; safecall; + procedure Synchronize; safecall; + function Get_HaveToShowWebViewBarricade: WordBool; safecall; + procedure DismissedWebViewBarricade; safecall; + property Self: FolderItem read Get_Self; + property OfflineStatus: Integer read Get_OfflineStatus; + property HaveToShowWebViewBarricade: WordBool read Get_HaveToShowWebViewBarricade; + end; + +// *********************************************************************// +// Interface: Folder3 +// *********************************************************************// + Folder3 = interface(Folder2) + ['{A7AE5F64-C4D7-4D7F-9307-4D24EE54B841}'] + function Get_ShowWebViewBarricade: WordBool; safecall; + procedure Set_ShowWebViewBarricade(pbShowWebViewBarricade: WordBool); safecall; + property ShowWebViewBarricade: WordBool read Get_ShowWebViewBarricade write Set_ShowWebViewBarricade; + end; + +// *********************************************************************// +// Interface: IShellFolderViewDual +// *********************************************************************// + IShellFolderViewDual = interface(IDispatch) + ['{E7A1AF80-4D96-11CF-960C-0080C7F4EE85}'] + function Get_Application: IDispatch; safecall; + function Get_Parent: IDispatch; safecall; + function Get_Folder: Folder; safecall; + function SelectedItems: FolderItems; safecall; + function Get_FocusedItem: FolderItem; safecall; + procedure SelectItem(var pvfi: OleVariant; dwFlags: SYSINT); safecall; + function PopupItemMenu(const pfi: FolderItem; vx: OleVariant; vy: OleVariant): WideString; safecall; + function Get_Script: IDispatch; safecall; + function Get_ViewOptions: Integer; safecall; + property Application: IDispatch read Get_Application; + property Parent: IDispatch read Get_Parent; + property Folder: Folder read Get_Folder; + property FocusedItem: FolderItem read Get_FocusedItem; + property Script: IDispatch read Get_Script; + property ViewOptions: Integer read Get_ViewOptions; + end; + +{$IFDEF CPPB_6_UP} +// *********************************************************************// +// DispIntf: DShellFolderViewEvents +// *********************************************************************// + DShellFolderViewEvents = dispinterface + ['{62112AA2-EBE4-11CF-A5FB-0020AFE7292D}'] + procedure SelectionChanged; dispid 200; + procedure EnumDone; dispid 201; + function VerbInvoked: WordBool; dispid 202; + function DefaultVerbInvoked: WordBool; dispid 203; + function BeginDrag: WordBool; dispid 204; + end; +{$ENDIF CPPB_6_UP} + +//------------------------------------------------------------------------------ +// SHCreateShellFolderViewEx +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM FWF_SHOWSELALWAYS} + FWF_SHOWSELALWAYS = $2000; + {$EXTERNALSYM FWF_NOVISIBLE} + FWF_NOVISIBLE = $4000; + {$EXTERNALSYM FWF_SINGLECLICKACTIVATE} + FWF_SINGLECLICKACTIVATE = $8000; + {$EXTERNALSYM FWF_NOWEBVIEW} + FWF_NOWEBVIEW = $10000; + {$EXTERNALSYM FWF_HIDEFILENAMES} + FWF_HIDEFILENAMES = $20000; + {$EXTERNALSYM FWF_CHECKSELECT} + FWF_CHECKSELECT = $40000; + + + {$EXTERNALSYM SVUIA_DEACTIVATE} + SVUIA_DEACTIVATE = $0000; + {$EXTERNALSYM SVUIA_ACTIVATE_NOFOCUS} + SVUIA_ACTIVATE_NOFOCUS = $0001; + {$EXTERNALSYM SVUIA_ACTIVATE_FOCUS} + SVUIA_ACTIVATE_FOCUS = $0002; + {$EXTERNALSYM SVUIA_INPLACEACTIVATE} + SVUIA_INPLACEACTIVATE = $0003; + + {$EXTERNALSYM FVM_ICON} + FVM_ICON = 1; + {$EXTERNALSYM FVM_SMALLICON} + FVM_SMALLICON = 2; + {$EXTERNALSYM FVM_LIST} + FVM_LIST = 3; + {$EXTERNALSYM FVM_DETAILS} + FVM_DETAILS = 4; + {$EXTERNALSYM FVM_THUMBNAIL} + FVM_THUMBNAIL = 5; + {$EXTERNALSYM FVM_TILE} + FVM_TILE = 6; + {$EXTERNALSYM FVM_THUMBSTRIP} + FVM_THUMBSTRIP= 7; + {$EXTERNALSYM FVM_LAST} + FVM_LAST = 7; + + +// For the SFVM_MERGEMENU message +const + {$EXTERNALSYM QCMINFO_PLACE_BEFORE} + QCMINFO_PLACE_BEFORE = 0; + {$EXTERNALSYM QCMINFO_PLACE_AFTER} + QCMINFO_PLACE_AFTER = 1; + +type + QCMINFO_IDMAP_PLACEMENT = record + id : UINT; + fFlags : UINT; + end; + PQCMINFO_IDMAP_PLACEMENT = ^QCMINFO_IDMAP_PLACEMENT; + TQCMInfoIDMapPlacement = QCMINFO_IDMAP_PLACEMENT; + PQCMInfoIDMapPlacement = PQCMINFO_IDMAP_PLACEMENT; + + QCMINFO_IDMAP = record + nMaxIDs : UINT; + pIdList : array [0..0] of QCMINFO_IDMAP_PLACEMENT; + end; + + PQCMINFO_IDMAP = ^QCMINFO_IDMAP; + QCMINFO = record + menu : HMENU; // in + indexMenu : UINT; // in + idCmdFirst : UINT; // in/out + idCmdLast : UINT; // in + pIDMap : PQCMINFO_IDMAP; // in / unused + end; + PQCMINFO = ^QCMINFO; + TQCMInfo = QCMINFO; + + + // For the SFVM_GETBUTTONINFO message +const + {$EXTERNALSYM TBIF_APPEND} + TBIF_APPEND = 0; + {$EXTERNALSYM TBIF_PREPEND} + TBIF_PREPEND = 1; + {$EXTERNALSYM TBIF_REPLACE} + TBIF_REPLACE = 2; + {$EXTERNALSYM TBIF_DEFAULT} + TBIF_DEFAULT = 0; + {$EXTERNALSYM TBIF_INTERNETBAR} + TBIF_INTERNETBAR = $00010000; + {$EXTERNALSYM TBIF_STANDARDTOOLBAR} + TBIF_STANDARDTOOLBAR = $00020000; + {$EXTERNALSYM TBIF_NOTOOLBAR} + TBIF_NOTOOLBAR = $00030000; + +type + TBINFO = record + cbuttons : UINT; // out + uFlags : UINT; // out (one of TBIF_ flags) + end; + TTBInfo = TBINFO; + PTBInfo = ^TBINFO; + +//------------------------------------------------------------------------------ +// Catagory Interfaces +//------------------------------------------------------------------------------ + +const + {$EXTERNALSYM SID_ICategorizer} + SID_ICategorizer = '{A3B14589-9174-49A8-89A3-06A1AE2B9BA7}'; + + {$EXTERNALSYM SID_ICategoryProvider} + SID_ICategoryProvider = '{9AF64809-5864-4C26-A720-C1F78C086EE3}'; + + {$EXTERNALSYM IID_ICategorizer} + IID_ICategorizer: TGUID = ( + D1:$A3B14589; D2:$9174; D3:$49A8; D4:($89,$A3,$06,$A1,$AE,$2B,$9B,$A7)); + {$EXTERNALSYM IID_ICategoryProvider} + IID_ICategoryProvider: TGUID = ( + D1:$9AF64809; D2:$5864; D3:$4C26; D4:($A7,$20,$C1,$F7,$8C,$08,$6E,$E3)); + {$EXTERNALSYM CLSID_DefCategoryProvider} + + CLSID_DefCategoryProvider: TGUID = ( + D1:$B2F2E083; D2:$84FE; D3:$4a7e; D4:($80,$C3,$4B,$50,$D1,$0D,$64,$6E)); + {$EXTERNALSYM CLSID_AlphabeticalCategorizer} + CLSID_AlphabeticalCategorizer: TGUID = ( + D1:$3C2654C6; D2:$7372; D3:$4F6B; D4:($B3,$10,$55,$D6,$12,$8F,$49,$D2)); + {$EXTERNALSYM CLSID_DriveSizeCategorizer} + CLSID_DriveSizeCategorizer: TGUID = ( + D1:$94357B53; D2:$CA29; D3:$4B78; D4:($83,$AE,$E8,$FE,$74,$09,$13,$4F)); + {$EXTERNALSYM CLSID_DriveTypeCategorizer} + CLSID_DriveTypeCategorizer: TGUID = ( + D1:$B0A8F3CF; D2:$4333; D3:$4BAB; D4:($88,$73,$1C,$CB,$1C,$AD,$A4,$8B)); + {$EXTERNALSYM CLSID_FreeSpaceCategorizer} + CLSID_FreeSpaceCategorizer: TGUID = ( + D1:$B5607793; D2:$24AC; D3:$44C7; D4:($82,$E2,$83,$17,$26,$AA,$6C,$B7)); + {$EXTERNALSYM CLSID_SizeCategorizer} + CLSID_SizeCategorizer: TGUID = ( + D1:$55D7B852; D2:$F6D1; D3:$42F2; D4:($AA,$75,$87,$28,$A1,$B2,$D2,$64)); + {$EXTERNALSYM CLSID_TimeCategorizer} + CLSID_TimeCategorizer: TGUID = ( + D1:$3BB4118F; D2:$DDFD; D3:$4D30; D4:($A3,$48,$9F,$B5,$D6,$BF,$1A,$FE)); + {$EXTERNALSYM CLSID_MergedCategorizer} + CLSID_MergedCategorizer: TGUID = ( + D1:$8E827C11; D2:$33E7; D3:$4BC1; D4:($B2,$42,$8C,$D9,$A1,$C2,$B3,$04)); + + {$EXTERNALSYM CATINFO_NORMAL} + CATINFO_NORMAL = $0000; + {$EXTERNALSYM CATINFO_COLLAPSED} + CATINFO_COLLAPSED = $00000001; + {$EXTERNALSYM CATINFO_HIDDEN} + CATINFO_HIDDEN = $00000002; + + {$EXTERNALSYM CATSORT_DEFAULT} + CATSORT_DEFAULT = $00000000; + {$EXTERNALSYM CATSORT_NAME} + CATSORT_NAME = $00000001; + +const + // These are the possibilites for the TSHColumnInfo structure + {$EXTERNALSYM FMTID_Storage} + FMTID_Storage: TGUID = ( + D1:$B725F130; D2:$47EF; D3:$101A; D4:($A5,$F1,$02,$60,$8C,$9E,$EB,$AC)); + {$EXTERNALSYM PID_STG_NAME} + PID_STG_NAME = 10; // The object's display name VT_BSTR + {$EXTERNALSYM PID_STG_STORAGETYPE} + PID_STG_STORAGETYPE = 4; // The object's type VT_BSTR + {$EXTERNALSYM PID_STG_SIZE} + PID_STG_SIZE = 12; // The object's size VT_BSTR + {$EXTERNALSYM PID_STG_WRITETIME} + PID_STG_WRITETIME = 14; // The object's modified attribute VT_BSTR + {$EXTERNALSYM PID_STG_ATTRIBUTES} + PID_STG_ATTRIBUTES = 13; // The object's attributes VT_BSTR + + {$EXTERNALSYM FMTID_ShellDetails} + FMTID_ShellDetails: TGUID = ( + D1:$28636AA6; D2:$953D; D3:$11D2; D4:($B5,$D6,$00,$C0,$4F,$D9,$18,$D0)); + {$EXTERNALSYM PID_FINDDATA} + PID_FINDDATA = 0; // A WIN32_FIND_DATAW structure. VT_ARRAY | VT_UI1 + {$EXTERNALSYM PID_NETRESOURCE} + PID_NETRESOURCE = 1; // A NETRESOURCE structure. VT_ARRAY | VT_UI1 + {$EXTERNALSYM PID_DESCRIPTIONID} + PID_DESCRIPTIONID = 2; // A SHDESCRIPTIONID structure. VT_ARRAY | VT_UI1 + + {$EXTERNALSYM FMTID_Displaced} + FMTID_Displaced: TGUID = ( + D1:$9B174B33; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71)); + {$EXTERNALSYM PID_DISPLACED_FROM} + PID_DISPLACED_FROM = 2; + {$EXTERNALSYM PID_DISPLACED_DATE} + PID_DISPLACED_DATE = 3; + + {$EXTERNALSYM FMTID_Misc} + FMTID_Misc: TGUID = ( + D1:$9B174B35; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71)); + {$EXTERNALSYM PID_MISC_STATUS} + PID_MISC_STATUS = 2; // The synchronization status. + {$EXTERNALSYM PID_MISC_ACCESSCOUNT} + PID_MISC_ACCESSCOUNT = 3; // Not used. + {$EXTERNALSYM PID_MISC_OWNER} + PID_MISC_OWNER = 4; // Ownership of the file (for the NTFS file system). + + {$EXTERNALSYM FMTID_Volume} + FMTID_Volume: TGUID = ( + D1:$49691C90; D2:$7E17; D3:$101A; D4:($A9,$1C,$08,$00,$2B,$2E,$CD,$A9)); + {$EXTERNALSYM PID_VOLUME_FREE} + PID_VOLUME_FREE = 2; // The amount of free space. + + {$EXTERNALSYM FMTID_Query} + FMTID_Query: TGUID = ( + D1:$49691C90; D2:$7E17; D3:$101A; D4:($A9,$1C,$08,$00,$2B,$2E,$CD,$A9)); + {$EXTERNALSYM PID_QUERY_RANK} + PID_QUERY_RANK = 2; // The rank of the file. + + {$EXTERNALSYM FMTID_SummaryInformation} + FMTID_SummaryInformation: TGUID = ( + D1:$F29F85E0; D2:$4FF9; D3:$1068; D4:($AB,$91,$08,$00,$2B,$27,$B3,$D9)); + {$EXTERNALSYM PIDSI_TITLE} + PIDSI_TITLE = 2; // VT_LPSTR + {$EXTERNALSYM PIDSI_SUBJECT} + PIDSI_SUBJECT = 3; // VT_LPSTR + {$EXTERNALSYM PIDSI_AUTHOR} + PIDSI_AUTHOR = 4; // VT_LPSTR + {$EXTERNALSYM PIDSI_KEYWORDS} + PIDSI_KEYWORDS = 5; // VT_LPSTR + {$EXTERNALSYM PIDSI_COMMENTS} + PIDSI_COMMENTS = 6; // VT_LPSTR + {$EXTERNALSYM PIDSI_TEMPLATE} + PIDSI_TEMPLATE = 7; // VT_LPSTR + {$EXTERNALSYM PIDSI_LASTAUTHOR} + PIDSI_LASTAUTHOR = 8; // VT_LPSTR + {$EXTERNALSYM PIDSI_REVNUMBER} + PIDSI_REVNUMBER = 9; // VT_LPSTR + {$EXTERNALSYM PIDSI_EDITTIME} + PIDSI_EDITTIME = 10; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_LASTPRINTED} + PIDSI_LASTPRINTED = 11; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_CREATE_DTM} + PIDSI_CREATE_DTM = 12; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_LASTSAVE_DTM} + PIDSI_LASTSAVE_DTM = 13; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_PAGECOUNT} + PIDSI_PAGECOUNT = 14; // VT_I4 + {$EXTERNALSYM PIDSI_WORDCOUNT} + PIDSI_WORDCOUNT = 15; // VT_I4 + {$EXTERNALSYM PIDSI_CHARCOUNT} + PIDSI_CHARCOUNT = 16; // VT_I4 + {$EXTERNALSYM PIDSI_THUMBNAIL} + PIDSI_THUMBNAIL = 17; // VT_CF + {$EXTERNALSYM PIDSI_APPNAME} + PIDSI_APPNAME = 18; // VT_LPSTR + {$EXTERNALSYM PIDSI_DOC_SECURITY} + PIDSI_DOC_SECURITY = 19; // VT_I4 + +type + TCategoryInfo = packed record + CategoryInfo: DWORD; // a CATINFO_XXXX constant + wscName: array[0..259] of WideChar; + end; + + ICategorizer = interface(IUnknown) + [SID_ICategorizer] + function GetDescription(pszDesc: LPWSTR; cch: UINT): HRESULT; stdcall; + function GetCategory(cidl: UINT; apidl: PItemIDList; rgCategoryIds: TWordArray): HRESULT; stdcall; + function GetCategoryInfo(dwCategoryId: DWORD; var pci: TCategoryInfo): HRESULT; stdcall; + function CompareCategory(csfFlags: DWORD; dwCategoryId1, dwCategoryId2: DWORD): HRESULT; stdcall; + end; + + ICategoryProvider = interface(IUnknown) + [SID_ICategoryProvider] + function CanCategorizeOnSCID(var pscid: TSHColumnID): HRESULT; stdcall; + function GetDefaultCategory(const pguid: TGUID; var pscid: TSHColumnID): HRESULT; stdcall; + function GetCategoryForSCID(var pscid: TSHColumnID; var pguid: TGUID): HRESULT; stdcall; + function EnumCategories(out penum: IEnumGUID): HRESULT; stdcall; + function GetCategoryName(const pguid: TGUID; pszName: PWideChar; cch: UINT): HRESULT; stdcall; + function CreateCategory(const pguid: TGUID; const riid: TGUID; out ppv: ICategorizer): HRESULT; stdcall; + end; + + +const + {$EXTERNALSYM IID_IBrowserFrameOptions} + IID_IBrowserFrameOptions : TGUID = ( + D1:$10DF43C8; D2:$1DBE; D3:$11D3; D4:($8B,$34,$00,$60,$97,$DF,$5B,$D4)); + SID_IBrowserFrameOptions = '{10DF43C8-1DBE-11D3-8B34-006097DF5BD4}'; + + // Frame Options + BFO_BROWSER_PERSIST_SETTINGS = $0001; + BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = $0002; + BFO_BOTH_OPTIONS = $0004; + BIF_PREFER_INTERNET_SHORTCUT = $0008; + BFO_BROWSE_NO_IN_NEW_PROCESS = $0010; + BFO_ENABLE_HYPERLINK_TRACKING = $0020; + BFO_USE_IE_OFFLINE_SUPPORT = $0040; + BFO_SUBSTITUE_INTERNET_START_PAGE = $0080; + BFO_USE_IE_LOGOBANDING = $0100; + BFO_ADD_IE_TOCAPTIONBAR = $0200; + BFO_USE_DIALUP_REF = $0400; + BFO_USE_IE_TOOLBAR = $0800; + BFO_NO_PARENT_FOLDER_SUPPORT = $1000; + BFO_NO_REOPEN_NEXT_RESTART = $2000; + BFO_GO_HOME_PAGE = $4000; + BFO_PREFER_IEPROCESS = $8000; + BFO_SHOW_NAVIGATION_CANCELLED = $10000; + BFO_QUERY_ALL = $FFFFFFFF; + +type + TBrowserFrameOption = ( + bfoBrowserPersistSettings, + bfoRenameFolderOptionsToInternet, + bfoBothOptions, + bfoPreferInternetShortcut, + bfoBrowseNoInNewProcess, + bfoEnableHyperlinkTracking, + bfoUseIEOfflineSupport, + bfoSubstituteInternetStartPage, + bfoUseIELogoBanding, + bfoAddIEToCaptionBar, + bfoUseDialupRef, + bfoUseIEToolbar, + bfoNoParentFolderSupport, + bfoNoReopenNextRestart, + bfoGoHomePage, + bfoPreferIEProcess, + bfoShowNavigationCancelled + ); + TBrowserFrameOptions = set of TBrowserFrameOption; + +const + bfoNone = []; + bfoQueryAll = [bfoBrowserPersistSettings..bfoShowNavigationCancelled]; + +type + IBrowserFrameOptions = interface(IUnknown) + [SID_IBrowserFrameOptions] + function GetFrameOptions(dwRequested : DWORD; var pdwResult : DWORD) : HResult; stdcall; + end; + +const + {$EXTERNALSYM IID_IQueryAssociations} + IID_IQueryAssociations: TGUID = ( + D1:$C46CA590; D2:$3C3F; D3:$11D2; D4:($BE, $E6, $00, $00, $F8, $05, $CA, $57)); + {$EXTERNALSYM SID_IQueryAssociations} + SID_IQueryAssociations = '{C46CA590-3C3F-11D2-BEE6-0000F805CA57}'; + + {$EXTERNALSYM CLSID_QueryAssociations} + CLSID_QueryAssociations: TGUID = '{A07034FD-6CAA-4954-AC3f-97A27216F98A}'; + + + {$EXTERNALSYM ASSOCF_INIT_NOREMAPCLSID} + ASSOCF_INIT_NOREMAPCLSID = $00000001; // do not remap clsids to progids + {$EXTERNALSYM ASSOCF_INIT_BYEXENAME} + ASSOCF_INIT_BYEXENAME = $00000002; // executable is being passed in + {$EXTERNALSYM ASSOCF_OPEN_BYEXENAME} + ASSOCF_OPEN_BYEXENAME = $00000002; // executable is being passed in + {$EXTERNALSYM ASSOCF_INIT_DEFAULTTOSTAR} + ASSOCF_INIT_DEFAULTTOSTAR = $00000004; // treat "*" as theBaseClass + {$EXTERNALSYM ASSOCF_INIT_DEFAULTTOFOLDER} + ASSOCF_INIT_DEFAULTTOFOLDER = $00000008; // treat "Folder" as the BaseClass + {$EXTERNALSYM ASSOCF_NOUSERSETTINGS} + ASSOCF_NOUSERSETTINGS = $00000010; // dont use HKCU + {$EXTERNALSYM ASSOCF_NOTRUNCATE} + ASSOCF_NOTRUNCATE = $00000020; // dont truncate the return string + {$EXTERNALSYM ASSOCF_VERIFY} + ASSOCF_VERIFY = $00000040; // verify data is accurate (DISK HITS) + {$EXTERNALSYM ASSOCF_REMAPRUNDLL} + ASSOCF_REMAPRUNDLL = $00000080; // actually gets info about rundlls target if applicable + {$EXTERNALSYM ASSOCF_NOFIXUPS} + ASSOCF_NOFIXUPS = $00000100; // attempt to fix errors if found + {$EXTERNALSYM ASSOCF_IGNOREBASECLASS} + ASSOCF_IGNOREBASECLASS = $00000200; // dont recurse into the baseclass + + {$EXTERNALSYM ASSOCDATA_MSIDESCRIPTOR} + ASSOCDATA_MSIDESCRIPTOR = 1; // Component Descriptor to pass to MSI + {$EXTERNALSYM ASSOCDATA_NOACTIVATEHANDLER} + ASSOCDATA_NOACTIVATEHANDLER = 2; // restrict attempts to activate window + {$EXTERNALSYM ASSOCDATA_QUERYCLASSSTORE} + ASSOCDATA_QUERYCLASSSTORE = 3; // should check with the NT Class Store + {$EXTERNALSYM ASSOCDATA_HASPERUSERASSOC} + ASSOCDATA_HASPERUSERASSOC = 4; // defaults to user specified association + {$EXTERNALSYM ASSOCDATA_EDITFLAGS} + ASSOCDATA_EDITFLAGS = 5; // Edit flags. + {$EXTERNALSYM ASSOCDATA_VALUE} + ASSOCDATA_VALUE = 6; // use pszExtra as the Value name + {$EXTERNALSYM ASSOCDATA_MAX} + ASSOCDATA_MAX = 6; // last item in enum... + + {$EXTERNALSYM ASSOCKEY_SHELLEXECCLASS} + ASSOCKEY_SHELLEXECCLASS = 1; // the key that should be passed to + {$EXTERNALSYM ASSOCKEY_APP} + ASSOCKEY_APP = 2; // the "Application" key for the + {$EXTERNALSYM ASSOCKEY_CLASS} + ASSOCKEY_CLASS = 3; // the progid or class key + {$EXTERNALSYM ASSOCKEY_BASECLASS} + ASSOCKEY_BASECLASS = 4; // the BaseClass key + {$EXTERNALSYM ASSOCKEY_MAX} + ASSOCKEY_MAX = 4; // last item in enum... + + + {$EXTERNALSYM ASSOCSTR_COMMAND} + ASSOCSTR_COMMAND = 1; // shell\verb\command string + {$EXTERNALSYM ASSOCSTR_EXECUTABLE} + ASSOCSTR_EXECUTABLE = 2; // the executable part of command string + {$EXTERNALSYM ASSOCSTR_FRIENDLYDOCNAME} + ASSOCSTR_FRIENDLYDOCNAME = 3; // friendly name of the document type + {$EXTERNALSYM ASSOCSTR_FRIENDLYAPPNAME} + ASSOCSTR_FRIENDLYAPPNAME = 4; // friendly name of executable + {$EXTERNALSYM ASSOCSTR_NOOPEN} + ASSOCSTR_NOOPEN = 5; // noopen value + {$EXTERNALSYM ASSOCSTR_SHELLNEWVALUE} + ASSOCSTR_SHELLNEWVALUE = 6; // query values under the shellnew key + {$EXTERNALSYM ASSOCSTR_DDECOMMAND} + ASSOCSTR_DDECOMMAND = 7; // template for DDE commands + {$EXTERNALSYM ASSOCSTR_DDEIFEXEC} + ASSOCSTR_DDEIFEXEC = 8; // DDECOMMAND to use if just create a process + {$EXTERNALSYM ASSOCSTR_DDEAPPLICATION} + ASSOCSTR_DDEAPPLICATION = 9; // Application name in DDE broadcast + {$EXTERNALSYM ASSOCSTR_DDETOPIC} + ASSOCSTR_DDETOPIC = 10; // Topic Name in DDE broadcast + {$EXTERNALSYM ASSOCSTR_INFOTIP} + ASSOCSTR_INFOTIP = 11; // info tip for an item, or list of + {$EXTERNALSYM ASSOCSTR_QUICKTIP} + ASSOCSTR_QUICKTIP = 13; // same as ASSOCSTR_INFOTIP, except, this + {$EXTERNALSYM ASSOCSTR_TILEINFO} + ASSOCSTR_TILEINFO = 14; // similar to ASSOCSTR_INFOTIP - lists important properties for tileview + {$EXTERNALSYM ASSOCSTR_CONTENTTYPE} + ASSOCSTR_CONTENTTYPE = 15; // MIME Content type + {$EXTERNALSYM ASSOCSTR_DEFAULTICON} + ASSOCSTR_DEFAULTICON = 16; // Default icon source + {$EXTERNALSYM ASSOCSTR_SHELLEXTENSION} + ASSOCSTR_SHELLEXTENSION = 17; // Guid string pointing to the Shellex\Shellextensionhandler Value. + {$EXTERNALSYM ASSOCSTR_MAX} + ASSOCSTR_MAX = 17; // last item in enum... + + + {$EXTERNALSYM ASSOCSTR_DDETOPIC} + ASSOCENUM_NONE = 1; + +type +// {$EXTERNALSYM IQueryAssociations} + IQueryAssociations = interface(IUnknown) + [SID_IQueryAssociations] + function Init(flags: DWORD; pwszAssoc: LPCWSTR; hkProgid: HKEY; hwnd: HWND): HRESULT; stdcall; + function GetString(flags: DWORD; str: DWORD; pwszExtra: LPCWSTR; pwszOut: LPWSTR; var pcchOut: DWORD): HRESULT; stdcall; + function GetKey(flags: DWORD; key: DWORD; pwszExtra: LPCWSTR; var phkeyOut: HKEY): HRESULT; stdcall; + function GetData(flags: DWORD; data: DWORD; pwszExtra: LPCWSTR; out pvOut: Pointer; + var pcbOut: DWORD): HRESULT; stdcall; + function GetEnum(flags: DWORD; assocenum: DWORD; pszExtra: LPCWSTR; const riid: TGUID; out ppvOut: Pointer): HRESULT; stdcall; + end; + + +{$IFNDEF COMPILER_10_UP} +type + {$EXTERNALSYM PStartupInfoW} + PStartupInfoW = ^TStartupInfoW; + _STARTUPINFOW = record + cb: DWORD; + lpReserved: PWideChar; + lpDesktop: PWideChar; + lpTitle: PWideChar; + dwX: DWORD; + dwY: DWORD; + dwXSize: DWORD; + dwYSize: DWORD; + dwXCountChars: DWORD; + dwYCountChars: DWORD; + dwFillAttribute: DWORD; + dwFlags: DWORD; + wShowWindow: Word; + cbReserved2: Word; + lpReserved2: PByte; + hStdInput: THandle; + hStdOutput: THandle; + hStdError: THandle; + end; + {$EXTERNALSYM TStartupInfoW} + TStartupInfoW = _STARTUPINFOW; + {$EXTERNALSYM STARTUPINFOW} + STARTUPINFOW = _STARTUPINFOW; + +{$ENDIF} + + +//------------------------------------------------------------------------------ +// ImageList Helper Interfaces +//------------------------------------------------------------------------------ + +const + SID_IImageList = '{46EB5926-582E-4017-9FDF-E8998DAA0950}'; + IID_IImageList: TGUID = SID_IImageList; + +type + IImageList = interface(IUnknown) + [SID_IImageList] + function Add(Image, Mask: HBITMAP; var Index: Integer): HRESULT; stdcall; + function ReplaceIcon(IndexToReplace: Integer; Icon: HICON; var Index: Integer): HRESULT; stdcall; + function SetOverlayImage(iImage: Integer; iOverlay: Integer): HRESULT; stdcall; + function Replace(Index: Integer; Image, Mask: HBITMAP): HRESULT; stdcall; + function AddMasked(Image: HBITMAP; MaskColor: COLORREF; var Index: Integer): HRESULT; stdcall; + function Draw(var DrawParams: TImageListDrawParams): HRESULT; stdcall; + function Remove(Index: Integer): HRESULT; stdcall; + function GetIcon(Index: Integer; Flags: UINT; var Icon: HICON): HRESULT; stdcall; + function GetImageInfo(Index: Integer; var ImageInfo: TImageInfo): HRESULT; stdcall; + function Copy(iDest: Integer; SourceList: IUnknown; iSource: Integer; Flags: UINT): HRESULT; stdcall; + function Merge(i1: Integer; List2: IUnknown; i2, dx, dy: Integer; ID: TGUID; out ppvOut): HRESULT; stdcall; + function Clone(ID: TGUID; out ppvOut): HRESULT; stdcall; + function GetImageRect(Index: Integer; var rc: TRect): HRESULT; stdcall; + function GetIconSize(var cx, cy: Integer): HRESULT; stdcall; + function SetIconSize(cx, cy: Integer): HRESULT; stdcall; + function GetImageCount(var Count: Integer): HRESULT; stdcall; + function SetImageCount(NewCount: UINT): HRESULT; stdcall; + function SetBkColor(BkColor: COLORREF; var OldColor: COLORREF): HRESULT; stdcall; + function GetBkColor(var BkColor: COLORREF): HRESULT; stdcall; + function BeginDrag(iTrack, dxHotSpot, dyHotSpot: Integer): HRESULT; stdcall; + function EndDrag: HRESULT; stdcall; + function DragEnter(hWndLock: HWND; x, y: Integer): HRESULT; stdcall; + function DragLieave(hWndLock: HWND): HRESULT; stdcall; + function DragMove(x, y: Integer): HRESULT; stdcall; + function SetDragCursorImage(Image: IUnknown; iDrag, dxHotSpot, dyHotSpot: Integer): HRESULT; stdcall; + function DragShowNoLock(fShow: BOOL): HRESULT; stdcall; + function GetDragImage(var CurrentPos, HotSpot: TPoint; ID: TGUID; out ppvOut): HRESULT; stdcall; + function GetImageFlags(i: Integer; dwFlags: DWORD): HRESULT; stdcall; + function GetOverlayImage(iOverlay: Integer; var iIndex: Integer): HRESULT; stdcall; + end; + + +const + {$EXTERNALSYM SHIL_LARGE} + SHIL_LARGE = 0; // normally 32x32 + {$EXTERNALSYM SHIL_SMALL} + SHIL_SMALL = 1; // normally 16x16 + {$EXTERNALSYM SHIL_EXTRALARGE} + SHIL_EXTRALARGE = 2; // normall 48x48 + {$EXTERNALSYM SHIL_SYSSMALL} + SHIL_SYSSMALL = 3; // like SHIL_SMALL, but tracks system small icon metric correctly + {$EXTERNALSYM SHIL_LAST} + SHIL_LAST = SHIL_SYSSMALL; + +type + TSHGetImageList = function(iImageList: Integer; const RefID: TGUID; out ImageList): HRESULT; stdcall; + + + // Add new CommCtl v6.0 paramters + {$EXTERNALSYM _IMAGELISTDRAWPARAMS} + _IMAGELISTDRAWPARAMS = packed record + cbSize: DWORD; + himl: HIMAGELIST; + i: Integer; + hdcDst: HDC; + x: Integer; + y: Integer; + cx: Integer; + cy: Integer; + xBitmap: Integer; // x offest from the upperleft of bitmap + yBitmap: Integer; // y offset from the upperleft of bitmap + rgbBk: COLORREF; + rgbFg: COLORREF; + fStyle: UINT; + dwRop: DWORD; + fState: DWORD; // CommCtl 6.0 and up + Frame: DWORD; // CommCtl 6.0 and up + crEffect: COLORREF; // CommCtl 6.0 and up + end; + PImageListDrawParams = ^TImageListDrawParams; + TImageListDrawParams = _IMAGELISTDRAWPARAMS; + +const + {$EXTERNALSYM ILS_NORMAL} + ILS_NORMAL = $0000; //The image state is not modified. + {$EXTERNALSYM ILS_GLOW} + ILS_GLOW = $0001; // Not supported. + {$EXTERNALSYM ILS_SHADOW} + ILS_SHADOW = $0002; // Not supported. + {$EXTERNALSYM ILS_SATURATE} + ILS_SATURATE = $0002; //Reduces the color saturation of the icon to grayscale. This only affects 32bpp images. + {$EXTERNALSYM ILS_ALPHA} + ILS_ALPHA = $0008; //Alpha blends the icon. Alpha blending controls the transparency level of an icon, according to the value of its alpha channel. The value of the alpha channel is indicated by the frame member in the IMAGELISTDRAWPARAMS method. The alpha channel can be from 0 to 255, with 0 being completely transparent, and 255 being completely opaque. + + {$EXTERNALSYM ILIF_ALPHA} + ILIF_ALPHA = $0001; // Set if ImageList is a 32Bit image using GetItemFlags + +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// Definitions for CDefFolderMenu_Create2 +//------------------------------------------------------------------------------ +const + // Extra undocumented callback messages + // (discovered by Maksym Schipka and Henk Devos) + {$EXTERNALSYM DFM_MERGECONTEXTMENU} + DFM_MERGECONTEXTMENU = 1; // uFlags LPQCMINFO + {$EXTERNALSYM DFM_INVOKECOMMAND} + DFM_INVOKECOMMAND = 2; // idCmd pszArgs + {$EXTERNALSYM DFM_CREATE} + DFM_CREATE = 3; // AddRef? + {$EXTERNALSYM DFM_DESTROY} + DFM_DESTROY = 4; // Release + {$EXTERNALSYM DFM_GETHELPTEXTA} + DFM_GETHELPTEXTA = 5; // idCmd,cchMax pszText + {$EXTERNALSYM DFM_MEASUREITEM} + DFM_MEASUREITEM = 6; // same as WM_MEASUREITEM + {$EXTERNALSYM DFM_DRAWITEM} + DFM_DRAWITEM = 7; // same as WM_DRAWITEM + {$EXTERNALSYM DFM_INITMENUPOPUP} + DFM_INITMENUPOPUP = 8; // same as WM_INITMENUPOPUP + {$EXTERNALSYM DFM_VALIDATECMD} + DFM_VALIDATECMD = 9; // idCmd 0 + {$EXTERNALSYM DFM_MERGECONTEXTMENU_TOP} + DFM_MERGECONTEXTMENU_TOP = 10; // uFlags LPQCMINFO + {$EXTERNALSYM DFM_GETHELPTEXTW} + DFM_GETHELPTEXTW = 11; // idCmd,cchMax pszText -Unicode + {$EXTERNALSYM DFM_INVOKECOMMANDEX} + DFM_INVOKECOMMANDEX = 12; // idCmd PDFMICS + {$EXTERNALSYM DFM_MAPCOMMANDNAME} + DFM_MAPCOMMANDNAME = 13; // idCmd * pszCommandName + {$EXTERNALSYM DFM_GETDEFSTATICID} + DFM_GETDEFSTATICID = 14; // idCmd * 0 + {$EXTERNALSYM DFM_GETVERBW} + DFM_GETVERBW = 15; // idCmd,cchMax pszText -Unicode + {$EXTERNALSYM DFM_GETVERBA} + DFM_GETVERBA = 16; // idCmd,cchMax pszText -Ansi + {$EXTERNALSYM DFM_MERGECONTEXTMENU_BOTTOM} + DFM_MERGECONTEXTMENU_BOTTOM = 17; // uFlags LPQCMINFO + + // Extra command IDs + // (from Axel Sommerfeldt and Henk Devos) + {$EXTERNALSYM DFM_CMD_DELETE} + DFM_CMD_DELETE = cardinal(-1); + {$EXTERNALSYM DFM_CMD_CUT} + DFM_CMD_CUT = cardinal(-2); + {$EXTERNALSYM DFM_CMD_COPY} + DFM_CMD_COPY = cardinal(-3); + {$EXTERNALSYM DFM_CMD_CREATESHORTCUT} + DFM_CMD_CREATESHORTCUT = cardinal(-4); + {$EXTERNALSYM DFM_CMD_PROPERTIES} + DFM_CMD_PROPERTIES = UINT(-5); + {$EXTERNALSYM DFM_CMD_NEWFOLDER} + DFM_CMD_NEWFOLDER = cardinal(-6); + {$EXTERNALSYM DFM_CMD_PASTE} + DFM_CMD_PASTE = cardinal(-7); + {$EXTERNALSYM DFM_CMD_VIEWLIST} + DFM_CMD_VIEWLIST = cardinal(-8); + {$EXTERNALSYM DFM_CMD_VIEWDETAILS} + DFM_CMD_VIEWDETAILS = cardinal(-9); + {$EXTERNALSYM DFM_CMD_PASTELINK} + DFM_CMD_PASTELINK = cardinal(-10); + {$EXTERNALSYM DFM_CMD_PASTESPECIAL} + DFM_CMD_PASTESPECIAL = cardinal(-11); + {$EXTERNALSYM DFM_CMD_MODALPROP} + DFM_CMD_MODALPROP = cardinal(-12); + + +type + + PDFMICS = ^TDFMICS; + TDFMICS = packed record + cbSize: DWORD; + fMask: DWORD; // CMIC_MASK_ values for the invoke + lParam: LPARAM; // same as lParam of DFM_INFOKECOMMAND + idCmdFirst: UINT; + idDefMax: UINT; + pici: PCMInvokeCommandInfo; // the whole thing so you can re-invoke on a child + punkSite: IUnknown; // site pointer for context menu handler Longhorn and up. Check size to make sure this is valid + end; + + TFNDFMCallback = function (psf : Ishellfolder; wnd : HWND; + pdtObj : IDataObject; uMsg : UINT; + WParm : WParam; lParm : LParam) : HResult; stdcall; + +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +// Assorted definitions +//------------------------------------------------------------------------------ +const + {$EXTERNALSYM CMF_EXTENDEDVERBS} + CMF_EXTENDEDVERBS = $0100; + + // Correct definition + {$EXTERNALSYM SHGetFileInfoW} + function SHGetFileInfoW(pszPath: PWideChar; dwFileAttributes: DWORD; + var psfi: TSHFileInfoW; cbFileInfo, uFlags: UINT): DWORD; stdcall; + external shell32 name 'SHGetFileInfoW'; + + {$EXTERNALSYM CreateProcessW} + function CreateProcessW(lpApplicationName: PWideChar; lpCommandLine: PWideChar; + lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; + bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; + lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfoW; + var lpProcessInformation: TProcessInformation): BOOL; stdcall; + external kernel32 name 'CreateProcessW'; + +const + SID_IShellFolderViewCB = '{2047E320-F2A9-11CE-AE65-08002B2E1262}'; + IID_IShellFolderViewCB: TGUID = SID_IShellFolderViewCB; + + {$EXTERNALSYM SFVM_MERGEMENU} + SFVM_MERGEMENU = 1; // : LPQCMINFO + {$EXTERNALSYM SFVM_INVOKECOMMAND} + SFVM_INVOKECOMMAND = 2; // idCmd : + {$EXTERNALSYM SFVM_GETHELPTEXT} + SFVM_GETHELPTEXT = 3; // idCmd,cchMaxc : pszText + {$EXTERNALSYM SFVM_GETTOOLTIPTEXT} + SFVM_GETTOOLTIPTEXT = 4; // idCmd,cchMax : pszText + {$EXTERNALSYM SFVM_GETBUTTONINFO} + SFVM_GETBUTTONINFO = 5 ; // : LPTBINFO + {$EXTERNALSYM SFVM_GETBUTTONS} + SFVM_GETBUTTONS = 6; // idCmdFirst,cbtnMax : LPTBBUTTON + {$EXTERNALSYM SFVM_INITMENUPOPUP} + SFVM_INITMENUPOPUP = 7; // idCmdFirst,nIndex : hmenu + {$EXTERNALSYM SFVM_SELECTIONCHANGED} + SFVM_SELECTIONCHANGED = 8; // idCmdFirst,nItem : TSFVCBSelectInfo struct + {$EXTERNALSYM SFVM_DRAWMENUITEM} + SFVM_DRAWMENUITEM = 9; // idCmdFirst : pdis + {$EXTERNALSYM SFVM_MEASUREMENUITEM} + SFVM_MEASUREMENUITEM = 10; // idCmdFist : pmis + {$EXTERNALSYM SFVM_EXITMENULOOP} + // called when context menu exits, not main menu + SFVM_EXITMENULOOP = 11; // 0 : 0 + {$EXTERNALSYM SFVM_VIEWRELEASE} + // indicates that the IShellView object is being released. + SFVM_VIEWRELEASE = 12; // : lSelChangeInfo + {$EXTERNALSYM SFVM_GETNAMELENGTH} + // Sent when beginning label edit. + SFVM_GETNAMELENGTH = 13; // pidlItem : length + {$EXTERNALSYM SFVM_FSNOTIFY} + SFVM_FSNOTIFY = 14; // LPCITEMIDLIST* : lEvent + {$EXTERNALSYM SFVM_WINDOWCREATED} + SFVM_WINDOWCREATED = 15; // hwnd : + {$EXTERNALSYM SFVM_WINDOWCLOSING} + SFVM_WINDOWCLOSING = 16; // hwnd : PDVSELCHANGEINFO + {$EXTERNALSYM SFVM_LISTREFRESHED} + SFVM_LISTREFRESHED = 17; // 0 : lSelChangeInfo + {$EXTERNALSYM SFVM_WINDOWFOCUSED} + // Sent to inform us that the list view has received the focus. + SFVM_WINDOWFOCUSED = 18; // 0 : 0 + {$EXTERNALSYM SFVM_KILLFOCUS} + SFVM_KILLFOCUS = 19; // 0 : 0 + {$EXTERNALSYM SFVM_REGISTERCOPYHOOK} + SFVM_REGISTERCOPYHOOK = 20; // 0 : 0 + {$EXTERNALSYM SFVM_COPYHOOKCALLBACK} + SFVM_COPYHOOKCALLBACK = 21; // : LPCOPYHOOKINFO + {$EXTERNALSYM SFVM_NOTIFY} + SFVM_NOTIFY = 22; //idFrom LPNOTIFY : + {$EXTERNALSYM SFVM_GETDETAILSOF} + SFVM_GETDETAILSOF = 23; // iColumn : DETAILSINFO* + {$EXTERNALSYM SFVM_COLUMNCLICK} + SFVM_COLUMNCLICK = 24; // iColumn: + {$EXTERNALSYM SFVM_QUERYFSNOTIFY} + SFVM_QUERYFSNOTIFY = 25; // : SHChangeNotifyEntry* + {$EXTERNALSYM SFVM_DEFITEMCOUNT} + SFVM_DEFITEMCOUNT = 26; // : UINT* + {$EXTERNALSYM SFVM_DEFVIEWMODE} + SFVM_DEFVIEWMODE = 27; // : FOLDERVIEWMODE* + {$EXTERNALSYM SFVM_UNMERGEMENU} + SFVM_UNMERGEMENU = 28; // : hmenu + {$EXTERNALSYM SFVM_ADDINGOBJECT} + SFVM_ADDINGOBJECT = 29; // pidl : PDVSELCHANGEINFO + {$EXTERNALSYM SFVM_REMOVINGOBJECT} + SFVM_REMOVINGOBJECT = 30; // pidl : PDVSELCHANGEINFO + {$EXTERNALSYM SFVM_UPDATESTATUSBAR} + SFVM_UPDATESTATUSBAR = 31; // fInitialize : + {$EXTERNALSYM SFVM_BACKGROUNDENUM} + SFVM_BACKGROUNDENUM = 32; // - + {$EXTERNALSYM SFVM_GETCOMMANDDIR} + SFVM_GETCOMMANDDIR = 33; + {$EXTERNALSYM SFVM_GETCOLUMNSTREAM} + // Get an IStream interface + SFVM_GETCOLUMNSTREAM = 34; // READ/WRITE/READWRITE : IStream + {$EXTERNALSYM SFVM_CANSELECTALL} + SFVM_CANSELECTALL = 35; // : lSelChangeInfo - + {$EXTERNALSYM SFVM_DIDDRAGDROP} + SFVM_DIDDRAGDROP = 36; // dwEffect : IDataObject* + {$EXTERNALSYM SFVM_SUPPORTSIDENTITY} + SFVM_SUPPORTSIDENTITY = 37; // 0 : 0 + {$EXTERNALSYM SFVM_ISCHILDOBJECT} + SFVM_ISCHILDOBJECT = 38; + {$EXTERNALSYM SFVM_SETISFV} + SFVM_SETISFV = 39; // : IShellFolderView* + {$EXTERNALSYM SFVM_THISIDLIST} + SFVM_THISIDLIST = 41; // : LPITMIDLIST* + {$EXTERNALSYM SFVM_GETITEM} + SFVM_GETITEM = 42; // iItem : LPITMIDLIST* + {$EXTERNALSYM SFVM_SETITEM} + SFVM_SETITEM = 43; // iItem : LPITEMIDLIST + {$EXTERNALSYM SFVM_INDEXOFITEM} + SFVM_INDEXOFITEM = 44; // *iItem : LPITEMIDLIST + {$EXTERNALSYM SFVM_FINDITEM} + SFVM_FINDITEM = 45; // *iItem : NM_FINDITEM* + {$EXTERNALSYM SFVM_WNDMAIN} + SFVM_WNDMAIN = 46; // : hwndMain + {$EXTERNALSYM SFVM_ADDPROPERTYPAGES} + SFVM_ADDPROPERTYPAGES = 47; // : SFVM_PROPPAGE_DATA * + {$EXTERNALSYM SFVM_BACKGROUNDENUMDONE} + SFVM_BACKGROUNDENUMDONE= 48; // : + {$EXTERNALSYM SFVM_GETNOTIFY} + SFVM_GETNOTIFY = 49; // LPITEMIDLIST* : LONG* + {$EXTERNALSYM SFVM_COLUMNCLICK2} + SFVM_COLUMNCLICK2 = 50; // nil : column index + {$EXTERNALSYM SFVM_STANDARDVIEWS} + SFVM_STANDARDVIEWS = 51; // : BOOL * + {$EXTERNALSYM SFVM_REUSEEXTVIEW} + SFVM_REUSEEXTVIEW = 52; // : BOOL * + {$EXTERNALSYM SFVM_GETSORTDEFAULTS} + SFVM_GETSORTDEFAULTS = 53; // iDirection : iParamSort + {$EXTERNALSYM SFVM_GETEMPTYTEXT} + SFVM_GETEMPTYTEXT = 54; // cchMax : pszText + {$EXTERNALSYM SFVM_GETITEMICONINDEX} + SFVM_GETITEMICONINDEX = 55; // iItem : int *piIcon + {$EXTERNALSYM SFVM_DONTCUSTOMIZE} + SFVM_DONTCUSTOMIZE = 56; // : BOOL *pbDontCustomize + {$EXTERNALSYM SFVM_SIZE} + SFVM_SIZE = 57; // : + {$EXTERNALSYM SFVM_GETZONE} + SFVM_GETZONE = 58; // : DWORD* + {$EXTERNALSYM SFVM_GETPANE} + SFVM_GETPANE = 59; // Pane ID : DWORD* + {$EXTERNALSYM SFVM_ISOWNERDATA} + SFVM_ISOWNERDATA = 60; // ISOWNERDATA : BOOL * + {$EXTERNALSYM SFVM_GETRANGEOBJECT} + SFVM_GETRANGEOBJECT = 61; // iWhich : ILVRange ** + {$EXTERNALSYM SFVM_CACHEHINT} + SFVM_CACHEHINT = 62; // : NMLVCACHEHINT * + {$EXTERNALSYM SFVM_GETHELPTOPIC} + SFVM_GETHELPTOPIC = 63; // : SFVM_HELPTOPIC_DATA * + {$EXTERNALSYM SFVM_OVERRIDEITEMCOUNT} + SFVM_OVERRIDEITEMCOUNT = 64; // : UINT* + {$EXTERNALSYM SFVM_GETHELPTEXTW} + SFVM_GETHELPTEXTW = 65; // idCmd,cchMax : pszText - unicode + {$EXTERNALSYM SFVM_GETTOOLTIPTEXTW} + SFVM_GETTOOLTIPTEXTW = 66; // idCmd,cchMax : pszText - unicode + {$EXTERNALSYM SFVM_GETIPERSISTHISTORY} + SFVM_GETIPERSISTHISTORY = 67; // : IPersistHistory ** + {$EXTERNALSYM SFVM_GETANIMATION} + SFVM_GETANIMATION = 68; // HINSTANCE * : WCHAR * + {$EXTERNALSYM SFVM_GETANIMATION} + SFVM_GETHELPTEXTA = 69; // idCmd,cchMax : pszText - ansi + {$EXTERNALSYM SFVM_GETANIMATION} + SFVM_GETTOOLTIPTEXTA = 70; // idCmd,cchMax : pszText - ansi + {$EXTERNALSYM SFVM_GETANIMATION} + SFVM_GETICONOVERLAY = 71; // iItem : int iOverlayIndex + {$EXTERNALSYM SFVM_GETANIMATION} + SFVM_SETICONOVERLAY = 72; // iItem : int * piOverlayIndex + {$EXTERNALSYM SFVM_GETANIMATION} + SFVM_ALTERDROPEFFECT = 73; // DWORD* : IDataObject* + + // XP messages - not all id'ed yet + {$EXTERNALSYM SFVM_MESSAGE4A} + SFVM_MESSAGE4A = 74; + {$EXTERNALSYM SFVM_MESSAGE4B} + SFVM_MESSAGE4B = 75; + {$EXTERNALSYM SFVM_MESSAGE4C} + SFVM_MESSAGE4C = 76; + {$EXTERNALSYM SFVM_GET_CUSTOMVIEWINFO} + SFVM_GET_CUSTOMVIEWINFO = 77; + {$EXTERNALSYM SFVM_MESSAGE4E} + SFVM_MESSAGE4E = 78; + {$EXTERNALSYM SFVM_ENUMERATEDITEMS} + SFVM_ENUMERATEDITEMS = 79; + {$EXTERNALSYM SFVM_GET_VIEW_DATA} + SFVM_GET_VIEW_DATA = 80; + {$EXTERNALSYM SFVM_MESSAGE51} + SFVM_MESSAGE51 = 81; + {$EXTERNALSYM SFVM_GET_WEBVIEW_LAYOUT} + SFVM_GET_WEBVIEW_LAYOUT = 82; + {$EXTERNALSYM SFVM_GET_WEBVIEW_CONTENT} + SFVM_GET_WEBVIEW_CONTENT= 83; + {$EXTERNALSYM SFVM_GET_WEBVIEW_TASKS} + SFVM_GET_WEBVIEW_TASKS = 84; + {$EXTERNALSYM SFVM_MESSAGE55} + SFVM_MESSAGE55 = 85; + {$EXTERNALSYM SFVM_GET_WEBVIEW_THEME} + SFVM_GET_WEBVIEW_THEME = 86; + {$EXTERNALSYM SFVM_MESSAGE57} + SFVM_MESSAGE57 = 87; + {$EXTERNALSYM SFVM_MESSAGE58} + SFVM_MESSAGE58 = 88; + {$EXTERNALSYM SFVM_MESSAGE59} + SFVM_MESSAGE59 = 89; + {$EXTERNALSYM SFVM_MESSAGE5A} + SFVM_MESSAGE5A = 90; + {$EXTERNALSYM SFVM_MESSAGE5B} + SFVM_MESSAGE5B = 91; + {$EXTERNALSYM SFVM_GETDEFERREDVIEWSETTINGS} + SFVM_GETDEFERREDVIEWSETTINGS = 92; + + {$EXTERNALSYM SFVM_REARRANGE} + SFVM_REARRANGE = $0001; + {$EXTERNALSYM SFVM_GETARRANGECOLUMN} + SFVM_GETARRANGECOLUMN = $0002; + {$EXTERNALSYM SFVM_ADDOBJECT} + SFVM_ADDOBJECT = $0003; + {$EXTERNALSYM SFVM_GETITEMCOUNT} + SFVM_GETITEMCOUNT = $0004; + {$EXTERNALSYM SFVM_GETITEMPIDL} + SFVM_GETITEMPIDL = $0005; + {$EXTERNALSYM SFVM_REMOVEOBJECT} + SFVM_REMOVEOBJECT = $0006; + {$EXTERNALSYM SFVM_UPDATEOBJECT} + SFVM_UPDATEOBJECT = $0007; + {$EXTERNALSYM SFVM_SETREDRAW} + SFVM_SETREDRAW = $0008; + {$EXTERNALSYM SFVM_GETSELECTEDOBJECTS} + SFVM_GETSELECTEDOBJECTS = $0009; + + + {$EXTERNALSYM SIGDN_NORMALDISPLAY} + SIGDN_NORMALDISPLAY = $00000000; + {$EXTERNALSYM SIGDN_PARENTRELATIVEPARSING} + SIGDN_PARENTRELATIVEPARSING = $80018001; + {$EXTERNALSYM SIGDN_PARENTRELATIVEFORADDRESSBAR} + SIGDN_PARENTRELATIVEFORADDRESSBAR = $8001c001; + {$EXTERNALSYM SIGDN_DESKTOPABSOLUTEPARSING} + SIGDN_DESKTOPABSOLUTEPARSING = $80028000; + {$EXTERNALSYM SIGDN_PARENTRELATIVEEDITING} + SIGDN_PARENTRELATIVEEDITING = $80031001; + {$EXTERNALSYM SIGDN_DESKTOPABSOLUTEEDITING} + SIGDN_DESKTOPABSOLUTEEDITING = $8004c000; + {$EXTERNALSYM SIGDN_FILESYSPATH} + SIGDN_FILESYSPATH = $80058000; + {$EXTERNALSYM SIGDN_URL} + SIGDN_URL = $80068000; + + {$EXTERNALSYM SICHINT_DISPLAY} + SICHINT_DISPLAY = $00000000; // iOrder based on display in a folder view + {$EXTERNALSYM SICHINT_ALLFIELDS} + SICHINT_ALLFIELDS = $80000000; // exact instance compare + {$EXTERNALSYM SICHINT_CANONICAL} + SICHINT_CANONICAL = $10000000; // iOrder based on canonical name (better performance) + + + {$EXTERNALSYM SID_IUIElement} + SID_IUIElement = '{EC6FE84F-DC14-4FBB-889F-EA50FE27FE0F}'; + {$EXTERNALSYM SID_IUICommand} + SID_IUICommand = '{4026DFB9-7691-4142-B71C-DCF08EA4DD9C}'; + {$EXTERNALSYM SID_IEnumUICommand} + SID_IEnumUICommand = '{869447DA-9F84-4E2A-B92D-00642DC8A911}'; + + + {$EXTERNALSYM SVGIO_FLAG_VIEWORDER} + SVGIO_FLAG_VIEWORDER = $80000000; + {$EXTERNALSYM SVGIO_CHECKED} + SVGIO_CHECKED = $00000003; + {$EXTERNALSYM SVGIO_TYPE_MASK} + SVGIO_TYPE_MASK = $0000000F; + + +type + IShellFolderViewCB = interface(IUnknown) + [SID_IShellFolderViewCB] + function MessageSFVCB(uMsg: UINT; WParam: WPARAM; LParam: LPARAM): HRESULT; stdcall; + end; TSFVM_WEBVIEW_CONTENT_DATA = packed record + l1 : integer; + l2 : integer; + pUnk : IUnknown; // IUIElement + pUnk2 : IUnknown; // IUIElement + pEnum : IEnumIdList; + end; + PSFVM_WEBVIEW_CONTENT_DATA = ^TSFVM_WEBVIEW_CONTENT_DATA; + + TSFVM_WEBVIEW_TASKSECTION_DATA = record + pEnum : IUnknown; // IEnumUICommand + pEnum2 : IUnknown; // IEnumUICommand + end; + PSFVM_WEBVIEW_TASKSECTION_DATA = ^TSFVM_WEBVIEW_TASKSECTION_DATA; + + TSFVM_WEBVIEW_THEME_DATA = record + pszTheme : PWideChar; + end; + PSFVM_WEBVIEW_THEME_DATA = ^TSFVM_WEBVIEW_THEME_DATA; + + TSFVM_WEBVIEW_LAYOUT_DATA = record + flags : cardinal; + pUnk : IUnknown; //IPreview3? + end; + PSFVM_WEBVIEW_LAYOUT_DATA = ^TSFVM_WEBVIEW_LAYOUT_DATA; + + PSFVCBSelectInfo = ^TSFVCBSelectInfo; + TSFVCBSelectInfo = record + uOldState: DWORD; // 0 + uNewState: DWORD; // LVIS_SELECTED, LVIS_FOCUSED,... + pidl : PItemIdList; + end; + + // Sent by a drop down toolbar button in the view WM_COMMAND message + PBDDDATA = ^TBDDDATA; + TBDDDATA = packed record + hwndFrom: HWND; + pva: PVariant; + dwUnused: DWORD + end; + + IShellItem = interface + ['{43826D1E-E718-42EE-BC55-A1E261C37BFE}'] + function BindToHandler(pbc: IBindCtx; rbhid: TGUID; const riid: TIID; out ppvOut: Pointer): HResult; stdcall; + function GetParent(var ppsi : IShellItem): HResult; stdcall; + function GetDisplayName(sigdnName: DWORD; var ppszName: POLESTR): HResult; stdcall; + function GetAttributes(sfgaoMask: DWORD; var psfgaoAttribs: DWORD): HResult; stdcall; + function Compare(psi: IShellItem; hint: ULONG; var piOrder: integer): HResult; stdcall; + end; + + IEnumShellItems = interface(IUnknown) + ['{4670AC35-34A6-4D2B-B7B6-CD665C6189A5}'] + function Next(celt: UINT; out rgelt: IShellItem; out pceltFetched: UINT): HResult; stdcall; + function Skip(celt: UINT): HResult; stdcall; + function Reset: HResult; stdcall; + function Clone(out ppenum: IEnumShellItems): HResult; stdcall; + end; + + IShellItemArray = interface(IUnknown) + ['{90CF20DE-73B4-4AA4-BA7A-82FF310AF24A}'] + function BindToHandler(pbc: IBindCtx; const rbhid: TGUID; const riid: TIID; out ppvOut): HResult; stdcall; + function GetAttrributes(nEnum: Integer; dwRequested: DWORD; out pdwResult: DWORD): HResult; stdcall; + function GetCount(out pCount: UINT): HResult; stdcall; + function GetItemAt(nIndex: uint; out ppItem: IShellItem) : HResult; stdcall; + function EnumItems(out enumShellItems: IEnumShellItems): HResult; stdcall; + end; + + IUIElement = interface(IUnknown) + [SID_IUIElement] + function get_Name(pItemArray: IShellItemArray; var bstrName: TBStr) : HResult; stdcall; + function get_Icon(pItemArray: IShellItemArray; var bstrName: TBStr) : HResult; stdcall; + function get_Tooltip(pItemArray: IShellItemArray; var bstrName: TBStr) : HResult; stdcall; + end; + + + PDetailsInfo =^TDetailsInfo; + TDetailsInfo = packed record + pidl: PItemIDList; + Fmt: Integer; + cxChar: Integer; + str: TStrRet; + iImage: Integer; + end; + + + TShellViewExProc = function(psvOuter: IShellview; psf: IShellFolder; hwndMain: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): HRESULT; stdcall; + + TShellViewCreate = packed record + dwSize: DWORD; + pShellFolder: IShellFolder; + psvOuter: IShellView; + pfnCallback: IShellFolderViewCB; + end; + + TSHCreateShellFolderView = function(var psvcbi: TShellViewCreate; out ppv): HRESULT; stdcall; + // TSHCreateShellFolderViewEx is too buggy to bother with + +const + {$EXTERNALSYM SID_IPersistIDList} + SID_IPersistIDList = '{1079ACFC-29BD-11D3-8E0D-00C04F6837D5}'; + {$EXTERNALSYM IID_IPersistIDList} + IID_IPersistIDList: TGUID = SID_IPersistIDList; + +type + {$IFDEF CPPB_6_UP} + {$EXTERNALSYM IPersistIDList} + {$ENDIF} + IPersistIDList = interface(IPersist) + [SID_IPersistIDList] + // sets or gets a fully qualifed idlist for an object + function SetIDList(pidl : PItemIdList) : HResult; stdcall; + function GetIDList(var pidl : PItemIdList) : HResult; stdcall; + end; + +const + {$EXTERNALSYM SID_IBindHost} + SID_IBindHost = '{FC4801A1-2BA9-11CF-A229-00AA003D7352}'; + {$EXTERNALSYM IID_IBindHost} + IID_IBindHost: TGUID = SID_IBindHost; + + {$EXTERNALSYM SID_IPersistFreeThreadedObject} + SID_IPersistFreeThreadedObject = '{C7264BF0-EDB6-11D1-8546-006008059368}'; + {$EXTERNALSYM IID_IPersistFreeThreadedObject} + IID_IPersistFreeThreadedObject: TGUID = SID_IPersistFreeThreadedObject; + + {$EXTERNALSYM IID_IAssociationArray} + SID_IAssociationArray = '{3B877E3C-67DE-4F9A-B29B-17D0A1521C6A}'; + {$EXTERNALSYM IID_IAssociationArray} + IID_IAssociationArray: TGUID = SID_IAssociationArray; + + {$EXTERNALSYM SID_IBindProtocol} + SID_IBindProtocol = '{79EAC9CD-BAF9-11CE-8C82-00AA004BA90B}'; + {$EXTERNALSYM IID_IBindProtocol} + IID_IBindProtocol: TGUID = SID_IBindProtocol; + + {$EXTERNALSYM SID_IInternetSecurityManager} + SID_IInternetSecurityManager = '{79EAC9EE-BAF9-11CE-8C82-00AA004BA90B}'; + {$EXTERNALSYM IID_IInternetSecurityManager} + IID_IInternetSecurityManager: TGUID = SID_IInternetSecurityManager; + +//------------------------------------------------------------------------------ +const + {$EXTERNALSYM CCM_FIRST} + CCM_FIRST = $2000; + {$EXTERNALSYM CCM_SETWINDOWTHEME} + CCM_SETWINDOWTHEME = CCM_FIRST + $000B; + {$EXTERNALSYM TB_SETWINDOWTHEME} + TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME; + {$EXTERNALSYM RBBS_USECHEVRON} + RBBS_USECHEVRON = $00000200; + {$EXTERNALSYM RBN_CHEVRONPUSHED} + RBN_CHEVRONPUSHED = RBN_FIRST - 10; + + {$EXTERNALSYM DBID_DELAYINIT} + DBID_DELAYINIT = 4; + {$EXTERNALSYM DBID_FINISHINIT} + DBID_FINISHINIT = 5; + {$EXTERNALSYM DBID_SETWINDOWTHEME} + DBID_SETWINDOWTHEME = 6; + {$EXTERNALSYM DBID_PERMITAUTOHIDE} + DBID_PERMITAUTOHIDE = 7; + + // + // SHCreateThread Flags + // + {$EXTERNALSYM CTF_INSIST} + CTF_INSIST = $0001; + {$EXTERNALSYM CTF_THREAD_REF} + CTF_THREAD_REF = $0002; + {$EXTERNALSYM CTF_PROCESS_REF} + CTF_PROCESS_REF = $0004; + {$EXTERNALSYM CTF_COINIT} + CTF_COINIT = $0008; + +type + TSHCreateThread = function(pfnThreadProc: TThreadProc; pData: Pointer; dwFlags: DWORD; pfnCallback: TThreadProc): BOOL; stdcall; + +// ********************************* +// BandSite +// ********************************* + +type + // BCB needs these defines. + BANDSITEINFO = record + dwMask : DWORD; + dwState : DWORD; + dwStyle : DWORD; + end; + TBandSiteInfo = BANDSITEINFO; + PBandSiteInfo = ^TBandSiteInfo; + +const + {$EXTERNALSYM BSID_BANDADDED} + BSID_BANDADDED = 0; + {$EXTERNALSYM BSID_BANDREMOVED} + BSID_BANDREMOVED = 1; + + {$EXTERNALSYM BSIM_STATE} + BSIM_STATE = $00000001; + {$EXTERNALSYM BSIM_STYLE} + BSIM_STYLE = $00000002; + + {$EXTERNALSYM BSSF_VISIBLE} + BSSF_VISIBLE = $00000001; + {$EXTERNALSYM BSSF_NOTITLE} + BSSF_NOTITLE = $00000002; + {$EXTERNALSYM BSSF_UNDELETEABLE} + BSSF_UNDELETEABLE = $00001000; + + {$EXTERNALSYM BSIS_AUTOGRIPPER} + BSIS_AUTOGRIPPER = $00000000; + {$EXTERNALSYM BSIS_NOGRIPPER} + BSIS_NOGRIPPER = $00000001; + {$EXTERNALSYM BSIS_ALWAYSGRIPPER} + BSIS_ALWAYSGRIPPER = $00000002; + {$EXTERNALSYM BSIS_LEFTALIGN} + BSIS_LEFTALIGN = $00000004; + {$EXTERNALSYM BSIS_SINGLECLICK} + BSIS_SINGLECLICK = $00000008; + {$EXTERNALSYM BSIS_NOCONTEXTMENU} + BSIS_NOCONTEXTMENU = $00000010; + {$EXTERNALSYM BSIS_NODROPTARGET} + BSIS_NODROPTARGET = $00000020; + {$EXTERNALSYM BSIS_NOCAPTION} + BSIS_NOCAPTION = $00000040; + {$EXTERNALSYM BSIS_PREFERNOLINEBREAK} + BSIS_PREFERNOLINEBREAK = $00000080; + {$EXTERNALSYM BSIS_LOCKED} + BSIS_LOCKED = $00000100; + +type + IBandSite = interface + ['{4CF504B0-DE96-11D0-8B3F-00A0C911E8E5}'] + function AddBand(pUnk: IUnknown): HResult; stdcall; + function EnumBands(Band: UINT; var pdwBandID: DWord): HResult; stdcall; + function QueryBand(BandID: dword; var ppstb: IDeskBand; + var pdwState: DWORD; pszName : LPWSTR; + cchName: integer): HResult; stdcall; + function SetBandState(dwBandID: DWORD; dwMask: DWORD; dwState: DWORD): HResult; stdcall; + function RemoveBand(dwBandID: DWORD) : HResult; stdcall; + function GetBandObject(dwBandID: DWORD; const riid: TIID; out ppv: Pointer): HResult; stdcall; + function SetBandSiteInfo(const pbsinfo: BANDSITEINFO): HResult; stdcall; + function GetBandSiteInfo(var pbsInfo: BANDSITEINFO): HResult; stdcall; + end; + +//------------------------------------------------------------------------------ +// Assorted definitions +//------------------------------------------------------------------------------ +const + {$EXTERNALSYM SHCIDS_COLUMNMASK} + SHCIDS_COLUMNMASK = $0000FFFF; + + {$EXTERNALSYM SID_SShellBrowser} + SID_SShellBrowser = '{000214E2-0000-0000-C000-000000000046}'; + {$EXTERNALSYM SID_SShellDesktop} + SID_SShellDesktop = '{00021400-0000-0000-C000-000000000046}'; + {$EXTERNALSYM IID_SShellBrowser} + IID_SShellBrowser: TGUID = SID_SShellBrowser; + {$EXTERNALSYM IID_SShellDesktop} + IID_SShellDesktop: TGUID = SID_SShellDesktop; + + {$EXTERNALSYM CWM_GETISHELLBROWSER} + CWM_GETISHELLBROWSER = WM_USER + 7; + + + {$EXTERNALSYM WM_XBUTTONDOWN} + WM_XBUTTONDOWN = $020B; + {$EXTERNALSYM WM_XBUTTONUP} + WM_XBUTTONUP = $020C; + {$EXTERNALSYM WM_XBUTTONDBLCLK} + WM_XBUTTONDBLCLK = $020D; + + {$EXTERNALSYM VID_LargeIcons} + VID_LargeIcons: TGUID = '{0057D0E0-3573-11CF-AE69-08002B2E1262}'; + {$EXTERNALSYM VID_SmallIcons} + VID_SmallIcons: TGUID = '{0E1FA5E0-3573-11CF-AE69-08002B2E1262}'; + {$EXTERNALSYM VID_List} + VID_List: TGUID = '{137E7700-3573-11CF-AE69-08002B2E1262}'; + {$EXTERNALSYM VID_Details} + VID_Details: TGUID = '{5984FFE0-28D4-11CF-AE66-08002B2E1262}'; + {$EXTERNALSYM VID_Tile} + VID_Tile: TGUID = '{65F125E5-7BE1-4810-BA9D-D271C8432CE3}'; + + {$EXTERNALSYM SHCONTF_INIT_ON_FIRST_NEXT} + SHCONTF_INIT_ON_FIRST_NEXT = $0100; // allow EnumObject() to return before validating enum") + {$EXTERNALSYM SHCONTF_NETPRINTERSRCH} + SHCONTF_NETPRINTERSRCH = $0200; // hint that client is looking for printers") + {$EXTERNALSYM SHCONTF_SHAREABLE} + SHCONTF_SHAREABLE = $0400; // hint that client is looking sharable resources (remote shares)") + {$EXTERNALSYM SHCONTF_STORAGE} + SHCONTF_STORAGE = $0800; // include all items with accessible storage and their ancestors") + + {$EXTERNALSYM SFGAO_CAPABILITYMASK} + SFGAO_CAPABILITYMASK = $00000177; + {$EXTERNALSYM SFGAO_DISPLAYATTRMASK} + SFGAO_DISPLAYATTRMASK = $000FC000; + {$EXTERNALSYM SFGAO_CONTENTSMASK} + SFGAO_CONTENTSMASK = $80000000; + {$EXTERNALSYM SFGAO_STORAGECAPMASK} + SFGAO_STORAGECAPMASK = $70C50008; + + {$IFNDEF COMPILER_7_UP} + {$EXTERNALSYM BIF_SHAREABLE} + BIF_SHAREABLE = $8000; + {$EXTERNALSYM BIF_BROWSEINCLUDEURLS} + BIF_BROWSEINCLUDEURLS = $0080; + {$EXTERNALSYM BIF_NEWDIALOGSTYLE} + BIF_NEWDIALOGSTYLE = $0040; + {$EXTERNALSYM BIF_USENEWUI} + BIF_USENEWUI = BIF_NEWDIALOGSTYLE or BIF_EDITBOX; + {$ENDIF COMPILER_6_UP} + + // *********************************************************************** + // + // For use with SHGetKnownFolderPath (or SHGetKnownFolderPath_MP in MPCommonUtilities) + // This function allow getting the real paths to special folders. In Vista the + // TNamespace.NameForParsing will return a pseudo path for thing like Program Files folder. + // This function will get the real path using the KF_FLAG_DEFAULT_PATH flag. + // + // Don't link with this function unless only running on Vista or above. Use + // if Assigned(SHGetKnownFolderPath_MP) then + // SHGetKnownFolderPath_MP( ) + // else + // ..Get the path some other way + // + // *********************************************************************** +type + {$EXTERNALSYM SHGetKnownFolderPath} + SHGetKnownFolderPath = function(const rfid: TGUID; dwFlags: DWord; hToken: THandle; out ppszPath: PWideChar): HRESULT; + +const + {$EXTERNALSYM KF_FLAG_CREATE} + KF_FLAG_CREATE = $00008000; + {$EXTERNALSYM KF_FLAG_DONT_VERIFY} + KF_FLAG_DONT_VERIFY = $00004000; + {$EXTERNALSYM KF_FLAG_DONT_UNEXPAND} + KF_FLAG_DONT_UNEXPAND = $00002000; + {$EXTERNALSYM KF_FLAG_NO_ALIAS} + KF_FLAG_NO_ALIAS = $00001000; + {$EXTERNALSYM KF_FLAG_INIT} + KF_FLAG_INIT = $00000800; + {$EXTERNALSYM KF_FLAG_DEFAULT_PATH} + KF_FLAG_DEFAULT_PATH = $00000400; + {$EXTERNALSYM KF_FLAG_NOT_PARENT_RELATIVE} + KF_FLAG_NOT_PARENT_RELATIVE = $00000200; + {$EXTERNALSYM KF_FLAG_SIMPLE_IDLIST} + KF_FLAG_SIMPLE_IDLIST = $00000100; + + // legacy CSIDL value: CSIDL_NETWORK + {$EXTERNALSYM FOLDERID_NetworkFolder} + FOLDERID_NetworkFolder: TGUID = ( + D1:$D20BEEC4; D2:$5CA8; D3:$4905; D4:($AE,$3B,$BF,$25,$1E,$A0,$9B,$53)); + {$EXTERNALSYM FOLDERID_ComputerFolder} + FOLDERID_ComputerFolder: TGUID = ( + D1:$0AC0837C; D2:$BBF8; D3:$452A; D4:($85,$0D,$79,$D0,$8E,$66,$7C,$A7)); + {$EXTERNALSYM FOLDERID_InternetFolder} + FOLDERID_InternetFolder: TGUID = ( + D1:$4D9F7874; D2:$4E0C; D3:$4904; D4:($96,$7B,$40,$B0,$D2,$0C,$3E,$4B)); + {$EXTERNALSYM FOLDERID_ControlPanelFolder} + FOLDERID_ControlPanelFolder: TGUID = ( + D1:$82A74AEB; D2:$AEB4; D3:$465C; D4:($A0,$14,$D0,$97,$EE,$34,$6D,$63)); + {$EXTERNALSYM FOLDERID_PrintersFolder} + FOLDERID_PrintersFolder: TGUID = ( + D1:$76FC4E2D; D2:$D6AD; D3:$4519; D4:($A6,$63,$37,$BD,$56,$06,$81,$85)); + {$EXTERNALSYM FOLDERID_SyncManagerFolder} + FOLDERID_SyncManagerFolder: TGUID = ( + D1:$43668BF8; D2:$C14E; D3:$49B2; D4:($97,$C9,$74,$77,$84,$D7,$84,$B7)); + {$EXTERNALSYM FOLDERID_SyncSetupFolder} + FOLDERID_SyncSetupFolder: TGUID = ( + D1:$f214138; D2:$b1d3; D3:$4a90; D4:($bb,$a9,$27,$cb,$c0,$c5,$38,$9a)); + {$EXTERNALSYM FOLDERID_ConflictFolder} + FOLDERID_ConflictFolder: TGUID = ( + D1:$4bfefb45; D2:$347d; D3:$4006; D4:($a5,$be,$ac,$0c,$b0,$56,$71,$92)); + {$EXTERNALSYM FOLDERID_SyncResultsFolder} + FOLDERID_SyncResultsFolder: TGUID = ( + D1:$289a9a43; D2:$be44; D3:$4057; D4:($a4,$1b,$58,$7a,$76,$d7,$e7,$f9)); + {$EXTERNALSYM FOLDERID_RecycleBinFolder} + FOLDERID_RecycleBinFolder: TGUID = ( + D1:$B7534046; D2:$3ECB; D3:$4C18; D4:($BE,$4E,$64,$CD,$4C,$B7,$D6,$AC)); + {$EXTERNALSYM FOLDERID_ConnectionsFolder} + FOLDERID_ConnectionsFolder: TGUID = ( + D1:$6F0CD92B; D2:$2E97; D3:$45D1; D4:($88,$FF,$B0,$D1,$86,$B8,$DE,$DD)); + {$EXTERNALSYM FOLDERID_Fonts} + FOLDERID_Fonts: TGUID = ( + D1:$FD228CB7; D2:$AE11; D3:$4AE3; D4:($86,$4C,$16,$F3,$91,$0A,$B8,$FE)); + // legacy CSIDL value: CSIDL_DESKTOP + {$EXTERNALSYM FOLDERID_Desktop} + FOLDERID_Desktop: TGUID = ( + D1:$B4BFCC3A; D2:$DB2C; D3:$424C; D4:($B0,$29,$7F,$E9,$9A,$87,$C6,$41)); + {$EXTERNALSYM FOLDERID_Startup} + FOLDERID_Startup: TGUID = ( + D1:$B97D20BB; D2:$F46A; D3:$4C97; D4:($BA,$10,$5E,$36,$08,$43,$08,$54)); + {$EXTERNALSYM FOLDERID_Programs} + FOLDERID_Programs: TGUID = ( + D1:$A77F5D77; D2:$2E2B; D3:$44C3; D4:($A6,$A2,$AB,$A6,$01,$05,$4A,$51)); + {$EXTERNALSYM FOLDERID_StartMenu} + FOLDERID_StartMenu: TGUID = ( + D1:$625B53C3; D2:$AB48; D3:$4EC1; D4:($BA,$1F,$A1,$EF,$41,$46,$FC,$19)); + {$EXTERNALSYM FOLDERID_Recent} + FOLDERID_Recent: TGUID = ( + D1:$AE50C081; D2:$EBD2; D3:$438A; D4:($86,$55,$8A,$09,$2E,$34,$98,$7A)); + {$EXTERNALSYM FOLDERID_SendTo} + FOLDERID_SendTo: TGUID = ( + D1:$8983036C; D2:$27C0; D3:$404B; D4:($8F,$08,$10,$2D,$10,$DC,$FD,$74)); + {$EXTERNALSYM FOLDERID_Documents} + FOLDERID_Documents: TGUID = ( + D1:$FDD39AD0; D2:$238F; D3:$46AF; D4:($AD,$B4,$6C,$85,$48,$03,$69,$C7)); + {$EXTERNALSYM FOLDERID_Favorites} + FOLDERID_Favorites: TGUID = ( + D1:$1777F761; D2:$68AD; D3:$4D8A; D4:($87,$BD,$30,$B7,$59,$FA,$33,$DD)); + {$EXTERNALSYM FOLDERID_NetHood} + FOLDERID_NetHood: TGUID = ( + D1:$C5ABBF53; D2:$E17F; D3:$4121; D4:($89,$00,$86,$62,$6F,$C2,$C9,$73)); + {$EXTERNALSYM FOLDERID_PrintHood} + FOLDERID_PrintHood: TGUID = ( + D1:$9274BD8D; D2:$CFD1; D3:$41C3; D4:($B3,$5E,$B1,$3F,$55,$A7,$58,$F4)); + {$EXTERNALSYM FOLDERID_Templates} + FOLDERID_Templates: TGUID = ( + D1:$A63293E8; D2:$664E; D3:$48DB; D4:($A0,$79,$DF,$75,$9E,$05,$09,$F7)); + {$EXTERNALSYM FOLDERID_CommonStartup} + FOLDERID_CommonStartup: TGUID = ( + D1:$82A5EA35; D2:$D9CD; D3:$47C5; D4:($96,$29,$E1,$5D,$2F,$71,$4E,$6E)); + {$EXTERNALSYM FOLDERID_CommonPrograms} + FOLDERID_CommonPrograms: TGUID = ( + D1:$0139D44E; D2:$6AFE; D3:$49F2; D4:($86,$90,$3D,$AF,$CA,$E6,$FF,$B8)); + {$EXTERNALSYM FOLDERID_CommonStartMenu} + FOLDERID_CommonStartMenu: TGUID = ( + D1:$A4115719; D2:$D62E; D3:$491D; D4:($AA,$7C,$E7,$4B,$8B,$E3,$B0,$67)); + {$EXTERNALSYM FOLDERID_PublicDesktop} + FOLDERID_PublicDesktop: TGUID = ( + D1:$C4AA340D; D2:$F20F; D3:$4863; D4:($AF,$EF,$F8,$7E,$F2,$E6,$BA,$25)); + {$EXTERNALSYM FOLDERID_ProgramData} + FOLDERID_ProgramData: TGUID = ( + D1:$62AB5D82; D2:$FDC1; D3:$4DC3; D4:($A9,$DD,$07,$0D,$1D,$49,$5D,$97)); + {$EXTERNALSYM FOLDERID_CommonTemplates} + FOLDERID_CommonTemplates: TGUID = ( + D1:$B94237E7; D2:$57AC; D3:$4347; D4:($91,$51,$B0,$8C,$6C,$32,$D1,$F7)); + {$EXTERNALSYM FOLDERID_PublicDocuments} + FOLDERID_PublicDocuments: TGUID = ( + D1:$ED4824AF; D2:$DCE4; D3:$45A8; D4:($81,$E2,$FC,$79,$65,$08,$36,$34)); + {$EXTERNALSYM FOLDERID_RoamingAppData} + FOLDERID_RoamingAppData: TGUID = ( + D1:$3EB685DB; D2:$65F9; D3:$4CF6; D4:($A0,$3A,$E3,$EF,$65,$72,$9F,$3D)); + {$EXTERNALSYM FOLDERID_LocalAppData} + FOLDERID_LocalAppData: TGUID = ( + D1:$F1B32785; D2:$6FBA; D3:$4FCF; D4:($9D,$55,$7B,$8E,$7F,$15,$70,$91)); + {$EXTERNALSYM FOLDERID_LocalAppDataLow} + FOLDERID_LocalAppDataLow: TGUID = ( + D1:$A520A1A4; D2:$1780; D3:$4FF6; D4:($BD,$18,$16,$73,$43,$C5,$AF,$16)); + {$EXTERNALSYM FOLDERID_InternetCache} + FOLDERID_InternetCache: TGUID = ( + D1:$352481E8; D2:$33BE; D3:$4251; D4:($BA,$85,$60,$07,$CA,$ED,$CF,$9D)); + {$EXTERNALSYM FOLDERID_Cookies} + FOLDERID_Cookies: TGUID = ( + D1:$2B0F765D; D2:$C0E9; D3:$4171; D4:($90,$8E,$08,$A6,$11,$B8,$4F,$F6)); + {$EXTERNALSYM FOLDERID_History} + FOLDERID_History: TGUID = ( + D1:$D9DC8A3B; D2:$B784; D3:$432E; D4:($A7,$81,$5A,$11,$30,$A7,$59,$63)); + {$EXTERNALSYM FOLDERID_System} + FOLDERID_System: TGUID = ( + D1:$1AC14E77; D2:$02E7; D3:$4E5D; D4:($B7,$44,$2E,$B1,$AE,$51,$98,$B7)); + {$EXTERNALSYM FOLDERID_SystemX86} + FOLDERID_SystemX86: TGUID = ( + D1:$D65231B0; D2:$B2F1; D3:$4857; D4:($A4,$CE,$A8,$E7,$C6,$EA,$7D,$27)); + {$EXTERNALSYM FOLDERID_Windows} + FOLDERID_Windows: TGUID = ( + D1:$F38BF404; D2:$1D43; D3:$42F2; D4:($93,$05,$67,$DE,$0B,$28,$FC,$23)); + {$EXTERNALSYM FOLDERID_Profile} + FOLDERID_Profile: TGUID = ( + D1:$5E6C858F; D2:$0E22; D3:$4760; D4:($9A,$FE,$EA,$33,$17,$B6,$71,$73)); + {$EXTERNALSYM FOLDERID_Pictures} + FOLDERID_Pictures: TGUID = ( + D1:$33E28130; D2:$4E1E; D3:$4676; D4:($83,$5A,$98,$39,$5C,$3B,$C3,$BB)); + {$EXTERNALSYM FOLDERID_ProgramFilesX86} + FOLDERID_ProgramFilesX86: TGUID = ( + D1:$7C5A40EF; D2:$A0FB; D3:$4BFC; D4:($87,$4A,$C0,$F2,$E0,$B9,$FA,$8E)); + {$EXTERNALSYM FOLDERID_ProgramFilesCommonX86} + FOLDERID_ProgramFilesCommonX86: TGUID = ( + D1:$DE974D24; D2:$D9C6; D3:$4D3E; D4:($BF,$91,$F4,$45,$51,$20,$B9,$17)); + {$EXTERNALSYM FOLDERID_ProgramFilesX64} + FOLDERID_ProgramFilesX64: TGUID = ( + D1:$6d809377; D2:$6af0; D3:$444b; D4:($89,$57,$a3,$77,$3f,$02,$20,$0e)); + {$EXTERNALSYM FOLDERID_ProgramFilesCommonX64} + FOLDERID_ProgramFilesCommonX64: TGUID = ( + D1:$6365d5a7; D2:$f0d; D3:$45e5; D4:($87,$f6,$d,$a5,$6b,$6a,$4f,$7d)); + {$EXTERNALSYM FOLDERID_ProgramFiles} + FOLDERID_ProgramFiles: TGUID = ( + D1:$905e63b6; D2:$c1bf; D3:$494e; D4:($b2,$9c,$65,$b7,$32,$d3,$d2,$1a)); + {$EXTERNALSYM FOLDERID_ProgramFilesCommon} + FOLDERID_ProgramFilesCommon: TGUID = ( + D1:$F7F1ED05; D2:$9F6D; D3:$47A2; D4:($AA,$AE,$29,$D3,$17,$C6,$F0,$66)); + {$EXTERNALSYM FOLDERID_AdminTools} + FOLDERID_AdminTools: TGUID = ( + D1:$724EF170; D2:$A42D; D3:$4FEF; D4:($9F,$26,$B6,$0E,$84,$6F,$BA,$4F)); + {$EXTERNALSYM FOLDERID_CommonAdminTools} + FOLDERID_CommonAdminTools: TGUID = ( + D1:$D0384E7D; D2:$BAC3; D3:$4797; D4:($8F,$14,$CB,$A2,$29,$B3,$92,$B5)); + {$EXTERNALSYM FOLDERID_Music} + FOLDERID_Music: TGUID = ( + D1:$4BD8D571; D2:$6D19; D3:$48D3; D4:($BE,$97,$42,$22,$20,$08,$0E,$43)); + {$EXTERNALSYM FOLDERID_Videos} + FOLDERID_Videos: TGUID = ( + D1:$18989B1D; D2:$99B5; D3:$455B; D4:($84,$1C,$AB,$7C,$74,$E4,$DD,$FC)); + {$EXTERNALSYM FOLDERID_PublicPictures} + FOLDERID_PublicPictures: TGUID = ( + D1:$B6EBFB86; D2:$6907; D3:$413C; D4:($9A,$F7,$4F,$C2,$AB,$F0,$7C,$C5)); + {$EXTERNALSYM FOLDERID_PublicMusic} + FOLDERID_PublicMusic: TGUID = ( + D1:$3214FAB5; D2:$9757; D3:$4298; D4:($BB,$61,$92,$A9,$DE,$AA,$44,$FF)); + {$EXTERNALSYM FOLDERID_PublicVideos} + FOLDERID_PublicVideos: TGUID = ( + D1:$2400183A; D2:$6185; D3:$49FB; D4:($A2,$D8,$4A,$39,$2A,$60,$2B,$A3)); + {$EXTERNALSYM FOLDERID_ResourceDir} + FOLDERID_ResourceDir: TGUID = ( + D1:$8AD10C31; D2:$2ADB; D3:$4296; D4:($A8,$F7,$E4,$70,$12,$32,$C9,$72)); + {$EXTERNALSYM FOLDERID_LocalizedResourcesDir} + FOLDERID_LocalizedResourcesDir: TGUID = ( + D1:$2A00375E; D2:$224C; D3:$49DE; D4:($B8,$D1,$44,$0D,$F7,$EF,$3D,$DC)); + {$EXTERNALSYM FOLDERID_CommonOEMLinks} + FOLDERID_CommonOEMLinks: TGUID = ( + D1:$C1BAE2D0; D2:$10DF; D3:$4334; D4:($BE,$DD,$7A,$A2,$0B,$22,$7A,$9D)); + {$EXTERNALSYM FOLDERID_CDBurning} + FOLDERID_CDBurning: TGUID = ( + D1:$9E52AB10; D2:$F80D; D3:$49DF; D4:($AC,$B8,$43,$30,$F5,$68,$78,$55)); + {$EXTERNALSYM FOLDERID_UserProfiles} + FOLDERID_UserProfiles: TGUID = ( + D1:$0762D272; D2:$C50A; D3:$4BB0; D4:($A3,$82,$69,$7D,$CD,$72,$9B,$80)); + {$EXTERNALSYM FOLDERID_Playlists} + FOLDERID_Playlists: TGUID = ( + D1:$DE92C1C7; D2:$837F; D3:$4F69; D4:($A3,$BB,$86,$E6,$31,$20,$4A,$23)); + {$EXTERNALSYM FOLDERID_SamplePlaylists} + FOLDERID_SamplePlaylists: TGUID = ( + D1:$15CA69B3; D2:$30EE; D3:$49C1; D4:($AC,$E1,$6B,$5E,$C3,$72,$AF,$B5)); + {$EXTERNALSYM FOLDERID_SampleMusic} + FOLDERID_SampleMusic: TGUID = ( + D1:$B250C668; D2:$F57D; D3:$4EE1; D4:($A6,$3C,$29,$0E,$E7,$D1,$AA,$1F)); + {$EXTERNALSYM FOLDERID_SamplePictures} + FOLDERID_SamplePictures: TGUID = ( + D1:$C4900540; D2:$2379; D3:$4C75; D4:($84,$4B,$64,$E6,$FA,$F8,$71,$6B)); + {$EXTERNALSYM FOLDERID_SampleVideos} + FOLDERID_SampleVideos: TGUID = ( + D1:$859EAD94; D2:$2E85; D3:$48AD; D4:($A7,$1A,$09,$69,$CB,$56,$A6,$CD)); + {$EXTERNALSYM FOLDERID_PhotoAlbums} + FOLDERID_PhotoAlbums: TGUID = ( + D1:$69D2CF90; D2:$FC33; D3:$4FB7; D4:($9A,$0C,$EB,$B0,$F0,$FC,$B4,$3C)); + {$EXTERNALSYM FOLDERID_Public} + FOLDERID_Public: TGUID = ( + D1:$DFDF76A2; D2:$C82A; D3:$4D63; D4:($90,$6A,$56,$44,$AC,$45,$73,$85)); + {$EXTERNALSYM FOLDERID_ChangeRemovePrograms} + FOLDERID_ChangeRemovePrograms: TGUID = ( + D1:$df7266ac; D2:$9274; D3:$4867; D4:($8d,$55,$3b,$d6,$61,$de,$87,$2d)); + {$EXTERNALSYM FOLDERID_AppUpdates} + FOLDERID_AppUpdates: TGUID = ( + D1:$a305ce99; D2:$f527; D3:$492b; D4:($8b,$1a,$7e,$76,$fa,$98,$d6,$e4)); + {$EXTERNALSYM FOLDERID_AddNewPrograms} + FOLDERID_AddNewPrograms: TGUID = ( + D1:$de61d971; D2:$5ebc; D3:$4f02; D4:($a3,$a9,$6c,$82,$89,$5e,$5c,$04)); + {$EXTERNALSYM FOLDERID_Downloads} + FOLDERID_Downloads: TGUID = ( + D1:$374de290; D2:$123f; D3:$4565; D4:($91,$64,$39,$c4,$92,$5e,$46,$7b)); + {$EXTERNALSYM FOLDERID_PublicDownloads} + FOLDERID_PublicDownloads: TGUID = ( + D1:$3d644c9b; D2:$1fb8; D3:$4f30; D4:($9b,$45,$f6,$70,$23,$5f,$79,$c0)); + {$EXTERNALSYM FOLDERID_SavedSearches} + FOLDERID_SavedSearches: TGUID = ( + D1:$7d1d3a04; D2:$debb; D3:$4115; D4:($95,$cf,$2f,$29,$da,$29,$20,$da)); + {$EXTERNALSYM FOLDERID_QuickLaunch} + FOLDERID_QuickLaunch: TGUID = ( + D1:$52a4f021; D2:$7b75; D3:$7b75; D4:($9f,$6b,$4b,$87,$a2,$10,$bc,$8f)); + {$EXTERNALSYM FOLDERID_Contacts} + FOLDERID_Contacts: TGUID = ( + D1:$56784854; D2:$c6cb; D3:$462b; D4:($81,$69,$88,$e3,$50,$ac,$b8,$82)); + {$EXTERNALSYM FOLDERID_SidebarParts} + FOLDERID_SidebarParts: TGUID = ( + D1:$a75d362e; D2:$50fc; D3:$4fb7; D4:($ac,$2c,$a8,$be,$aa,$31,$44,$93)); + {$EXTERNALSYM FOLDERID_SidebarDefaultParts} + FOLDERID_SidebarDefaultParts: TGUID = ( + D1:$7b396e54; D2:$9ec5; D3:$4300; D4:($be,$a,$24,$82,$eb,$ae,$1a,$26)); + {$EXTERNALSYM FOLDERID_TreeProperties} + FOLDERID_TreeProperties: TGUID = ( + D1:$5b3749ad; D2:$b49f; D3:$49c1; D4:($83,$eb,$15,$37,$0f,$bd,$48,$82)); + {$EXTERNALSYM FOLDERID_PublicGameTasks} + FOLDERID_PublicGameTasks: TGUID = ( + D1:$debf2536; D2:$e1a8; D3:$4c59; D4:($b6,$a2,$41,$45,$86,$47,$6a,$ea)); + {$EXTERNALSYM FOLDERID_GameTasks} + FOLDERID_GameTasks: TGUID = ( + D1:$54fae61; D2:$4dd8; D3:$4787; D4:($80,$b6,$9,$2,$20,$c4,$b7,$0)); + {$EXTERNALSYM FOLDERID_SavedGames} + FOLDERID_SavedGames: TGUID = ( + D1:$4c5c32ff; D2:$bb9d; D3:$43b0; D4:($b5,$b4,$2d,$72,$e5,$4e,$aa,$a4)); + {$EXTERNALSYM FOLDERID_Games} + FOLDERID_Games: TGUID = ( + D1:$cac52c1a; D2:$b53d; D3:$4edc; D4:($92,$d7,$6b,$2e,$8a,$c1,$94,$34)); + {$EXTERNALSYM FOLDERID_RecordedTV} + FOLDERID_RecordedTV: TGUID = ( + D1:$bd85e001; D2:$112e; D3:$431e; D4:($98,$3b,$7b,$15,$ac,$09,$ff,$f1)); + {$EXTERNALSYM FOLDERID_SEARCH_MAPI} + FOLDERID_SEARCH_MAPI: TGUID = ( + D1:$98ec0e18; D2:$2098; D3:$4d44; D4:($86,$44,$66,$97,$93,$15,$a2,$81)); + {$EXTERNALSYM FOLDERID_SEARCH_CSC} + FOLDERID_SEARCH_CSC: TGUID = ( + D1:$ee32e446; D2:$31ca; D3:$4aba; D4:($81,$4f,$a5,$eb,$d2,$fd,$6d,$5e)); + {$EXTERNALSYM FOLDERID_Links} + FOLDERID_Links: TGUID = ( + D1:$bfb9d5e0; D2:$c6a9; D3:$404c; D4:($b2,$b2,$ae,$6d,$b6,$af,$49,$68)); + {$EXTERNALSYM FOLDERID_UsersFiles} + FOLDERID_UsersFiles: TGUID = ( + D1:$f3ce0f7c; D2:$4901; D3:$4acc; D4:($86,$48,$d5,$d4,$4b,$04,$ef,$8f)); + {$EXTERNALSYM FOLDERID_SearchHome} + FOLDERID_SearchHome: TGUID = ( + D1:$190337d1; D2:$b8ca; D3:$4121; D4:($a6,$39,$6d,$47,$2d,$16,$97,$2a)); + {$EXTERNALSYM FOLDERID_OriginalImages} + FOLDERID_OriginalImages: TGUID = ( + D1:$2C36C0AA; D2:$5812; D3:$4b87; D4:($bf,$d0,$4c,$d0,$df,$b1,$9b,$39)); + +type + TFindFirstFileExW = function(lpFileName: PWideChar; fInfoLevelId: DWORD; var lpFindFileData: TWIN32FindDataW; fSearchOp: DWORD; lpSearchFilter: Pointer; dwAdditionalFlags: DWORD): THandle; stdcall; + TFindFirstFileExA = function(lpFileName: PChar; fInfoLevelId: DWORD; var lpFindFileData: TWIN32FindDataW; fSearchOp: DWORD; lpSearchFilter: Pointer; dwAdditionalFlags: DWORD): THandle; stdcall; + +const + // _FINDEX_INFO_LEVELS enumerations + {$EXTERNALSYM FINDEX_INFO_STANDARD} + FINDEX_INFO_STANDARD = 0; + {$EXTERNALSYM FINDEX_INFO_MAX_INFO_LEVEL} + FINDEX_INFO_MAX_INFO_LEVEL = 1; + + // _FINDEX_SEARCH_OPS enumerations + {$EXTERNALSYM FINDEX_SEARCH_NAMEMATCH} + FINDEX_SEARCH_NAMEMATCH = 0; + {$EXTERNALSYM FINDEX_SEARCH_LIMIT_TO_DIRECTORIES} + FINDEX_SEARCH_LIMIT_TO_DIRECTORIES = 1; + {$EXTERNALSYM FINDEX_SEARCH_LIMIT_TO_DEVICES} + FINDEX_SEARCH_LIMIT_TO_DEVICES = 2; + {$EXTERNALSYM FINDEX_SEARCH_MAX_SEARCH_OP} + FINDEX_SEARCH_MAX_SEARCH_OP = 3; + + {$EXTERNALSYM FIND_FIRST_EX_CASE_SENSITIVE} + FIND_FIRST_EX_CASE_SENSITIVE = $0001; + + +{$EXTERNALSYM CTL_CODE} +function CTL_CODE(DeviceType, AFunction, Method, Access: Integer): Integer; + + +implementation + +function CTL_CODE(DeviceType, AFunction, Method, Access: Integer): Integer; +begin + Result:=(DeviceType SHL 16) or (Access SHL 14) or (AFunction SHL 2) or Method; +end; + +end. + + + + diff --git a/official/1.7.0/Common Library/Source/MPShellUtilities.hpp b/official/1.7.0/Common Library/Source/MPShellUtilities.hpp new file mode 100644 index 0000000..d72f4bc --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPShellUtilities.hpp @@ -0,0 +1,1312 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpshellutilities.pas' rev: 11.00 + +#ifndef MpshellutilitiesHPP +#define MpshellutilitiesHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpshellutilities +{ +//-- type declarations ------------------------------------------------------- +#pragma option push -b- +enum TDefaultFolderIcon { diNormalFolder, diOpenFolder, diUnknownFile, diLink, diMyDocuments }; +#pragma option pop + +#pragma option push -b- +enum TMPBrowseFlag { mpbfComputers, mpbfPrinters, mpbfDontGoBelowDomain, mpbfFileSysAncestors, mpbfFileSysFolder, mpbfIncludeFiles, mpbfNewStyleDialog, mpbfEditBox, mpbfIncludeURLs, mpbfSharable, mpbfMustExist }; +#pragma option pop + +typedef Set TMPBrowseFlags; + +#pragma option push -b- +enum TNamespaceState { nsFreePIDLOnDestroy, nsIsRecycleBin, nsRecycleBinChecked, nsOwnsParent, nsShellDetailsSupported, nsShellFolder2Supported, nsShellOverlaySupported, nsThreadedIconLoaded, nsThreadedIconLoading, nsThreadedImageLoaded, nsThreadedImageLoading, nsThreadedImageResizing, nsThreadedTileInfoLoaded, nsThreadedTileInfoLoading, nsIconIndexChanged }; +#pragma option pop + +typedef Set TNamespaceStates; + +typedef HRESULT __stdcall (*TSHLimitInputEdit)(HWND hWndEdit, _di_IShellFolder psf); + +typedef IShellDetailsBCB6 IVETShellDetails; +; + +#pragma option push -b- +enum MPShellUtilities__1 { scInFolderName, scNormalName, scParsedName, scSmallIcon, scSmallOpenIcon, scOverlayIndex, scCreationTime, scLastAccessTime, scLastWriteTime, scFileSize, scFileSizeKB, scFileSizeInt64, scFileType, scInvalidIDListData, scFileSystem, scFolder, scCanDelete, scCanRename, scGhosted, scCanCopy, scCanMove, scCanLink, scLink, scFileSysAncestor, scCompressed, scFileTimes, scSupportedColumns, scFolderSize, scVirtualHook, scHookedNamespace, scVirtualNamespace, scRootVirtualNamespace, scHardHookedNamespace, scDetailsOfCache, scBrowsable }; +#pragma option pop + +typedef Set TShellCache; + +#pragma option push -b- +enum MPShellUtilities__2 { caFileSystem, caFolder, caCanDelete, caCanRename, caGhosted, caCanCopy, caCanMove, caCanLink, caLink, caFileSysAncestor, caCompressed, caVirtualHook, caHookedNamespace, caVirtualNamespace, caRootVirtualNamespace, caHardHookedNamespace, caBrowsable }; +#pragma option pop + +typedef Set TCacheAttributes; + +#pragma option push -b- +enum TSHColumnState { csTypeString, csTypeInt, csTypeDate, csOnByDefault, csSlow, csExtended, csSecondaryUI, csHidden }; +#pragma option pop + +typedef Set TSHColumnStates; + +#pragma option push -b- +enum THotKeyModifier { hkmAlt, hkmControl, hkmExtendedKey, hkmShift }; +#pragma option pop + +typedef Set THotKeyModifiers; + +#pragma option push -b- +enum TCmdShow { swHide, swMaximize, swMinimize, swRestore, swShow, swShowDefault, swShowMinimized, swShowMinNoActive, swShowNA, swShowNoActive, swShowNormal }; +#pragma option pop + +#pragma option push -b- +enum TIconSize { icSmall, icLarge }; +#pragma option pop + +#pragma option push -b- +enum TFileSort { fsFileType, fsFileExtension }; +#pragma option pop + +#pragma option push -b- +enum TObjectDescription { odError, odRootRegistered, odFile, odDirectory, odUnidentifiedFileItem, od35Floppy, od525Floppy, odRemovableDisk, odFixedDrive, odMappedDrive, odCDROMDrive, odRAMDisk, odUnidentifiedDevice, odNetworkDomain, odNetworkServer, odNetworkShare, odNetworkRestOfNet, odUnidentifiedNetwork, odComputerImaging, odComputerAudio, odShareDocuments }; +#pragma option pop + +#pragma option push -b- +enum TDetailsColumnTitleInfo { tiCenterAlign, tiLeftAlign, tiRightAlign, tiContainsImage }; +#pragma option pop + +#pragma option push -b- +enum MPShellUtilities__3 { foFolders, foNonFolders, foHidden, foShareable, foNetworkPrinters }; +#pragma option pop + +typedef Set TFileObjects; + +typedef DynamicArray TSHColumnIDArray; + +typedef DynamicArray TGUIDArray; + +typedef DynamicArray TWideStringArray; + +typedef DynamicArray TCategoryArray; + +#pragma pack(push,4) +struct TCategoryInfo +{ + +public: + WideString Description; + bool Collapsed; + bool Hidden; +} ; +#pragma pack(pop) + +typedef DynamicArray TCategoryInfoArray; + +typedef DynamicArray TBooleanArray; + +#pragma pack(push,4) +struct TCategoriesInfo +{ + +public: + DynamicArray ColumnID; + DynamicArray CatGUID; + DynamicArray CategoryNames; + DynamicArray Categories; + DynamicArray CanCatatorize; + int DefaultColumn; + int CategoryCount; +} ; +#pragma pack(pop) + +#pragma option push -b- +enum TBtyeSize { bsKiloBytes, bsMegaBytes, bsGigiBytes, bsTereBytes, bsCustom }; +#pragma option pop + +typedef DynamicArray TMenuItemIDArray; + +typedef DynamicArray TVisibleColumnIndexArray; + +#pragma option push -b- +enum TDetailsOfCacheFlag { docCaptionValid, docStatesValid, docThreadLoading, docThreadLoaded }; +#pragma option pop + +typedef Set TDetailsOfCacheFlags; + +struct TDetailsOfCacheRec; +typedef TDetailsOfCacheRec *PDetailsOfCacheRec; + +#pragma pack(push,1) +struct TDetailsOfCacheRec +{ + +public: + TDetailsOfCacheFlags Cached; + WideString Caption; + TSHColumnStates States; +} ; +#pragma pack(pop) + +typedef DynamicArray TDetailsOfCacheArray; + +#pragma pack(push,1) +struct TCacheData +{ + +public: + TCacheAttributes Attributes; + int SmallIcon; + int SmallOpenIcon; + WideString InFolderName; + WideString NormalName; + WideString ParsedName; + WideString CreationTime; + WideString LastAccessTime; + WideString LastWriteTime; + WideString FileSize; + WideString FileSizeKB; + WideString FileType; + __int64 FileSizeInt64; + int SupportedColumns; + __int64 FolderSize; + int OverlayIndex; + int OverlayIconIndex; + DynamicArray DetailsOfCache; +} ; +#pragma pack(pop) + +#pragma pack(push,1) +struct TShellCacheRec +{ + +public: + TShellCache ShellCacheFlags; + TCacheData Data; +} ; +#pragma pack(pop) + +struct TSHGetFileInfoRec; +typedef TSHGetFileInfoRec *PSHGetFileInfoRec; + +#pragma pack(push,1) +struct TSHGetFileInfoRec +{ + +public: + WideString FileType; +} ; +#pragma pack(pop) + +#pragma option push -b- +enum TShellContextMenuFlag { cmfCanRename, cmfDefaultOnly, cmfExplore, cmfExtendedVerbs, cmfIncludeStatic, cmfItemMenu, cmfNoDefault, cmfNormal, cmfNoVerbs, cmfVerbsOnly }; +#pragma option pop + +typedef Set TShellContextMenuFlags; + +class DELPHICLASS TNamespace; +typedef DynamicArray TNamespaceArray; + +class DELPHICLASS TCommonShellContextMenu; +typedef void __fastcall (__closure *TCommonShellMenuEvent)(TCommonShellContextMenu* Sender); + +typedef void __fastcall (__closure *TCommonShellMenuInvokeEvent)(TCommonShellContextMenu* Sender, Menus::TMenuItem* MenuItem, Shlobj::PCMInvokeCommandInfo InvokeInfo, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuMergeEvent)(TCommonShellContextMenu* Sender, HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + +typedef void __fastcall (__closure *TCommonShellMenuItemEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuNewItemEvent)(TCommonShellContextMenu* Sender, TNamespace* NS); + +typedef void __fastcall (__closure *TCommonShellMenuCopyEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuCreateShortcutEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuCutEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuDeleteEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuNewFolderEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuPasteEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuPasteLinkEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuPasteShortCutEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +typedef void __fastcall (__closure *TCommonShellMenuProperitesEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled); + +class DELPHICLASS EVSTInvalidFileName; +class PASCALIMPLEMENTATION EVSTInvalidFileName : public Sysutils::Exception +{ + typedef Sysutils::Exception inherited; + +public: + #pragma option push -w-inl + /* Exception.Create */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg) : Sysutils::Exception(Msg) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateFmt */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateRes */ inline __fastcall EVSTInvalidFileName(int Ident)/* overload */ : Sysutils::Exception(Ident) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateResFmt */ inline __fastcall EVSTInvalidFileName(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */ : Sysutils::Exception(Ident, Args, Args_Size) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateHelp */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg, int AHelpContext) : Sysutils::Exception(Msg, AHelpContext) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateFmtHelp */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateResHelp */ inline __fastcall EVSTInvalidFileName(int Ident, int AHelpContext)/* overload */ : Sysutils::Exception(Ident, AHelpContext) { } + #pragma option pop + #pragma option push -w-inl + /* Exception.CreateResFmtHelp */ inline __fastcall EVSTInvalidFileName(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */ : Sysutils::Exception(ResStringRec, Args, Args_Size, AHelpContext) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~EVSTInvalidFileName(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TStreamableClass; +class PASCALIMPLEMENTATION TStreamableClass : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + int FStreamVersion; + +public: + __fastcall TStreamableClass(void); + virtual void __fastcall LoadFromFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x0, bool ReadVerFromStream = false); + virtual void __fastcall SaveToFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x0, bool WriteVerToStream = false); + __property int StreamVersion = {read=FStreamVersion, nodefault}; +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TStreamableClass(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TStreamableList; +class PASCALIMPLEMENTATION TStreamableList : public Classes::TList +{ + typedef Classes::TList inherited; + +private: + int FStreamVersion; + +public: + __fastcall TStreamableList(void); + virtual void __fastcall LoadFromFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x0, bool ReadVerFromStream = false); + virtual void __fastcall SaveToFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x0, bool WriteVerToStream = false); + __property int StreamVersion = {read=FStreamVersion, nodefault}; +public: + #pragma option push -w-inl + /* TList.Destroy */ inline __fastcall virtual ~TStreamableList(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TReferenceCounted; +class PASCALIMPLEMENTATION TReferenceCounted : public System::TObject +{ + typedef System::TObject inherited; + +protected: + int FRefCount; + +public: + void __fastcall AddRef(void); + void __fastcall Release(void); +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TReferenceCounted(void) : System::TObject() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TReferenceCounted(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TReferenceCountedList; +class PASCALIMPLEMENTATION TReferenceCountedList : public Classes::TList +{ + typedef Classes::TList inherited; + +protected: + int FRefCount; + +public: + void __fastcall AddRef(void); + void __fastcall Release(void); + __property int RefCount = {read=FRefCount, nodefault}; +public: + #pragma option push -w-inl + /* TList.Destroy */ inline __fastcall virtual ~TReferenceCountedList(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TReferenceCountedList(void) : Classes::TList() { } + #pragma option pop + +}; + + +class DELPHICLASS TExtractImage; +class PASCALIMPLEMENTATION TExtractImage : public System::TObject +{ + typedef System::TObject inherited; + +private: + unsigned FFlags; + unsigned FPriority; + unsigned FHeight; + unsigned FWidth; + unsigned FColorDepth; + Mpshelltypes::_di_IExtractImage FExtractImageInterface; + Mpshelltypes::_di_IExtractImage2 FExtractImage2Interface; + TNamespace* FOwner; + bool FPathExtracted; + Graphics::TBitmap* __fastcall GetImage(void); + WideString __fastcall GetImagePath(); + Mpshelltypes::_di_IExtractImage __fastcall GetExtractImageInterface(); + Mpshelltypes::_di_IExtractImage2 __fastcall GetExtractImageInterface2(); + +protected: + __property bool PathExtracted = {read=FPathExtracted, write=FPathExtracted, nodefault}; + +public: + __fastcall TExtractImage(void); + __property unsigned ColorDepth = {read=FColorDepth, write=FColorDepth, nodefault}; + __property WideString ImagePath = {read=GetImagePath}; + __property Graphics::TBitmap* Image = {read=GetImage}; + __property Mpshelltypes::_di_IExtractImage ExtractImageInterface = {read=GetExtractImageInterface}; + __property Mpshelltypes::_di_IExtractImage2 ExtractImage2Interface = {read=GetExtractImageInterface2}; + __property unsigned Flags = {read=FFlags, write=FFlags, nodefault}; + __property unsigned Height = {read=FHeight, write=FHeight, nodefault}; + __property TNamespace* Owner = {read=FOwner, write=FOwner}; + __property unsigned Priority = {read=FPriority, nodefault}; + __property unsigned Width = {read=FWidth, write=FWidth, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TExtractImage(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TVirtualShellLink; +class PASCALIMPLEMENTATION TVirtualShellLink : public Classes::TComponent +{ + typedef Classes::TComponent inherited; + +private: + WideString FFileName; + _di_IShellLinkA FShellLinkA; + _di_IShellLinkW FShellLinkW; + int FIconIndex; + _ITEMIDLIST *FTargetIDList; + TCmdShow FShowCmd; + THotKeyModifiers FHotKeyModifiers; + WideString FTargetPath; + WideString FArguments; + WideString FDescription; + WideString FWorkingDirectory; + WideString FIconLocation; + Word FHotKey; + bool FSilentWrite; + _di_IShellLinkA __fastcall GetShellLinkAInterface(); + _di_IShellLinkW __fastcall GetShellLinkWInterface(); + +protected: + void __fastcall FreeTargetIDList(void); + +public: + __fastcall virtual ~TVirtualShellLink(void); + bool __fastcall ReadLink(WideString LinkFileName); + bool __fastcall WriteLink(WideString LinkFileName); + __property WideString Arguments = {read=FArguments, write=FArguments}; + __property WideString Description = {read=FDescription, write=FDescription}; + __property WideString FileName = {read=FFileName, write=FFileName}; + __property Word HotKey = {read=FHotKey, write=FHotKey, nodefault}; + __property THotKeyModifiers HotKeyModifiers = {read=FHotKeyModifiers, write=FHotKeyModifiers, nodefault}; + __property int IconIndex = {read=FIconIndex, write=FIconIndex, nodefault}; + __property WideString IconLocation = {read=FIconLocation, write=FIconLocation}; + __property Shlobj::PItemIDList TargetIDList = {read=FTargetIDList, write=FTargetIDList}; + __property _di_IShellLinkA ShellLinkAInterface = {read=GetShellLinkAInterface}; + __property _di_IShellLinkW ShellLinkWInterface = {read=GetShellLinkWInterface}; + __property TCmdShow ShowCmd = {read=FShowCmd, write=FShowCmd, nodefault}; + __property bool SilentWrite = {read=FSilentWrite, write=FSilentWrite, nodefault}; + __property WideString TargetPath = {read=FTargetPath, write=FTargetPath}; + __property WideString WorkingDirectory = {read=FWorkingDirectory, write=FWorkingDirectory}; +public: + #pragma option push -w-inl + /* TComponent.Create */ inline __fastcall virtual TVirtualShellLink(Classes::TComponent* AOwner) : Classes::TComponent(AOwner) { } + #pragma option pop + +}; + + +class DELPHICLASS TShellSortHelper; +class PASCALIMPLEMENTATION TShellSortHelper : public System::TObject +{ + typedef System::TObject inherited; + +private: + TFileSort FFileSort; + +public: + virtual int __fastcall CompareIDSort(int SortColumn, TNamespace* NS1, TNamespace* NS2); + virtual int __fastcall DiscriminateFolders(TNamespace* NS1, TNamespace* NS2); + virtual int __fastcall SortFileSize(TNamespace* NS1, TNamespace* NS2); + virtual int __fastcall SortFileTime(const _FILETIME &FT1, const _FILETIME &FT2, TNamespace* NS1, TNamespace* NS2); + virtual int __fastcall SortString(WideString S1, WideString S2, TNamespace* NS1, TNamespace* NS2); + virtual int __fastcall SortType(TNamespace* NS1, TNamespace* NS2); + __property TFileSort FileSort = {read=FFileSort, write=FFileSort, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TShellSortHelper(void) : System::TObject() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TShellSortHelper(void) { } + #pragma option pop + +}; + + +typedef bool __fastcall (__closure *TEnumFolderCallback)(HWND MessageWnd, Shlobj::PItemIDList APIDL, TNamespace* AParent, void * Data, bool &Terminate); + +typedef void __fastcall (__closure *TContextMenuCmdCallback)(TNamespace* Namespace, WideString Verb, int MenuItemID, bool &Handled); + +typedef void __fastcall (__closure *TContextMenuShowCallback)(TNamespace* Namespace, HMENU Menu, bool &Allow); + +typedef void __fastcall (__closure *TContextMenuAfterCmdCallback)(TNamespace* Namespace, WideString Verb, int MenuItemID, bool Successful); + +class PASCALIMPLEMENTATION TNamespace : public System::TObject +{ + typedef System::TObject inherited; + +private: + _ITEMIDLIST *FAbsolutePIDL; + TCategoriesInfo FCatInfo; + Mpshelltypes::_di_IContextMenu FCurrentContextMenu; + Mpshelltypes::_di_IContextMenu2 FCurrentContextMenu2; + _di_IDropTarget FDropTargetInterface; + TExtractImage* FExtractImage; + Graphics::TBitmap* FImage; + int FNamespaceID; + Classes::TWndMethod FOldWndProcForContextMenu; + TNamespace* FParent; + _ITEMIDLIST *FRelativePIDL; + Mpshelltypes::_di_IShellDetailsBCB6 FShellDetailsInterface; + _di_IShellFolder FShellFolder; + _di_IShellFolder2 FShellFolder2; + _di_IShellIcon FShellIconInterface; + TVirtualShellLink* FShellLink; + TSHGetFileInfoRec *FSHGetFileInfoRec; + TNamespaceStates FStates; + int FTag; + DynamicArray FTileDetail; + _di_IQueryInfo FQueryInfoInterface; + _WIN32_FIND_DATAA *FWin32FindDataA; + _WIN32_FIND_DATAW *FWin32FindDataW; + bool FSystemIsSuperHidden; + Mpshelltypes::_di_IShellIconOverlay FShellIconOverlayInterface; + Mpshelltypes::_di_ICategoryProvider FCategoryProviderInterface; + Mpshelltypes::_di_IBrowserFrameOptions FBrowserFrameOptionsInterface; + Mpshelltypes::_di_IQueryAssociations FQueryAssociationsInterface; + int __fastcall GetCategoryCount(void); + TNamespace* __fastcall GetParent(void); + +protected: + TShellCacheRec FShellCache; + virtual bool __fastcall GetArchive(void); + virtual WideString __fastcall GetAttributesString(); + virtual bool __fastcall GetBrowsable(void); + virtual Mpshelltypes::_di_IBrowserFrameOptions __fastcall GetBrowserFrameOptionsInterface(); + virtual bool __fastcall GetCanCopy(void); + virtual bool __fastcall GetCanDelete(void); + virtual bool __fastcall GetCanLink(void); + virtual bool __fastcall GetCanMoniker(void); + virtual bool __fastcall GetCanMove(void); + virtual bool __fastcall GetCanRename(void); + virtual Mpshelltypes::_di_ICategoryProvider __fastcall GetCategoryProviderInterface(); + virtual GUID __fastcall GetCLSID(); + virtual bool __fastcall GetCompressed(void); + virtual Mpshelltypes::_di_IContextMenu2 __fastcall GetContextMenu2Interface(); + virtual Mpshelltypes::_di_IContextMenu3 __fastcall GetContextMenu3Interface(); + virtual Mpshelltypes::_di_IContextMenu __fastcall GetContextMenuInterface(); + virtual System::TDateTime __fastcall GetCreationDateTime(void); + virtual WideString __fastcall GetCreationTime(); + virtual _FILETIME __fastcall GetCreationTimeRaw(); + virtual _di_IDataObject __fastcall GetDataObjectInterface(); + virtual TObjectDescription __fastcall GetDescription(void); + virtual bool __fastcall GetDetailsSupported(void); + virtual bool __fastcall GetDirectory(void); + virtual bool __fastcall GetDropTarget(void); + virtual _di_IDropTarget __fastcall GetDropTargetInterface(); + virtual bool __fastcall GetEncrypted(void); + virtual WideString __fastcall GetExtension(); + virtual _di_IExtractIconA __fastcall GetExtractIconAInterface(); + virtual _di_IExtractIconW __fastcall GetExtractIconWInterface(); + virtual TExtractImage* __fastcall GetExtractImage(void); + virtual WideString __fastcall GetFileName(); + virtual bool __fastcall GetFileSysAncestor(void); + virtual bool __fastcall GetFileSystem(void); + virtual WideString __fastcall GetFileType(); + virtual bool __fastcall GetFolder(void); + virtual bool __fastcall GetFreePIDLOnDestroy(void); + virtual bool __fastcall GetGhosted(void); + virtual bool __fastcall GetHasPropSheet(void); + virtual bool __fastcall GetHasStorage(void); + virtual bool __fastcall GetHasSubFolder(void); + virtual bool __fastcall GetHidden(void); + virtual bool __fastcall GetIconIndexChanged(void); + virtual WideString __fastcall GetInfoTip(); + virtual bool __fastcall GetIsSlow(void); + virtual System::TDateTime __fastcall GetLastAccessDateTime(void); + virtual WideString __fastcall GetLastAccessTime(); + virtual _FILETIME __fastcall GetLastAccessTimeRaw(); + virtual System::TDateTime __fastcall GetLastWriteDateTime(void); + virtual WideString __fastcall GetLastWriteTime(); + virtual _FILETIME __fastcall GetLastWriteTimeRaw(); + virtual bool __fastcall GetLink(void); + virtual WideString __fastcall GetNameAddressbar(); + virtual WideString __fastcall GetNameAddressbarInFolder(); + virtual WideString __fastcall GetNameForEditing(); + virtual WideString __fastcall GetNameForEditingInFolder(); + virtual WideString __fastcall GetNameForParsing(); + virtual WideString __fastcall GetNameForParsingInFolder(); + virtual WideString __fastcall GetNameInFolder(); + virtual WideString __fastcall GetNameNormal(); + virtual WideString __fastcall GetNameParseAddress(); + virtual WideString __fastcall GetNameParseAddressInFolder(); + virtual bool __fastcall GetNewContent(void); + virtual bool __fastcall GetNonEnumerated(void); + virtual bool __fastcall GetNormal(void); + virtual bool __fastcall GetOffLine(void); + virtual int __fastcall GetOverlayIconIndex(void); + virtual int __fastcall GetOverlayIndex(void); + virtual Mpshelltypes::_di_IShellDetailsBCB6 __fastcall GetParentShellDetailsInterface(); + virtual _di_IShellFolder __fastcall GetParentShellFolder(); + virtual _di_IShellFolder2 __fastcall GetParentShellFolder2(); + virtual Mpshelltypes::_di_IQueryAssociations __fastcall GetQueryAssociationsInterface(); + virtual _di_IQueryInfo __fastcall GetQueryInfoInterface(); + virtual bool __fastcall GetReadOnly(void); + virtual bool __fastcall GetReadOnlyFile(void); + virtual bool __fastcall GetReparsePoint(void); + virtual bool __fastcall GetRemovable(void); + virtual bool __fastcall GetShare(void); + virtual Mpshelltypes::_di_IShellDetailsBCB6 __fastcall GetShellDetailsInterface(); + virtual _di_IShellFolder __fastcall GetShellFolder(); + virtual _di_IShellFolder2 __fastcall GetShellFolder2(); + virtual _di_IShellIcon __fastcall GetShellIconInterface(); + virtual Mpshelltypes::_di_IShellIconOverlay __fastcall GetShellIconOverlayInterface(); + virtual TVirtualShellLink* __fastcall GetShellLink(void); + virtual WideString __fastcall GetShortFileName(); + virtual WideString __fastcall GetSizeOfFile(); + virtual WideString __fastcall GetSizeOfFileDiskUsage(); + virtual __int64 __fastcall GetSizeOfFileInt64(void); + virtual WideString __fastcall GetSizeOfFileKB(); + virtual bool __fastcall GetSparseFile(void); + virtual bool __fastcall GetStorage(void); + virtual bool __fastcall GetStorageAncestor(void); + virtual bool __fastcall GetStream(void); + virtual bool __fastcall GetSubFolders(void); + virtual bool __fastcall GetSubItems(void); + virtual bool __fastcall GetSystem(void); + virtual bool __fastcall GetTemporary(void); + virtual bool __fastcall GetThreadedDetailLoaded(int ColumnIndex); + virtual bool __fastcall GetThreadedDetailLoading(int ColumnIndex); + virtual bool __fastcall GetThreadedIconLoaded(void); + virtual bool __fastcall GetThreadedImageLoaded(void); + virtual bool __fastcall GetThreadedImageLoading(void); + virtual bool __fastcall GetThreadIconLoading(void); + virtual bool __fastcall GetValid(void); + HWND __fastcall ParentWnd(void); + void __fastcall EnsureDetailCache(void); + void __fastcall ExecuteContextMenuVerbMultiPath(WideString Verb, TNamespaceArray Namespaces); + void __fastcall LoadCategoryInfo(void); + virtual void __fastcall SetFreePIDLOnDestroy(const bool Value); + virtual void __fastcall SetIconIndexChanged(const bool Value); + virtual void __fastcall SetThreadedDetailLoaded(int ColumnIndex, bool Value); + virtual void __fastcall SetThreadedDetailLoading(int ColumnIndex, bool Value); + virtual void __fastcall SetThreadIconLoading(const bool Value); + virtual void __fastcall SetThreadImageLoading(const bool Value); + Mpshelltypes::_di_ICategorizer __fastcall CreateCategory(const GUID &GUID); + bool __fastcall EnumFuncDummy(HWND MessageWnd, Shlobj::PItemIDList APIDL, TNamespace* AParent, void * Data, bool &Terminate); + WideString __fastcall ExplorerStyleAttributeStringList(bool CapitalLetters); + WideString __fastcall DisplayNameOf(unsigned Flags); + void __fastcall GetDataFromIDList(void); + void __fastcall GetFileTimes(void); + void __fastcall GetSHFileInfo(void); + TMenuItemIDArray __fastcall InjectCustomSubMenu(HMENU Menu, AnsiString Caption, Menus::TPopupMenu* PopupMenu, HMENU &SubMenu); + Mpshelltypes::_di_IContextMenu __fastcall InternalGetContextMenuInterface(Mpcommonobjects::TPIDLArray PIDLArray); + _di_IDataObject __fastcall InternalGetDataObjectInterface(Mpcommonobjects::TPIDLArray PIDLArray); + bool __fastcall InternalShowContextMenu(Controls::TWinControl* Owner, TContextMenuCmdCallback ContextMenuCmdCallback, TContextMenuShowCallback ContextMenuShowCallback, TContextMenuAfterCmdCallback ContextMenuAfterCmdCallback, Mpcommonobjects::TPIDLArray PIDLArray, Types::PPoint Position, Menus::TPopupMenu* CustomShellSubMenu, WideString CustomSubMenuCaption); + bool __fastcall InternalSubItems(unsigned Flags); + void __fastcall ReplacePIDL(Shlobj::PItemIDList NewPIDL, TNamespace* AParent); + bool __fastcall ShowContextMenuMultiPath(Controls::TWinControl* Owner, TNamespace* Focused, TNamespaceArray Namespaces, Types::PPoint Position = (void *)(0x0)); + void __fastcall WindowProcForContextMenu(Messages::TMessage &Message); + __property TCategoriesInfo CatInfo = {read=FCatInfo, write=FCatInfo}; + __property Mpshelltypes::_di_IContextMenu2 CurrentContextMenu2 = {read=FCurrentContextMenu2, write=FCurrentContextMenu2}; + __property Mpshelltypes::_di_IContextMenu CurrentContextMenu = {read=FCurrentContextMenu, write=FCurrentContextMenu}; + __property TShellCacheRec ShellCache = {read=FShellCache, write=FShellCache}; + __property bool SystemIsSuperHidden = {read=FSystemIsSuperHidden, write=FSystemIsSuperHidden, nodefault}; + +public: + __fastcall TNamespace(Shlobj::PItemIDList PIDL, TNamespace* AParent); + __fastcall virtual ~TNamespace(void); + __fastcall virtual TNamespace(int CustomID, TNamespace* AParent); + __fastcall virtual TNamespace(WideString FileName); + virtual bool __fastcall CanCopyAll(TNamespaceArray NamespaceArray); + virtual bool __fastcall CanCutAll(TNamespaceArray NamespaceArray); + virtual bool __fastcall CanDeleteAll(TNamespaceArray NamespaceArray); + virtual bool __fastcall CanPasteToAll(TNamespaceArray NamespaceArray); + virtual bool __fastcall CanShowPropertiesOfAll(TNamespaceArray NamespaceArray); + virtual TNamespace* __fastcall Clone(bool ReleasePIDLOnDestroy); + virtual Shortint __fastcall ComparePIDL(Shlobj::PItemIDList PIDLToCompare, bool IsAbsolutePIDL, int Column = 0x0); + virtual WideString __fastcall ContextMenuItemHelp(unsigned MenuItemID); + virtual WideString __fastcall ContextMenuVerb(unsigned MenuItemID); + virtual bool __fastcall Copy(TNamespaceArray NamespaceArray); + virtual bool __fastcall Cut(TNamespaceArray NamespaceArray); + virtual _di_IDataObject __fastcall DataObjectMulti(TNamespaceArray NamespaceArray); + virtual bool __fastcall Delete(TNamespaceArray NamespaceArray); + virtual Classes::TAlignment __fastcall DetailsAlignment(int ColumnIndex); + virtual WideString __fastcall DetailsColumnTitle(int ColumnIndex); + virtual WideString __fastcall DetailsDefaultColumnTitle(int ColumnIndex); + virtual WideString __fastcall DetailsDefaultOf(int ColumnIndex); + virtual int __fastcall DetailsDefaultSupportedColumns(void); + virtual TSHColumnStates __fastcall DetailsGetDefaultColumnState(int ColumnIndex); + virtual WideString __fastcall DetailsOf(int ColumnIndex); + virtual WideString __fastcall DetailsOfEx(int ColumnIndex); + virtual int __fastcall DetailsSupportedColumns(void); + virtual TVisibleColumnIndexArray __fastcall DetailsSupportedVisibleColumns(); + virtual bool __fastcall DetailsValidIndex(int DetailsIndex); + virtual HRESULT __fastcall DragEffect(int grfKeyState); + virtual HRESULT __fastcall DragEnter(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect); + virtual HRESULT __fastcall DragLeave(void); + virtual HRESULT __fastcall DragOver(int grfKeyState, const Types::TPoint &pt, int &dwEffect); + virtual HRESULT __fastcall Drop(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect); + virtual int __fastcall EnumerateFolder(HWND MessageWnd, bool Folders, bool NonFolders, bool IncludeHidden, TEnumFolderCallback EnumFunc, void * UserData); + virtual int __fastcall EnumerateFolderEx(HWND MessageWnd, TFileObjects FileObjects, TEnumFolderCallback EnumFunc, void * UserData, Classes::TNotifyEvent AfterValidEnumIDList = 0x0); + virtual bool __fastcall ExecuteContextMenuVerb(WideString AVerb, Mpcommonobjects::TPIDLArray APIDLArray, HWND MessageWindowParent = (HWND)(0x0)); + virtual __int64 __fastcall FolderSize(bool Invalidate, bool RecurseFolder = false); + virtual int __fastcall GetIconIndex(bool OpenIcon, TIconSize IconSize, bool ForceLoad = true); + virtual Graphics::TBitmap* __fastcall GetImage(void); + bool __fastcall VerifyPIDLRelationship(TNamespaceArray NamespaceArray, bool Silent = false); + virtual void __fastcall HandleContextMenuMsg(int Msg, int wParam, int lParam, int &Result); + virtual void __fastcall InvalidateCache(void); + void __fastcall InvalidateDetailsOfCache(bool FlushStrings); + virtual void __fastcall InvalidateNamespace(bool RefreshIcon = true); + virtual void __fastcall InvalidateRelativePIDL(TFileObjects FileObjects); + virtual void __fastcall InvalidateThumbImage(void); + virtual bool __fastcall IsChildByNamespace(TNamespace* TestNamespace, bool Immediate); + virtual bool __fastcall IsChildByPIDL(Shlobj::PItemIDList TestPIDL, bool Immediate); + virtual bool __fastcall IsChildOfRemovableDrive(void); + virtual bool __fastcall IsControlPanel(void); + virtual bool __fastcall IsControlPanelChildFolder(void); + virtual bool __fastcall IsDesktop(void); + virtual bool __fastcall IsMyComputer(void); + virtual bool __fastcall IsNetworkNeighborhood(void); + virtual bool __fastcall IsNetworkNeighborhoodChild(void); + virtual bool __fastcall IsParentByNamespace(TNamespace* TestNamespace, bool Immediate); + virtual bool __fastcall IsParentByPIDL(Shlobj::PItemIDList TestPIDL, bool Immediate); + bool __fastcall IsRecycleBin(void); + virtual bool __fastcall OkToBrowse(bool ShowExplorerMsg); + virtual Shlobj::PItemIDList __fastcall ParseDisplayName(void)/* overload */; + virtual Shlobj::PItemIDList __fastcall ParseDisplayName(WideString Path)/* overload */; + virtual bool __fastcall Paste(TNamespaceArray NamespaceArray, bool AsShortCut = false); + void __fastcall SetDetailByThread(int ColumnIndex, WideString Detail); + virtual void __fastcall SetIconIndexByThread(int IconIndex, bool ClearThreadLoading); + virtual void __fastcall SetImageByThread(Graphics::TBitmap* Bitmap, bool ClearThreadLoading); + virtual bool __fastcall SetNameOf(WideString NewName); + virtual bool __fastcall ShellExecuteNamespace(WideString WorkingDir, WideString CmdLineArguments, bool ExecuteFolder = false, bool ExecuteFolderShortCut = false, bool RunInThread = false); + virtual bool __fastcall ShowContextMenu(Controls::TWinControl* Owner, TContextMenuCmdCallback ContextMenuCmdCallback, TContextMenuShowCallback ContextMenuShowCallback, TContextMenuAfterCmdCallback ContextMenuAfterCmdCallback, Types::PPoint Position = (void *)(0x0), Menus::TPopupMenu* CustomShellSubMenu = (Menus::TPopupMenu*)(0x0), WideString CustomSubMenuCaption = L""); + virtual bool __fastcall ShowContextMenuMulti(Controls::TWinControl* Owner, TContextMenuCmdCallback ContextMenuCmdCallback, TContextMenuShowCallback ContextMenuShowCallback, TContextMenuAfterCmdCallback ContextMenuAfterCmdCallback, TNamespaceArray NamespaceArray, Types::PPoint Position = (void *)(0x0), Menus::TPopupMenu* CustomShellSubMenu = (Menus::TPopupMenu*)(0x0), WideString CustomSubMenuCaption = L""); + virtual void __fastcall ShowPropertySheet(void); + virtual void __fastcall ShowPropertySheetMulti(TNamespaceArray NamespaceArray, bool UseSHMultiFileProperties = true, bool ForceNonMultiPath = false); + virtual bool __fastcall SubFoldersEx(unsigned Flags = (unsigned)(0x20)); + virtual bool __fastcall SubItemsEx(unsigned Flags = (unsigned)(0x40)); + virtual bool __fastcall TestAttributesOf(unsigned Flags, bool FlushCache, bool SoftFlush = false); + __property Shlobj::PItemIDList AbsolutePIDL = {read=FAbsolutePIDL, write=FAbsolutePIDL}; + __property bool AdvDetailsSupported = {read=GetDetailsSupported, nodefault}; + __property bool Browsable = {read=GetBrowsable, nodefault}; + __property Mpshelltypes::_di_IBrowserFrameOptions BrowserFrameOptionsInterface = {read=GetBrowserFrameOptionsInterface}; + __property bool CanCopy = {read=GetCanCopy, nodefault}; + __property bool CanDelete = {read=GetCanDelete, nodefault}; + __property bool CanLink = {read=GetCanLink, nodefault}; + __property bool CanMoniker = {read=GetCanMoniker, nodefault}; + __property bool CanMove = {read=GetCanMove, nodefault}; + __property bool CanRename = {read=GetCanRename, nodefault}; + __property int CategoryCount = {read=GetCategoryCount, nodefault}; + __property Mpshelltypes::_di_ICategoryProvider CategoryProviderInterface = {read=GetCategoryProviderInterface}; + __property GUID CLSID = {read=GetCLSID}; + __property Mpshelltypes::_di_IContextMenu ContextMenuInterface = {read=GetContextMenuInterface}; + __property Mpshelltypes::_di_IContextMenu2 ContextMenu2Interface = {read=GetContextMenu2Interface}; + __property Mpshelltypes::_di_IContextMenu3 ContextMenu3Interface = {read=GetContextMenu3Interface}; + __property _di_IDataObject DataObjectInterface = {read=GetDataObjectInterface}; + __property TObjectDescription Description = {read=GetDescription, nodefault}; + __property bool DropTarget = {read=GetDropTarget, nodefault}; + __property _di_IDropTarget DropTargetInterface = {read=GetDropTargetInterface}; + __property bool Encrypted = {read=GetEncrypted, nodefault}; + __property TExtractImage* ExtractImage = {read=GetExtractImage}; + __property _di_IExtractIconA ExtractIconAInterface = {read=GetExtractIconAInterface}; + __property _di_IExtractIconW ExtractIconWInterface = {read=GetExtractIconWInterface}; + __property bool FileSystem = {read=GetFileSystem, nodefault}; + __property bool FileSysAncestor = {read=GetFileSysAncestor, nodefault}; + __property bool Folder = {read=GetFolder, nodefault}; + __property bool FreePIDLOnDestroy = {read=GetFreePIDLOnDestroy, write=SetFreePIDLOnDestroy, nodefault}; + __property bool Ghosted = {read=GetGhosted, nodefault}; + __property bool HasPropSheet = {read=GetHasPropSheet, nodefault}; + __property bool HasStorage = {read=GetHasStorage, nodefault}; + __property bool HasSubFolder = {read=GetHasSubFolder, nodefault}; + __property bool IconIndexChanged = {read=GetIconIndexChanged, write=SetIconIndexChanged, nodefault}; + __property bool IsSlow = {read=GetIsSlow, nodefault}; + __property bool Link = {read=GetLink, nodefault}; + __property WideString InfoTip = {read=GetInfoTip}; + __property WideString NameAddressbar = {read=GetNameAddressbar}; + __property WideString NameAddressbarInFolder = {read=GetNameAddressbarInFolder}; + __property WideString NameForEditing = {read=GetNameForEditing}; + __property WideString NameForEditingInFolder = {read=GetNameForEditingInFolder}; + __property WideString NameForParsing = {read=GetNameForParsing}; + __property WideString NameForParsingInFolder = {read=GetNameForParsingInFolder}; + __property WideString NameInFolder = {read=GetNameInFolder}; + __property WideString NameNormal = {read=GetNameNormal}; + __property WideString NameParseAddress = {read=GetNameParseAddress}; + __property WideString NameParseAddressInFolder = {read=GetNameParseAddressInFolder}; + __property int NamespaceID = {read=FNamespaceID, nodefault}; + __property bool NewContent = {read=GetNewContent, nodefault}; + __property bool NonEnumerated = {read=GetNonEnumerated, nodefault}; + __property TNamespace* Parent = {read=GetParent}; + __property _di_IShellFolder ParentShellFolder = {read=GetParentShellFolder}; + __property _di_IShellFolder2 ParentShellFolder2 = {read=GetParentShellFolder2}; + __property Mpshelltypes::_di_IShellDetailsBCB6 ParentShellDetailsInterface = {read=GetParentShellDetailsInterface}; + __property Mpshelltypes::_di_IQueryAssociations QueryAssociationsInterface = {read=GetQueryAssociationsInterface}; + __property bool ReadOnly = {read=GetReadOnly, nodefault}; + __property Shlobj::PItemIDList RelativePIDL = {read=FRelativePIDL}; + __property bool Removable = {read=GetRemovable, nodefault}; + __property bool Share = {read=GetShare, nodefault}; + __property _di_IShellFolder ShellFolder = {read=GetShellFolder}; + __property _di_IShellFolder2 ShellFolder2 = {read=GetShellFolder2}; + __property Mpshelltypes::_di_IShellDetailsBCB6 ShellDetailsInterface = {read=GetShellDetailsInterface}; + __property TVirtualShellLink* ShellLink = {read=GetShellLink}; + __property _di_IShellIcon ShellIconInterface = {read=GetShellIconInterface}; + __property Mpshelltypes::_di_IShellIconOverlay ShellIconOverlayInterface = {read=GetShellIconOverlayInterface}; + __property WideString ShortFileName = {read=GetShortFileName}; + __property bool SparseFile = {read=GetSparseFile, nodefault}; + __property TNamespaceStates States = {read=FStates, write=FStates, nodefault}; + __property bool Storage = {read=GetStorage, nodefault}; + __property bool StorageAncestor = {read=GetStorageAncestor, nodefault}; + __property bool Stream = {read=GetStream, nodefault}; + __property bool SubFolders = {read=GetSubFolders, nodefault}; + __property bool SubItems = {read=GetSubItems, nodefault}; + __property int Tag = {read=FTag, write=FTag, nodefault}; + __property bool ThreadedDetailLoaded[int Column] = {read=GetThreadedDetailLoaded, write=SetThreadedDetailLoaded}; + __property bool ThreadedDetailLoading[int Column] = {read=GetThreadedDetailLoading, write=SetThreadedDetailLoading}; + __property bool ThreadedIconLoaded = {read=GetThreadedIconLoaded, nodefault}; + __property bool ThreadIconLoading = {read=GetThreadIconLoading, write=SetThreadIconLoading, nodefault}; + __property bool ThreadImageLoaded = {read=GetThreadedImageLoaded, nodefault}; + __property bool ThreadImageLoading = {read=GetThreadedImageLoading, write=SetThreadImageLoading, nodefault}; + __property Mpcommonutilities::TCommonIntegerDynArray TileDetail = {read=FTileDetail, write=FTileDetail}; + __property _di_IQueryInfo QueryInfoInterface = {read=GetQueryInfoInterface}; + __property Windows::PWin32FindDataA Win32FindDataA = {read=FWin32FindDataA}; + __property Windows::PWin32FindDataW Win32FindDataW = {read=FWin32FindDataW}; + __property WideString AttributesString = {read=GetAttributesString}; + __property bool Archive = {read=GetArchive, nodefault}; + __property bool Compressed = {read=GetCompressed, nodefault}; + __property WideString CreationTime = {read=GetCreationTime}; + __property System::TDateTime CreationDateTime = {read=GetCreationDateTime}; + __property _FILETIME CreationTimeRaw = {read=GetCreationTimeRaw}; + __property bool Directory = {read=GetDirectory, nodefault}; + __property WideString Extension = {read=GetExtension}; + __property WideString FileName = {read=GetFileName}; + __property WideString FileType = {read=GetFileType}; + __property bool Hidden = {read=GetHidden, nodefault}; + __property WideString LastAccessTime = {read=GetLastAccessTime}; + __property System::TDateTime LastAccessDateTime = {read=GetLastAccessDateTime}; + __property _FILETIME LastAccessTimeRaw = {read=GetLastAccessTimeRaw}; + __property WideString LastWriteTime = {read=GetLastWriteTime}; + __property System::TDateTime LastWriteDateTime = {read=GetLastWriteDateTime}; + __property _FILETIME LastWriteTimeRaw = {read=GetLastWriteTimeRaw}; + __property bool Normal = {read=GetNormal, nodefault}; + __property bool OffLine = {read=GetOffLine, nodefault}; + __property int OverlayIndex = {read=GetOverlayIndex, nodefault}; + __property int OverlayIconIndex = {read=GetOverlayIconIndex, nodefault}; + __property bool ReadOnlyFile = {read=GetReadOnlyFile, nodefault}; + __property bool ReparsePoint = {read=GetReparsePoint, nodefault}; + __property WideString SizeOfFile = {read=GetSizeOfFile}; + __property __int64 SizeOfFileInt64 = {read=GetSizeOfFileInt64}; + __property WideString SizeOfFileKB = {read=GetSizeOfFileKB}; + __property WideString SizeOfFileDiskUsage = {read=GetSizeOfFileDiskUsage}; + __property bool SystemFile = {read=GetSystem, nodefault}; + __property bool Temporary = {read=GetTemporary, nodefault}; + __property bool Valid = {read=GetValid, nodefault}; +}; + + +class DELPHICLASS TVirtualNameSpaceList; +class PASCALIMPLEMENTATION TVirtualNameSpaceList : public Contnrs::TObjectList +{ + typedef Contnrs::TObjectList inherited; + +public: + TNamespace* operator[](int Index) { return Items[Index]; } + +private: + TNamespace* __fastcall GetItems(int Index); + void __fastcall SetItems(int Index, TNamespace* ANamespace); + +public: + HIDESBASE int __fastcall Add(TNamespace* ANamespace); + void __fastcall FillArray(TNamespaceArray &NamespaceArray); + HIDESBASE int __fastcall IndexOf(TNamespace* ANamespace); + HIDESBASE void __fastcall Insert(int Index, TNamespace* ANamespace); + __property TNamespace* Items[int Index] = {read=GetItems, write=SetItems/*, default*/}; +public: + #pragma option push -w-inl + /* TObjectList.Create */ inline __fastcall TVirtualNameSpaceList(void)/* overload */ : Contnrs::TObjectList() { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TList.Destroy */ inline __fastcall virtual ~TVirtualNameSpaceList(void) { } + #pragma option pop + +}; + + +struct TMenuItemLink; +typedef TMenuItemLink *PMenuItemLink; + +#pragma pack(push,4) +struct TMenuItemLink +{ + +public: + unsigned MenuID; + Menus::TMenuItem* Item; +} ; +#pragma pack(pop) + +class DELPHICLASS TMenuItemMap; +class PASCALIMPLEMENTATION TMenuItemMap : public Classes::TList +{ + typedef Classes::TList inherited; + +public: + PMenuItemLink operator[](int Index) { return Items[Index]; } + +protected: + HIDESBASE PMenuItemLink __fastcall Get(int Index); + HIDESBASE void __fastcall Put(int Index, PMenuItemLink Item); + +public: + HIDESBASE PMenuItemLink __fastcall Add(void); + HIDESBASE PMenuItemLink __fastcall First(void); + HIDESBASE int __fastcall IndexOf(PMenuItemLink Item); + virtual void __fastcall Clear(void); + HIDESBASE PMenuItemLink __fastcall Insert(int Index); + HIDESBASE PMenuItemLink __fastcall Last(void); + HIDESBASE int __fastcall Remove(PMenuItemLink Item); + __property PMenuItemLink Items[int Index] = {read=Get, write=Put/*, default*/}; +public: + #pragma option push -w-inl + /* TList.Destroy */ inline __fastcall virtual ~TMenuItemMap(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TMenuItemMap(void) : Classes::TList() { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TCommonShellContextMenu : public Classes::TComponent +{ + typedef Classes::TComponent inherited; + +private: + _di_IShellFolder FActiveFolder; + DynamicArray FActivePIDLs; + bool FCopyValidated; + Mpshelltypes::_di_IContextMenu FCurrentContextMenu; + Mpshelltypes::_di_IContextMenu2 FCurrentContextMenu2; + bool FCutValidated; + Mpcommonobjects::TCommonShellContextMenuExtensions FExtensions; + bool FFromDesktop; + TNamespace* FLocalFocused; + DynamicArray FLocalNamespaces; + TMenuItemMap* FMenuMap; + Classes::TWndMethod FOldWndProcForContextMenu; + Classes::TStringList* FKeyStrings; + TCommonShellMenuEvent FOnHide; + TCommonShellMenuInvokeEvent FOnInvokeCommand; + TCommonShellMenuMergeEvent FOnMenuMerge; + TCommonShellMenuMergeEvent FOnMenuMergeBottom; + TCommonShellMenuMergeEvent FOnMenuMergeTop; + TCommonShellMenuItemEvent FOnShellMenuCopy; + TCommonShellMenuItemEvent FOnShellMenuCreateShortcut; + TCommonShellMenuItemEvent FOnShellMenuCut; + TCommonShellMenuItemEvent FOnShellMenuDelete; + TCommonShellMenuItemEvent FOnShellMenuNewFolder; + TCommonShellMenuItemEvent FOnShellMenuPaste; + TCommonShellMenuItemEvent FOnShellMenuPasteLink; + TCommonShellMenuItemEvent FOnShellMenuPasteShortCut; + TCommonShellMenuItemEvent FOnShellMenuProperites; + TCommonShellMenuEvent FOnShow; + bool FRenameMenuItem; + void *FStub; + bool FPasteMenuItem; + _di_IDataObject FUIObjectOfDataObject; + _di_IDropTarget FUIObjectOfDropTarget; + +protected: + virtual HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj); + HIDESBASE int __stdcall _AddRef(void); + HIDESBASE int __stdcall _Release(void); + HRESULT __stdcall ParseDisplayName(HWND hwndOwner, void * pbcReserved, WideChar * lpszDisplayName, /* out */ unsigned &pchEaten, /* out */ Shlobj::PItemIDList &ppidl, unsigned &dwAttributes); + HRESULT __stdcall EnumObjects(HWND hwndOwner, unsigned grfFlags, /* out */ _di_IEnumIDList &EnumIDList); + HRESULT __stdcall BindToObject(Shlobj::PItemIDList pidl, void * pbcReserved, const GUID &riid, /* out */ void *ppvOut); + HRESULT __stdcall BindToStorage(Shlobj::PItemIDList pidl, void * pbcReserved, const GUID &riid, /* out */ void *ppvObj); + HRESULT __stdcall CompareIDs(int lParam, Shlobj::PItemIDList pidl1, Shlobj::PItemIDList pidl2); + HRESULT __stdcall CreateViewObject(HWND hwndOwner, const GUID &riid, /* out */ void *ppvOut); + HRESULT __stdcall GetAttributesOf(unsigned cidl, Shlobj::PItemIDList &apidl, unsigned &rgfInOut); + HRESULT __stdcall GetUIObjectOf(HWND hwndOwner, unsigned cidl, Shlobj::PItemIDList &apidl, const GUID &riid, void * prgfInOut, /* out */ void *ppvOut); + HRESULT __stdcall GetDisplayNameOf(Shlobj::PItemIDList pidl, unsigned uFlags, _STRRET &lpName); + HRESULT __stdcall SetNameOf(HWND hwndOwner, Shlobj::PItemIDList pidl, WideChar * lpszName, unsigned uFlags, Shlobj::PItemIDList &ppidlOut); + HRESULT __stdcall DragEnter(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect); + HRESULT __stdcall DragOver(int grfKeyState, const Types::TPoint pt, int &dwEffect); + HRESULT __stdcall DragLeave(void); + HRESULT __stdcall Drop(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect); + HRESULT __stdcall DefMenuCreateCallback(const _di_IShellFolder psf, HWND wnd, const _di_IDataObject pdtObj, unsigned uMsg, int WParm, int lParm); + void __fastcall AddMenuKey(WideString Key); + void __fastcall AddMenuKeys(Classes::TStringList* Keys); + void __fastcall ClearKeys(void); + virtual void __fastcall DoCopy(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoCreateShortCut(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoCut(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoDelete(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoHide(void); + virtual void __fastcall DoInvokeCommand(Menus::TMenuItem* MenuItem, Shlobj::PCMInvokeCommandInfo InvokeInfo); + virtual void __fastcall DoMenuMerge(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + virtual void __fastcall DoMenuMergeBottom(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + virtual void __fastcall DoMenuMergeTop(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + virtual void __fastcall DoNewFolder(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoPaste(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoPasteLink(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoPasteShortCut(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoProperties(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault); + virtual void __fastcall DoShow(void); + HKEY __fastcall DuplicateKey(HKEY Key); + bool __fastcall FindCommandId(unsigned CmdID, Menus::TMenuItem* &MenuItem); + void __stdcall HandleContextMenuMsg(int Msg, int wParam, int lParam, int &Result); + bool __fastcall InternalShowContextMenu(Controls::TWinControl* Owner, Shlobj::PItemIDList ParentPIDL, Mpcommonobjects::TPIDLArray ChildPIDLs, WideString Verb, Types::PPoint Position = (void *)(0x0)); + void __fastcall LoadMultiFolderPIDLArray(TNamespaceArray Namespaces, Mpcommonobjects::TPIDLArray &PIDLs); + virtual void __fastcall LoadRegistryKeyStrings(TNamespace* Focused) = 0 ; + void __fastcall WindowProcForContextMenu(Messages::TMessage &Message); + __property _di_IShellFolder ActiveFolder = {read=FActiveFolder, write=FActiveFolder}; + __property Mpcommonobjects::TPIDLArray ActivePIDLs = {read=FActivePIDLs, write=FActivePIDLs}; + __property bool CopyValidated = {read=FCopyValidated, write=FCopyValidated, nodefault}; + __property Mpshelltypes::_di_IContextMenu2 CurrentContextMenu2 = {read=FCurrentContextMenu2, write=FCurrentContextMenu2}; + __property Mpshelltypes::_di_IContextMenu CurrentContextMenu = {read=FCurrentContextMenu, write=FCurrentContextMenu}; + __property bool CutValidated = {read=FCutValidated, write=FCutValidated, nodefault}; + __property Mpcommonobjects::TCommonShellContextMenuExtensions Extensions = {read=FExtensions, write=FExtensions, nodefault}; + __property bool FromDesktop = {read=FFromDesktop, write=FFromDesktop, nodefault}; + __property Classes::TStringList* KeyStrings = {read=FKeyStrings, write=FKeyStrings}; + __property TNamespace* LocalFocused = {read=FLocalFocused, write=FLocalFocused}; + __property TNamespaceArray LocalNamespaces = {read=FLocalNamespaces, write=FLocalNamespaces}; + __property TMenuItemMap* MenuMap = {read=FMenuMap, write=FMenuMap}; + __property TCommonShellMenuEvent OnHide = {read=FOnHide, write=FOnHide}; + __property TCommonShellMenuInvokeEvent OnInvokeCommand = {read=FOnInvokeCommand, write=FOnInvokeCommand}; + __property TCommonShellMenuMergeEvent OnMenuMerge = {read=FOnMenuMerge, write=FOnMenuMerge}; + __property TCommonShellMenuMergeEvent OnMenuMergeBottom = {read=FOnMenuMergeBottom, write=FOnMenuMergeBottom}; + __property TCommonShellMenuMergeEvent OnMenuMergeTop = {read=FOnMenuMergeTop, write=FOnMenuMergeTop}; + __property TCommonShellMenuItemEvent OnShellMenuCopy = {read=FOnShellMenuCopy, write=FOnShellMenuCopy}; + __property TCommonShellMenuItemEvent OnShellMenuCreateShortCut = {read=FOnShellMenuCreateShortcut, write=FOnShellMenuCreateShortcut}; + __property TCommonShellMenuItemEvent OnShellMenuCut = {read=FOnShellMenuCut, write=FOnShellMenuCut}; + __property TCommonShellMenuItemEvent OnShellMenuDelete = {read=FOnShellMenuDelete, write=FOnShellMenuDelete}; + __property TCommonShellMenuItemEvent OnShellMenuNewFolder = {read=FOnShellMenuNewFolder, write=FOnShellMenuNewFolder}; + __property TCommonShellMenuItemEvent OnShellMenuPaste = {read=FOnShellMenuPaste, write=FOnShellMenuPaste}; + __property TCommonShellMenuItemEvent OnShellMenuPasteLink = {read=FOnShellMenuPasteLink, write=FOnShellMenuPasteLink}; + __property TCommonShellMenuItemEvent OnShellMenuPasteShortCut = {read=FOnShellMenuPasteShortCut, write=FOnShellMenuPasteShortCut}; + __property TCommonShellMenuItemEvent OnShellMenuProperites = {read=FOnShellMenuProperites, write=FOnShellMenuProperites}; + __property TCommonShellMenuEvent OnShow = {read=FOnShow, write=FOnShow}; + __property void * Stub = {read=FStub, write=FStub}; + __property bool RenameMenuItem = {read=FRenameMenuItem, write=FRenameMenuItem, default=1}; + __property bool PasteMenuItem = {read=FPasteMenuItem, write=FPasteMenuItem, default=1}; + __property _di_IDataObject UIObjectOfDataObject = {read=FUIObjectOfDataObject, write=FUIObjectOfDataObject}; + __property _di_IDropTarget UIObjectOfDropTarget = {read=FUIObjectOfDropTarget, write=FUIObjectOfDropTarget}; + +public: + __fastcall virtual TCommonShellContextMenu(Classes::TComponent* AOwner); + __fastcall virtual ~TCommonShellContextMenu(void); + int __fastcall MergeMenuIntoContextMenu(Menus::TPopupMenu* Menu, HMENU ContextMenu, int Index, unsigned idStart); + void __fastcall ClearMenuMap(void); +private: + void *__IDropTarget; /* IDropTarget */ + void *__IShellFolder; /* IShellFolder */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IDropTarget() + { + _di_IDropTarget intf; + GetInterface(intf); + return intf; + } + #else + operator IDropTarget*(void) { return (IDropTarget*)&__IDropTarget; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IShellFolder() + { + _di_IShellFolder intf; + GetInterface(intf); + return intf; + } + #else + operator IShellFolder*(void) { return (IShellFolder*)&__IShellFolder; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator System::_di_IInterface() + { + System::_di_IInterface intf; + GetInterface(intf); + return intf; + } + #else + operator IInterface*(void) { return (IInterface*)&__IDropTarget; } + #endif + +}; + + +class DELPHICLASS TCommonShellBackgroundContextMenu; +class PASCALIMPLEMENTATION TCommonShellBackgroundContextMenu : public TCommonShellContextMenu +{ + typedef TCommonShellContextMenu inherited; + +private: + bool FAutoDetectNewItem; + Mpcommonobjects::TCommonPIDLList* FFinalItemList; + Mpcommonobjects::TCommonPIDLList* FInitialItemList; + TCommonShellMenuNewItemEvent FOnNewItem; + Menus::TMenuItem* FPaste; + Menus::TMenuItem* FPasteShortCut; + Menus::TPopupMenu* FPopupMenuProperties; + Menus::TPopupMenu* FPopupMenuPaste; + Menus::TPopupMenu* FPopupMenuPasteShortCut; + Menus::TMenuItem* FProperties; + bool FShowPasteItem; + bool FShowPasteShortCutItem; + bool FShowPropertiesItem; + +protected: + void __fastcall ClickPaste(System::TObject* Sender); + void __fastcall ClickPasteShortCut(System::TObject* Sender); + void __fastcall ClickProperties(System::TObject* Sender); + virtual void __fastcall DoHide(void); + virtual void __fastcall DoMenuMerge(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + virtual void __fastcall DoMenuMergeBottom(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + virtual void __fastcall DoMenuMergeTop(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags); + virtual void __fastcall DoNewItem(TNamespace* NS); + virtual void __fastcall DoShow(void); + virtual void __fastcall LoadRegistryKeyStrings(TNamespace* Focused); + __property Mpcommonobjects::TCommonPIDLList* FinalItemList = {read=FFinalItemList, write=FFinalItemList}; + __property Mpcommonobjects::TCommonPIDLList* InitialItemList = {read=FInitialItemList, write=FInitialItemList}; + __property Menus::TMenuItem* Paste = {read=FPaste, write=FPaste}; + __property Menus::TMenuItem* PasteShortCut = {read=FPasteShortCut, write=FPasteShortCut}; + __property Menus::TPopupMenu* PopupMenuProperties = {read=FPopupMenuProperties, write=FPopupMenuProperties}; + __property Menus::TPopupMenu* PopupMenuPaste = {read=FPopupMenuPaste, write=FPopupMenuPaste}; + __property Menus::TPopupMenu* PopupMenuPasteShortCut = {read=FPopupMenuPasteShortCut, write=FPopupMenuPasteShortCut}; + __property Menus::TMenuItem* Properties = {read=FProperties, write=FProperties}; + __property RenameMenuItem = {default=0}; + __property PasteMenuItem = {default=0}; + +public: + __fastcall virtual TCommonShellBackgroundContextMenu(Classes::TComponent* AOwner); + __fastcall virtual ~TCommonShellBackgroundContextMenu(void); + bool __fastcall EnumCallback(HWND MessageWnd, Shlobj::PItemIDList APIDL, TNamespace* AParent, void * Data, bool &Terminate); + virtual bool __fastcall ShowContextMenu(Controls::TWinControl* Owner, TNamespace* Root, Types::PPoint Position = (void *)(0x0)); + +__published: + __property bool AutoDetectNewItem = {read=FAutoDetectNewItem, write=FAutoDetectNewItem, nodefault}; + __property OnHide ; + __property OnInvokeCommand ; + __property OnMenuMerge ; + __property OnMenuMergeBottom ; + __property OnMenuMergeTop ; + __property TCommonShellMenuNewItemEvent OnNewItem = {read=FOnNewItem, write=FOnNewItem}; + __property OnShow ; + __property bool ShowPasteItem = {read=FShowPasteItem, write=FShowPasteItem, default=1}; + __property bool ShowPasteShortCutItem = {read=FShowPasteShortCutItem, write=FShowPasteShortCutItem, default=1}; + __property bool ShowPropertiesItem = {read=FShowPropertiesItem, write=FShowPropertiesItem, default=1}; +}; + + +class DELPHICLASS TCommonShellMultiParentContextMenu; +class PASCALIMPLEMENTATION TCommonShellMultiParentContextMenu : public TCommonShellContextMenu +{ + typedef TCommonShellContextMenu inherited; + +protected: + virtual void __fastcall LoadRegistryKeyStrings(TNamespace* Focused); + +public: + virtual bool __fastcall ExecuteContextMenuVerb(Controls::TWinControl* Owner, TNamespaceArray Namespaces, AnsiString Verb); + virtual bool __fastcall ShowContextMenu(Controls::TWinControl* Owner, TNamespace* Focused, TNamespaceArray Namespaces, Types::PPoint Position = (void *)(0x0)); + +__published: + __property OnHide ; + __property OnShellMenuCopy ; + __property OnShellMenuCreateShortCut ; + __property OnShellMenuCut ; + __property OnShellMenuDelete ; + __property OnShellMenuNewFolder ; + __property OnShellMenuPaste ; + __property OnShellMenuPasteLink ; + __property OnShellMenuPasteShortCut ; + __property OnShellMenuProperites ; + __property RenameMenuItem = {default=1}; + __property PasteMenuItem = {default=1}; + __property OnShow ; +public: + #pragma option push -w-inl + /* TCommonShellContextMenu.Create */ inline __fastcall virtual TCommonShellMultiParentContextMenu(Classes::TComponent* AOwner) : TCommonShellContextMenu(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCommonShellContextMenu.Destroy */ inline __fastcall virtual ~TCommonShellMultiParentContextMenu(void) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +static const Shortint DefaultDetailColumns = 0x5; +static const Shortint ID_TIMER_NOTIFY = 0x64; +static const Shortint ID_TIMER_ENUMBKGND = 0x65; +static const Shortint ID_TIMER_AUTOSCROLL = 0x66; +static const Shortint ID_TIMER_SHELLNOTIFY = 0x67; +static const Shortint SHORTCUT_ICON_INDEX = 0x1d; +static const Shortint SHELL_NAMESPACE_ID = -1; +static const Word SHGDN_FOREDITING = 0x1000; +static const Word DEFAULTPIDLARRAYSIZE = 0x2000; +static const Shortint STREAM_VERSION_DEFAULT = -1; +#define STR_IMAGE_THREAD_EVENT "jdkImageThreadEvent" +extern PACKAGE int VET_DEFAULT_COLUMNWIDTHS[37]; +extern PACKAGE int VET_DEFAULT_DRIVES_COLUMNWIDTHS[4]; +extern PACKAGE int VET_DEFAULT_CONTROLPANEL_COLUMNWIDTHS[2]; +extern PACKAGE int VET_DEFAULT_NETWORK_COLUMNWIDTHS[2]; +extern PACKAGE Mpcommonobjects::TCommonPIDLManager* PIDLMgr; +extern PACKAGE TNamespace* DesktopFolder; +extern PACKAGE TNamespace* RecycleBinFolder; +extern PACKAGE TNamespace* PhysicalDesktopFolder; +extern PACKAGE TNamespace* DrivesFolder; +extern PACKAGE TNamespace* HistoryFolder; +extern PACKAGE TNamespace* PrinterFolder; +extern PACKAGE TNamespace* ControlPanelFolder; +extern PACKAGE TNamespace* NetworkNeighborHoodFolder; +extern PACKAGE TNamespace* TemplatesFolder; +extern PACKAGE TNamespace* MyDocumentsFolder; +extern PACKAGE TNamespace* FavoritesFolder; +extern PACKAGE TNamespace* ProgramFilesFolder; +extern PACKAGE TNamespace* UserDocumentsFolder; +extern PACKAGE TSHLimitInputEdit SHLimitInputEdit; +extern PACKAGE Word __stdcall (*AnimateWindow)(HWND Wnd, unsigned dwTime, unsigned dwFlags); +extern PACKAGE bool MP_UseModalDialogs; +extern PACKAGE bool MP_UseSpecialReparsePointOverlay; +extern PACKAGE bool MP_ThreadedShellExecute; +extern PACKAGE bool __fastcall SpecialVariableReplacePath(WideString &Path); +extern PACKAGE bool __fastcall IsSpecialVariable(WideString TestPath, TNamespace* &NS); +extern PACKAGE AnsiString __fastcall GUIDToInterfaceStr(const GUID &riid); +extern PACKAGE TShellContextMenuFlags __fastcall CFM_FlagsToShellContextMenuFlags(unsigned Flags); +extern PACKAGE bool __fastcall ClipboardContainsShellFormats(void); +extern PACKAGE bool __fastcall MPBrowseForFolder(WideString Title, Shlobj::PItemIDList RootFolder, Shlobj::PItemIDList InitialPath, TMPBrowseFlags BrowseFlags, Shlobj::PItemIDList &SelectedPath)/* overload */; +extern PACKAGE bool __fastcall MPBrowseForFolder(WideString Title, WideString RootFolder, WideString InitialPath, TMPBrowseFlags BrowseFlags, WideString &SelectedPath)/* overload */; +extern PACKAGE int __fastcall MergeMenuIntoContextMenu(Menus::TPopupMenu* Menu, HMENU ContextMenu, int Index, unsigned idStart); +extern PACKAGE Mpcommonobjects::TPIDLArray __fastcall NamespaceToRelativePIDLArray(TNamespaceArray Namespaces); +extern PACKAGE Shlobj::PItemIDList __fastcall FindBrowseableRootPIDL(TNamespace* NS); +extern PACKAGE bool __fastcall IsParentBrowseable(TNamespace* NS); +extern PACKAGE Mpcommonobjects::TPIDLArray __fastcall NamespaceToAbsolutePIDLArray(TNamespaceArray Namespaces); +extern PACKAGE Shlobj::PItemIDList __fastcall PathToPIDL(WideString APath); +extern PACKAGE WideString __fastcall PIDLToPath(Shlobj::PItemIDList APIDL); +extern PACKAGE bool __fastcall IENamespaceShown(bool PerUser); +extern PACKAGE bool __fastcall DirExistsVET(WideString APath, bool ShowSystemMessages)/* overload */; +extern PACKAGE bool __fastcall DirExistsVET(TNamespace* NS, bool ShowSystemMessages)/* overload */; +extern PACKAGE int __fastcall RectWidth(const Types::TRect &ARect); +extern PACKAGE int __fastcall RectHeight(const Types::TRect &ARect); +extern PACKAGE bool __fastcall PotentialMappedDrive(TNamespace* NS); +extern PACKAGE unsigned __fastcall FileObjectsToFlags(TFileObjects FileObjects); +extern PACKAGE WideString __fastcall FileObjectsToString(TFileObjects FileObjects); +extern PACKAGE bool __fastcall ConvertLocalStrToTFileTime(WideString LocalStr, _FILETIME &FileTime); +extern PACKAGE WideString __fastcall ConvertTFileTimeToLocalStr(const _FILETIME &AFileTime); +extern PACKAGE System::TDateTime __fastcall ConvertFileTimetoDateTime(const _FILETIME &AFileTime); +extern PACKAGE TNamespace* __fastcall CreateSpecialNamespace(int FolderID); +extern PACKAGE int __fastcall DefaultSystemImageIndex(TDefaultFolderIcon FolderType); +extern PACKAGE BOOL __stdcall FileIconInit(BOOL FullInit); +extern PACKAGE bool __fastcall CreateShellLink(WideString ALnkFilePath, WideString ATargetFilePath, WideString AnArguments = L"", WideString AWorkingDir = L"", WideString ADescription = L"", TCmdShow AShowCmd = (TCmdShow)(0xa), Word AHotKey = (Word)(0x0), THotKeyModifiers AHotKeyModifier = THotKeyModifiers() , WideString AnIconLocation = L"", int AnIconIndex = 0x0); +extern PACKAGE WideString __fastcall HotKeyModifiersToStr(THotKeyModifiers HotKeyMod); +extern PACKAGE void __fastcall PIDLQuickSort(Mpcommonobjects::TPIDLArray PIDLList, const _di_IShellFolder ParentFolder, int L, int R); +extern PACKAGE void __fastcall PIDLListQuickSort(Mpcommonobjects::TCommonPIDLList* PIDLList, const _di_IShellFolder ParentFolder, int L, int R); +extern PACKAGE bool __fastcall GetDiskFreeSpaceMP(WideChar * Drive, unsigned &SectorsperCluster, unsigned &BytesperSector, unsigned &FreeClusters, unsigned &TotalClusters); +extern PACKAGE __int64 __fastcall DriveSize(WideChar * Drive)/* overload */; +extern PACKAGE WideString __fastcall DriveSize(WideChar * Drive, TBtyeSize ByteSize)/* overload */; +extern PACKAGE __int64 __fastcall DriveFreeSpace(WideChar * Drive)/* overload */; +extern PACKAGE WideString __fastcall DriveFreeSpace(WideChar * Drive, TBtyeSize ByteSize)/* overload */; + +} /* namespace Mpshellutilities */ +using namespace Mpshellutilities; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpshellutilities diff --git a/official/1.7.0/Common Library/Source/MPShellUtilities.obj b/official/1.7.0/Common Library/Source/MPShellUtilities.obj new file mode 100644 index 0000000000000000000000000000000000000000..e4f2da50bf3ac319291cc85a4059b91cec253536 GIT binary patch literal 164338 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Source/MPShellUtilities.pas b/official/1.7.0/Common Library/Source/MPShellUtilities.pas new file mode 100644 index 0000000..8b5ac58 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPShellUtilities.pas @@ -0,0 +1,9151 @@ +unit MPShellUtilities; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// +//---------------------------------------------------------------------------- +// +// Credits for valuable information and code gathered from newsgroups and +// websites: +// Angus Johnson for his GetDiskFreeSpaceFAT32 function from UNDO +// +//---------------------------------------------------------------------------- + +interface + +{$I ..\Include\Addins.inc} + +{.$DEFINE GXDEBUG_DEFMENUCREATE_CALLBACK} +{.$DEFINE GXDEBUG_VIRTUALCONTEXTMENU} + +{$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + {$DEFINE GX_DEBUG} +{$ENDIF} +{$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + {$DEFINE GX_DEBUG} +{$ENDIF} + + +{$B-} + +{$include Compilers.inc} +{$include Options.inc} + +uses + {$IFDEF GX_DEBUG} + DbugIntf, + {$ENDIF} + Windows, + Messages, + SysUtils, + Classes, + Graphics, + Controls, + Forms, + ImgList, + ShlObj, + ShellAPI, + ActiveX, + Registry, + MPShellTypes, + MPCommonObjects, + MPCommonUtilities, + MPThreadManager, + MPResources, + MPDataObject, + {$IFDEF TNTSUPPORT} + TntSysUtils, + TntClasses, + TntRegistry, + TntMenus, + {$ENDIF} + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF} + {$IFDEF COMPILER_5_UP} + Contnrs, + {$ENDIF} + Menus; + +const + DefaultDetailColumns = 5; + + ID_TIMER_NOTIFY = 100; + ID_TIMER_ENUMBKGND = 101; + ID_TIMER_AUTOSCROLL = 102; + ID_TIMER_SHELLNOTIFY = 103; + + SHORTCUT_ICON_INDEX = 29; // This is cheezy crappy stupid and dumb but + // I can't find a way to get the link index + + SHELL_NAMESPACE_ID = -1; // ID of a basic Shell Namespace based TNamespace + + SHGDN_FOREDITING = $1000; + + DEFAULTPIDLARRAYSIZE = 8192; // Default size for the TPIDLArray + + STREAM_VERSION_DEFAULT = -1; // Default Stream version for TStreamableClass.LoadFromStream + // if this value is seen the LoadFromStream method should read the version + // from the stream else it should use the passed version in the method + + STR_IMAGE_THREAD_EVENT = 'jdkImageThreadEvent'; + + VET_DEFAULT_COLUMNWIDTHS: array[0..36] of integer = ( + 180, // Name + 96, // Size + 120, // Type + 120, // Modified + 60, // Attributes + 180, // Comment + 120, // Created + 120, // Accessed + 120, // Owner + 120, // Author + 120, // Title + 120, // Subject + 120, // Catagory + 60, // Pages + 120, // Copywrite + 120, // Company Name + 120, // Module Description + 120, // Module Version + 120, // Product Name + 120, // Product Version + 72, // Sender Name + 90, // Recipient Name + 102, // Recipient Number + 30, // Csid + 30, // Tsid + 108, // Transmission Time + 60, // Caller ID + 48, // Routing + 180, // Audio Format + 180, // Sample Rate + 180, // Audio Sample Size + 180, // Channels + 180, // Play Length + 180, // Frame Count + 180, // Frame Rate + 180, // Video Sample Size + 180 // Video Compression + ); + + VET_DEFAULT_DRIVES_COLUMNWIDTHS: array[0..3] of integer = ( + 180, // Name + 120, // Type + 96, // Total Size + 96 // Free Space + ); + + VET_DEFAULT_CONTROLPANEL_COLUMNWIDTHS: array[0..1] of integer = ( + 180, // Name + 300 // Description + ); + + VET_DEFAULT_NETWORK_COLUMNWIDTHS: array[0..1] of integer = ( + 180, // Name + 300 // Description + ); + + +{-------------------------------------------------------------------------------} +{ Custom enumerated types } +{-------------------------------------------------------------------------------} + +type + + TDefaultFolderIcon = ( + diNormalFolder, // Retrieve the index for a normal file folder icon + diOpenFolder, // Retrieve the index for a normal file folder icon in the open state + diUnknownFile, // Retrieve the index for an icon for a file that has no association + diLink, // Retrieve the index for link overlay icon + diMyDocuments // Index of MyDocuments icon + ); + + TMPBrowseFlag = ( + mpbfComputers, // Only allow computers to be returned + mpbfPrinters, // Only allow printers to be returned + mpbfDontGoBelowDomain, // Don't allow browsing into other network domains + mpbfFileSysAncestors, // Only allow File system ancestors to be returned + mpbfFileSysFolder, // Only allow file system folders to be returned +// mpbfIncludeStatusText, // Includes status test in the dialog + mpbfIncludeFiles, // Include files + mpbfNewStyleDialog, // New style dialog + mpbfEditBox, // Add a edtibox for the use to type into + mpbfIncludeURLs, // Include URLs + mpbfSharable, // sharable folders + mpbfMustExist // Returned folder must exist or cancel pressed before dialog will close + ); + TMPBrowseFlags = set of TMPBrowseFlag; + +type + TNamespaceState = ( + nsFreePIDLOnDestroy, // If true the object free the PIDL with the system allocator when freed + nsIsRecycleBin, // Recyclebin does not cooperate very well so we have do extra checks for various reasons so cache this + nsRecycleBinChecked, // Flag to see if above is valid. + nsOwnsParent, // If a namespace is created from a complex PIDL for some methods the parent is needed. If so a Parent namespace is created so this instance owns it and must free it. + nsShellDetailsSupported, // Instead of a costly call to see if interface exists when it does not we only check once then cache the result + nsShellFolder2Supported, // Same idea as ShellDetailsSupported, if it does not exist don't waste time constantly checking + nsShellOverlaySupported, // Same idea as ShellDetailsSupported, if it does not exist don't waste time constantly checking + nsThreadedIconLoaded, // To keep the threaded icon option fast and interuptable need to track if a thread is currently trying to extract the namespace icon index. Retrieved. + nsThreadedIconLoading, // To keep the threaded icon option fast and interuptable need to track if a thread is currently trying to extract the namespace icon index. In queue. + nsThreadedImageLoaded, // To keep the threaded image option fast and interuptable need to track if a thread is currently trying to extract the namespace thumbnail. Retrieved. + nsThreadedImageLoading, // To keep the threaded image option fast and interuptable need to track if a thread is currently trying to extract the namespace thumbnail. In queue. + nsThreadedImageResizing, // To keep the threaded image option fast and interuptable need to track if a thread is currently trying to resize the namespace thumbnail. In queue. + nsThreadedTileInfoLoaded, // To keep the threaded Tile Info option fast and interuptable need to track if a thread is currently trying to extract Tile Info for the namespace, Threaded Tile Info is retrieved + nsThreadedTileInfoLoading, // To keeping the threaded Tile Info option fast and interuptable need to track if a thread is currently trying to extract Tile Info for the namespace, it is in the queue to be retieved + nsIconIndexChanged // Sets a flag to track when the IconIndex changed between calls to GetIconIndex. Usually caused by a Thread Setting the icon index + ); + TNamespaceStates = set of TNamespaceState; + +type +// {$HPPEMIT 'class TNamespace;'} + + TSHLimitInputEdit = function(hWndEdit: HWND; psf: IShellFolder): HRESULT; stdcall; + + {$IFNDEF CPPB_6_UP} + IVETShellDetails = IShellDetails; + {$ELSE} + IVETShellDetails = IShellDetailsBCB6; + {$ENDIF} + + TShellCache = set of ( // Valid entries in the Namespace data cache + scInFolderName, + scNormalName, + scParsedName, + scSmallIcon, + scSmallOpenIcon, + scOverlayIndex, + scCreationTime, + scLastAccessTime, + scLastWriteTime, + scFileSize, + scFileSizeKB, + scFileSizeInt64, + scFileType, + scInvalidIDListData, // If SHGetDataFromIDList fails flag it so we won't try again. + scFileSystem, + scFolder, + scCanDelete, + scCanRename, + scGhosted, + scCanCopy, + scCanMove, + scCanLink, + scLink, + scFileSysAncestor, + scCompressed, + scFileTimes, + scSupportedColumns, + scFolderSize, // Recursivly calculated size of folder contents + scVirtualHook, // Namespace is the invisible parent of the RootVirtualNamespace + scHookedNamespace, // Namespace has custom sub items injected through SubFolderHook property + scVirtualNamespace, // Namespace is a virtual namespace + scRootVirtualNamespace, // Namespace is the Root of the Custom Namespace Branch. If a real NS is hooked it is the namespace under the caSubItemHook namespace + scHardHookedNamespace, // Namespace is a hard hooked, this means it will show user defined details if defined instead of using the real namespaces parent to create the details + scDetailsOfCache, + scBrowsable + ); + +{ This stores the state of the cached folder attribute. } + TCacheAttributes = set of ( + caFileSystem, // Namespace is part of the file system + caFolder, // Namespace is a Folder (not necessarily a directory) + caCanDelete, // Namespace can be deleted + caCanRename, // Namespace can be renamed + caGhosted, // Namespace is should display a ghosted icon + caCanCopy, // Namespace can be copied + caCanMove, // Namespace can be moved to a different location + caCanLink, // Namespace can create a link to itself + caLink, // Namespace *is* a link + caFileSysAncestor, // Namespace is an ancestor of a file system namespace + caCompressed, // Namespace represents a compressed folder + caVirtualHook, // Namespace is the invisible parent of the RootVirtualNamespace + caHookedNamespace, // Namespace has custom sub items injected through SubFolderHook property + caVirtualNamespace, // Namespace is a virtual namespace + caRootVirtualNamespace, // Namespace is the Root of the Custom Namespace Branch. If a real NS is hooked it is the namespace under the caSubItemHook namespace + caHardHookedNamespace, // Namespace is a hard hooked, this means it will show user defined details if defined instead of using the real namespaces parent to create the details + caBrowsable + ); + + { Used in IShellFolder2.GetDefaultColumnState } + TSHColumnState = ( + csTypeString, // A string. + csTypeInt, // An integer. + csTypeDate, // A date. + csOnByDefault, // Should be shown by default in the Microsoft® Windows® Explorer Details view. + csSlow, // Extracting information about the column can be time consuming. + csExtended, // Provided by a handler, not the folder object. + csSecondaryUI, // Not displayed in the context menu, but listed in the More dialog box. + csHidden // Not displayed in the user interface. + ); + TSHColumnStates = set of TSHColumnState; + + THotKeyModifier = ( // For IShellLink + hkmAlt, // HOTKEYF_ALT + hkmControl, // HOTKEYF_CONTROL + hkmExtendedKey, // HOTKEYF_EXT + hkmShift // HOTKEYF_SHIFT + ); + THotKeyModifiers = set of THotKeyModifier; + + TCmdShow = ( // For IShellLink + swHide, // Hides the window and activates another window. + swMaximize, // Maximizes the specified window. + swMinimize, // Minimizes the specified window and activates the next top-level window in the Z order. + swRestore, // Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window. + swShow, // Activates the window and displays it in its current size and position. + swShowDefault, // Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. + swShowMinimized, // Activates the window and displays it as a minimized window. + swShowMinNoActive, // Displays the window as a minimized window. The active window remains active. + swShowNA, // Displays the window in its current state. The active window remains active. + swShowNoActive, // Displays a window in its most recent size and position. The active window remains active. + swShowNormal // Activates and displays a window. If the window is minimized or maximized, Windows + ); // restores it to its original size and position. An application should specify this flag + // when displaying the window for the first time. + + TIconSize = ( + icSmall, // Small Shell size icon, usually 16x16 + icLarge // Large TListview size Icon, usually 32x32 + ); + + TFileSort = ( // Used in the ShellSortHelper class + fsFileType, // Sort by the File Type name + fsFileExtension // Sort by the file extenstion + ); + + + TObjectDescription = ( // Return from SHGetDataFromIDList with SHGDFIL_DESCRIPTIONID param + odError, // The call Failed for some reason + odRootRegistered, // The item is a registered item on the desktop. + odFile, // The item is a file. + odDirectory, // The item is a folder. + odUnidentifiedFileItem, // The item is an unidentified item in the file system. + od35Floppy, // The item is a 3.5-inch floppy drive. + od525Floppy, // The item is a 5.25-inch floppy drive. + odRemovableDisk, // The item is a removable disk drive. + odFixedDrive, // The item is a fixed disk drive. + odMappedDrive, // The item is a drive that is mapped to a network share. + odCDROMDrive, // The item is a CD-ROM drive. + odRAMDisk, // The item is a RAM disk. + odUnidentifiedDevice, // The item is an unidentified system device. + odNetworkDomain, // The item is a network domain. + odNetworkServer, // The item is a network server. + odNetworkShare, // The item is a network share. + odNetworkRestOfNet, // Not currently used. + odUnidentifiedNetwork, // The item is an unidentified network resource. + odComputerImaging, // Not currently used. + odComputerAudio, // Not currently used. + odShareDocuments // The item is the system shared documents folder. + ); + + TDetailsColumnTitleInfo = ( + tiCenterAlign, // The header title is Center Aligned + tiLeftAlign, // The header title is Left Aligned + tiRightAlign, // The header title is Right Aligned + tiContainsImage // The header title is Contains an Image (were do you get the image???) + ); + + + { Selects what type of namespaces are enumerated and displayed in VET. } + TFileObjects = set of ( + foFolders, + foNonFolders, + foHidden, + foShareable, + foNetworkPrinters + ); + + TSHColumnIDArray = array of TSHColumnID; + TGUIDArray = array of TGUID; + TWideStringArray = array of WideString; + TCategoryArray = array of ICategorizer; + + TCategoryInfo = record + Description: WideString; + Collapsed: Boolean; + Hidden: Boolean; + end; + + TCategoryInfoArray = array of TCategoryInfo; + TBooleanArray = array of Boolean; + + TCategoriesInfo = record + ColumnID: TSHColumnIDArray; + CatGUID: TGUIDArray; + CategoryNames: TWideStringArray; + Categories: TCategoryInfoArray; + CanCatatorize: TBooleanArray; + DefaultColumn: Integer; // Index into above arrays to the default grouping column + CategoryCount: Integer; + end; + + TBtyeSize = ( + bsKiloBytes, + bsMegaBytes, + bsGigiBytes, + bsTereBytes, + bsCustom + ); + +{-------------------------------------------------------------------------------} + + +{-------------------------------------------------------------------------------} +{ Custom Data structures } +{-------------------------------------------------------------------------------} + +type + TNamespace = class; // Forward + TExtractImage = class; // Forward + TCommonShellContextMenu = class; // Forward + + TMenuItemIDArray = array of cardinal; + + TVisibleColumnIndexArray = array of Word; // Array of the column indexes that are currently visible for a namespace + +{ Array that contains the cached information for the folder. } + + TDetailsOfCacheFlag = ( + docCaptionValid, + docStatesValid, + docThreadLoading, + docThreadLoaded + ); + TDetailsOfCacheFlags = set of TDetailsOfCacheFlag; + + PDetailsOfCacheRec = ^TDetailsOfCacheRec; + TDetailsOfCacheRec = packed record + Cached: TDetailsOfCacheFlags; + Caption: WideString; + States: TSHColumnStates; + end; + + TDetailsOfCacheArray = array of TDetailsOfCacheRec; + + TCacheData = packed record + Attributes: TCacheAttributes; // Boolean attributes for the namespace are saved as bits + SmallIcon, // Index in the ShellImageList of the normal icon + SmallOpenIcon: integer; // Index in the ShellImageList of the open or selected icon + InFolderName, // InFolder display name for the namespace + NormalName, // Normal display name for the namespace + ParsedName, // The Path of the namespace if it is a file object, if not it is usually the same as NameNormal + CreationTime, // String of the object creation time in details mode + LastAccessTime, // String of the last accessed time in details mode + LastWriteTime, // String of the last write time in details mode + FileSize, // String of the file size "23,0000" + FileSizeKB, // String of the file size ala Explorer style i.e. "23 KB" + FileType: WideString; // @@@@ FileType shown in Explorer details mode + FileSizeInt64: Int64; // Actual File Size + SupportedColumns: integer; // Number of supported columns in details mode + FolderSize: Int64; // Recursivly calcuated size of folder contents + OverlayIndex, // Cache the Index of the Overlay + OverlayIconIndex: Integer; // Cache the Index of the Overlay Icon + DetailsOfCache: TDetailsOfCacheArray // Cached strings for report view + end; + +{ Cache record tracks which information in the Data structure is valid with the } +{ ShellCacheFlags. } + + TShellCacheRec = packed record + ShellCacheFlags: TShellCache; // If flag is set the corresponding data stored in Data is valid + Data: TCacheData; // Cached data for fast retrieval + end; + + PSHGetFileInfoRec = ^TSHGetFileInfoRec; + TSHGetFileInfoRec = packed record + FileType: WideString; // Holds the File Type column detail if not using ShellColumns (using VET or custom columns) + end; + + + TShellContextMenuFlag = ( + cmfCanRename, // This flag is set if the calling application supports renaming of items. A shortcut menu extension or drag-and-drop handler should ignore this flag. A namespace extension should add a rename item to the menu if applicable. + cmfDefaultOnly, // This flag is set when the user is activating the default action, typically by double-clicking. This flag provides a hint for the shortcut menu extension to add nothing if it does not modify the default item in the menu. A shortcut menu extension or drag-and-drop handler should not add any menu items if this value is specified. A namespace extension should add only the default item (if any). + // cmfDisableVerbs, // Microsoft Windows Vista and later: This flag is set when the calling application wants to invoke verbs that are otherwise disabled, such as legacy menus. + cmfExplore, // This flag is set when the Microsoft Windows Explorer tree window is present. + cmfExtendedVerbs, // This flag is set when the calling application wants extended verbs. Normal verbs are displayed when the user right-clicks an object. To display extended verbs, the user must right-click while pressing the SHIFT key. + cmfIncludeStatic, // Deprecated, do not use. + cmfItemMenu, // Microsoft Windows Vista and later: This flag is set when the calling application is invoking a context menu on an item in the view (as opposed to the background of the view). + cmfNoDefault, // This flag is set if no item in the menu has been set as the default. A drag-and-drop handler should ignore this flag. A namespace extension should not set any of the menu items to the default. + cmfNormal, // Indicates normal operation. A shortcut menu extension, namespace extension, or drag-and-drop handler can add all menu items. + cmfNoVerbs, // This flag is set for items displayed in the Send To menu. Shortcut menu handlers should ignore this value. + cmfVerbsOnly // This flag is set if the shortcut menu is for a shortcut object. Shortcut menu handlers should ignore this value. + ); + TShellContextMenuFlags = set of TShellContextMenuFlag; + + + TNamespaceArray = array of TNamespace; + + TCommonShellMenuEvent = procedure(Sender: TCommonShellContextMenu) of object; + {$IFDEF TNTSUPPORT} + TCommonShellMenuInvokeEvent = procedure(Sender: TCommonShellContextMenu; MenuItem: TTntMenuItem; InvokeInfo: PCMInvokeCommandInfo; var Handled: Boolean) of object; + {$ELSE} + TCommonShellMenuInvokeEvent = procedure(Sender: TCommonShellContextMenu; MenuItem: TMenuItem; InvokeInfo: PCMInvokeCommandInfo; var Handled: Boolean) of object; + {$ENDIF} + TCommonShellMenuMergeEvent = procedure(Sender: TCommonShellContextMenu; Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags) of object; + TCommonShellMenuItemEvent = procedure(Sender: TCommonShellContextMenu; ShellFolder: IShellFolder; DataObject: IDataObject; var Handled: Boolean) of object; + TCommonShellMenuNewItemEvent = procedure(Sender: TCommonShellContextMenu; NS: TNamespace) of object; + TCommonShellMenuCopyEvent = TCommonShellMenuItemEvent; + TCommonShellMenuCreateShortcutEvent = TCommonShellMenuItemEvent; + TCommonShellMenuCutEvent = TCommonShellMenuItemEvent; + TCommonShellMenuDeleteEvent = TCommonShellMenuItemEvent; + TCommonShellMenuNewFolderEvent = TCommonShellMenuItemEvent; + TCommonShellMenuPasteEvent = TCommonShellMenuItemEvent; + TCommonShellMenuPasteLinkEvent = TCommonShellMenuItemEvent; + TCommonShellMenuPasteShortCutEvent = TCommonShellMenuItemEvent; + TCommonShellMenuProperitesEvent = TCommonShellMenuItemEvent; + +{-------------------------------------------------------------------------------} + + +// Custom Exceptions + EVSTInvalidFileName = class(Exception) + end; + + +{-------------------------------------------------------------------------------} +{ Persistent Storing and Recreating VET } +{-------------------------------------------------------------------------------} + + TStreamableClass = class(TPersistent) + private + FStreamVersion: integer; + public + constructor Create; + procedure LoadFromFile(FileName: WideString; Version: integer = 0; ReadVerFromStream: Boolean = False); virtual; + procedure LoadFromStream(S: TStream; Version: integer = 0; ReadVerFromStream: Boolean = False); virtual; + procedure SaveToFile(FileName: WideString; Version: integer = 0; ReadVerFromStream: Boolean = False); virtual; + procedure SaveToStream(S: TStream; Version: integer = 0; WriteVerToStream: Boolean = False); virtual; + + property StreamVersion: integer read FStreamVersion; + end; + + TStreamableList = class(TList) + private + FStreamVersion: integer; + public + constructor Create; + procedure LoadFromFile(FileName: WideString; Version: integer = 0; ReadVerFromStream: Boolean = False); virtual; + procedure LoadFromStream(S: TStream; Version: integer = 0; ReadVerFromStream: Boolean = False); virtual; + procedure SaveToFile(FileName: WideString; Version: integer = 0; ReadVerFromStream: Boolean = False); virtual; + procedure SaveToStream(S: TStream; Version: integer = 0; WriteVerToStream: Boolean = False); virtual; + + property StreamVersion: integer read FStreamVersion; + end; +{-------------------------------------------------------------------------------} + + +{-------------------------------------------------------------------------------} +{ Our own COM like referenced classes } +{-------------------------------------------------------------------------------} + + TReferenceCounted = class + protected + FRefCount: integer; + public + procedure AddRef; + procedure Release; + end; + +{ Reference counted TList, much like a COM object but the compiler does not } +{ add the AddRef and Release call automaticlly. } + TReferenceCountedList = class(TList) + protected + FRefCount: integer; + public + procedure AddRef; + procedure Release; + property RefCount: integer read FRefCount; + end; + +{-------------------------------------------------------------------------------} +{ Encapsulates IExtractImage, ASCI and Unicode } +{-------------------------------------------------------------------------------} + + TExtractImage = class + private + FFlags: Longword; // Sets how the image is to be handled see IEIFLAG_xxxx + FPriority: Longword; // Returns from GetLocation call the priority if IEIFLAG_ASYNC is used above + FHeight: Longword; // Desired image height + FWidth: Longword; // Desired image Width + FColorDepth: Longword; // Desired color depth + FExtractImageInterface: IExtractImage; // The interface + FExtractImage2Interface: IExtractImage2; // The interface for image2 + FOwner: TNamespace; // The Owner namespace + FPathExtracted: Boolean; + function GetImage: TBitmap; + function GetImagePath: WideString; + function GetExtractImageInterface: IExtractImage; + function GetExtractImageInterface2: IExtractImage2; + protected + property PathExtracted: Boolean read FPathExtracted write FPathExtracted; + public + constructor Create; + property ColorDepth: Longword read FColorDepth write FColorDepth; + property ImagePath: WideString read GetImagePath; + property Image: TBitmap read GetImage; + property ExtractImageInterface: IExtractImage read GetExtractImageInterface; + property ExtractImage2Interface: IExtractImage2 read GetExtractImageInterface2; + property Flags: Longword read FFlags write FFlags; + property Height: Longword read FHeight write FHeight; + property Owner: TNamespace read FOwner write FOwner; + property Priority: Longword read FPriority; + property Width: Longword read FWidth write FWidth; + end; +{-------------------------------------------------------------------------------} + +{-------------------------------------------------------------------------------} +{ Encapsulates IShellLink, ASCI and Unicode } +{-------------------------------------------------------------------------------} + + TVirtualShellLink = class(TComponent) + private + FFileName: WideString; // File name of the lnk file + FShellLinkA: IShellLink; // ShellLink interface + FShellLinkW: IShellLinkW; // ShellLinkW interface + FIconIndex: integer; // Index of the icon to be used with the link + FTargetIDList: PItemIDList; // If the Target is a virtual object the PIDL is the only way to make the link + FShowCmd: TCmdShow; // How to show the window of the target application + FHotKeyModifiers: THotKeyModifiers; // The key modifiers for short cuts + FTargetPath: WideString; // The target that will be executed + FArguments: WideString; // Any arguments to be passed to the target + FDescription: WideString; // A description that will be shown in the properties dialog + FWorkingDirectory: WideString; // The directory the target application will have set as its current directory + FIconLocation: WideString; // The file that has the icon for the link + FHotKey: Word; // The HotKey to execute the link, used with the FHotKeyModifiers + FSilentWrite: Boolean; // Do not check parameters before writing lnk file and show a warning + function GetShellLinkAInterface: IShellLinkA; + function GetShellLinkWInterface: IShellLinkW; + protected + procedure FreeTargetIDList; + + public + destructor Destroy; override; + function ReadLink(LinkFileName: WideString): Boolean; + function WriteLink(LinkFileName: WideString): Boolean; + + property Arguments: WideString read FArguments write FArguments; + property Description: WideString read FDescription write FDescription; + property FileName: WideString read FFileName write FFileName; + property HotKey: Word read FHotKey write FHotKey; + property HotKeyModifiers: THotKeyModifiers read FHotKeyModifiers write FHotKeyModifiers; + property IconIndex: integer read FIconIndex write FIconIndex; + property IconLocation: WideString read FIconLocation write FIconLocation; + property TargetIDList: PItemIDList read FTargetIDList write FTargetIDList; + property ShellLinkAInterface: IShellLink read GetShellLinkAInterface; + property ShellLinkWInterface: IShellLinkW read GetShellLinkWInterface; + property ShowCmd: TCmdShow read FShowCmd write FShowCmd; // SW_XXXX contants + property SilentWrite: Boolean read FSilentWrite write FSilentWrite; + property TargetPath: WideString read FTargetPath write FTargetPath; + property WorkingDirectory: WideString read FWorkingDirectory write FWorkingDirectory; + end; +{-------------------------------------------------------------------------------} + + // General helper class to sort Shell related objects. Uses mainly to sort + // columns in details mode + TShellSortHelper = class + private + FFileSort: TFileSort; // Defines if SortType sorts by the type string or the file extension + public + function CompareIDSort(SortColumn: integer; NS1, NS2: TNamespace): Integer; virtual; + function DiscriminateFolders(NS1, NS2: TNamespace): Integer; virtual; + function SortFileSize(NS1, NS2: TNamespace): Integer; virtual; + function SortFileTime(FT1, FT2: TFileTime; NS1, NS2: TNamespace): Integer; virtual; + function SortString(S1, S2: WideString; NS1, NS2: TNamespace): Integer; virtual; + function SortType(NS1, NS2: TNamespace): Integer; virtual; + + property FileSort: TFileSort read FFileSort write FFileSort; + end; +{-------------------------------------------------------------------------------} +{ Function definitions } +{-------------------------------------------------------------------------------} + + // Return True if VT adds a node to the tree this keeps the item count returned + // by TNamespace.EnumFolder correct. To stop the enumeration set Terminate to true + TEnumFolderCallback = function(MessageWnd: HWnd; APIDL: PItemIDList; AParent: TNamespace; + Data: Pointer; var Terminate: Boolean): Boolean of object; + + TContextMenuCmdCallback = procedure(Namespace: TNamespace; Verb: WideString; + MenuItemID: Integer; var Handled: Boolean) of object; + TContextMenuShowCallback = procedure(Namespace: TNamespace; Menu: hMenu; + var Allow: Boolean) of object; + TContextMenuAfterCmdCallback = procedure(Namespace: TNamespace; Verb: WideString; + MenuItemID: Integer; Successful: Boolean) of object; +{-------------------------------------------------------------------------------} + + +{-------------------------------------------------------------------------------} +{ TNamespace, encapsulates the Windows Shell Namespace } +{-------------------------------------------------------------------------------} + + { TNamespace is a class that encapsulates the IShellFolder interface. It } + { simplifies shell interfaces by hiding the overhead of PIDLs and COM. } + { Most properties and methods have a direct corrolation to the functions } + { exposed by IShellFolder. } + + TNamespace = class + private + FAbsolutePIDL: PItemIDList; // The Absolute PIDL of that represents the namespace + FCatInfo: TCategoriesInfo; + FCurrentContextMenu: IContextMenu; // The basic interface to create a shell context menu, need to save because of ownerdraw callbacks (maybe this one is not necessary IContextMenu2 only supports this) + FCurrentContextMenu2: IContextMenu2; // Extends the context menu interface to include ownerdraw items, need to save because of ownerdraw callbacks + FDropTargetInterface: IDropTarget; // Interface to handle a drag Drop on the namespace + FExtractImage: TExtractImage; // Encapsulate the seldom used IExtractImage inteface saving memory allocation in the TNamespace when not used + FImage: TBitmap; // The image extracted from the IExtractImage interface + FNamespaceID: integer; // ID of the namespace. Used to pick out any custom namespace objects from real shell supplied ones + FOldWndProcForContextMenu: TWndMethod; // OldWndProc of the ContextMenu owner used in InternalShowContextMenu + FParent: TNamespace; // The parent of this namespace, may be owned by this decenant see OwnsParent property + FRelativePIDL: PItemIDList; // The relative PILD that can be used the the ParentNamespace. It is a pointer to the last ID of of AbsolutePILD so *don't* free it + FShellDetailsInterface: IVETShellDetails; // Interface to deal with the information in the columns in details view (superceded by IShellFolder2 ) + FShellFolder: IShellFolder; // IShellFolder is the building block interface that defines the namespaces attributes + FShellFolder2: IShellFolder2; // Expands IShellFolder handling the column details in Details mode, only works on Win2k-WinMe and up + FShellIconInterface: IShellIcon; // Interface to extract only the index of the icon in the system imagelist + FShellLink: TVirtualShellLink; // Object to read and write attributes to shortcut namespaces (files) + FSHGetFileInfoRec: PSHGetFileInfoRec; // Stores cached info from a call to SHGetFileInfo(A or W) + FStates: TNamespaceStates; // Dynamic state of the TNamespace + FTag: integer; + FTileDetail: TCommonIntegerDynArray; // + FQueryInfoInterface: IQueryInfo; // Interface for the popup InfoTips on folders in Win2k-WinME and up + FWin32FindDataA: PWin32FindDataA; // pointer to an allocated structure for an ASCI window file information if is is a file object + FWin32FindDataW: PWin32FindDataW; // pointer to an allocated structure for an Unicode window file information if is is a file object + FSystemIsSuperHidden: Boolean; // Holds the result of if the system has the SuperHiddenFile flag set in the registry + FShellIconOverlayInterface: IShellIconOverlay; + FCategoryProviderInterface: ICategoryProvider; + FBrowserFrameOptionsInterface: IBrowserFrameOptions; + FQueryAssociationsInterface: IQueryAssociations; + + function GetCategoryCount: Integer; + function GetParent: TNamespace; + protected + { Make the Cache Data and property getters available to decendants. This } + { will allow decendants of TNamespace to be created so "virtual namespaces" } + { can be created. It is possible to create a "namespace extension" without } + { really doing it! } + { None of interface properties are here because they only make sense for } + { actual COM namespaces. } + FShellCache: TShellCacheRec; + + { Virtual Property Setters } + function GetArchive: Boolean; virtual; + function GetAttributesString: WideString; virtual; + function GetBrowsable: Boolean; virtual; + function GetBrowserFrameOptionsInterface: IBrowserFrameOptions; virtual; + function GetCanCopy: Boolean; virtual; + function GetCanDelete: Boolean; virtual; + function GetCanLink: Boolean; virtual; + function GetCanMoniker: Boolean; virtual; + function GetCanMove: Boolean; virtual; + function GetCanRename: Boolean; virtual; + function GetCategoryProviderInterface: ICategoryProvider; virtual; + function GetCLSID: TGUID; virtual; + function GetCompressed: Boolean; virtual; + function GetContextMenu2Interface: IContextMenu2; virtual; + function GetContextMenu3Interface: IContextMenu3; virtual; + function GetContextMenuInterface: IContextMenu; virtual; + function GetCreationDateTime: TDateTime; virtual; + function GetCreationTime: WideString; virtual; + function GetCreationTimeRaw: TFileTime; virtual; + function GetDataObjectInterface: IDataObject; virtual; + function GetDescription: TObjectDescription; virtual; + function GetDetailsSupported: Boolean; virtual; + function GetDirectory: Boolean; virtual; + function GetDropTarget: Boolean; virtual; + function GetDropTargetInterface: IDropTarget; virtual; + function GetEncrypted: Boolean; virtual; + function GetExtension: WideString; virtual; + function GetExtractIconAInterface: IExtractIconA; virtual; + function GetExtractIconWInterface: IExtractIconW; virtual; + function GetExtractImage: TExtractImage; virtual; + function GetFileName: WideString; virtual; + function GetFileSysAncestor: Boolean; virtual; + function GetFileSystem: Boolean; virtual; + function GetFileType: WideString; virtual; + function GetFolder: Boolean; virtual; + function GetFreePIDLOnDestroy: Boolean; virtual; + function GetGhosted: Boolean; virtual; + function GetHasPropSheet: Boolean; virtual; + function GetHasStorage: Boolean; virtual; + function GetHasSubFolder: Boolean; virtual; + function GetHidden: Boolean; virtual; + function GetIconIndexChanged: Boolean; virtual; + function GetInfoTip: WideString; virtual; + function GetIsSlow: Boolean; virtual; + function GetLastAccessDateTime: TDateTime; virtual; + function GetLastAccessTime: WideString; virtual; + function GetLastAccessTimeRaw: TFileTime; virtual; + function GetLastWriteDateTime: TDateTime; virtual; + function GetLastWriteTime: WideString; virtual; + function GetLastWriteTimeRaw: TFileTime; virtual; + function GetLink: Boolean; virtual; + function GetNameAddressbar: WideString; virtual; + function GetNameAddressbarInFolder: WideString; virtual; + function GetNameForEditing: WideString; virtual; + function GetNameForEditingInFolder: WideString; virtual; + function GetNameForParsing: WideString; virtual; + function GetNameForParsingInFolder: WideString; virtual; + function GetNameInFolder: WideString; virtual; + function GetNameNormal: WideString; virtual; + function GetNameParseAddress: WideString; virtual; + function GetNameParseAddressInFolder: WideString; virtual; + function GetNewContent: Boolean; virtual; + function GetNonEnumerated: Boolean; virtual; + function GetNormal: Boolean; virtual; + function GetOffLine: Boolean; virtual; + function GetOverlayIconIndex: Integer; virtual; + function GetOverlayIndex: Integer; virtual; + function GetParentShellDetailsInterface: IVETShellDetails; virtual; + function GetParentShellFolder: IShellFolder; virtual; + function GetParentShellFolder2: IShellFolder2; virtual; + function GetQueryAssociationsInterface: IQueryAssociations; virtual; + function GetQueryInfoInterface: IQueryInfo;virtual; + function GetReadOnly: Boolean; virtual; + function GetReadOnlyFile: Boolean; virtual; + function GetReparsePoint: Boolean; virtual; + function GetRemovable: Boolean; virtual; + function GetShare: Boolean; virtual; + function GetShellDetailsInterface: IVETShellDetails; virtual; + function GetShellFolder: IShellFolder; virtual; + function GetShellFolder2: IShellFolder2; virtual; + function GetShellIconInterface: IShellIcon; virtual; + function GetShellIconOverlayInterface: IShellIconOverlay; virtual; + function GetShellLink: TVirtualShellLink; virtual; + function GetShortFileName: WideString; virtual; + function GetSizeOfFile: WideString; virtual; + function GetSizeOfFileDiskUsage: WideString; virtual; + function GetSizeOfFileInt64: Int64; virtual; + function GetSizeOfFileKB: WideString; virtual; + function GetSparseFile: Boolean; virtual; + function GetStorage: Boolean; virtual; + function GetStorageAncestor: Boolean; virtual; + function GetStream: Boolean; virtual; + function GetSubFolders: Boolean; virtual; + function GetSubItems: Boolean; virtual; + function GetSystem: Boolean; virtual; + function GetTemporary: Boolean; virtual; + function GetThreadedDetailLoaded(ColumnIndex: Integer): Boolean; virtual; + function GetThreadedDetailLoading(ColumnIndex: Integer): Boolean; virtual; + function GetThreadedIconLoaded: Boolean; virtual; + function GetThreadedImageLoaded: Boolean; virtual; + function GetThreadedImageLoading: Boolean; virtual; + function GetThreadIconLoading: Boolean; virtual; + function GetValid: Boolean; virtual; + function ParentWnd: HWnd; + procedure EnsureDetailCache; + procedure ExecuteContextMenuVerbMultiPath(Verb: WideString; Namespaces: TNamespaceArray); + procedure LoadCategoryInfo; + procedure SetFreePIDLOnDestroy(const Value: Boolean); virtual; + procedure SetIconIndexChanged(const Value: Boolean); virtual; + procedure SetThreadedDetailLoaded(ColumnIndex: Integer; Value: Boolean); virtual; + procedure SetThreadedDetailLoading(ColumnIndex: Integer; Value: Boolean); virtual; + procedure SetThreadIconLoading(const Value: Boolean); virtual; + procedure SetThreadImageLoading(const Value: Boolean); virtual; + + function CreateCategory(GUID: TGUID): ICategorizer; + function EnumFuncDummy(MessageWnd: HWnd; APIDL: PItemIDList; AParent: TNamespace; Data: Pointer; var Terminate: Boolean): Boolean; + function ExplorerStyleAttributeStringList(CapitalLetters: Boolean): WideString; + function DisplayNameOf(Flags: Longword): WideString; + procedure GetDataFromIDList; + procedure GetFileTimes; + procedure GetSHFileInfo; + function InjectCustomSubMenu(Menu: HMenu; Caption: string; PopupMenu: TPopupMenu; var SubMenu: HMenu): TMenuItemIDArray; + function InternalGetContextMenuInterface(PIDLArray: TRelativePIDLArray): IContextMenu; + function InternalGetDataObjectInterface(PIDLArray: TRelativePIDLArray): IDataObject; + function InternalShowContextMenu(Owner: TWinControl; ContextMenuCmdCallback: TContextMenuCmdCallback; + ContextMenuShowCallback: TContextMenuShowCallback; ContextMenuAfterCmdCallback: TContextMenuAfterCmdCallback; + PIDLArray: TRelativePIDLArray; Position: PPoint; + CustomShellSubMenu: TPopupMenu; CustomSubMenuCaption: WideString): Boolean; + function InternalSubItems(Flags: Longword): Boolean; + procedure ReplacePIDL(NewPIDL: PItemIDList; AParent: TNamespace); + function ShowContextMenuMultiPath(Owner: TWinControl; Focused: TNamespace; + Namespaces: TNamespaceArray; Position: PPoint = nil): Boolean; + procedure WindowProcForContextMenu(var Message: TMessage); + + property CatInfo: TCategoriesInfo read FCatInfo write FCatInfo; + property CurrentContextMenu2: IContextMenu2 read FCurrentContextMenu2 write FCurrentContextMenu2; + property CurrentContextMenu: IContextMenu read FCurrentContextMenu write FCurrentContextMenu; + property ShellCache: TShellCacheRec read FShellCache write FShellCache; + property SystemIsSuperHidden: Boolean read FSystemIsSuperHidden write FSystemIsSuperHidden; + + public + constructor Create(PIDL: PItemIdList; AParent: TNamespace); + destructor Destroy; override; + + constructor CreateCustomNamespace(CustomID: Integer; AParent: TNamespace); virtual; + constructor CreateFromFileName(FileName: WideString); virtual; + function CanCopyAll(NamespaceArray: TNamespaceArray): Boolean; virtual; + function CanCutAll(NamespaceArray: TNamespaceArray): boolean; virtual; + function CanDeleteAll(NamespaceArray: TNamespaceArray): Boolean; virtual; + function CanPasteToAll(NamespaceArray: TNamespaceArray): Boolean; virtual; + function CanShowPropertiesOfAll(NamespaceArray: TNamespaceArray): Boolean; virtual; + function Clone(ReleasePIDLOnDestroy: Boolean): TNameSpace; virtual; + function ComparePIDL(PIDLToCompare: PItemIDList; IsAbsolutePIDL: Boolean; Column: Integer = 0): ShortInt; virtual; + function ContextMenuItemHelp(MenuItemID: LongWord): WideString; virtual; + function ContextMenuVerb(MenuItemID: LongWord): WideString; virtual; + function Copy(NamespaceArray: TNamespaceArray): Boolean; virtual; + function Cut(NamespaceArray: TNamespaceArray): Boolean; virtual; + function DataObjectMulti(NamespaceArray: TNamespaceArray): IDataObject; virtual; + function Delete(NamespaceArray: TNamespaceArray): Boolean; virtual; + function DetailsAlignment(ColumnIndex: Integer): TAlignment; virtual; + function DetailsColumnTitle(ColumnIndex: integer): WideString; virtual; + function DetailsDefaultColumnTitle(ColumnIndex: integer): WideString; virtual; + function DetailsDefaultOf(ColumnIndex: integer): WideString; virtual; + function DetailsDefaultSupportedColumns: integer; virtual; + function DetailsGetDefaultColumnState(ColumnIndex: integer): TSHColumnStates; virtual; + function DetailsOf(ColumnIndex: integer): WideString; virtual; + function DetailsOfEx(ColumnIndex: integer): WideString; virtual; + function DetailsSupportedColumns: integer; virtual; + function DetailsSupportedVisibleColumns: TVisibleColumnIndexArray; virtual; + function DetailsValidIndex(DetailsIndex: integer): Boolean; virtual; + function DragEffect(grfKeyState: integer): HRESULT; virtual; + function DragEnter(const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult; virtual; + function DragLeave: HResult; virtual; + function DragOver(grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult; virtual; + function Drop(const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult; virtual; + function EnumerateFolder(MessageWnd: HWnd; Folders, NonFolders, IncludeHidden: Boolean; + EnumFunc: TEnumFolderCallback; UserData: pointer): integer; virtual; + function EnumerateFolderEx(MessageWnd: HWnd; FileObjects: TFileObjects; EnumFunc: TEnumFolderCallback; UserData: pointer; AfterValidEnumIDList: TNotifyEvent = nil): integer; virtual; + function ExecuteContextMenuVerb(AVerb: WideString; APIDLArray: TRelativePIDLArray; MessageWindowParent: HWnd = 0): Boolean; virtual; + function FolderSize(Invalidate: Boolean; RecurseFolder: Boolean = False): Int64; virtual; + function GetIconIndex(OpenIcon: Boolean; IconSize: TIconSize; ForceLoad: Boolean = True): integer; virtual; + function GetImage: TBitmap; virtual; + function VerifyPIDLRelationship(NamespaceArray: TNamespaceArray; + Silent: Boolean = False): Boolean; + procedure HandleContextMenuMsg(Msg, wParam, lParam: Longint; var Result: LRESULT); virtual; + procedure InvalidateCache; virtual; + procedure InvalidateDetailsOfCache(FlushStrings: Boolean); + procedure InvalidateNamespace(RefreshIcon: Boolean = True); virtual; + procedure InvalidateRelativePIDL(FileObjects: TFileObjects); virtual; + procedure InvalidateThumbImage; virtual; + function IsChildByNamespace(TestNamespace: TNamespace; Immediate: Boolean): Boolean; virtual; + function IsChildByPIDL(TestPIDL: PItemIDList; Immediate: Boolean): Boolean; virtual; + function IsChildOfRemovableDrive: Boolean; virtual; + function IsControlPanel: Boolean; virtual; + function IsControlPanelChildFolder: Boolean; virtual; + function IsDesktop: Boolean; virtual; + + function IsMyComputer: Boolean; virtual; + function IsNetworkNeighborhood: Boolean; virtual; + function IsNetworkNeighborhoodChild: Boolean; virtual; + function IsParentByNamespace(TestNamespace: TNamespace; Immediate: Boolean): Boolean; virtual; + function IsParentByPIDL(TestPIDL: PItemIDList; Immediate: Boolean): Boolean; virtual; + function IsRecycleBin: Boolean; + function OkToBrowse(ShowExplorerMsg: Boolean): Boolean; virtual; + function ParseDisplayName: PItemIDList; overload; virtual; + function ParseDisplayName(Path: WideString): PItemIDList; overload; virtual; + function Paste(NamespaceArray: TNamespaceArray; AsShortCut: Boolean = False): Boolean; virtual; + procedure SetDetailByThread(ColumnIndex: Integer; Detail: WideString); + procedure SetIconIndexByThread(IconIndex: Integer; ClearThreadLoading: Boolean); virtual; + procedure SetImageByThread(Bitmap: TBitmap; ClearThreadLoading: Boolean); virtual; + function SetNameOf(NewName: WideString): Boolean; virtual; + function ShellExecuteNamespace(WorkingDir, CmdLineArguments: WideString; ExecuteFolder: Boolean = False; + ExecuteFolderShortCut: Boolean = False; RunInThread: Boolean = False): Boolean; virtual; + function ShowContextMenu(Owner: TWinControl; + ContextMenuCmdCallback: TContextMenuCmdCallback; ContextMenuShowCallback: TContextMenuShowCallback; + ContextMenuAfterCmdCallback: TContextMenuAfterCmdCallback; Position: PPoint = nil; + CustomShellSubMenu: TPopupMenu = nil; CustomSubMenuCaption: WideString = ''): Boolean; virtual; + function ShowContextMenuMulti(Owner: TWinControl; + ContextMenuCmdCallback: TContextMenuCmdCallback; + ContextMenuShowCallback: TContextMenuShowCallback; + ContextMenuAfterCmdCallback: TContextMenuAfterCmdCallback; + NamespaceArray: TNamespaceArray; Position: PPoint = nil; + CustomShellSubMenu: TPopupMenu = nil; + CustomSubMenuCaption: WideString = ''): Boolean; virtual; + procedure ShowPropertySheet; virtual; + procedure ShowPropertySheetMulti(NamespaceArray: TNamespaceArray; + UseSHMultiFileProperties: Boolean = True; + ForceNonMultiPath: Boolean = False); virtual; + function SubFoldersEx(Flags: Longword = SHCONTF_FOLDERS): Boolean; virtual; + function SubItemsEx(Flags: Longword = SHCONTF_NONFOLDERS): Boolean; virtual; + function TestAttributesOf(Flags: Longword; FlushCache: Boolean; SoftFlush: Boolean = False): Boolean; virtual; + + property AbsolutePIDL: PItemIDList read FAbsolutePIDL write FAbsolutePIDL; + property AdvDetailsSupported: Boolean read GetDetailsSupported; + property Browsable: Boolean read GetBrowsable; + property BrowserFrameOptionsInterface: IBrowserFrameOptions read GetBrowserFrameOptionsInterface; + property CanCopy: Boolean read GetCanCopy; + property CanDelete: Boolean read GetCanDelete; + property CanLink: Boolean read GetCanLink; + property CanMoniker: Boolean read GetCanMoniker; + property CanMove: Boolean read GetCanMove; + property CanRename: Boolean read GetCanRename; + + property CategoryCount: Integer read GetCategoryCount; + property CategoryProviderInterface: ICategoryProvider read GetCategoryProviderInterface; + + + property CLSID: TGUID read GetCLSID; + property ContextMenuInterface: IContextMenu read GetContextMenuInterface; + property ContextMenu2Interface: IContextMenu2 read GetContextMenu2Interface; + property ContextMenu3Interface: IContextMenu3 read GetContextMenu3Interface; + property DataObjectInterface: IDataObject read GetDataObjectInterface; + property Description: TObjectDescription read GetDescription; + property DropTarget: Boolean read GetDropTarget; + property DropTargetInterface: IDropTarget read GetDropTargetInterface; + property Encrypted: Boolean read GetEncrypted; + property ExtractImage: TExtractImage read GetExtractImage; + property ExtractIconAInterface: IExtractIconA read GetExtractIconAInterface; + property ExtractIconWInterface: IExtractIconW read GetExtractIconWInterface; + property FileSystem: Boolean read GetFileSystem; + property FileSysAncestor: Boolean read GetFileSysAncestor; + property Folder: Boolean read GetFolder; + property FreePIDLOnDestroy: Boolean read GetFreePIDLOnDestroy write SetFreePIDLOnDestroy; + property Ghosted: Boolean read GetGhosted; + property HasPropSheet: Boolean read GetHasPropSheet; + property HasStorage: Boolean read GetHasStorage; + property HasSubFolder: Boolean read GetHasSubFolder; + property IconIndexChanged: Boolean read GetIconIndexChanged write SetIconIndexChanged; + property IsSlow: Boolean read GetIsSlow; + property Link: Boolean read GetLink; + property InfoTip: WideString read GetInfoTip; + property NameAddressbar: WideString read GetNameAddressbar; + property NameAddressbarInFolder: WideString read GetNameAddressbarInFolder; + property NameForEditing: WideString read GetNameForEditing; + property NameForEditingInFolder: WideString read GetNameForEditingInFolder; + property NameForParsing: WideString read GetNameForParsing; + property NameForParsingInFolder: WideString read GetNameForParsingInFolder; + property NameInFolder: WideString read GetNameInFolder; + property NameNormal: WideString read GetNameNormal; + property NameParseAddress: WideString read GetNameParseAddress; + property NameParseAddressInFolder: WideString read GetNameParseAddressInFolder; + property NamespaceID: integer read FNamespaceID; + property NewContent: Boolean read GetNewContent; + property NonEnumerated: Boolean read GetNonEnumerated; + property Parent: TNamespace read GetParent; + property ParentShellFolder: IShellFolder read GetParentShellFolder; + property ParentShellFolder2: IShellFolder2 read GetParentShellFolder2; + property ParentShellDetailsInterface: IVETShellDetails read GetParentShellDetailsInterface; + property QueryAssociationsInterface: IQueryAssociations read GetQueryAssociationsInterface; + property ReadOnly: Boolean read GetReadOnly; + property RelativePIDL: PItemIDList read FRelativePIDL; // Single Item ID of this namespace + property Removable: Boolean read GetRemovable; + property Share: Boolean read GetShare; + property ShellFolder: IShellFolder read GetShellFolder; + property ShellFolder2: IShellFolder2 read GetShellFolder2; + property ShellDetailsInterface: IVETShellDetails read GetShellDetailsInterface; + property ShellLink: TVirtualShellLink read GetShellLink; + property ShellIconInterface: IShellIcon read GetShellIconInterface; + property ShellIconOverlayInterface: IShellIconOverlay read GetShellIconOverlayInterface; + property ShortFileName: WideString read GetShortFileName; + property SparseFile: Boolean read GetSparseFile; + property States: TNamespaceStates read FStates write FStates; + property Storage: Boolean read GetStorage; + property StorageAncestor: Boolean read GetStorageAncestor; + property Stream: Boolean read GetStream; + property SubFolders: Boolean read GetSubFolders; + property SubItems: Boolean read GetSubItems; + property Tag: integer read FTag write FTag; + property ThreadedDetailLoaded[Column: Integer]: Boolean read GetThreadedDetailLoaded write SetThreadedDetailLoaded; + property ThreadedDetailLoading[Column: Integer]: Boolean read GetThreadedDetailLoading write SetThreadedDetailLoading; + property ThreadedIconLoaded: Boolean read GetThreadedIconLoaded; + property ThreadIconLoading: Boolean read GetThreadIconLoading write SetThreadIconLoading; + property ThreadImageLoaded: Boolean read GetThreadedImageLoaded; + property ThreadImageLoading: Boolean read GetThreadedImageLoading write SetThreadImageLoading; + property TileDetail: TCommonIntegerDynArray read FTileDetail write FTileDetail; + property QueryInfoInterface: IQueryInfo read GetQueryInfoInterface; + property Win32FindDataA: PWin32FindDataA read FWin32FindDataA; + property Win32FindDataW: PWin32FindDataW read FWin32FindDataW; + { Information on namespaces that are actual files. } + property AttributesString: WideString read GetAttributesString; // Explorer type 'RHSA' + property Archive: Boolean read GetArchive; + property Compressed: Boolean read GetCompressed; + property CreationTime: WideString read GetCreationTime; + property CreationDateTime: TDateTime read GetCreationDateTime; + property CreationTimeRaw: TFileTime read GetCreationTimeRaw; + property Directory: Boolean read GetDirectory; + property Extension: WideString read GetExtension; + property FileName: WideString read GetFileName; + property FileType: WideString read GetFileType; + property Hidden: Boolean read GetHidden; + property LastAccessTime: WideString read GetLastAccessTime; + property LastAccessDateTime: TDateTime read GetLastAccessDateTime; + property LastAccessTimeRaw: TFileTime read GetLastAccessTimeRaw; + property LastWriteTime: WideString read GetLastWriteTime; + property LastWriteDateTime: TDateTime read GetLastWriteDateTime; + property LastWriteTimeRaw: TFileTime read GetLastWriteTimeRaw; + property Normal: Boolean read GetNormal; + property OffLine: Boolean read GetOffLine; + property OverlayIndex: Integer read GetOverlayIndex; + property OverlayIconIndex: Integer read GetOverlayIconIndex; + property ReadOnlyFile: Boolean read GetReadOnlyFile; + property ReparsePoint: Boolean read GetReparsePoint; + property SizeOfFile: WideString read GetSizeOfFile; + property SizeOfFileInt64: Int64 read GetSizeOfFileInt64; + property SizeOfFileKB: WideString read GetSizeOfFileKB; + property SizeOfFileDiskUsage: WideString read GetSizeOfFileDiskUsage; + property SystemFile: Boolean read GetSystem; + property Temporary: Boolean read GetTemporary; + property Valid: Boolean read GetValid; + end; +{-------------------------------------------------------------------------------} + + {$IFNDEF COMPILER_5_UP} + TObjectList = class(TList) + private + FOwnsObjects: Boolean; + protected + function GetItem(Index: Integer): TObject; + procedure SetItem(Index: Integer; AObject: TObject); + public + constructor Create; overload; + constructor Create(AOwnsObjects: Boolean); overload; + + function Add(AObject: TObject): Integer; + function Remove(AObject: TObject): Integer; + function IndexOf(AObject: TObject): Integer; + function FindInstanceOf(AClass: TClass; AExact: Boolean = True; AStartAt: Integer = 0): Integer; + procedure Insert(Index: Integer; AObject: TObject); + function First: TObject; + function Last: TObject; + property OwnsObjects: Boolean read FOwnsObjects write FOwnsObjects; + property Items[Index: Integer]: TObject read GetItem write SetItem; default; + end; + {$ENDIF} + + TVirtualNameSpaceList = class(TObjectList) + private + function GetItems(Index: Integer): TNamespace; + procedure SetItems(Index: Integer; ANamespace: TNamespace); + public + function Add(ANamespace: TNamespace): Integer; + procedure FillArray(var NamespaceArray: TNamespaceArray); + function IndexOf(ANamespace: TNamespace): Integer; + procedure Insert(Index: Integer; ANamespace: TNamespace); + property Items[Index: Integer]: TNamespace read GetItems write SetItems; default; + end; + + // + // Used to operate on files that are not the immediate children of the parent + // for instance in a search list + // + // This class will only work on a system that has Shell32.dll version 4.71 and + // higher. If the system has at least IE 4.0 it should be compatible + // + // Use this class as the starting point for a custom Shell Context Menu. It + // will handle all of the localization of names for you. + // It will also handle objects that do not have the same immediate parent such + // as in a search list. + // + // There is some danger to this as the app could free the object while + // the shell still has a connection to it through IShellFolder or IDropTarget. + // It should be virtually impossible to do this as the shell only connects to + // the interfaces during the time the menu is open. + PMenuItemLink = ^TMenuItemLink; + TMenuItemLink = record + MenuID: UINT; + {$IFDEF TNTSUPPORT} + Item: TTntMenuItem; + {$ELSE} + Item: TMenuItem + {$ENDIF} + end; + + TMenuItemMap = class(TList) + protected + function Get(Index: Integer): PMenuItemLink; + procedure Put(Index: Integer; Item: PMenuItemLink); + public + function Add: PMenuItemLink; + function First: PMenuItemLink; + function IndexOf(Item: PMenuItemLink): Integer; + procedure Clear; override; + function Insert(Index: Integer): PMenuItemLink; reintroduce; + function Last: PMenuItemLink; + function Remove(Item: PMenuItemLink): Integer; + property Items[Index: Integer]: PMenuItemLink read Get write Put; default; + end; + + TCommonShellContextMenu = class(TComponent, IUnknown, IShellFolder, IDropTarget) + private + FActiveFolder: IShellFolder; + FActivePIDLs: TPIDLArray; + FCopyValidated: Boolean; + FCurrentContextMenu: IContextMenu; + FCurrentContextMenu2: IContextMenu2; + FCutValidated: Boolean; + FExtensions: TCommonShellContextMenuExtensions; + FFromDesktop: Boolean; + FLocalFocused: TNamespace; + FLocalNamespaces: TNamespaceArray; + FMenuMap: TMenuItemMap; + FOldWndProcForContextMenu: TWndMethod; + {$IFDEF TNTSUPPORT} + FKeyStrings: TTntStringList; + {$ELSE} + FKeyStrings: TStringList; + {$ENDIF} + FOnHide: TCommonShellMenuEvent; + FOnInvokeCommand: TCommonShellMenuInvokeEvent; + FOnMenuMerge: TCommonShellMenuMergeEvent; + FOnMenuMergeBottom: TCommonShellMenuMergeEvent; + FOnMenuMergeTop: TCommonShellMenuMergeEvent; + FOnShellMenuCopy: TCommonShellMenuCopyEvent; + FOnShellMenuCreateShortcut: TCommonShellMenuCreateShortcutEvent; + FOnShellMenuCut: TCommonShellMenuCutEvent; + FOnShellMenuDelete: TCommonShellMenuDeleteEvent; + FOnShellMenuNewFolder: TCommonShellMenuNewFolderEvent; + FOnShellMenuPaste: TCommonShellMenuPasteEvent; + FOnShellMenuPasteLink: TCommonShellMenuPasteLinkEvent; + FOnShellMenuPasteShortCut: TCommonShellMenuPasteShortCutEvent; + FOnShellMenuProperites: TCommonShellMenuProperitesEvent; + FOnShow: TCommonShellMenuEvent; + FRenameMenuItem: Boolean; + FStub: Pointer; + FPasteMenuItem: Boolean; + FUIObjectOfDataObject: IDataObject; + FUIObjectOfDropTarget: IDropTarget; + protected + // IUnknown + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + + // IShellFolder + function ParseDisplayName(hwndOwner: HWND; pbcReserved: Pointer; lpszDisplayName: POLESTR; out pchEaten: ULONG; out ppidl: PItemIDList; var dwAttributes: ULONG): HResult; stdcall; + function EnumObjects(hwndOwner: HWND; grfFlags: DWORD; out EnumIDList: IEnumIDList): HResult; stdcall; + function BindToObject(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvOut{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; stdcall; + function BindToStorage(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvObj{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; stdcall; + function CompareIDs(lParam: LPARAM; pidl1, pidl2: PItemIDList): HResult; stdcall; + function CreateViewObject(hwndOwner: HWND; const riid: TIID; out ppvOut{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; stdcall; + function GetAttributesOf(cidl: UINT; var apidl: PItemIDList; var rgfInOut: UINT): HResult; stdcall; + function GetUIObjectOf(hwndOwner: HWND; cidl: UINT; var apidl: PItemIDList; const riid: TIID; prgfInOut: Pointer; out ppvOut{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; stdcall; + function GetDisplayNameOf(pidl: PItemIDList; uFlags: DWORD; var lpName: TStrRet): HResult; stdcall; + function SetNameOf(hwndOwner: HWND; pidl: PItemIDList; lpszName: POLEStr; uFlags: DWORD; var ppidlOut: PItemIDList): HResult; stdcall; + // IDropTarget + function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; + function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; + function DragLeave: HResult; stdcall; + function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; + + function DefMenuCreateCallback(const psf: IShellfolder; wnd: HWND; const pdtObj: IDataObject; uMsg: UINT; WParm: WParam; lParm: LParam): HResult; stdcall; + + procedure AddMenuKey(Key: WideString); + {$IFDEF TNTSUPPORT} + procedure AddMenuKeys(Keys: TTntStringList); + {$ELSE} + procedure AddMenuKeys(Keys: TStringList); + {$ENDIF} + procedure ClearKeys; + procedure DoCopy(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoCreateShortCut(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoCut(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoDelete(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoHide; virtual; + {$IFDEF TNTSUPPORT} + procedure DoInvokeCommand(MenuItem: TTntMenuItem; InvokeInfo: PCMInvokeCommandInfo); virtual; + {$ELSE} + procedure DoInvokeCommand(MenuItem: TMenuItem; InvokeInfo: PCMInvokeCommandInfo); virtual; + {$ENDIF} + procedure DoMenuMerge(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); virtual; + procedure DoMenuMergeBottom(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); virtual; + procedure DoMenuMergeTop(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); virtual; + procedure DoNewFolder(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoPaste(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoPasteLink(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoPasteShortCut(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoProperties(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); virtual; + procedure DoShow; virtual; + function DuplicateKey(Key: HKEY): HKEY; + {$IFDEF TNTSUPPORT} + function FindCommandId(CmdID: UINT; var MenuItem: TTntMenuItem): Boolean; + {$ELSE} + function FindCommandId(CmdID: UINT; var MenuItem: TMenuItem): Boolean; + {$ENDIF} + procedure HandleContextMenuMsg(Msg, wParam, lParam: Longint; var Result: LRESULT); stdcall; + function InternalShowContextMenu(Owner: TWinControl; ParentPIDL: PItemIDList; ChildPIDLs: TAbsolutePIDLArray; Verb: WideString; Position: PPoint = nil): Boolean; + procedure LoadMultiFolderPIDLArray(Namespaces: TNamespaceArray; var PIDLs: TAbsolutePIDLArray); + procedure LoadRegistryKeyStrings(Focused: TNamespace); virtual; abstract; + procedure WindowProcForContextMenu(var Message: TMessage); + + property ActiveFolder: IShellFolder read FActiveFolder write FActiveFolder; + property ActivePIDLs: TPIDLArray read FActivePIDLs write FActivePIDLs; + property CopyValidated: Boolean read FCopyValidated write FCopyValidated; + property CurrentContextMenu2: IContextMenu2 read FCurrentContextMenu2 write FCurrentContextMenu2; + property CurrentContextMenu: IContextMenu read FCurrentContextMenu write FCurrentContextMenu; + property CutValidated: Boolean read FCutValidated write FCutValidated; + property Extensions: TCommonShellContextMenuExtensions read FExtensions write FExtensions; + property FromDesktop: Boolean read FFromDesktop write FFromDesktop; + {$IFDEF TNTSUPPORT} + property KeyStrings: TTntStringList read FKeyStrings write FKeyStrings; + {$ELSE} + property KeyStrings: TStringList read FKeyStrings write FKeyStrings; + {$ENDIF} + property LocalFocused: TNamespace read FLocalFocused write FLocalFocused; + property LocalNamespaces: TNamespaceArray read FLocalNamespaces write FLocalNamespaces; + property MenuMap: TMenuItemMap read FMenuMap write FMenuMap; + property OnHide: TCommonShellMenuEvent read FOnHide write FOnHide; + property OnInvokeCommand: TCommonShellMenuInvokeEvent read FOnInvokeCommand write FOnInvokeCommand; + property OnMenuMerge: TCommonShellMenuMergeEvent read FOnMenuMerge write FOnMenuMerge; + property OnMenuMergeBottom: TCommonShellMenuMergeEvent read FOnMenuMergeBottom write FOnMenuMergeBottom; + property OnMenuMergeTop: TCommonShellMenuMergeEvent read FOnMenuMergeTop write FOnMenuMergeTop; + property OnShellMenuCopy: TCommonShellMenuCopyEvent read FOnShellMenuCopy write FOnShellMenuCopy; + property OnShellMenuCreateShortCut: TCommonShellMenuCreateShortcutEvent read FOnShellMenuCreateShortcut write FOnShellMenuCreateShortcut; + property OnShellMenuCut: TCommonShellMenuCutEvent read FOnShellMenuCut write FOnShellMenuCut; + property OnShellMenuDelete: TCommonShellMenuDeleteEvent read FOnShellMenuDelete write FOnShellMenuDelete; + property OnShellMenuNewFolder: TCommonShellMenuNewFolderEvent read FOnShellMenuNewFolder write FOnShellMenuNewFolder; + property OnShellMenuPaste: TCommonShellMenuPasteEvent read FOnShellMenuPaste write FOnShellMenuPaste; + property OnShellMenuPasteLink: TCommonShellMenuPasteLinkEvent read FOnShellMenuPasteLink write FOnShellMenuPasteLink; + property OnShellMenuPasteShortCut: TCommonShellMenuPasteShortCutEvent read FOnShellMenuPasteShortCut write FOnShellMenuPasteShortCut; + property OnShellMenuProperites: TCommonShellMenuProperitesEvent read FOnShellMenuProperites write FOnShellMenuProperites; + property OnShow: TCommonShellMenuEvent read FOnShow write FOnShow; + property Stub: Pointer read FStub write FStub; + property RenameMenuItem: Boolean read FRenameMenuItem write FRenameMenuItem default True; + property PasteMenuItem: Boolean read FPasteMenuItem write FPasteMenuItem default True; + property UIObjectOfDataObject: IDataObject read FUIObjectOfDataObject write FUIObjectOfDataObject; + property UIObjectOfDropTarget: IDropTarget read FUIObjectOfDropTarget write FUIObjectOfDropTarget; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + {$IFDEF TNTSUPPORT} + function MergeMenuIntoContextMenu(Menu: TTntPopupMenu; ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; + {$ELSE} + function MergeMenuIntoContextMenu(Menu: TPopupMenu; ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; + {$ENDIF} + procedure ClearMenuMap; + end; + +{*******************************************************************************} +{ Shell ContextMenu } +{*******************************************************************************} + TCommonShellBackgroundContextMenu = class(TCommonShellContextMenu) + private + FAutoDetectNewItem: Boolean; + FFinalItemList: TCommonPIDLList; + FInitialItemList: TCommonPIDLList; + FOnNewItem: TCommonShellMenuNewItemEvent; + {$IFDEF TNTSUPPORT} + FPaste: TTntMenuItem; + FPasteShortCut: TTntMenuItem; + FPopupMenuProperties: TTntPopupMenu; + FPopupMenuPaste: TTntPopupMenu; + FPopupMenuPasteShortCut: TTntPopupMenu; + FProperties: TTntMenuItem; + {$ELSE} + FPaste: TMenuItem; + FPasteShortCut: TMenuItem; + FPopupMenuProperties: TPopupMenu; + FPopupMenuPaste: TPopupMenu; + FPopupMenuPasteShortCut: TPopupMenu; + FProperties: TMenuItem; + {$ENDIF} + FShowPasteItem: Boolean; + FShowPasteShortCutItem: Boolean; + FShowPropertiesItem: Boolean; + protected + procedure ClickPaste(Sender: TObject); + procedure ClickPasteShortCut(Sender: TObject); + procedure ClickProperties(Sender: TObject); + procedure DoHide; override; + procedure DoMenuMerge(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); override; + procedure DoMenuMergeBottom(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); override; + procedure DoMenuMergeTop(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); override; + procedure DoNewItem(NS: TNamespace); virtual; + procedure DoShow; override; + procedure LoadRegistryKeyStrings(Focused: TNamespace); override; + property FinalItemList: TCommonPIDLList read FFinalItemList write FFinalItemList; + property InitialItemList: TCommonPIDLList read FInitialItemList write FInitialItemList; + {$IFDEF TNTSUPPORT} + property Paste: TTntMenuItem read FPaste write FPaste; + property PasteShortCut: TTntMenuItem read FPasteShortCut write FPasteShortCut; + property PopupMenuProperties: TTntPopupMenu read FPopupMenuProperties write FPopupMenuProperties; + property PopupMenuPaste: TTntPopupMenu read FPopupMenuPaste write FPopupMenuPaste; + property PopupMenuPasteShortCut: TTntPopupMenu read FPopupMenuPasteShortCut write FPopupMenuPasteShortCut; + property Properties: TTntMenuItem read FProperties write FProperties; + {$ELSE} + property Paste: TMenuItem read FPaste write FPaste; + property PasteShortCut: TMenuItem read FPasteShortCut write FPasteShortCut; + property PopupMenuProperties: TPopupMenu read FPopupMenuProperties write FPopupMenuProperties; + property PopupMenuPaste: TPopupMenu read FPopupMenuPaste write FPopupMenuPaste; + property PopupMenuPasteShortCut: TPopupMenu read FPopupMenuPasteShortCut write FPopupMenuPasteShortCut; + property Properties: TMenuItem read FProperties write FProperties; + {$ENDIF} + property RenameMenuItem default False; + property PasteMenuItem default False; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function EnumCallback(MessageWnd: HWnd; APIDL: PItemIDList; AParent: TNamespace; Data: Pointer; var Terminate: Boolean): Boolean; + function ShowContextMenu(Owner: TWinControl; Root: TNamespace; Position: PPoint = nil): Boolean; virtual; + published + property AutoDetectNewItem: Boolean read FAutoDetectNewItem write FAutoDetectNewItem; + property OnHide; + property OnInvokeCommand; + property OnMenuMerge; + property OnMenuMergeBottom; + property OnMenuMergeTop; + property OnNewItem: TCommonShellMenuNewItemEvent read FOnNewItem write FOnNewItem; + property OnShow; + property ShowPasteItem: Boolean read FShowPasteItem write FShowPasteItem default True; + property ShowPasteShortCutItem: Boolean read FShowPasteShortCutItem write FShowPasteShortCutItem default True; + property ShowPropertiesItem: Boolean read FShowPropertiesItem write FShowPropertiesItem default True; + end; + + TCommonShellMultiParentContextMenu = class(TCommonShellContextMenu) + protected + procedure LoadRegistryKeyStrings(Focused: TNamespace); override; + public + function ExecuteContextMenuVerb(Owner: TWinControl; Namespaces: TNamespaceArray; Verb: string): Boolean; virtual; + function ShowContextMenu(Owner: TWinControl; Focused: TNamespace; Namespaces: TNamespaceArray; Position: PPoint = nil): Boolean; virtual; + published + property OnHide; + property OnShellMenuCopy; + property OnShellMenuCreateShortCut; + property OnShellMenuCut; + property OnShellMenuDelete; + property OnShellMenuNewFolder; + property OnShellMenuPaste; + property OnShellMenuPasteLink; + property OnShellMenuPasteShortCut; + property OnShellMenuProperites; + property RenameMenuItem; + property PasteMenuItem; + property OnShow; + end; + + +{-------------------------------------------------------------------------------} +{ Exported Functions } +{-------------------------------------------------------------------------------} + + // Rectange Functions + function RectWidth(ARect: TRect): integer; + function RectHeight(ARect: TRect): integer; + + // PIDL Functions + function FindBrowseableRootPIDL(NS: TNamespace): PItemIDList; + function IsParentBrowseable(NS: TNamespace): Boolean; + function NamespaceToAbsolutePIDLArray(Namespaces: TNamespaceArray): TAbsolutePIDLArray; + function NamespaceToRelativePIDLArray(Namespaces: TNamespaceArray): TRelativePIDLArray; + function PathToPIDL(APath: WideString): PItemIDList; + function PIDLToPath(APIDL: PItemIDList): WideString; + function DirExistsVET(APath: WideString; ShowSystemMessages: Boolean): Boolean; overload; + function DirExistsVET(NS: TNamespace; ShowSystemMessages: Boolean): Boolean; overload; + procedure PIDLListQuickSort(PIDLList: TCommonPIDLList; const ParentFolder: IShellFolder; L, R: Integer); + procedure PIDLQuickSort(PIDLList: TPIDLArray; const ParentFolder: IShellFolder; L, R: Integer); + + // Time Conversions + //** NOTE these are not WideString functions they will use ANSI strings internally + function ConvertLocalStrToTFileTime(LocalStr: WideString; var FileTime: TFileTime): Boolean; + function ConvertTFileTimeToLocalStr(AFileTime: TFILETIME): WideString; + function ConvertFileTimetoDateTime(AFileTime : TFileTime): TDateTime; + + // Various Functions + function CreateSpecialNamespace(FolderID: integer): TNamespace; + function DefaultSystemImageIndex(FolderType: TDefaultFolderIcon): integer; + function FileIconInit(FullInit: BOOL): BOOL; stdcall; + function IENamespaceShown(PerUser: Boolean): Boolean; + function GUIDToInterfaceStr(riid: TGUID): String; + function CFM_FlagsToShellContextMenuFlags(Flags: DWORD): TShellContextMenuFlags; + function ClipboardContainsShellFormats: Boolean; + +// IShellLink (ShortCut) helpers + function CreateShellLink( + ALnkFilePath, + ATargetFilePath: WideString; + AnArguments: WideString = ''; + AWorkingDir: WideString = ''; + ADescription: WideString = ''; + AShowCmd: TCmdShow = swShowNormal; + AHotKey: Word = 0; + AHotKeyModifier: THotKeyModifiers = []; + AnIconLocation: WideString = ''; + AnIconIndex: integer = 0 + ): Boolean; + function HotKeyModifiersToStr(HotKeyMod: THotKeyModifiers): WideString; + function PotentialMappedDrive(NS: TNamespace): Boolean; + function FileObjectsToFlags(FileObjects: TFileObjects): DWORD; + function FileObjectsToString(FileObjects: TFileObjects): WideString; + + {$ifdef COMPILER_4} + procedure FreeAndNil(var Obj); + function Supports(const Instance: IUnknown; const Intf: TGUID; out Inst): Boolean; + {$endif} + + function GetDiskFreeSpaceMP(Drive: PWideChar; var SectorsperCluster, BytesperSector, FreeClusters, TotalClusters: DWORD): boolean; + function DriveSize(Drive: PWideChar): Int64; overload; + function DriveSize(Drive: PWideChar; ByteSize: TBtyeSize): WideString; overload; + function DriveFreeSpace(Drive: PWideChar): Int64; overload; + function DriveFreeSpace(Drive: PWideChar; ByteSize: TBtyeSize): WideString; overload; + + function IsSpecialVariable(TestPath: WideString; var NS: TNamespace): Boolean; + function SpecialVariableReplacePath(var Path: WideString): Boolean; + +// function MPBrowseForFolder(Title, InitialPath: WideString; BrowseFlags: TMPBrowseFlags): WideString; overload; + function MPBrowseForFolder(Title, RootFolder, InitialPath: WideString; BrowseFlags: TMPBrowseFlags; var SelectedPath: WideString): Boolean; overload; + function MPBrowseForFolder(Title: WideString; RootFolder, InitialPath: PItemIDList; BrowseFlags: TMPBrowseFlags; var SelectedPath: PItemIDList): Boolean; overload; + + // Merges a TVirtualShellPopupMenu object into a Shell Context Menu + {$IFDEF TNTSUPPORT} + function MergeMenuIntoContextMenu(Menu: TTntPopupMenu; ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; + {$ELSE} + function MergeMenuIntoContextMenu(Menu: TPopupMenu; ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; + {$ENDIF} + +var + { A few global common Namespaces to be used for various purposes. } + PIDLMgr: TCommonPIDLManager; + DesktopFolder, + RecycleBinFolder, + PhysicalDesktopFolder, + DrivesFolder, + HistoryFolder, + PrinterFolder, + ControlPanelFolder, + NetworkNeighborHoodFolder, + TemplatesFolder, + MyDocumentsFolder, + FavoritesFolder, + ProgramFilesFolder, + UserDocumentsFolder: TNamespace; + SHLimitInputEdit: TSHLimitInputEdit; + + AnimateWindow: function(Wnd: HWND; dwTime: Cardinal; dwFlags: Cardinal): WordBool; stdcall; + + // Fundamental Change in Version 2.0. Should be more correct in what shell dialogs + // are Modal and if they stay on top of the correct window. + MP_UseModalDialogs: Boolean = True; // Causes calls to GetUIIObject to use a parent window + MP_UseSpecialReparsePointOverlay: Boolean = False; // Shows an overlay on Reparse points + MP_ThreadedShellExecute: Boolean = False; // Causes shell Execute to be launched in a separate thread + +implementation + +uses + Dialogs; + +type + TShellILIsParent = function(PIDL1: PItemIDList; PIDL2: PItemIDList; + ImmediateParent: LongBool): LongBool; stdcall; + TShellILIsEqual = function(PIDL1: PItemIDList; PIDL2: PItemIDList): LongBool; stdcall; + +var + ShellILIsParent: TShellILIsParent; + ShellILIsEqual: TShellILIsEqual; + +//////////////////////////////////////////////////////////////////////////////// +// Global Functions +//////////////////////////////////////////////////////////////////////////////// + +function SpecialVariableReplacePath(var Path: WideString): Boolean; + + function ReplacePath(Path, Variable, VarPath: WideString): WideString; + begin + Result := WideStringReplace(Path, Variable, VarPath, [rfReplaceAll, rfIgnoreCase]); + end; + +var + OldPath: WideString; +begin + OldPath := Path; + + // Psudo Variables + Path := ReplacePath(Path, '%sysdir%', WideLowerCase(WideStripTrailingBackslash(SystemDirectory))); + Path := ReplacePath(Path, '%temp%', WideLowerCase(WideStripTrailingBackslash(WideGetTempDir))); + Path := ReplacePath(Path, '%appdata%', WideLowerCase(WideStripTrailingBackslash(UserDocumentsFolder.NameForParsing))); + Path := ReplacePath(Path, '%favorites%', WideLowerCase(WideStripTrailingBackslash(FavoritesFolder.NameForParsing))); + Path := ReplacePath(Path, '%personal%', WideLowerCase(WideStripTrailingBackslash(MyDocumentsFolder.NameForParsing))); + Path := ReplacePath(Path, '%templates%', WideLowerCase(WideStripTrailingBackslash(TemplatesFolder.NameForParsing))); + Path := ReplacePath(Path, '%history%', WideLowerCase(WideStripTrailingBackslash(HistoryFolder.NameForParsing))); + Path := ReplacePath(Path, '%desktopfolder%', WideLowerCase(WideStripTrailingBackslash(PhysicalDesktopFolder.NameForParsing))); + + // Environment variables + Path := ReplacePath(Path, '%userprofile%', WideStripTrailingBackslash(WideExpandEnviromentString('%USERPROFILE%'))); + Path := ReplacePath(Path, '%allusersprofile%', WideStripTrailingBackslash(WideExpandEnviromentString('%ALLUSERSPROFILE%'))); + Path := ReplacePath(Path, '%programfiles%', WideStripTrailingBackslash(WideExpandEnviromentString('%ProgramFiles%'))); + Path := ReplacePath(Path, '%systemroot%', WideStripTrailingBackslash(WideExpandEnviromentString('%SystemRoot%'))); + Path := ReplacePath(Path, '%systemdrive%', WideStripTrailingBackslash(WideExpandEnviromentString('%SystemDrive%'))); + Path := ReplacePath(Path, '%windir%', WideStripTrailingBackslash(WideExpandEnviromentString('%windir%'))); + Path := ReplacePath(Path, '%tmp%', WideStripTrailingBackslash(WideExpandEnviromentString('%TMP%'))); + Path := ReplacePath(Path, '%temp%', WideStripTrailingBackslash(WideExpandEnviromentString('%TEMP%'))); + Path := ReplacePath(Path, '%public%', WideStripTrailingBackslash(WideExpandEnviromentString('%PUBLIC%'))); + Path := ReplacePath(Path, '%programdata%', WideStripTrailingBackslash(WideExpandEnviromentString('%ProgramData%'))); + Path := ReplacePath(Path, '%homedrive%', WideStripTrailingBackslash(WideExpandEnviromentString('%HOMEDRIVE%'))); + Path := ReplacePath(Path, '%homepath%', WideStripTrailingBackslash(WideExpandEnviromentString('%HOMEPATH%'))); + Path := ReplacePath(Path, '%commonprogramfiles%', WideStripTrailingBackslash(WideExpandEnviromentString('%CommonProgramFiles%'))); + Path := ReplacePath(Path, '%appdata%', WideStripTrailingBackslash(WideExpandEnviromentString('%APPDATA%'))); + + Result := OldPath <> Path +end; + +function IsSpecialVariable(TestPath: WideString; var NS: TNamespace): Boolean; +var + PIDL: PItemIDList; +begin + NS := nil; + + PIDL := nil; + + if WideLowerCase(TestPath) = '%desktop%' then + PIDL := PIDLMgr.CopyPIDL(DesktopFolder.AbsolutePIDL) + else + if WideLowerCase(TestPath) = '%network%' then + PIDL := PIDLMgr.CopyPIDL(NetworkNeighborHoodFolder.AbsolutePIDL) + else + if WideLowerCase(TestPath) = '%printer%' then + PIDL := PIDLMgr.CopyPIDL(PrinterFolder.AbsolutePIDL) + else + if (WideLowerCase(TestPath) = '%drives%') or (WideLowerCase(TestPath) = '%mycomputer%') then + PIDL := PIDLMgr.CopyPIDL(DrivesFolder.AbsolutePIDL) + else begin + if SpecialVariableReplacePath(TestPath) then + if WideDirectoryExists(TestPath) then + PIDL := PathToPIDL(TestPath) + end; + + if Assigned(PIDL) then + NS := TNamespace.Create(PIDL, nil) + else + + if not Assigned(NS) and not WideDirectoryExists(TestPath) then + begin + // See if it a specially formated CLSID + PIDL := PathToPIDL(TestPath); + if Assigned(PIDL) then + NS := TNamespace.Create(PIDL, nil); + end; + Result := Assigned(NS) +end; + +function GUIDToInterfaceStr(riid: TGUID): String; +begin + if IsEqualGUID(riid, IOleCommandTarget) then + Result := 'IOleCommandTarget' + else + if IsEqualGUID(riid, IID_IPersistFreeThreadedObject) then + Result := 'IPersistFreeThreadedObject' + else + if IsEqualGUID(riid, IShellView) then + Result := 'IShellView' + else + if IsEqualGUID(riid, IID_ICategoryProvider) then + Result := 'ICategoryProvider' + else + if IsEqualGUID(riid, IID_IQueryAssociations) then + Result := 'IQueryAssociations' + else + if IsEqualGUID(riid, IID_IAssociationArray) then + Result := 'IAssociationArray' + else + if IsEqualGUID(riid, IPersistIDList) then + Result := 'IPersistIDList' + else + if IsEqualGUID(riid, IID_IInternetSecurityManager) then + Result := 'IInternetSecurityManager' + else + if IsEqualGUID(riid, IObjectWithSite) then + Result := 'IObjectWithSite' + else + if IsEqualGUID(riid, IPersist) then + Result := 'IPersist' + else + if IsEqualGUID(riid, IPersistFolder) then + Result := 'IPersistFolder' + else + if IsEqualGUID(riid, IPersistFolder2) then + Result := 'IPersistFolder2' + else + if IsEqualGUID(riid, IShellFolder) then + Result := 'IShellFolder' + else + if IsEqualGUID(riid, IShellFolder2) then + Result := 'IShellFolder2' + else + if IsEqualGUID(riid, IShellFolderViewCB) then + Result := 'IShellFolderViewCB' + else + if IsEqualGUID(riid, IContextMenu) then + Result := 'IContextMenu' + else + if IsEqualGUID(riid, IContextMenu2) then + Result := 'IContextMenu2' + else + if IsEqualGUID(riid, IContextMenu3) then + Result := 'IContextMenu3' + (* else + {$IFDEF CPPB_6_UP} + if IsEqualGUID(riid, IBCB6ShellDetails) then + {$ELSE} + if IsEqualGUID(riid, IShellDetails) then + {$ENDIF} + Result := 'IShellDetails' *) + else + if IsEqualGUID(riid, IStream) then + Result := 'IStream' + else + if IsEqualGUID(riid, IDataObject) then + Result := 'IDataObject' + else + if IsEqualGUID(riid, IDropSource) then + Result := 'IDropSource' + else + if IsEqualGUID(riid, IDropTarget) then + Result := 'IDropTarget' + else + if IsEqualGUID(riid, IExtractIconA) then + Result := 'IExtractIconA' + else + if IsEqualGUID(riid, IExtractIconW) then + Result := 'IExtractIconW' + else + if IsEqualGUID(riid, IExtractImage) then + Result := 'IExtractImage' + else + if IsEqualGUID(riid, IQueryInfo) then + Result := 'IQueryInfo' + else + if IsEqualGUID(riid, IShellIcon) then + Result := 'IShellIcon' + else + if IsEqualGUID(riid, IBrowserFrameOptions) then + Result := 'IBrowserFrameOptions' + else + if IsEqualGUID(riid, IBindHost) then + Result := 'IBindHost' + else + if IsEqualGUID(riid, IID_IBindProtocol) then + Result := 'IBindProtocol' + else + if IsEqualGUID(riid, IClassFactory) then + Result := 'IClassFactory' + else + if IsEqualGUID(riid, IShellExtInit) then + Result := 'IShellExtInit' + else + if IsEqualGUID(riid, IShellLinkW) then + Result := 'IShellLinkW' + else + if IsEqualGUID(riid, IShellLinkA) then + Result := 'IShellLinkW' + else + Result := 'Unknown GUID: ' + GUIDToString(riid) +end; + +function CFM_FlagsToShellContextMenuFlags(Flags: DWORD): TShellContextMenuFlags; +begin + Result := []; + if CMF_CANRENAME and Flags <> 0 then + Include(Result, cmfCanRename); + if CMF_CANRENAME and Flags <> 0 then + Include(Result, cmfCanRename); +// if CMF_DISABLEVERBS and Flags <> 0 then + // Include(Result, cmfDisableVerbs); + if CMF_EXPLORE and Flags <> 0 then + Include(Result, cmfExplore); + if CMF_INCLUDESTATIC and Flags <> 0 then + Include(Result, cmfIncludeStatic); + if CMF_NODEFAULT and Flags <> 0 then + Include(Result, cmfNoDefault); + if CMF_NORMAL and Flags <> 0 then + Include(Result, cmfNormal); + if CMF_NOVERBS and Flags <> 0 then + Include(Result, cmfNoVerbs); + if CMF_VERBSONLY and Flags <> 0 then + Include(Result, cmfVerbsOnly); +end; + +function ClipboardContainsShellFormats: Boolean; +begin + Result := IsClipboardFormatAvailable(CF_SHELLIDLIST) or IsClipboardFormatAvailable(CF_HDROP) +end; + +function MPBrowseForFolderCallback(Wnd: hWnd; uMsg: UINT; lParam: LPARAM; lpData: LPARAM): Integer; stdcall; +begin + case uMsg of + BFFM_INITIALIZED: + begin + // This is the PIDL of the starting folder + if lpData <> 0 then + SendMessage(Wnd, BFFM_SETSELECTION, 0, lpData); + end; + BFFM_SELCHANGED: + begin + end; + BFFM_VALIDATEFAILEDA: + begin + end; + BFFM_VALIDATEFAILEDW: + begin + end; + end; + Result := 0; +end; + +function MPBrowseForFolder(Title: WideString; RootFolder, InitialPath: PItemIDList; BrowseFlags: TMPBrowseFlags; var SelectedPath: PItemIDList): Boolean; + + function FlagsToTMPBrowseFlags(Flags: TMPBrowseFlags): DWORD; + begin + Result := 0; + if mpbfComputers in Flags then + Result := Result or BIF_BROWSEFORCOMPUTER; + if mpbfPrinters in Flags then + Result := Result or BIF_BROWSEFORPRINTER; + if mpbfDontGoBelowDomain in Flags then + Result := Result or BIF_DONTGOBELOWDOMAIN; + if mpbfFileSysAncestors in Flags then + Result := Result or BIF_RETURNFSANCESTORS; + if mpbfFileSysFolder in Flags then + Result := Result or BIF_RETURNONLYFSDIRS; + // if mpbfIncludeStatusText in Flags then + // Result := Result or BIF_STATUSTEXT; + if mpbfIncludeFiles in Flags then + Result := Result or BIF_BROWSEINCLUDEFILES; + if mpbfNewStyleDialog in Flags then + Result := Result or BIF_NEWDIALOGSTYLE; + if mpbfEditBox in Flags then + Result := Result or BIF_EDITBOX; + if mpbfIncludeURLs in Flags then + Result := Result or BIF_BROWSEINCLUDEURLS; + if mpbfSharable in Flags then + Result := Result or BIF_SHAREABLE; + if mpbfMustExist in Flags then + Result := Result or BIF_VALIDATE; + end; + +var + BrowseInfoW: TBrowseInfoW; + BrowseInfoA: TBrowseInfoA; + DisplayNameA: array [0..MAX_PATH] of Char; + DisplayNameW: array [0..MAX_PATH] of WideChar; +begin + if IsUnicode then + begin + FillChar(BrowseInfoW, SizeOf(BrowseInfoW), #0); + BrowseInfoW.hwndOwner := GetActiveWindow; + BrowseInfoW.pidlRoot := RootFolder; + BrowseInfoW.lParam := Integer( InitialPath); + BrowseInfoW.pszDisplayName := DisplayNameW; + {$IFDEF CPPB} + BrowseInfoW.lpfn := MPBrowseForFolderCallback; + {$ELSE} + BrowseInfoW.lpfn := @MPBrowseForFolderCallback; + {$ENDIF} + BrowseInfoW.lpszTitle := PWideChar(Title); + BrowseInfoW.ulFlags := FlagsToTMPBrowseFlags(BrowseFlags); + SelectedPath := SHBrowseForFolderW_MP(BrowseInfoW); + end else + begin + FillChar(BrowseInfoA, SizeOf(BrowseInfoA), #0); + BrowseInfoA.hwndOwner := GetActiveWindow; + BrowseInfoW.pidlRoot := RootFolder; + BrowseInfoA.lParam := Integer( InitialPath); + BrowseInfoA.pszDisplayName := DisplayNameA; + {$IFDEF CPPB} + BrowseInfoA.lpfn := MPBrowseForFolderCallback; + {$ELSE} + BrowseInfoA.lpfn := @MPBrowseForFolderCallback; + {$ENDIF} + BrowseInfoA.lpszTitle := PChar(string(Title)); + BrowseInfoA.ulFlags := FlagsToTMPBrowseFlags(BrowseFlags); + SelectedPath := SHBrowseForFolderA(BrowseInfoA); + end; + Result := Assigned(SelectedPath) +end; + +function MPBrowseForFolder(Title, RootFolder, InitialPath: WideString; BrowseFlags: TMPBrowseFlags; var SelectedPath: WideString): Boolean; overload; +var + NS: TNamespace; + RootPIDL, InitialPathPIDL, ReturnPIDL: PItemIDList; +begin + RootPIDL := PathToPIDL(RootFolder); + InitialPathPIDL := PathToPIDL(InitialPath); + ReturnPIDL := nil; + Result := MPBrowseForFolder(Title, RootPIDL, InitialPathPIDL, BrowseFlags, ReturnPIDL); + if Result then + begin + NS := TNamespace.Create(ReturnPIDL, nil); + SelectedPath := NS.NameParseAddress; + NS.Free; + end; + PIDLMgr.FreePIDL(RootPIDL); + PIDLMgr.FreePIDL(InitialPathPIDL); +end; + +{$IFDEF TNTSUPPORT} +function MergeMenuIntoContextMenu(Menu: TTntPopupMenu; ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; +var + i: Integer; +begin + Result := -1; + if Assigned(Menu) and (ContextMenu <> 0) then + begin + Result := idStart; + for i := Menu.Items.Count - 1 downto 0 do + begin + AddContextMenuItem(ContextMenu, Menu.Items[i].Caption, Index, Result); + Inc(Result); + if Menu.Items[i].Count > 0 then + beep; + end + end +end; +{$ELSE} +function MergeMenuIntoContextMenu(Menu: TPopupMenu; ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; +var + i: Integer; +begin + Result := -1; + if Assigned(Menu) and (ContextMenu <> 0) then + begin + Result := idStart; + for i := Menu.Items.Count - 1 downto 0 do + begin + AddContextMenuItem(ContextMenu, Menu.Items[i].Caption, Index, Result); + Inc(Result); + if Menu.Items[i].Count > 0 then + beep; + end + end +end; +{$ENDIF} + + + +// PIDL Functions + +{ ----------------------------------------------------------------------------- } +function NamespaceToRelativePIDLArray(Namespaces: TNamespaceArray): TRelativePIDLArray; +var + i: integer; +begin + Result := nil; + if Assigned(Namespaces) then + begin + SetLength(Result, Length(Namespaces)); + for i := 0 to Length(Namespaces) - 1 do + Result[i] := Namespaces[i].RelativePIDL; + end +end; + +function FindBrowseableRootPIDL(NS: TNamespace): PItemIDList; +var + Found: Boolean; +begin + Result := nil; + Found := False; + if Assigned(NS) then + begin + if not NS.Folder then + NS := NS.Parent; + if IsParentBrowseable(NS) then + begin + while not Found and not NS.IsDesktop do + begin + if NS.Browsable then + Found := True + else + NS := NS.Parent + end + end; + Result := PIDLMgr.CopyPIDL(NS.AbsolutePIDL) + end +end; + +function IsParentBrowseable(NS: TNamespace): Boolean; +begin + Result := False; + if Assigned(NS) then + begin + while not Result and not NS.IsDesktop do + begin + Result := NS.Browsable; + if not Result then + NS := NS.Parent + end + end +end; + +function NamespaceToAbsolutePIDLArray(Namespaces: TNamespaceArray): TAbsolutePIDLArray; +var + i: integer; +begin + Result := nil; + if Assigned(Namespaces) then + begin + SetLength(Result, Length(Namespaces)); + for i := 0 to Length(Namespaces) - 1 do + Result[i] := Namespaces[i].AbsolutePIDL; + end +end; +{ ----------------------------------------------------------------------------- } + +function PathToPIDL(APath: WideString): PItemIDList; +// Takes the passed Path and attempts to convert it to the equavalent PIDL +var + Desktop: IShellFolder; + pchEaten, dwAttributes: ULONG; +begin + Result := nil; + begin + SHGetDesktopFolder(Desktop); + dwAttributes := 0; + if Assigned(Desktop) then + Desktop.ParseDisplayName(0, nil, PWideChar(APath), pchEaten, Result, dwAttributes) + end +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +function PIDLToPath(APIDL: PItemIDList): WideString; +var + Folder: TNamespace; +begin + Result := ''; + Folder := TNamespace.Create(APIDL, nil); + try + Folder.FreePIDLOnDestroy := False; + if Assigned(Folder) then + Result := Folder.NameForParsing; + finally + Folder.Free + end +end; +{ ----------------------------------------------------------------------------- } + +function IENamespaceShown(PerUser: Boolean): Boolean; +var + Reg: TRegistry; +begin + Result := True; + Reg := TRegistry.Create; + try + if PerUser then + Reg.RootKey := HKEY_CURRENT_USER + else + Reg.RootKey := HKEY_LOCAL_MACHINE; + if Reg.KeyExists('Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel') then + begin + if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel', False) then + begin + if Reg.ValueExists('{871C5380-42A0-1069-A2EA-08002B30309D}') then + begin + Result := Reg.ReadInteger('{871C5380-42A0-1069-A2EA-08002B30309D}') = 0; + end + end + end; + finally + Reg.Free + end; +end; + +{ ----------------------------------------------------------------------------- } +function DirExistsVET(APath: WideString; ShowSystemMessages: Boolean): Boolean; overload; +const + FLAGS = SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN; +var + Desktop, Folder: IShellFolder; + TempPIDL, PIDL: PItemIDList; + EnumIDList: IEnumIDList; + hWndOwner: THandle; + TempPath: WideString; +begin + Result := False; + PIDL := nil; + if ShowSystemMessages then + hWndOwner := GetActiveWindow //Application.Handle + else + hWndOwner := 0; + + TempPath := WideExtractFileDrive(APath) + '\'; + // First make sure the drive is available, it may be a remoted password protected drive + TempPIDL := PathToPIDL(TempPath); + if Succeeded(SHGetDesktopFolder(Desktop)) then + if Succeeded(Desktop.BindToObject(TempPIDL, nil, IShellFolder, Pointer(Folder))) then + if Folder.EnumObjects(hWndOwner, FLAGS, EnumIDList)= NOERROR then + begin + PIDL := PathToPIDL(APath); + if Succeeded(Desktop.BindToObject(PIDL, nil, IShellFolder, Pointer(Folder))) then + Result := Folder.EnumObjects(hWndOwner, FLAGS, EnumIDList)= NOERROR + end; + coTaskMemFree(TempPIDL); + if Assigned(PIDL) then + coTaskMemFree(PIDL); +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +function DirExistsVET(NS: TNamespace; ShowSystemMessages: Boolean): Boolean; overload; +begin + Result := DirExistsVET(NS.NameForParsing, ShowSystemMessages) +end; + +{ ----------------------------------------------------------------------------- } +function RectWidth(ARect: TRect): integer; +begin + Result := ARect.Right - ARect.Left +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +function RectHeight(ARect: TRect): integer; +begin + Result := ARect.Bottom - ARect.Top +end; +{ ----------------------------------------------------------------------------- } + +function PotentialMappedDrive(NS: TNamespace): Boolean; +// A mapped drive will not return valid information, other then +// its display name under some conditions so always try it. +var + DriveType: DWORD; +begin + Result := False; + if WideIsDrive(NS.NameForParsing) then + begin + if Assigned(GetDriveTypeW_MP) then + DriveType := GetDriveTypeW_MP(PWideChar(NS.NameForParsing)) + else + DriveType := GetDriveType(PChar(string(NS.NameForParsing))); + Result := (DriveType = DRIVE_NO_ROOT_DIR) or (DriveType = DRIVE_REMOTE) + end +end; +{ ----------------------------------------------------------------------------- } + +function FileObjectsToFlags(FileObjects: TFileObjects): DWORD; +begin + Result := 0; + if foFolders in FileObjects then + Result := Result or SHCONTF_FOLDERS; + if foNonFolders in FileObjects then + Result := Result or SHCONTF_NONFOLDERS; + if foHidden in FileObjects then + Result := Result or SHCONTF_INCLUDEHIDDEN; + if IsUnicode and not IsWinNT4 then + begin + if foShareable in FileObjects then + Result := Result or SHCONTF_SHAREABLE; + if foNetworkPrinters in FileObjects then + Result := Result or SHCONTF_NETPRINTERSRCH; + end; +end; + +function FileObjectsToString(FileObjects: TFileObjects): WideString; +begin + Result := ''; + if foFolders in FileObjects then + Result := Result + 'Folders, '; + if foNonFolders in FileObjects then + Result := Result + 'NonFolders, '; + if foHidden in FileObjects then + Result := Result + 'Hidden, '; + if foShareable in FileObjects then + Result := Result + 'Shareable, '; + if foNetworkPrinters in FileObjects then + Result := Result + 'NetworkPrinters, '; + if Length(Result) > 0 then + SetLength(Result, Length(Result) - 2) +end; + +// Time Conversions + +{ ----------------------------------------------------------------------------- } +// ANSI +function ConvertLocalStrToTFileTime(LocalStr: WideString; + var FileTime: TFileTime): Boolean; +var + SystemTime: TSystemTime; +begin + Result := True; + try + DateTimeToSystemTime(StrToDateTime(LocalStr), SystemTime) + except + on EConvertError do Result := False; + end; + if Result then + Result := SystemTimeToFileTime(SystemTime, FileTime); +end; +{ ----------------------------------------------------------------------------- } + +function ValidFileTime(FileTime: TFileTime): Boolean; +begin + Result := (FileTime.dwLowDateTime <> 0) or (FileTime.dwHighDateTime <> 0); +end; + +{ ----------------------------------------------------------------------------- } +// Converts a TFileTime structure into a local Time/Date String. This requires +// a check to make sure the TFileTime structure contains some info through +// the local function ValidFileTime then trying to convert the UTC time to Local +// UTC time. Then finally changing the UTC time to System time. +// ANSI/ +function ConvertTFileTimeToLocalStr(AFileTime: TFILETIME): WideString; +var + SysTime: TSystemTime; + LocalFileTime: TFILETIME; +begin + if ValidFileTime(AFileTime) + and FileTimeToLocalFileTime(AFileTime, LocalFileTime) + and FileTimeToSystemTime(LocalFileTime, SysTime) then + try + Result := DateTimeToStr(SystemTimeToDateTime(SysTime)) + except + Result := ''; + end + else + Result := ''; +end; +{ ----------------------------------------------------------------------------- } + + +function ConvertFileTimetoDateTime(AFileTime : TFileTime): TDateTime; +var + SysTime: TSystemTime; + LocalFileTime: TFILETIME; +begin + if ValidFileTime(AFileTime) + and FileTimeToLocalFileTime(AFileTime, LocalFileTime) + and FileTimeToSystemTime(LocalFileTime, SysTime) then + try + Result := SystemTimeToDateTime(SysTime); + except + Result := 0; + end + else + Result := 0; +end; + + // Various Functions + +{ ----------------------------------------------------------------------------- } +function CreateSpecialNamespace(FolderID: integer): TNamespace; +{ Creates a TNamespace based on the SpecialFolders defined by } +{ SHGetSpecialFolderLocation. } +var + PIDL: PItemIDList; + F: IShellFolder; +begin + SHGetspecialFolderLocation(0, FolderID, PIDL); + if Assigned(PIDL) then + begin + Result := TNamespace.Create(PIDL, nil); + F := Result.ParentShellFolder // just force the namespace to have Parent + end else + Result := nil +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +function DefaultSystemImageIndex(FolderType: TDefaultFolderIcon): integer; + +{ Extracts the default Icon for the given folder type passed to it. } + +var + FileInfoA: TSHFileInfo; + FileInfoW: TSHFileInfoW; + FileExampleW: WideString; + FileExampleA: string; + Attrib, Flags: DWORD; + PIDL: PItemIDList; + NS: TNamespace; +begin + Result := -1; + Attrib := 0; + Flags := 0; + case FolderType of + diNormalFolder: + begin + FileExampleW := '*.*'; + Attrib := FILE_ATTRIBUTE_DIRECTORY; + Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_SHELLICONSIZE or SHGFI_SYSICONINDEX + end; + diOpenFolder: + begin + FileExampleW := '*.*'; + Attrib := FILE_ATTRIBUTE_DIRECTORY; + Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_SHELLICONSIZE or SHGFI_SYSICONINDEX or SHGFI_OPENICON + end; + diUnknownFile: + begin + FileExampleW := '*.zyxwv'; + Attrib := FILE_ATTRIBUTE_NORMAL; + Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_SHELLICONSIZE or SHGFI_SYSICONINDEX + end; + diLink: + begin + FileExampleW := ''; + Result := SHORTCUT_ICON_INDEX; + end; + diMyDocuments: + begin + if Assigned(DesktopFolder) then + begin + PIDL := DesktopFolder.ParseDisplayName('::{450d8fba-ad25-11d0-98a8-0800361b1103}'); + if Assigned(PIDL) then + begin + NS := TNamespace.Create(PIDL, nil); + Result := NS.GetIconIndex(False, icSmall, True); + NS.Free + end + end else + Result := DefaultSystemImageIndex(diNormalFolder) + end + else + FileExampleW := '' + end; + if FileExampleW <> '' then + begin + if IsUnicode then + begin + FillChar(FileInfoW, SizeOf(FileInfoW), #0); + SHGetFileInfoW_MP(PWideChar(FileExampleW), Attrib, FileInfoW, SizeOf(TSHFileInfoW), Flags); + Result := FileInfoW.iIcon; + end else + begin + FileExampleA := FileExampleW; + FillChar(FileInfoA, SizeOf(FileInfoA), #0); + SHGetFileInfoA(PChar(FileExampleA), Attrib, FileInfoA, SizeOf(TSHFileInfoA), Flags); + Result := FileInfoA.iIcon; + end + end +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +// Forces the correct icons for the Common Program Groups on Windows NT 4.0. +// Borrowed from John T and GXExplorer +function FileIconInit(FullInit: BOOL): BOOL; stdcall; +type + TFileIconInit = function(FullInit: BOOL): BOOL; stdcall; +var + ShellDLL: HMODULE; + PFileIconInit: TFileIconInit; +begin + Result := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) then + begin + ShellDLL := GetModuleHandle(PChar(Shell32)); + // ShellDLL := LoadLibrary(PChar(Shell32)); + PFileIconInit := GetProcAddress(ShellDLL, PChar(660)); + if (Assigned(PFileIconInit)) then + Result := PFileIconInit(FullInit); + end; +end; +{ ----------------------------------------------------------------------------- } + +// IShellLink (ShortCut) helpers +{ ----------------------------------------------------------------------------- } +function CreateShellLink(ALnkFilePath, ATargetFilePath: WideString; AnArguments: WideString = ''; + AWorkingDir: WideString = ''; ADescription: WideString = ''; AShowCmd: TCmdShow = swShowNormal; + AHotKey: Word = 0; AHotKeyModifier: THotKeyModifiers = []; AnIconLocation: WideString = ''; + AnIconIndex: integer = 0): Boolean; +var + ShellLink: TVirtualShellLink; +begin + Result := True; + ShellLink := TVirtualShellLink.Create(nil); + if Assigned(ShellLink) then + try + try + ShellLink.FileName := ALnkFilePath; + ShellLink.TargetPath := ATargetFilePath; + if AnArguments <> '' then + ShellLink.Arguments := AnArguments; + if AWorkingDir <> '' then + ShellLink.WorkingDirectory := AWorkingDir; + if ADescription <> '' then + ShellLink.Description := ADescription; + if AShowCmd <> swShowNormal then + ShellLink.ShowCmd := AShowCmd; + if (AHotKey <> 0) then + ShellLink.HotKey := AHotKey; + if AHotKeyModifier <> [] then + ShellLink.HotKeyModifiers := AHotKeyModifier; + if AnIconLocation <> '' then + ShellLink.IconLocation := AnIconLocation; + if AnIconIndex <> 0 then + ShellLink.IconIndex := AnIconIndex; + ShellLink.WriteLink(ShellLink.FileName); + except + Result := False; + raise; + end + finally + ShellLink.Free + end +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +function HotKeyModifiersToStr(HotKeyMod: THotKeyModifiers): WideString; +begin + Result := ''; + if hkmAlt in HotKeyMod then + Result := Result + ' Alt'; + if hkmControl in HotKeyMod then + Result := Result + ' Control'; + if hkmExtendedKey in HotKeyMod then + Result := Result + ' ExtendedKey'; + if hkmShift in HotKeyMod then + Result := Result + ' Shift'; +end; +{ ----------------------------------------------------------------------------- } + +{ Some Stuff D4 lacks. + } +{$ifdef COMPILER_4} +{ ----------------------------------------------------------------------------- } +procedure FreeAndNil(var Obj); +var + P: TObject; +begin + P := TObject(Obj); + TObject(Obj) := nil; + P.Free; +end; +{ ----------------------------------------------------------------------------- } + +{ ----------------------------------------------------------------------------- } +function Supports(const Instance: IUnknown; const Intf: TGUID; out Inst): Boolean; +begin + Result := (Instance <> nil) and (Instance.QueryInterface(Intf, Inst) = 0); +end; +{ ----------------------------------------------------------------------------- } +{$endif} + + +//////////////////////////////////////////////////////////////////////////////// +// Local Functions +//////////////////////////////////////////////////////////////////////////////// + +procedure PIDLQuickSort(PIDLList: TPIDLArray; const ParentFolder: IShellFolder; L, R: Integer); +var + I, J: Integer; + P, T: PItemIDList; +begin + if L < R then + repeat + I := L; + J := R; + P := PIDLList[(L + R) shr 1]; + repeat + while ShortInt(ParentFolder.CompareIDs(0, PIDLList[I], P)) < 0 do + Inc(I); + while ShortInt(ParentFolder.CompareIDs(0, PIDLList[J], P)) > 0 do + Dec(J); + if I <= J then + begin + T := PIDLList[I]; + PIDLList[I] := PIDLList[J]; + PIDLList[J] := T; + Inc(I); + Dec(J); + end; + until I > J; + if L < J then + PIDLQuickSort(PIDLList, ParentFolder, L, J); + L := I; + until I >= R; +end; + + +procedure PIDLListQuickSort(PIDLList: TCommonPIDLList; const ParentFolder: IShellFolder; L, R: Integer); +var + I, J: Integer; + P, T: PItemIDList; +begin + if L < R then + repeat + I := L; + J := R; + P := PIDLList[(L + R) shr 1]; + repeat + while ShortInt(ParentFolder.CompareIDs(0, PIDLList[I], P)) < 0 do + Inc(I); + while ShortInt(ParentFolder.CompareIDs(0, PIDLList[J], P)) > 0 do + Dec(J); + if I <= J then + begin + T := PIDLList[I]; + PIDLList[I] := PIDLList[J]; + PIDLList[J] := T; + Inc(I); + Dec(J); + end; + until I > J; + if L < J then + PIDLListQuickSort(PIDLList, ParentFolder, L, J); + L := I; + until I >= R; +end; + + +{ ----------------------------------------------------------------------------- } +function RequestedDragEffect(grfKeyState: integer): HResult; +{ Looks at the KeyState during a IDragTarget notification. The return value} +{ is the expected behavior common in Windows. Note this does not mean that } +{ the DragSource is actually capable of this action. } +begin + // Strip off the mouse button information keep only Ctrl and Shift information + grfKeyState := grfKeyState and (MK_CONTROL or MK_SHIFT); + // Standard Windows Shell behavior + if grfKeyState = 0 then Result := DROPEFFECT_MOVE // Windows default + else + if grfKeyState = MK_CONTROL then Result := DROPEFFECT_COPY + else + if grfKeyState = (MK_CONTROL or MK_SHIFT) then Result := DROPEFFECT_LINK + else + Result := DROPEFFECT_NONE; +end; +{ ----------------------------------------------------------------------------- } + + +{ ----------------------------------------------------------------------------- } +{ Thank you Angus Johnson for this article in UNDO } +{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} +//Structures used in GetDiskFreeSpaceFAT32 +{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} +type + //DeviceIoControl registers structure... + TDevIoCtl_Registers = packed record + Reg_EBX : DWord; + Reg_EDX : DWord; + Reg_ECX : DWord; + Reg_EAX : DWord; + Reg_EDI : DWord; + Reg_ESI : DWord; + Reg_Flags : DWord; + end; + + //Structure passed in Get_ExtFreeSpace ... + TExtGetDskFreSpcStruc = packed record + ExtFree_Size : Word; + ExtFree_Level : Word; + ExtFree_SectorsPerCluster : Integer; + ExtFree_BytesPerSector : Integer; + ExtFree_AvailableClusters : Integer; + ExtFree_TotalClusters : Integer; + ExtFree_AvailablePhysSectors : Integer; + ExtFree_TotalPhysSectors : Integer; + ExtFree_AvailableAllocationUnits : Integer; + ExtFree_TotalAllocationUnits : Integer; + ExtFree_Rsvd : array [0..1] of Integer; + end; + +{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} +//Angus Johnson's Delphi implimentation of - Int 21h Function 7303h Get_ExtFreeSpace (FAT32) +{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} +function GetDiskFreeSpaceFAT32(Drive: PChar; var SectorsperCluster, + BytesperSector, FreeClusters, TotalClusters: DWORD): boolean; +const + VWIN32_DIOC_DOS_IOCTL = 6; +var + DevIoHandle : THandle; + BytesReturned : DWord; + Reg : TDevIoCtl_Registers; + ExtGetDskFreSpcStruc: TExtGetDskFreSpcStruc; +begin + result := false; + FillChar(ExtGetDskFreSpcStruc, sizeof(TExtGetDskFreSpcStruc),0); + FillChar(Reg, sizeof(TDevIoCtl_Registers),0); + with Reg do begin + reg_EAX := $7303; + reg_EDX := DWord(Drive); //DS:DX + Reg_EDI := DWord(@ExtGetDskFreSpcStruc); //ES:DI + reg_ECX := sizeof(TExtGetDskFreSpcStruc); + reg_Flags := 1; //set carry flag to assume error. + end; + + if IsUnicode then + DevIoHandle := CreateFileW_MP( '\\.\vwin32', Generic_Read, + File_Share_Read or File_Share_Write, nil, Open_Existing, File_Attribute_Normal, 0) + else + DevIoHandle := CreateFile( '\\.\vwin32', Generic_Read, + File_Share_Read or File_Share_Write, nil, Open_Existing, File_Attribute_Normal, 0); + + if DevIoHandle <> Invalid_Handle_Value then begin + result := DeviceIoControl(DevIoHandle, VWIN32_DIOC_DOS_IOCTL, + @Reg, SizeOf(Reg), @Reg, SizeOf(Reg), BytesReturned, nil); + CloseHandle(DevIoHandle); + if not result then + begin + exit //error + end + else if (Reg.reg_Flags and 1 <> 0) then begin + result := false; //If carry flag not cleared then => error + exit; + end + else with ExtGetDskFreSpcStruc do begin + BytesperSector := ExtFree_BytesPerSector; + SectorsperCluster := ExtFree_SectorsPerCluster; + TotalClusters := ExtFree_TotalClusters; + FreeClusters := ExtFree_AvailableClusters; + result := true; + end; + end; +end; {GetDiskFreeSpaceFAT32} +{ ----------------------------------------------------------------------------- } + +function GetDiskFreeSpaceMP(Drive: PWideChar; var SectorsperCluster, + BytesperSector, FreeClusters, TotalClusters: DWORD): boolean; +begin + if Assigned(GetDiskFreeSpaceW_MP) then + Result := GetDiskFreeSpaceW_MP( + PWideChar( Drive), SectorsPerCluster, BytesPerSector, FreeClusters, TotalClusters) + else + if not IsWin95_SR1 then + Result := GetDiskFreeSpaceFAT32( + PChar( string(Drive)), SectorsPerCluster, BytesPerSector, FreeClusters, TotalClusters) + else + Result := GetDiskFreeSpaceA( + PChar( string(Drive)), SectorsPerCluster, BytesPerSector, FreeClusters, TotalClusters); +end; + +function DriveSize(Drive: PWideChar): Int64; +var + SectorsperCluster, BytesperSector, FreeClusters, TotalClusters: DWORD; +begin + Result := 0; + if GetDiskFreeSpaceMP(Drive, SectorsperCluster, BytesperSector, FreeClusters, TotalClusters) then + Result := Int64(BytesperSector) * Int64(SectorsperCluster) * Int64(TotalClusters) +end; + +function DriveSize(Drive: PWideChar; ByteSize: TBtyeSize): WideString; +begin + case ByteSize of + bsKiloBytes: Result := Format('%0.0n '+ 'KB', [DriveSize(Drive) / 1024]); + bsMegaBytes: Result := Format('%0.0n '+ 'MB', [DriveSize(Drive) / 1048576]); + bsGigiBytes: Result := Format('%0.1n '+ 'GB', [DriveSize(Drive) / 1073741824]); + bsTereBytes: Result := Format('%0.1n '+ 'TB', [DriveSize(Drive) / 1099511627776]); + end +end; + +function DriveFreeSpace(Drive: PWideChar): Int64; +var + SectorsperCluster, BytesperSector, FreeClusters, TotalClusters: DWORD; +begin + Result := 0; + if GetDiskFreeSpaceMP(Drive, SectorsperCluster, BytesperSector, FreeClusters, TotalClusters) then + Result := Int64(BytesperSector) * Int64(SectorsperCluster) * Int64(FreeClusters) +end; + +function DriveFreeSpace(Drive: PWideChar; ByteSize: TBtyeSize): WideString; +begin + case ByteSize of + bsKiloBytes: Result := Format('%0.0n '+ 'KB', [DriveFreeSpace(Drive) / 1024]); + bsMegaBytes: Result := Format('%0.0n '+ 'MB', [DriveFreeSpace(Drive) / 1048576]); + bsGigiBytes: Result := Format('%0.1n '+ 'GB', [DriveFreeSpace(Drive) / 1073741824]); + bsTereBytes: Result := Format('%0.1n '+ 'TB', [DriveFreeSpace(Drive) / 1099511627776]); + end +end; + + +{ ----------------------------------------------------------------------------- } +function LoadShell32Functions: Boolean; +var + ShellDLL: HMODULE; +begin + { Don't see a point in making this all WideString compatible } + ShellDLL := GetModuleHandle(PChar(Shell32)); +// ShellDLL := LoadLibrary(PChar(Shell32)); + if ShellDll <> 0 then + begin + AnimateWindow := GetProcAddress(GetModuleHandle('user32'), 'AnimateWindow'); + ShellILIsEqual := GetProcAddress(ShellDLL, PChar(21)); + ShellILIsParent := GetProcAddress(ShellDLL, PChar(23)); + SHLimitInputEdit := GetProcAddress(ShellDLL, PChar(747)); + Result := Assigned(ShellILIsEqual) and Assigned(ShellILIsParent) + end else + Result := False; +end; +{ ----------------------------------------------------------------------------- } + + +{ TNamespace } + +function TNamespace.CanCopyAll(NamespaceArray: TNamespaceArray): Boolean; +var + i: integer; +begin + if Assigned(NamespaceArray) then + begin + Result := True; + i := 0; + while Result and (i < Length(NamespaceArray)) do + begin + Result := NamespaceArray[i].CanCopy; + Inc(i) + end + end else + Result := False +end; + +function TNamespace.CanCutAll(NamespaceArray: TNamespaceArray): boolean; +begin + Result := CanDeleteAll(NamespaceArray) +end; + +function TNamespace.CanDeleteAll(NamespaceArray: TNamespaceArray): Boolean; +var + i: integer; +begin + if Assigned(NamespaceArray) then + begin + Result := True; + i := 0; + while Result and (i < Length(NamespaceArray)) do + begin + Result := NamespaceArray[i].CanDelete; + Inc(i) + end + end else + Result := False +end; + +function TNamespace.CanPasteToAll(NamespaceArray: TNamespaceArray): Boolean; +begin + Result := False; + if Assigned(NamespaceArray) then + if Length(NamespaceArray) > 0 then + Result := True // Can try to paste to anything? +end; + +function TNamespace.CanShowPropertiesOfAll(NamespaceArray: TNamespaceArray): Boolean; +var + i: integer; +begin + if Assigned(NamespaceArray) then + begin + Result := True; + i := 0; + while Result and (i < Length(NamespaceArray)) do + begin + Result := NamespaceArray[i].HasPropSheet; + Inc(i) + end + end else + Result := False +end; + +function TNamespace.Clone(ReleasePIDLOnDestroy: Boolean): TNameSpace; +begin +// This is not really a true clone since we don't copy the parent, but it is +// dangerous to do that. Be careful using this function since things can +// potentially change in the shell. + Result := TNamespace.Create(PIDLMgr.CopyPIDL(AbsolutePIDL), nil); + Result.FreePIDLOnDestroy := ReleasePIDLOnDestroy; +end; + +function TNamespace.ComparePIDL(PIDLToCompare: PItemIDList; + IsAbsolutePIDL: Boolean; Column: Integer = 0): ShortInt; +// Encapsulation of the CompareID Function of IShellFolder +// Returns > 0 if PIDLToCompare > RelativePIDL +// 0 if PIDLToCompare = RelativePIDL +// < 0 if PIDLToCompare < RelativePIDL +var + PIDL: PItemIDList; +begin + if Assigned(PIDLToCompare) then + begin + if Column < 0 then + Column := 0; + + if PIDLMgr.IsDesktopFolder(PIDLToCompare) and IsDesktop then + Result := 0 + else begin + PIDL := PIDLMgr.GetPointerToLastID(PIDLToCompare); + if Assigned(ParentShellFolder) then + begin + if IsAbsolutePIDL then + begin + Result := -1; + // First test is if the PIDL length is the same + if PIDLMgr.IDCount(PIDLToCompare) = PIDLMgr.IDCount(AbsolutePIDL) then + begin + if Assigned(Parent) then + begin + // Desktop items won't have a valid parent + if ILIsParent(Parent.AbsolutePIDL, PIDLToCompare, True) then + Result := ShortInt(ParentShellFolder.CompareIDs(Column, PIDL, RelativePIDL)) + end else + Result := ShortInt(ParentShellFolder.CompareIDs(Column, PIDL, RelativePIDL)) + end + end else + Result := ShortInt(ParentShellFolder.CompareIDs(Column, PIDL, RelativePIDL)); + end else + Result := 0 + end + end else + Result := -1 // If the pidl is not assigned then we clearly are greater! +end; + +function TNamespace.ContextMenuItemHelp(MenuItemID: LongWord): WideString; +const + BufferLen = 128; +var + S: string; + Found: Boolean; + P: Pointer; +begin + Found := False; + if Assigned(CurrentContextMenu) and (MenuItemID <> $FFFFFFFF) and (MenuItemID > 0)then + begin + if IsUnicode then + begin + SetLength(Result, BufferLen); + { Keep D6 from complaining about suspicious PChar cast } + P := @Result[1]; + Found := CurrentContextMenu.GetCommandString(MenuItemID-1, GCS_HELPTEXTW, nil, PChar(P), + BufferLen) = NOERROR + end; + if not Found then + begin + SetLength(S, BufferLen); + if CurrentContextMenu.GetCommandString(MenuItemID-1, GCS_HELPTEXTA, nil, PChar(S), + BufferLen) <> NOERROR + then + Result := '' + else begin + SetLength(S, StrLen( PChar(S))); + Result := S + end + end else + SetLength(Result, lstrlenW(PWideChar( Result))) + end; +end; + +function TNamespace.ContextMenuVerb(MenuItemID: Longword): WideString; +{ Returns the cononical (or not) verb that is equal to the MenuItemID, which is } +{ the HMenu identifer for a menu item. } +const + BufferLen = 128; +var + S: string; + Found: Boolean; + P: Pointer; +begin + Found := False; + if Assigned(CurrentContextMenu) and (MenuItemID <> $FFFFFFFF) and (MenuItemID > 0) then + begin + if IsUnicode then + begin + SetLength(Result, BufferLen); + { Keep D6 from complaining about suspicious PChar cast } + P := @Result[1]; + Found := CurrentContextMenu.GetCommandString(MenuItemID-1, GCS_VERBW, nil, PChar(P), + BufferLen) = NOERROR + end; + if not Found then + begin + SetLength(S, BufferLen); + if CurrentContextMenu.GetCommandString(MenuItemID-1, GCS_VERBA, nil, PChar(S), + BufferLen) <> NOERROR + then + Result := '' + else begin + SetLength(S, StrLen( PChar(S))); + Result := S + end + end else + SetLength(Result, lstrlenW(PWideChar( Result))) + end; +end; + +function TNamespace.Copy(NamespaceArray: TNamespaceArray): Boolean; +begin + Result := False; + if CanCopyAll(NamespaceArray) then + begin + if VerifyPIDLRelationship(NamespaceArray, True) then + Result := ExecuteContextMenuVerb('copy', NamespaceToRelativePIDLArray(NamespaceArray)) + else + ExecuteContextMenuVerbMultiPath('copy', NamespaceArray) + end +end; + +constructor TNamespace.Create(PIDL: PItemIdList; AParent: TNamespace); +{ Pass the PIDL of a Namespace Object Folder to create along with its parent } +{ to create a new TNamespace. } +begin + inherited Create; + + FParent := AParent; + FShellCache.Data.SmallIcon := -1; + FShellCache.Data.SmallOpenIcon := -1; + FShellCache.Data.OverlayIndex := -1; + FShellCache.Data.OverlayIconIndex := -1; + Include(FStates, nsShellDetailsSupported); // Be optomistic + Include(FStates, nsShellFolder2Supported); // Be optomistic + Include(FStates, nsShellOverlaySupported); // Be optomistic + FreePIDLOnDestroy := True; + FNamespaceID := SHELL_NAMESPACE_ID; + { It is the Root Folder since it has no parent } + if not Assigned(AParent) then + begin + { Either a nil for PID or if the PID is the Desktop PIDL means a full tree } + if not Assigned(PIDL) or PIDLMgr.IsDesktopFolder(PIDL) then + begin + { If PID is already assigned then use it } + if not Assigned(PIDL) then + SHGetSpecialFolderLocation(ParentWnd, CSIDL_DESKTOP, FRelativePIDL) + else + FRelativePIDL := PIDL; + FAbsolutePIDL := FRelativePIDL; + end else + { The PIDL is the Root PIDL but is NOT the Desktop namespace it is a } + { FULLY QUALIFIED PIDL to a namespace that is to be the Root. } + begin + FAbsolutePIDL := PIDL; + FRelativePIDL := PIDLMgr.GetPointerToLastID(FAbsolutePIDL); + end; + end else + { If the folder is a child of the desktop special conditions apply see above } + if PIDLMgr.IsDesktopFolder(AParent.AbsolutePIDL) then + begin + FRelativePIDL := PIDL; + FAbsolutePIDL := PIDL; + end else + { Normal building of the PIDLs and Shells } + begin + FAbsolutePIDL := PIDLMgr.AppendPIDL(AParent.FAbsolutePIDL, PIDL); + FRelativePIDL := PIDLMgr.GetPointerToLastID(FAbsolutePIDL); + PIDLMgr.FreePIDL(PIDL); + end; +end; + +constructor TNamespace.CreateCustomNamespace(CustomID: Integer; AParent: TNamespace); +begin + FShellCache.Data.SmallIcon := -1; + FShellCache.Data.SmallOpenIcon := -1; + Exclude(FStates, nsShellDetailsSupported); + Exclude(FStates, nsShellFolder2Supported); + FreePIDLOnDestroy := False; + FNamespaceID := CustomID; + FParent := AParent +end; + +constructor TNamespace.CreateFromFileName(FileName: WideString); +var + PIDL: PItemIDList; +begin + PIDL := PathToPIDL(FileName); + if Assigned(PIDL) then + Create(PIDL, nil) + else + // This will be called often with the autocomplete component while debugging + // in the IDE + // To turn off exception break go to Tools>Debugger Options>Add and type in + // "EVSTInvalidFileName" without the quotes. Make sure that is is checked. + // This will keep delphi from breaking on this exception + raise EVSTInvalidFileName.Create('Trying to create a TNamespace on a non existant File object'); +end; + +function TNamespace.Cut(NamespaceArray: TNamespaceArray): Boolean; +begin + Result := False; + if CanCutAll(NamespaceArray) then + begin + if VerifyPIDLRelationship(NamespaceArray, True) then + Result := ExecuteContextMenuVerb('cut', NamespaceToRelativePIDLArray(NamespaceArray)) + else + ExecuteContextMenuVerbMultiPath('cut', NamespaceArray) + end +end; + +function TNamespace.DataObjectMulti(NamespaceArray: TNamespaceArray): IDataObject; +begin + if VerifyPIDLRelationship(NamespaceArray, True) then + Result := InternalGetDataObjectInterface(NamespaceToRelativePIDLArray(NamespaceArray)) + else + CreateFullyQualifiedShellDataObject(NamespaceToAbsolutePIDLArray(NamespaceArray), Result); +end; + +function TNamespace.Delete(NamespaceArray: TNamespaceArray): Boolean; +begin + Result := False; + if CanDeleteAll(NamespaceArray) then + begin + if VerifyPIDLRelationship(NamespaceArray, True) then + Result := ExecuteContextMenuVerb('delete', NamespaceToRelativePIDLArray(NamespaceArray)) + else + ExecuteContextMenuVerbMultiPath('delete', NamespaceArray) + end +end; + +destructor TNamespace.Destroy; +begin + // Remember RelativePIDL points to end of AbsolutePIDL so only 1 actual PIDL. + if FreePIDLOnDestroy and Assigned(PIDLMgr) then + PIDLMgr.FreePIDL(FAbsolutePIDL); + if IsUnicode then + begin + if Assigned(FWin32FindDataW) then + FreeMem(FWin32FindDataW, SizeOf(TWin32FindDataW)); + end else + if Assigned(FWin32FindDataA) then + FreeMem(FWin32FindDataA, SizeOf(TWin32FindDataA)); + begin + end; + if Assigned(FSHGetFileInfoRec) then + begin + Finalize(FSHGetFileInfoRec^); + FreeMem(FSHGetFileInfoRec, SizeOf(TSHGetFileInfoRec)); + end; + FreeAndNil(FExtractImage); + FreeAndNil(FShellLink); + FShellFolder := nil; + FreeAndNIL(FImage); + + inherited; + if (nsOwnsParent in States) then + FreeAndNil(FParent); +end; + +function TNamespace.DetailsAlignment(ColumnIndex: Integer): TAlignment; +{ Returns the Text that is in the Header of the Explorer Listview based on what } +{ the folder in the Treeview is displaying. Only implemented partially on } +{ different versions of Windows. It was undocumented until about Win98. } +{ Win2k implements this using IShellFolder2 } +{ Be careful of the reference point using DetailsXXXX functions. This method } +{ get the header titles a folder will show for its children. } +var + Details: TShellDetails; + Found: Boolean; +begin + // Default + Result := taLeftJustify; + + FillChar(Details, SizeOf(Details), #0); + Found := False; + if DetailsValidIndex(ColumnIndex) then + begin + if Assigned(ShellFolder2) then + Found := ShellFolder2.GetDetailsOf(nil, UINT(ColumnIndex), Details) = S_OK; + if not Found and Assigned(ShellDetailsInterface) then + Found := ShellDetailsInterface.GetDetailsOf(nil, UINT(ColumnIndex), Details) = S_OK; + if Found then + begin + case Details.Fmt of + LVCFMT_CENTER: Result := taCenter; + LVCFMT_LEFT: Result := taLeftJustify; + LVCFMT_RIGHT: Result := taRightJustify; +// LVCFMT_COL_HAS_IMAGES: Result := tiContainsImage + end; + if (Details.str.uType = STRRET_WSTR) and Assigned(Details.str.pOleStr) then + PIDLMgr.FreeOLEStr(Details.str.pOLEStr); + end + end +end; + +function TNamespace.DetailsColumnTitle(ColumnIndex: integer): WideString; +{ Returns the Text that is in the Header of the Explorer Listview based on what } +{ the folder in the Treeview is displaying. Only implemented partially on } +{ different versions of Windows. It was undocumented until about Win98. } +{ Win2k implements this using IShellFolder2 } + +{ Be careful of the reference point using DetailsXXXX functions. This method } +{ gets the header titles a folder will show for its children. } +var + Details: TShellDetails; + Found: Boolean; +begin + FillChar(Details, SizeOf(Details), #0); + Found := False; + if DetailsValidIndex(ColumnIndex) then + begin + if Assigned(ShellFolder2) then + Found := ShellFolder2.GetDetailsOf(nil, UINT(ColumnIndex), Details) = S_OK; + if not Found and Assigned(ShellDetailsInterface) then + Found := ShellDetailsInterface.GetDetailsOf(nil, UINT(ColumnIndex), Details) = S_OK; + if Found then + Result := StrRetToStr(Details.str, RelativePIDL) + else + Result := DetailsDefaultColumnTitle(ColumnIndex) + end else + Result := '' +end; + +function TNamespace.DetailsDefaultColumnTitle(ColumnIndex: integer): WideString; +{ If IShellDetails is not implemented then these are returned for the Header } +{ text as a default. Can be overridden. } +begin + case ColumnIndex of + -1, 0: Result := STR_COLUMN_NAMES[0]; + 1: Result := STR_COLUMN_NAMES[1]; + 2: Result := STR_COLUMN_NAMES[2]; + 3: Result := STR_COLUMN_NAMES[3]; + 4: Result := STR_COLUMN_NAMES[4]; + 5: Result := STR_COLUMN_NAMES[5]; + 6: Result := STR_COLUMN_NAMES[6]; + 7: Result := STR_COLUMN_NAMES[7]; + 8: Result := STR_COLUMN_NAMES[8]; + 9: Result := STR_COLUMN_NAMES[9]; + end; +end; + +function TNamespace.DetailsDefaultOf(ColumnIndex: integer): WideString; +{ If IShellDetail is not implemented the call to DetailsOf calls this and } +{ returns what it can to mimic the values in columns for a plain file, Name, } +{ size, type, date, attributes. } +var + IsSystemFolder: Boolean; +begin + Result := ''; + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) then + { This is totally undocumented. It works on Win98 will test on NT 4 soon } + { Not a valid file so it has no size. #8 appears to mean "System File" } + IsSystemFolder := not ((FWin32FindDataW^.cFileName[0] = WideChar(#8)) or + (FWin32FindDataW^.cFileName[0] = WideChar(#0)) or + not FileSystem) + else + IsSystemFolder := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) then + { This is totally undocumented. It works on Win98 will test on NT 4 soon } + { Not a valid file so it has no size. #8 appears to mean "System File" } + IsSystemFolder := not ((FWin32FindDataA^.cFileName[0] = #8) or + (FWin32FindDataA^.cFileName[0] = #0) or + not FileSystem) + else + IsSystemFolder := False; + end; + case ColumnIndex of + -1, 0: Result := NameInFolder; + 1: Result := SizeOfFileKB; + 2: if IsSystemFolder then + Result := FileType + else + Result := STR_SYSTEMFOLDER; + 3: Result := LastWriteTime; + 4: Result := AttributesString; + else + Result := '' + end; +end; + +function TNamespace.DetailsDefaultSupportedColumns: integer; +{ If IShellDetail is not implemented the call to SupportedColumns calls this } +{ and returns 5. It mimics the titles in the header for a plain file, Name, } +{ size, type, date, attributes. } +begin + Result := DefaultDetailColumns; +end; + +function TNamespace.DetailsGetDefaultColumnState(ColumnIndex: integer): TSHColumnStates; +{ Be careful of the reference point using DetailsXXXX functions. This function } +{ gets the GetDefaultColumnState of the folder for its children if it exposes } +{ IShellFolder2. If it does not it returns csOnByDefault so it will be shown } +var + Flags: Longword; +begin + Result := []; +// Assert(DetailsValidIndex(ColumnIndex), 'Invalid DetailsGetDefaultColumnState in TNamespace.DetailsOf'); + if DetailsValidIndex(ColumnIndex) then + begin + EnsureDetailCache; + if (docStatesValid in ShellCache.Data.DetailsOfCache[ColumnIndex].Cached) then + Result := ShellCache.Data.DetailsOfCache[ColumnIndex].States + else begin + if Assigned(ShellFolder2) then + begin + Flags := 0; + if ShellFolder2.GetDefaultColumnState(ColumnIndex, Flags) = NOERROR then + begin + if SHCOLSTATE_TYPE_STR and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csTypeString); + if SHCOLSTATE_TYPE_INT and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csTypeInt); + if SHCOLSTATE_TYPE_DATE and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csTypeDate); + if SHCOLSTATE_ONBYDEFAULT and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csOnByDefault); + if SHCOLSTATE_TYPE_SLOW and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csSlow); + if SHCOLSTATE_EXTENDED and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csExtended); + if SHCOLSTATE_SECONDARYUI and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csSecondaryUI); + if SHCOLSTATE_HIDDEN and Flags <> 0 then Include(ShellCache.Data.DetailsOfCache[ColumnIndex].States, csHidden); + end else + { Some of the old namespaces will expose ShellFolder2 but don't support } + { it completely. These resort to IShellDetails so assume this is the case } + ShellCache.Data.DetailsOfCache[ColumnIndex].States := [csOnByDefault]; + end else + { Some of the old namespaces don't expose ShellFolder2. These resort to } + { IShellDetails so assume this is the case } + ShellCache.Data.DetailsOfCache[ColumnIndex].States := [csOnByDefault]; + + Result := ShellCache.Data.DetailsOfCache[ColumnIndex].States; + Include(ShellCache.Data.DetailsOfCache[ColumnIndex].Cached, docStatesValid) + end + end +end; + +function TNamespace.DetailsOf(ColumnIndex: integer): WideString; +{ Returns the text for the desired column (detail view in the listview in } +{ Explorer) using IShellDetail or using information pulled from the namespace } +{ by other means. } +{ Be careful of the reference point using DetailsXXXX functions. This function } +{ gets the Details of the current namespace using its parent folder. } +// Threading only works on Namespaces that support IShellFolder2 (WinME, Win2k and up) +var + Details: TShellDetails; + OldError: Integer; + TempCache: PDetailsOfCacheRec; +begin + Result := ''; + if DetailsValidIndex(ColumnIndex) then + begin + OldError := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX); + try + { Force parent namespace creation if necessary } + if Assigned(ParentShellFolder) and not IsDesktop then + begin + { The parent is responsible for the columns } + if DetailsValidIndex(ColumnIndex) then + begin + EnsureDetailCache; + + if (docCaptionValid in ShellCache.Data.DetailsOfCache[ColumnIndex].Cached) then + Result := ShellCache.Data.DetailsOfCache[ColumnIndex].Caption + else begin + FillChar(Details, SizeOf(Details), #0); + TempCache := @ShellCache.Data.DetailsOfCache[ColumnIndex]; + + if ColumnIndex = 0 then + TempCache^.Caption := NameInFolder + else + if Assigned(ParentShellFolder2) then + begin + if ParentShellFolder2.GetDetailsOf(RelativePIDL, UINT(ColumnIndex), Details) <> S_OK then + begin + if Assigned(ParentShellDetailsInterface) and (ParentShellDetailsInterface.GetDetailsOf(RelativePIDL, UINT(ColumnIndex), Details) = S_OK) then + TempCache^.Caption := StrRetToStr(Details.Str, RelativePIDL) + else + TempCache^.Caption := DetailsDefaultOf(ColumnIndex) + end else + TempCache^.Caption := StrRetToStr(Details.Str, RelativePIDL); + Include(TempCache^.Cached, docCaptionValid) + end else + begin + if Assigned(ParentShellDetailsInterface) then + begin + if ParentShellDetailsInterface.GetDetailsOf(RelativePIDL, UINT(ColumnIndex), Details) = S_OK then + TempCache^.Caption := StrRetToStr(Details.Str, RelativePIDL); + end else + TempCache^.Caption := DetailsDefaultOf(ColumnIndex); + Include(TempCache^.Cached, docCaptionValid); + end; + Result := TempCache^.Caption; + end + end + end + finally + SetErrorMode(OldError); + end + end +end; + +function TNamespace.DetailsOfEx(ColumnIndex: integer): WideString; +var + ColumnID: TSHColumnID; + V: OLEVariant; + ColState: TSHColumnStates; +// Date: TDateTime; +begin + Result := ''; + V := Null; + if Assigned(ParentShellFolder2) then + begin + ColState := Parent.DetailsGetDefaultColumnState(ColumnIndex); + FillChar(ColumnID, SizeOf(ColumnID), #0); + if ParentShellFolder2.MapColumnToSCID(ColumnIndex, ColumnID) = NOERROR then + if ParentShellFolder2.GetDetailsEx(RelativePIDL, ColumnID, V) = NOERROR then + begin + if csTypeString in ColState then + Result := WideString(V) + else + if csTypeInt in ColState then + Result := IntToStr( Integer(V)) + else + // if csTypeDate in ColState then + // Date := V; + end else + Result := DetailsDefaultOf(ColumnIndex) + else + Result := DetailsDefaultOf(ColumnIndex) + end +end; + +function TNamespace.DetailsSupportedColumns: integer; +{ If IShellDetail or IShellFolder2 is implemented the call to } +{ DetailsSupportedColumns returns total number of columns the namespace } +{ supports. This allows the header to change dynamiclly. } + +{ Be careful of the reference point using DetailsXXXX functions. This function } +{ gets number of columns this folder will display for its children. } +const + { ShellFolder2 is broken on WinME for "Scanners and Cameras" folders. } + { It goes into an infinate loop. } + { WinXP is just as broken. } + COLUMNLIMIT = 1000; // Safely valve for namespaces that don't follow the rules +var + Details: TShellDetails; + Flags: DWord; + Found: Boolean; +begin + FillChar(Details, SizeOf(Details), #0); + if not (scSupportedColumns in ShellCache.ShellCacheFlags) then + begin + FShellCache.Data.SupportedColumns := 0; + if Assigned(ShellFolder2) then + begin + while (ShellFolder2.GetDefaultColumnState(FShellCache.Data.SupportedColumns, Flags) = NOERROR) and + (FShellCache.Data.SupportedColumns < COLUMNLIMIT) do + Inc(FShellCache.Data.SupportedColumns); + + // Error detected, the namespace does not follow the rules + if FShellCache.Data.SupportedColumns = COLUMNLIMIT then + FShellCache.Data.SupportedColumns := 0; + + Found := FShellCache.Data.SupportedColumns > 0; + { Some folders support both methods but only work right with GetDetailsOf } + if not Found then + while (ShellFolder2.GetDetailsOf(nil, UINT(ShellCache.Data.SupportedColumns), Details) = S_OK) and + (FShellCache.Data.SupportedColumns < COLUMNLIMIT) do + begin + Inc(FShellCache.Data.SupportedColumns); + if (Details.str.uType = STRRET_WSTR) and Assigned(Details.str.pOleStr) then + PIDLMgr.FreeOLEStr(Details.str.pOLEStr); + end; + + // Error detected, the namespace does not follow the rules + if FShellCache.Data.SupportedColumns = COLUMNLIMIT then + FShellCache.Data.SupportedColumns := 0; + end; + + { Some folders support both but only work right with IShellDetials } + { The History Folder is an example. } + Found := FShellCache.Data.SupportedColumns > 0; + { DO NOT PASS A FREAKING UNInitialIZED TSHELLDETAIL STRUCTURE TO THIS FUNCTION } + { IT WILL CAUSE THE RESULT TO BE CORRECT BUT INTERLACED WITH GARBAGE. } + if not Found and Assigned(ShellDetailsInterface) then + while ShellDetailsInterface.GetDetailsOf(nil, UINT(ShellCache.Data.SupportedColumns), Details) = S_OK do + Inc(FShellCache.Data.SupportedColumns); + + if ShellCache.Data.SupportedColumns = 0 then + FShellCache.Data.SupportedColumns := DetailsDefaultSupportedColumns; + + Include(FShellCache.ShellCacheFlags, scSupportedColumns); + end; + Result := ShellCache.Data.SupportedColumns +end; + +function TNamespace.DetailsSupportedVisibleColumns: TVisibleColumnIndexArray; +// Returns and array of currently visible columns in details mode. Two bits of info +// are returned with this method. +// 1) The number of visible column: Length(DetailsSupportedVisibleColumns) +// 2) The indicies of visible columns: [0, 2, 4, 6] Details index 0, 2, 4, 6 are shown\ +var + i: integer; +begin + Result := nil; + for i := 0 to DetailsSupportedColumns - 1 do + begin + if csOnByDefault in DetailsGetDefaultColumnState(i) then + begin + if DetailsColumnTitle(i) <> '' then + begin + SetLength(Result, Length(Result) + 1); + Result[Length(Result) - 1] := i + end + end + end; +end; + +function TNamespace.DetailsValidIndex(DetailsIndex: integer): Boolean; +{ Test to see if the passed index is in the range of the number of detail } +{ columns the namespace has. } +begin + Result := (DetailsIndex > -1) and (DetailsIndex < DetailsSupportedColumns) +end; + +function TNamespace.DragEffect(grfKeyState: integer): HRESULT; +{ Looks at the KeyState during a IDragDrop notification. The return value } +{ is the Effect that is desired by the user, using the GetDesiredDragEffect} +{ function, and what Effects are supported by the IDragSource } + + function AvailableEffects: LongInt; + begin + Result := DROPEFFECT_NONE; + if CanMove then Result := DROPEFFECT_MOVE; + if CanCopy then Result := Result or DROPEFFECT_COPY; + if CanLink then Result := Result or DROPEFFECT_LINK; + end; + +var + KeyEffect: HResult; + ValidEffects: Longword; +begin + // See what the user is requesting by looking at the key board + KeyEffect := RequestedDragEffect(grfKeyState); + // What effects do the namespace support? + ValidEffects := AvailableEffects; + // Let the users desires prevail + if KeyEffect and ValidEffects > 0 then Result := KeyEffect + else // If the users desires are undo-able pick the first effect avaiable + if ValidEffects and DROPEFFECT_MOVE > 1 then Result := DROPEFFECT_MOVE + else // Windows default is MOVE so check it first + if ValidEffects and DROPEFFECT_COPY > 1 then Result := DROPEFFECT_COPY + else + if ValidEffects and DROPEFFECT_LINK > 1 then Result := DROPEFFECT_LINK + else + Result := DROPEFFECT_NONE; +end; + +function TNamespace.DisplayNameOf(Flags: Longword): WideString; +var + StrRet: TSTRRET; +begin + if Assigned(ParentShellFolder) then + begin + FillChar(StrRet, SizeOf(StrRet), #0); + if ParentShellFolder.GetDisplayNameOf(RelativePIDL, Flags, StrRet) = NOERROR + then + Result := StrRetToStr(StrRet, RelativePIDL) + else + Result := ''; + end else + Result := '' +end; + +function TNamespace.DragEnter(const dataObj: IDataObject; + grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult; +{ Called when there is a pending COM drop on the namespace. The namespace will } +{ decide if it can handle the information passed. } +begin + if DropTarget and Assigned(DropTargetInterface) then + Result := DropTargetInterface.DragEnter(dataObj, grfKeyState, pt, dwEffect) + else begin + dwEffect := DROPEFFECT_NONE; + Result := S_OK + end +end; + +function TNamespace.DragLeave: HResult; +{ Called when there is a pending COM drop on the namespace. The namespace will } +{ decide if it can handle the information passed. } +begin + if DropTarget and Assigned(DropTargetInterface) then + Result := DropTargetInterface.DragLeave + else + Result := S_OK +end; + +function TNamespace.DragOver(grfKeyState: Integer; pt: TPoint; + var dwEffect: Integer): HResult; +{ Called when there is a pending COM drop on the namespace. The namespace will } +{ decide if it can handle the information passed. } +begin + if DropTarget and Assigned(DropTargetInterface) then + Result := DropTargetInterface.DragOver(grfKeyState, pt, dwEffect) + else begin + dwEffect := DROPEFFECT_NONE; + Result := S_OK + end +end; + +function TNamespace.Drop(const dataObj: IDataObject; grfKeyState: Integer; + pt: TPoint; var dwEffect: Integer): HResult; +{ Called when there is a COM object is dropped on the namespace. The namespace } +{ will handle the action as well. } +begin + if DropTarget and Assigned(DropTargetInterface) then + Result := DropTargetInterface.Drop(dataObj, grfKeyState, pt, dwEffect) + else begin + dwEffect := DROPEFFECT_NONE; + Result := S_OK + end +end; + +function TNamespace.EnumerateFolder(MessageWnd: HWnd; Folders, NonFolders, + IncludeHidden: Boolean; EnumFunc: TEnumFolderCallback; + UserData: Pointer): integer; +{ Enumerate a folder to get its subfolders. For each subfolder the the } +{ callback function is called so a new TNamespace may be created. } +{ You have a choice to receive Folders, NonFolders (files), and Hidden } +{ objects, UserData is useful to pass info back to the callback function. } +{ Encapsulates the IShellFolder.EnumObjects function } +{ The reciever of the Callback function is responsible for Freeing the PIDLs! } +{ Returns the number of objects in the folder. } +var + Enum: IEnumIDList; + Flags: Longword; + Fetched: Longword; + Item: PItemIDList; + Terminate: Boolean; + OldError: integer; +begin + Result := 0; + { This fixed a problem Rik Baker had: } + { "The error message is "C:\WINDOWS\SYSTEM\ODBCINST.DLL is not a valid } + { Windows Image", however the file appears fine and I've now seen the same } + { message on 9 different 2000 boxes spread across the country. } + + OldError := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX); + try + if Assigned(ShellFolder) then + begin + if Assigned(EnumFunc) then + begin + Terminate := False; + Flags := 0; + if Folders then + Flags := Flags or SHCONTF_FOLDERS; + if NonFolders then + Flags := Flags or SHCONTF_NONFOLDERS; + if IncludeHidden then + Flags := Flags or SHCONTF_INCLUDEHIDDEN; + + + if Valid then + begin + // Right now you can't mix custom items and real shell items in the same folder + if ShellFolder.EnumObjects(MessageWnd, Flags, Enum) = NOERROR then + begin + // Vista Enum is nil every once in a while + if Assigned(Enum) then + begin + while (Enum.Next(1, Item, Fetched) = NOERROR) and not Terminate do + begin + if EnumFunc(MessageWnd, Item, Self, UserData, Terminate) then + Inc(Result) + end + end + end + end + end + end + finally + SetErrorMode(OldError); + end +end; + +function TNamespace.EnumerateFolderEx(MessageWnd: HWnd; FileObjects: TFileObjects; + EnumFunc: TEnumFolderCallback; UserData: pointer; AfterValidEnumIDList: TNotifyEvent = nil): integer; +{ Enumerate a folder to get its subfolders. For each subfolder the the } +{ callback function is called so a new TNamespace may be created. } +{ You have a choice to receive Folders, NonFolders (files), and Hidden } +{ objects, UserData is useful to pass info back to the callback function. } +{ Encapsulates the IShellFolder.EnumObjects function } +{ The reciever of the Callback function is responsible for Freeing the PIDLs! } +{ Returns the number of objects in the folder. } +var + Enum: IEnumIDList; + Flags: Longword; + Fetched: Longword; + Item: PItemIDList; + Terminate: Boolean; + OldError: integer; +begin + Result := 0; + { This fixed a problem Rik Baker had: } + { "The error message is "C:\WINDOWS\SYSTEM\ODBCINST.DLL is not a valid } + { Windows Image", however the file appears fine and I've now seen the same } + { message on 9 different 2000 boxes spread across the country. } + OldError := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX); + try + if not MP_UseModalDialogs then + MessageWnd := 0; + + if Assigned(ShellFolder) then + begin + Flags := FileObjectsToFlags(FileObjects); + Terminate := False; + if Valid then + begin + // Right now you can't mix custom items and real shell items in the same folder + if ShellFolder.EnumObjects(MessageWnd, Flags, Enum) = NOERROR then + begin + // Vista Enum is nil every once in a while + if Assigned(Enum) then + begin + if Assigned(AfterValidEnumIDList) then + AfterValidEnumIDList(Self); + // Allows calling with a nil EnumFunc to pop messages in the EnumObjects call above + if not Assigned(EnumFunc) then + EnumFunc := EnumFuncDummy; + if Assigned(Enum) then + while (Enum.Next(1, Item, Fetched) = NOERROR) and not Terminate do + begin + if EnumFunc(MessageWnd, Item, Self, UserData, Terminate) then + Inc(Result) + end + end + end + end + end + finally + SetErrorMode(OldError); + end +end; + +function TNamespace.ExecuteContextMenuVerb(AVerb: WideString; + APIDLArray: TRelativePIDLArray; MessageWindowParent: HWnd = 0): Boolean; +const + MaxVerbLen = 128; + +var + ContextMenu, ContextMenu2: IContextMenu; + Menu: hMenu; + InvokeInfo: TCMInvokeCommandInfoEx; + i: integer; + VerbA, AVerbA: string; + VerbW: WideString; + VerbFound, StrFound: Boolean; + MenuID: LongWord; + GenericVerb: Pointer; +begin + if Assigned(ParentShellFolder) then + begin + if Assigned(APIDLArray) then + ContextMenu := InternalGetContextMenuInterface(APIDLArray) + else + ContextMenu := ContextMenuInterface; + + if Assigned(ContextMenu) then + ContextMenu.QueryInterface(IID_IContextMenu2, ContextMenu2); + Menu := CreatePopupMenu; + if Assigned(ContextMenu) or Assigned(ContextMenu2) then + begin + try + if Assigned(ContextMenu2) then + ContextMenu2.QueryContextMenu(Menu, 0, 1, $7FFF, CMF_NORMAL or CMF_EXPLORE or CMF_DEFAULTONLY) + else + ContextMenu.QueryContextMenu(Menu, 0, 1, $7FFF, CMF_NORMAL or CMF_EXPLORE or CMF_DEFAULTONLY); + FillChar(InvokeInfo, SizeOf(InvokeInfo), #0); + + if IsUnicode then + begin + SetLength(VerbW, MaxVerbLen); + GenericVerb := @VerbW[1]; + end + else begin + SetLength(VerbA, MaxVerbLen); + GenericVerb := @VerbA[1];; + AVerbA := AVerb + end; + + VerbFound := False; + i := 0; + { The result of using the 'verb' string and the MakeIntResource is } + { different expecially on system folders. This forces it to use } + { MakeIntResource if it can. } + while (i < GetMenuItemCount(Menu)) and not VerbFound do + begin + MenuID := GetMenuItemID(Menu, i); + if (MenuID <> $FFFFFFFF) and (MenuID > 0) then + begin + FillChar(GenericVerb^, Length(VerbW) * 2, #0); + if IsUnicode then + begin + if Assigned(ContextMenu2) then + StrFound := Succeeded(ContextMenu2.GetCommandString(MenuID-1, GCS_VERBW, nil, GenericVerb, MaxVerbLen)) + else + StrFound := Succeeded(ContextMenu.GetCommandString(MenuID-1, GCS_VERBW, nil, GenericVerb, MaxVerbLen)); + if StrFound then + begin + SetLength(VerbW, lstrlenW(PWideChar( VerbW))); + if lstrcmpiW_MP(PWideChar(VerbW), PWideChar(AVerb)) = 0 then + begin + InvokeInfo.fMask := CMIC_MASK_UNICODE; + { For some reason the lpVerbW won't work } + InvokeInfo.lpVerb := MakeIntResourceA(MenuID-1); + InvokeInfo.lpVerbW := MakeIntResourceW(MenuID-1); + VerbFound := True + end; + SetLength(VerbW, MaxVerbLen); + end + end else + begin + if Assigned(ContextMenu2) then + StrFound := Succeeded(ContextMenu2.GetCommandString(MenuID-1, GCS_VERB, nil, GenericVerb, MaxVerbLen)) + else + StrFound := Succeeded(ContextMenu.GetCommandString(MenuID-1, GCS_VERB, nil, GenericVerb, MaxVerbLen)); + if StrFound then + begin + SetLength(VerbA, StrLen(PChar( VerbA))); + if lstrcmpi(PChar( VerbA), PChar(AVerbA)) = 0 then + begin + InvokeInfo.lpVerb := MakeIntResourceA(MenuID-1); + VerbFound := True + end; + SetLength(VerbA, MaxVerbLen); + end + end + end; + Inc(i) + end; + + if not VerbFound then + begin + if IsUnicode then + begin + InvokeInfo.fMask := CMIC_MASK_UNICODE; + InvokeInfo.lpVerbW := PWideChar( AVerb); + InvokeInfo.lpVerb := PChar( string( AVerb)) + end else + InvokeInfo.lpVerb := PChar( AVerbA); + end; + + if IsUnicode then + InvokeInfo.cbSize := SizeOf(TCMInvokeCommandInfoEx) + else + InvokeInfo.cbSize := SizeOf(TCMInvokeCommandInfo); + if MessageWindowParent = 0 then + InvokeInfo.hWnd := ParentWnd + else + InvokeInfo.hWnd := MessageWindowParent; + InvokeInfo.nShow := SW_SHOWNORMAL; + if Assigned(ContextMenu2) then + Result := Succeeded(ContextMenu2.InvokeCommand(InvokeInfo)) + else + Result := Succeeded(ContextMenu.InvokeCommand(InvokeInfo)) + finally + if Menu <> 0 then + DestroyMenu(Menu); + end; + end else + Result := False + end else + Result := False +end; + +function TNamespace.FolderSize(Invalidate: Boolean; RecurseFolder: Boolean = False): Int64; +begin + if not(scFolderSize in ShellCache.ShellCacheFlags) or Invalidate then + begin + if Folder and FileSystem then + FShellCache.Data.FolderSize := CalcuateFolderSize(NameForParsing, RecurseFolder); + Include(FShellCache.ShellCacheFlags, scFolderSize); + end; + Result := FShellCache.Data.FolderSize +end; + +function TNamespace.ExplorerStyleAttributeStringList(CapitalLetters: Boolean): WideString; +begin + Result := ''; + if Archive then + Result := Result + STR_ARCHIVE; + if Hidden then + Result := Result + STR_HIDDEN; + if ReadOnlyFile then + Result := Result + STR_READONLY; + if SystemFile then + Result := Result + STR_SYSTEM; + if Compressed then + Result := Result + STR_COMPRESS; + if not CapitalLetters then + Result := WideLowerCase(Result) + +end; + +function TNamespace.GetArchive: Boolean; +{ GETTER: Does the file attributes contain Archive? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_ARCHIVE <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_ARCHIVE <> 0 + else + Result := False; + end +end; + +function TNamespace.GetAttributesString: WideString; +begin + if FileSystem then + Result := ExplorerStyleAttributeStringList(True) + else + Result := '' +end; + +function TNamespace.GetBrowsable: Boolean; +begin + if not (scBrowsable in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_BROWSABLE, False) then + Include(FShellCache.Data.Attributes, caBrowsable); + Include(FShellCache.ShellCacheFlags, scBrowsable); + end; + Result := caBrowsable in ShellCache.Data.Attributes +end; + +function TNamespace.GetCanCopy: Boolean; +begin + if not (scCanCopy in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_CANCOPY, False) then + Include(FShellCache.Data.Attributes, caCanCopy); + Include(FShellCache.ShellCacheFlags, scCanCopy); + end; + Result := caCanCopy in ShellCache.Data.Attributes +end; + +function TNamespace.GetCanDelete: Boolean; +{ GETTER: Can we delete the namespace? } +begin + if not (scCanDelete in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_CANDELETE, False) then + Include(FShellCache.Data.Attributes, caCanDelete); + Include(FShellCache.ShellCacheFlags, scCanDelete); + end; + Result := caCanDelete in ShellCache.Data.Attributes +end; + +function TNamespace.GetCanLink: Boolean; +begin + if not (scCanLink in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_CANLINK, False) then + Include(FShellCache.Data.Attributes, caCanLink); + Include(FShellCache.ShellCacheFlags, scCanLink); + end; + Result := caCanLink in ShellCache.Data.Attributes +end; + +function TNamespace.GetCanMove: Boolean; +begin + if not (scCanMove in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_CANMOVE, False) then + Include(FShellCache.Data.Attributes, caCanMove); + Include(FShellCache.ShellCacheFlags, scCanMove); + end; + Result := caCanMove in ShellCache.Data.Attributes +end; + +function TNamespace.GetCanRename: Boolean; +{ GETTER: Can we Rename the namespace? } +begin + if not (scCanRename in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_CANRENAME, False) then + Include(FShellCache.Data.Attributes, caCanRename); + Include(FShellCache.ShellCacheFlags, scCanRename); + end; + Result := caCanRename in ShellCache.Data.Attributes +end; + +function TNamespace.GetCategoryCount: Integer; +begin + LoadCategoryInfo; + Result := 0; +end; + +function TNamespace.GetCLSID: TGUID; +var + DescriptionID: TSHDESCRIPTIONID; + PersistFolder: IPersistFolder; +begin + Result := GUID_NULL; + if Assigned(ParentShellFolder) then + if Succeeded(SHGetDataFromIDList(ParentShellFolder, RelativePIDL, SHGDFIL_DESCRIPTIONID, @DescriptionID, SizeOf(TSHDESCRIPTIONID))) then + Result := DescriptionID.Id; + if IsEqualGUID(Result, GUID_NULL) then + begin + if Succeeded(ShellFolder.QueryInterface(IPersistFolder, PersistFolder)) then + if not Succeeded(PersistFolder.GetClassID(Result)) then + Result := GUID_NULL; + end; +end; + +function TNamespace.GetCompressed: Boolean; +{ GETTER: Does the file attributes contain Compressed? } +begin + if not (scCompressed in ShellCache.ShellCacheFlags) then + begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + if FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_COMPRESSED <> 0 then + Include(FShellCache.Data.Attributes, caCompressed) + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + if FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_COMPRESSED <> 0 then + Include(FShellCache.Data.Attributes, caCompressed) + end; + Include(FShellCache.ShellCacheFlags, scCompressed); + end; + Result := caCompressed in ShellCache.Data.Attributes; +end; + +function TNamespace.GetContextMenuInterface: IContextMenu; +var + PIDLArray: TRelativePIDLArray; +begin + if not Assigned(Result) then + begin + SetLength(PIDLArray, 1); + PIDLArray[0] := RelativePIDL; + Result := InternalGetContextMenuInterface(PIDLArray); + end +end; + +function TNamespace.GetContextMenu2Interface: IContextMenu2; +var + Found: Boolean; + ContextMenu: IContextmenu; +begin + Found := False; + ContextMenu := ContextMenuInterface; + if Assigned(ContextMenu) then + begin + Found := ContextMenu.QueryInterface(IID_IContextMenu2, Pointer(Result)) <> E_NOINTERFACE; + CurrentContextMenu2 := Result + end; + if not Found then + Result := nil +end; + +function TNamespace.GetContextMenu3Interface: IContextMenu3; +var + Found: Boolean; + ContextMenu: IContextmenu; +begin + Found := False; + ContextMenu := ContextMenuInterface; + if Assigned(ContextMenu) then + begin + Found := ContextMenu.QueryInterface(IContextMenu3, Pointer(Result)) <> E_NOINTERFACE; + CurrentContextMenu2 := Result + end; + if not Found then + Result := nil +end; + +function TNamespace.GetCreationTime: WideString; +{ GETTER: Creation time of the file. } +begin + if not (scCreationTime in ShellCache.ShellCacheFlags) then + begin + { Don't use Win32FindData cache, re-read the file times } + GetFileTimes; + + if IsUnicode then + begin + if Assigned(FWin32FindDataW) and FileSystem then + FShellCache.Data.CreationTime := ConvertTFileTimeToLocalStr(FWin32FindDataW^.ftCreationTime) + else + FShellCache.Data.CreationTime := ''; + end else + begin + if Assigned(FWin32FindDataA) and FileSystem then + FShellCache.Data.CreationTime := ConvertTFileTimeToLocalStr(FWin32FindDataA^.ftCreationTime) + else + FShellCache.Data.CreationTime := ''; + end; + Include(FShellCache.ShellCacheFlags, scCreationTime); + end; + Result := ShellCache.Data.CreationTime +end; + +function TNamespace.GetCreationDateTime: TDateTime; +begin + Result := ConvertFileTimetoDateTime(CreationTimeRaw) +end; + +function TNamespace.GetCreationTimeRaw: TFileTime; +begin + { Don't use Win32FindData cache, re-read the file times } + GetFileTimes; + + if IsUnicode then + begin + if Assigned(FWin32FindDataW) then + Result := FWin32FindDataW^.ftCreationTime + else + FillChar(Result, SizeOf(Result), #0); + end else + begin + if Assigned(FWin32FindDataA) then + Result := FWin32FindDataA^.ftCreationTime + else + FillChar(Result, SizeOf(Result), #0); + end +end; + +function TNamespace.GetParent: TNamespace; +var + P: PItemIDList; +begin + if not Assigned(FParent) then + begin + P := PIDLMgr.CopyPIDL(AbsolutePIDL); + if PIDLMgr.IDCount(P) > 1 then + FParent := TNamespace.Create(PIDLMgr.StripLastID(P), nil) + else + FParent := TNamespace.Create(nil, nil); + Include(FStates, nsOwnsParent); + end; + Result := FParent; +end; + +function TNamespace.GetThreadedDetailLoaded(ColumnIndex: Integer): Boolean; +begin + Result := False; + EnsureDetailCache; + if DetailsValidIndex(ColumnIndex) then + Result := docThreadLoaded in ShellCache.Data.DetailsOfCache[ColumnIndex].Cached +end; + +function TNamespace.GetThreadedDetailLoading(ColumnIndex: Integer): Boolean; +begin + Result := False; + EnsureDetailCache; + if DetailsValidIndex(ColumnIndex) then + Result := docThreadLoading in ShellCache.Data.DetailsOfCache[ColumnIndex].Cached +end; + +function TNamespace.ParentWnd: HWnd; +begin + Result := 0; + if MP_UseModalDialogs then + Result := GetActiveWindow +end; + +procedure TNamespace.EnsureDetailCache; +var + i: Integer; + TempCache: PDetailsOfCacheRec; +begin + if not (scDetailsOfCache in ShellCache.ShellCacheFlags) then + begin + SetLength(FShellCache.Data.DetailsOfCache, DetailsSupportedColumns); + for i := 0 to Length(FShellCache.Data.DetailsOfCache) - 1 do + begin + TempCache := @ShellCache.Data.DetailsOfCache[i]; + TempCache^.Cached := []; + TempCache^.Caption := ''; + TempCache^.States := []; + end; + Include(FShellCache.ShellCacheFlags, scDetailsOfCache); + end; +end; + +procedure TNamespace.ExecuteContextMenuVerbMultiPath(Verb: WideString; + Namespaces: TNamespaceArray); +var + Menu: TCommonShellMultiParentContextMenu; + Temp: TWinControl; +begin + Menu := TCommonShellMultiParentContextMenu.Create(nil); + Temp := TWinControl.CreateParented(GetDesktopWindow); + try + Temp.Width := 0; + Temp.Height := 0; + Temp.Visible := True; + Menu.ExecuteContextMenuVerb(Temp, Namespaces, Verb); + Temp.Visible := False; + finally + Temp.Free; + Menu.Free + end +end; + +procedure TNamespace.GetDataFromIDList; +{ Retrieves and caches the Data stored by the shell PIDL. } +var + Error: Boolean; +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) and not IsDesktop then + begin + if not (scInvalidIDListData in ShellCache.ShellCacheFlags) then + begin + Error := True; + try + if Assigned(ParentShellFolder) then + begin + GetMem(FWin32FindDataW, SizeOf(TWin32FindDataW)); + FillChar(FWin32FindDataW^, SizeOf(FWin32FindDataW^), #0); + { Children of the Desktop won't work if accessed from the Desktop } + { ShellFolder, they must use the physical Desktop folder. } + if Assigned(Parent) and (Parent.IsDesktop) and Assigned(PhysicalDesktopFolder) then + begin + Error := SHGetDataFromIDListW_MP(PhysicalDesktopFolder.ShellFolder, RelativePIDL, + SHGDFIL_FINDDATA, FWin32FindDataW, SizeOf(TWin32FindDataW)) <> NOERROR; + end else + Error := SHGetDataFromIDListW_MP(ParentShellFolder, RelativePIDL, SHGDFIL_FINDDATA, + FWin32FindDataW, SizeOf(TWin32FindDataW)) <> NOERROR; + end + finally + if Error then + begin + if Assigned(FWin32FindDataW) then + FreeMem(FWin32FindDataW, SizeOf(TWin32FindDataW)); + FWin32FindDataW := nil; + Include(FShellCache.ShellCacheFlags, scInvalidIDListData) + end + end; + end + end + end else + begin + if not Assigned(FWin32FindDataA) and not IsDesktop then + begin + if not (scInvalidIDListData in ShellCache.ShellCacheFlags) then + begin + Error := True; + try + if Assigned(ParentShellFolder) then + begin + GetMem(FWin32FindDataA, SizeOf(TWin32FindDataA)); + FillChar(FWin32FindDataA^, SizeOf(TWin32FindDataA), #0); + { Children of the Desktop won't work if accessed from the Desktop } + { ShellFolder, they must use the physical Desktop folder. } + if Assigned(Parent) and (Parent.IsDesktop) and Assigned(PhysicalDesktopFolder) then + begin + Error := SHGetDataFromIDListA(PhysicalDesktopFolder.ShellFolder, RelativePIDL, + SHGDFIL_FINDDATA, FWin32FindDataA, SizeOf(TWin32FindDataA)) <> NOERROR; + end else + Error := SHGetDataFromIDListA(ParentShellFolder, RelativePIDL, SHGDFIL_FINDDATA, + FWin32FindDataA, SizeOf(TWin32FindDataA)) <> NOERROR; + end + finally + if Error then + begin + if Assigned(FWin32FindDataA) then + FreeMem(FWin32FindDataA, SizeOf(TWin32FindDataA)); + FWin32FindDataA := nil; + Include(FShellCache.ShellCacheFlags, scInvalidIDListData) + end + end; + end + end + end +end; + +function TNamespace.GetDataObjectInterface: IDataObject; +begin + Result := InternalGetDataObjectInterface(nil) +end; + +function TNamespace.GetDescription: TObjectDescription; +var + DescriptionID: TSHDESCRIPTIONID; +begin + Result := odError; + if Assigned(ParentShellFolder) then + begin + if Succeeded(SHGetDataFromIDList(ParentShellFolder, RelativePIDL, SHGDFIL_DESCRIPTIONID, @DescriptionID, SizeOf(TSHDESCRIPTIONID))) then + Result := TObjectDescription(DescriptionID.dwDescriptionId) + end +end; + +function TNamespace.GetDetailsSupported: Boolean; +begin + { IShellDetails depends on the parent folder implementing the interface } + if Assigned(Parent) then + Result := Assigned(Parent.ShellFolder2) or Assigned(ParentShellDetailsInterface) + else + Result := False +end; + +function TNamespace.GetDirectory: Boolean; +{ GETTER: Does the file attributes contain Directory? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0 + else + Result := False; + end +end; + +function TNamespace.GetDropTarget: Boolean; +{ GETTER: Can we drop another object on this namespace? Note the Desktop is } +{ handled as a special case. The IDropTarget is mapped to the physical folder } +{ location in the DropTargetInterface property. } +begin + Result := TestAttributesOf(SFGAO_DROPTARGET, False) or + PIDLMgr.IsDesktopFolder(RelativePIDL); +end; + +function TNamespace.GetDropTargetInterface: IDropTarget; +var + Found: Boolean; +begin + if not Assigned(FDropTargetInterface) then + begin + Found := False; + if Assigned(ParentShellFolder) then + begin + Found := ParentShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, + IID_IDropTarget, nil, Pointer(FDropTargetInterface)) = NOERROR; + end; + if not Found and IsDesktop then + FDropTargetInterface := PhysicalDesktopFolder.DropTargetInterface; + end; + Result := FDropTargetInterface +end; + +function TNamespace.GetExtension: WideString; +begin + Result := WideExtractFileExt(NameForParsingInFolder); +end; + +function TNamespace.GetExtractImage: TExtractImage; +begin + if not Assigned(FExtractImage) then + begin + FExtractImage := TExtractImage.Create; + FExtractImage.Owner := Self + end; + Result := FExtractImage +end; + +function TNamespace.GetExtractIconAInterface: IExtractIcon; +var + Found: Boolean; +begin + if Assigned(ParentShellFolder) then + begin + Found := Succeeded(ParentShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, IExtractIconA, nil, Pointer(Result))); + if not Found and Assigned(ShellFolder) then + Found := Succeeded(ShellFolder.CreateViewObject(ParentWnd, IExtractIconA, Pointer(Result))); + if not Found then + Result := nil + end +end; + +function TNamespace.GetExtractIconWInterface: IExtractIconW; +var + Found: Boolean; +begin + if Assigned(ParentShellFolder) then + begin + Found := Succeeded(ParentShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, IExtractIconW, nil, Pointer(Result))); + if not Found and Assigned(ShellFolder) then + Found := Succeeded(ShellFolder.CreateViewObject(ParentWnd, IExtractIconW, Pointer(Result))); + if not Found then + Result := nil + end +end; + +function TNamespace.GetFileName: WideString; +{ GETTER: FileName from the file system (FindFirst) } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.cFileName + else + Result := ''; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.cFileName + else + Result := ''; + end +end; + +function TNamespace.GetFileSysAncestor: Boolean; +// Only works reliablely on Win2k and above +begin + if not (scFileSysAncestor in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_FILESYSANCESTOR, False) then + Include(FShellCache.Data.Attributes, caFileSysAncestor); + Include(FShellCache.ShellCacheFlags, scFileSysAncestor); + end; + Result := caFileSysAncestor in ShellCache.Data.Attributes +end; + +function TNamespace.GetFileSystem: Boolean; +{ GETTER: Is the namespace part of the physical file system? } +begin + if not (scFileSystem in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_FILESYSTEM, False) then + Include(FShellCache.Data.Attributes, caFileSystem); + Include(FShellCache.ShellCacheFlags, scFileSystem); + end; + Result := caFileSystem in ShellCache.Data.Attributes +end; + +procedure TNamespace.GetFileTimes; +var + Handle: THandle; + FileDataA: TWin32FindData; + FileDataW: TWin32FindDataW; + S: string; +begin + if not (scFileTimes in ShellCache.ShellCacheFlags) then + begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if FileSystem and Assigned(FWin32FindDataW) then + begin + FillChar(FileDataW, SizeOf(FileDataW), #0); + Handle := FindFirstFileW_MP(PWideChar( NameParseAddress), FileDataW); + if Handle <> INVALID_HANDLE_VALUE then + begin + Windows.FindClose(Handle); // There is no FindCloseW + FWin32FindDataW.ftLastAccessTime := FileDataW.ftLastAccessTime; + FWin32FindDataW.ftCreationTime := FileDataW.ftCreationTime; + FWin32FindDataW.ftLastWriteTime := FileDataW.ftLastWriteTime + end + end; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if FileSystem and Assigned(FWin32FindDataA) then + begin + FillChar(FileDataA, SizeOf(FileDataA), #0); + S := NameParseAddress; + Handle := FindFirstFileA(PChar( S), FileDataA); + if Handle <> INVALID_HANDLE_VALUE then + begin + Windows.FindClose(Handle); // There is no ASCI and Wide version + FWin32FindDataA.ftLastAccessTime := FileDataA.ftLastAccessTime; + FWin32FindDataA.ftCreationTime := FileDataA.ftCreationTime; + FWin32FindDataA.ftLastWriteTime := FileDataA.ftLastWriteTime + end + end; + end; + Include(FShellCache.ShellCacheFlags, scFileTimes) + end; +end; + +function TNamespace.GetFileType: WideString; +// File type string shown in column 3 of Explorer Listview +begin + if not (scFileType in ShellCache.ShellCacheFlags) then + begin + if not Assigned(FSHGetFileInfoRec) then + GetSHFileInfo; + if Assigned(FSHGetFileInfoRec) then + begin + FShellCache.Data.FileType := FSHGetFileInfoRec^.FileType; + { NT only half-assed supports the SHGetFileInfo...only if the ext is } + { associated with a program. So we build it ourselves } + if FShellCache.Data.FileType = '' then + FShellCache.Data.FileType := WideUpperCase(WideExtractFileExt(NameForParsing)) + STR_FILE; + end else + FShellCache.Data.FileType := ''; + Include(FShellCache.ShellCacheFlags, scFileType); + end; + Result := ShellCache.Data.FileType +end; + +function TNamespace.GetFolder: Boolean; +// Ask the Folder if it is a Folder, as opposed to files. Folders can contain +// other objects. +begin + if not (scFolder in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_FOLDER, False) then + Include(FShellCache.Data.Attributes, caFolder); + Include(FShellCache.ShellCacheFlags, scFolder); + end; + Result := caFolder in ShellCache.Data.Attributes; +end; + +function TNamespace.GetFreePIDLOnDestroy: Boolean; +begin + Result := nsFreePIDLOnDestroy in States +end; + +function TNamespace.GetGhosted: Boolean; +// Ask the Folder if it is a ghosted file object. Partially encapsulates the +// IShellFolder.GetAttributesOf function. +begin + if not (scGhosted in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_GHOSTED, False) then + Include(FShellCache.Data.Attributes, caGhosted); + Include(FShellCache.ShellCacheFlags, scGhosted); + end; + Result := caGhosted in ShellCache.Data.Attributes +end; + +function TNamespace.GetHasPropSheet: Boolean; +begin + Result := TestAttributesOf(SFGAO_HASPROPSHEET, False); +end; + +function TNamespace.GetHasSubFolder: Boolean; +begin + Result := TestAttributesOf(SFGAO_HASSUBFOLDER, False); +end; + +function TNamespace.GetHidden: Boolean; +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_HIDDEN <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_HIDDEN <> 0 + else + Result := False; + end +end; + +function TNamespace.GetIconIndexChanged: Boolean; +begin + Result := nsIconIndexChanged in States +end; + +function TNamespace.GetIconIndex(OpenIcon: Boolean; IconSize: TIconSize; ForceLoad: Boolean = True): integer; +{ Retrieve the Icon Index either selected or not selected (open folder or } +{ closed folder) } + + function GetIconByIShellIcon(AnOpenIcon: Boolean; Size: TIconSize; var Index: integer): Boolean; + var + Flags: Longword; + begin + Result := False; + if Assigned(ShellIconInterface) then + begin + Flags := 0; + if Size = icLarge then + Flags := GIL_FORSHELL; + if AnOpenIcon then + Flags := GIL_OPENICON or Flags; + Result := ShellIconInterface.GetIconOf(RelativePIDL, Flags, Index) = NOERROR + end + end; + + procedure GetIconBySHGetFileInfo(AnOpenIcon: Boolean; Size: TIconSize; var Index: Integer); + { A little undocumented trick. If you use the SHGFI_USEFILEATTRIBUTES flags } + { the SHGetFileInfo function does not fully access the object and is much } + { faster. } + { UPDATE: Unfortunatly this does not work well in Win98 :^( } + var + Flags: integer; + InfoA: TSHFileInfoA; + InfoW: TSHFileInfoW; + begin + Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SHELLICONSIZE; + if IconSize = icLarge then + Flags := Flags or SHGFI_LARGEICON + else + Flags := Flags or SHGFI_SMALLICON; + if AnOpenIcon then + Flags := Flags or SHGFI_OPENICON; + if IsUnicode then + begin + FillChar(InfoW, SizeOf(InfoW), #0); + if SHGetFileInfoW_MP(PWideChar(AbsolutePIDL), 0, InfoW, SizeOf(InfoW), Flags) <> 0 then + Index := InfoW.iIcon + else + Index := 0 + end else + begin + FillChar(InfoA, SizeOf(InfoA), #0); + if SHGetFileInfoA(PChar(AbsolutePIDL), 0, InfoA, SizeOf(InfoA), Flags) <> 0 then + Index := InfoA.iIcon + else + Index := 0 + end + end; + + function GetIcon(IsOpen: Boolean; IconSize: TIconSize): integer; + begin + if not GetIconByIShellIcon(IsOpen, IconSize, Result) then + GetIconBySHGetFileInfo(IsOpen, IconSize, Result); + end; + +begin + if not OpenIcon then + begin + if not (scSmallIcon in ShellCache.ShellCacheFlags) or ForceLoad then + begin + FShellCache.Data.SmallIcon := GetIcon(False, icSmall); + Include(FShellCache.ShellCacheFlags, scSmallIcon); + end; + Result := ShellCache.Data.SmallIcon; + end else + begin + if not (scSmallOpenIcon in ShellCache.ShellCacheFlags) or ForceLoad then + begin + { Some Control panel icons return 0 for open but have icons for not open } + { and it looks bad to show the default icon when the item is selected. } + { In NT4 some ControlPanel icons are the Mouse icons when selected! } + if Assigned(Parent) and Parent.IsControlPanel then + FShellCache.Data.SmallOpenIcon := GetIcon(False, icSmall) + else begin + FShellCache.Data.SmallOpenIcon := GetIcon(True, icSmall); + { If it is 0 then try the normal icon } + if FShellCache.Data.SmallOpenIcon = 0 then + FShellCache.Data.SmallOpenIcon := GetIcon(False, icSmall) + end; + + Include(FShellCache.ShellCacheFlags, scSmallOpenIcon) + end; + Result := ShellCache.Data.SmallOpenIcon; + end; +end; + +function TNamespace.GetInfoTip: WideString; +{ Retrieves the text from the IInfoTip interface in Win2k. } +var + Buffer: PWideChar; +begin + Result := ''; + if Assigned(QueryInfoInterface) then + begin + if QueryInfoInterface.GetInfoTip(0, Buffer) = S_OK then + begin + Result := Buffer; + PIDLMgr.FreeOLEStr(Buffer); + end; + end; +end; + +function TNamespace.GetLastAccessTime: WideString; +{ GETTER: Last Access time of the file. } +begin + if not (scLastAccessTime in ShellCache.ShellCacheFlags) then + begin + { Don't use Win32FindData cache, re-read the file times } + GetFileTimes; + + if IsUnicode then + begin + if Assigned(FWin32FindDataW) and FileSystem then + FShellCache.Data.LastAccessTime := ConvertTFileTimeToLocalStr(FWin32FindDataW^.ftLastAccessTime) + else + FShellCache.Data.LastAccessTime := ''; + end else + begin + if Assigned(FWin32FindDataA) and FileSystem then + FShellCache.Data.LastAccessTime := ConvertTFileTimeToLocalStr(FWin32FindDataA^.ftLastAccessTime) + else + FShellCache.Data.LastAccessTime := ''; + end; + Include(FShellCache.ShellCacheFlags, scLastAccessTime); + end; + Result := FShellCache.Data.LastAccessTime +end; + +function TNamespace.GetLastAccessDateTime: TDateTime; +begin + Result := ConvertFileTimetoDateTime(LastAccessTimeRaw) +end; + +function TNamespace.GetLastAccessTimeRaw: TFileTime; +begin + { Don't use Win32FindData cache, re-read the file times } + GetFileTimes; + + if IsUnicode then + begin + if Assigned(FWin32FindDataW) then + Result := FWin32FindDataW^.ftLastAccessTime + else + FillChar(Result, SizeOf(Result), #0); + end else + begin + if Assigned(FWin32FindDataA) then + Result := FWin32FindDataA^.ftLastAccessTime + else + FillChar(Result, SizeOf(Result), #0); + end +end; + + +function TNamespace.GetLastWriteTime: WideString; +{ GETTER: Last write time for the file. } +begin + if not (scLastWriteTime in ShellCache.ShellCacheFlags) then + begin + { Don't use Win32FindData cache, re-read the file times } + GetFileTimes; + + if IsUnicode then + begin + if Assigned(FWin32FindDataW) and FileSystem then + FShellCache.Data.LastWriteTime := ConvertTFileTimeToLocalStr(FWin32FindDataW^.ftLastWriteTime) + else + FShellCache.Data.LastWriteTime := ''; + end else + begin + if Assigned(FWin32FindDataA) and FileSystem then + FShellCache.Data.LastWriteTime := ConvertTFileTimeToLocalStr(FWin32FindDataA^.ftLastWriteTime) + else + FShellCache.Data.LastWriteTime := ''; + end; + Include(FShellCache.ShellCacheFlags, scLastWriteTime); + end; + Result := FShellCache.Data.LastWriteTime +end; + +function TNamespace.GetLastWriteDateTime: TDateTime; +begin + Result := ConvertFileTimetoDateTime(LastWriteTimeRaw) +end; + +function TNamespace.GetLastWriteTimeRaw: TFileTime; +{ GETTER: Last Write time for the file in raw TFileTime format. } +begin + { Don't use Win32FindData cache, re-read the file times } + GetFileTimes; + + if IsUnicode then + begin + if Assigned(FWin32FindDataW) then + Result := FWin32FindDataW^.ftLastWriteTime + else + FillChar(Result, SizeOf(Result), #0); + end else + begin + if Assigned(FWin32FindDataA) then + Result := FWin32FindDataA^.ftLastWriteTime + else + FillChar(Result, SizeOf(Result), #0); + end +end; + +function TNamespace.GetLink: Boolean; +begin + if not (scLink in ShellCache.ShellCacheFlags) then + begin + if TestAttributesOf(SFGAO_LINK, False) then + Include(FShellCache.Data.Attributes, caLink); + Include(FShellCache.ShellCacheFlags, scLink); + end; + Result := caLink in ShellCache.Data.Attributes +end; + +function TNamespace.GetNameAddressbar: WideString; +begin + Result := DisplayNameOf(SHGDN_FORADDRESSBAR or SHGDN_NORMAL) +end; + +function TNamespace.GetNameAddressbarInFolder: WideString; +begin + Result := DisplayNameOf(SHGDN_INFOLDER or SHGDN_FORADDRESSBAR) +end; + +function TNamespace.GetNameForEditing: WideString; +begin + Result := DisplayNameOf(SHGDN_FOREDITING) +end; + +function TNamespace.GetNameForEditingInFolder: WideString; +begin + Result := DisplayNameOf(SHGDN_FOREDITING or SHGDN_INFOLDER) +end; + +function TNamespace.GetNameForParsing: WideString; +begin + // Early versions of Windows returned "Desktop" instead of the full path + if IsDesktop then + Result := PhysicalDesktopFolder.NameForParsing + else + Result := DisplayNameOf(SHGDN_FORPARSING or SHGDN_NORMAL) +end; + +function TNamespace.GetNameForParsingInFolder: WideString; +begin +// Early versions of Windows returned "Desktop" instead of the full path + if IsDesktop then + Result := PhysicalDesktopFolder.NameForParsingInFolder + else + Result := DisplayNameOf(SHGDN_INFOLDER or SHGDN_FORPARSING) +end; + +function TNamespace.GetNameInFolder: WideString; +begin + if not (scInFolderName in ShellCache.ShellCacheFlags) then + begin + FShellCache.Data.InFolderName := DisplayNameOf(SHGDN_INFOLDER); + Include(FShellCache.ShellCacheFlags, scInFolderName) + end; + Result := FShellCache.Data.InFolderName +end; + +function TNamespace.GetNameNormal: WideString; +begin + if not (scNormalName in ShellCache.ShellCacheFlags) then + begin + FShellCache.Data.NormalName := DisplayNameOf(SHGDN_NORMAL); + Include(FShellCache.ShellCacheFlags, scNormalName) + end; + Result := FShellCache.Data.NormalName +end; + +function TNamespace.GetNameParseAddress: WideString; +begin + if not (scParsedName in ShellCache.ShellCacheFlags) then + begin + FShellCache.Data.ParsedName := DisplayNameOf(SHGDN_FORADDRESSBAR or SHGDN_FORPARSING); + Include(FShellCache.ShellCacheFlags, scParsedName) + end; + Result := FShellCache.Data.ParsedName +end; + +function TNamespace.GetNameParseAddressInFolder: WideString; +begin + Result := DisplayNameOf(SHGDN_FORADDRESSBAR or SHGDN_FORPARSING or SHGDN_INFOLDER) +end; + +function TNamespace.GetNewContent: Boolean; +{ GETTER: Does this namespace contain new content? } +begin + Result := TestAttributesOf(SFGAO_NEWCONTENT, False); +end; + +function TNamespace.GetNonEnumerated: Boolean; +{ GETTER: Is this namespace able to be enumerated? } +begin + Result := TestAttributesOf(SFGAO_NONENUMERATED, False); +end; + +function TNamespace.GetNormal: Boolean; +{ GETTER: Does the file attributes contain Normal? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_NORMAL <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_NORMAL <> 0 + else + Result := False; + end +end; + +function TNamespace.GetOffLine: Boolean; +{ GETTER: Does the file attributes contain OffLine? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_OFFLINE <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_OFFLINE <> 0 + else + Result := False; + end +end; + +function TNamespace.GetImage: TBitmap; +begin + Result := FImage; +end; + +procedure TNamespace.InvalidateDetailsOfCache(FlushStrings: Boolean); +var + i: Integer; +begin + for i := 0 to Length( ShellCache.Data.DetailsOfCache) - 1 do + begin + ShellCache.Data.DetailsOfCache[i].Cached := []; + if FlushStrings then + ShellCache.Data.DetailsOfCache[i].Caption := '' + end; + FShellCache.ShellCacheFlags := ShellCache.ShellCacheFlags - [scDetailsOfCache]; + FShellCache.ShellCacheFlags := ShellCache.ShellCacheFlags - [scInFolderName]; +end; + +procedure TNamespace.InvalidateThumbImage; +begin + FreeAndNIL(FImage); + Exclude(FStates, nsThreadedImageLoaded); + Exclude(FStates, nsThreadedImageLoading); +end; + +function TNamespace.SubFoldersEx(Flags: Longword = SHCONTF_FOLDERS): Boolean; +begin + Result := InternalSubItems(Flags) +end; + +function TNamespace.SubItemsEx(Flags: Longword = SHCONTF_NONFOLDERS): Boolean; +begin + Result := InternalSubItems(Flags) +end; + +function TNamespace.GetOverlayIconIndex: Integer; +begin + if Assigned(Parent) then + begin + if Assigned(Parent.ShellIconOverlayInterface) then + begin + if FShellCache.Data.OverlayIconIndex < 0 then + begin + if Parent.ShellIconOverlayInterface.GetOverlayIconIndex(FRelativePIDL, FShellCache.Data.OverlayIconIndex) <> S_OK then + FShellCache.Data.OverlayIconIndex := -1; + end + end + end; + Result := FShellCache.Data.OverlayIconIndex +end; + +function TNamespace.GetOverlayIndex: Integer; +begin + if Assigned(Parent) then + begin + if not (scOverlayIndex in FShellCache.ShellCacheFlags) then + begin + if Assigned(Parent.ShellIconOverlayInterface) then + begin + if FShellCache.Data.OverlayIndex < 0 then + begin + if Parent.ShellIconOverlayInterface.GetOverlayIndex(FRelativePIDL, FShellCache.Data.OverlayIndex) <> S_OK then + begin + if MP_UseSpecialReparsePointOverlay and IsUnicode and not IsWinNT4 and ReparsePoint then + FShellCache.Data.OverlayIndex := 4 + else + FShellCache.Data.OverlayIndex := -1; + end + end + end; + Include(FShellCache.ShellCacheFlags, scOverlayIndex) + end + end; + Result := FShellCache.Data.OverlayIndex; +end; + +function TNamespace.GetCanMoniker: Boolean; +begin + Result := TestAttributesOf(SFGAO_CANMONIKER, False) +end; + +function TNamespace.GetEncrypted: Boolean; +begin + Result := TestAttributesOf(SFGAO_ENCRYPTED, False) +end; + +function TNamespace.GetHasStorage: Boolean; +begin + Result := TestAttributesOf(SFGAO_HASSTORAGE, False) +end; + +function TNamespace.GetIsSlow: Boolean; +begin + Result := TestAttributesOf(SFGAO_ISSLOW, False) +end; + +function TNamespace.GetStorage: Boolean; +begin + Result := TestAttributesOf(SFGAO_STORAGE, False) +end; + +function TNamespace.GetStorageAncestor: Boolean; +begin + Result := TestAttributesOf(SFGAO_STORAGEANCESTOR, False) +end; + +function TNamespace.GetStream: Boolean; +begin + Result := TestAttributesOf(SFGAO_STREAM, False) +end; + +function TNamespace.GetParentShellDetailsInterface: IVETShellDetails; +begin + { This forces the Parent to be created if necessary } + if Assigned(ParentShellFolder) then + Result := Parent.ShellDetailsInterface + else + Result := ShellDetailsInterface +end; + +function TNamespace.GetParentShellFolder: IShellFolder; +//var + // P: PItemIDList; +begin + + Result := Parent.ShellFolder + (* Result := nil; + + // 08.31.02 + // Going to try to allow the Parent to persist if the namespace creates it itself. + // This is called a LOT more than I thought expecially for the ExplorerListview + + if Assigned(Parent) then + begin + Result := Parent.ShellFolder + end else + if not IsDesktop then + begin + if Assigned(Parent) then + FreeAndNil(FParent); + P := PIDLMgr.CopyPIDL(AbsolutePIDL); + FParent := TNamespace.Create(PIDLMgr.StripLastID(P), nil); + + if Assigned(FParent) then + begin + Result := FParent.ShellFolder; + { Since we created the parent we own it in case we have to destroy it in } + { our destructor. } + Include(FStates, nsOwnsParent); + end + end else + Result := ShellFolder *) +end; + +function TNamespace.GetParentShellFolder2: IShellFolder2; +begin + { This flag keeps us from constantly trying to get FShellFolder2 if it is not } + { supported by the namespace. } + { This forces the Parent to be created if necessary } + if Assigned(ParentShellFolder) then + Result := Parent.ShellFolder2 + else + Result := ShellFolder2 +end; + +function TNamespace.GetQueryInfoInterface: IQueryInfo; +var + Found: Boolean; +begin + if not Assigned(FQueryInfoInterface) then + begin + Found := False; + if Assigned(ParentShellFolder) then + begin + Found := ParentShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, + IQueryInfo, nil, Pointer(FQueryInfoInterface)) = NOERROR; + end; + if not Found and Assigned(ShellFolder) then + begin + Found := ShellFolder.CreateViewObject(ParentWnd, IQueryInfo, + Pointer(FQueryInfoInterface)) = NOERROR; + end; + if not Found and IsDesktop then + FQueryInfoInterface := PhysicalDesktopFolder.QueryInfoInterface; + end; + Result := FQueryInfoInterface +end; + +function TNamespace.GetReadOnly: Boolean; +{ GETTER: Is this namespace ReadOnly? } +begin + Result := TestAttributesOf(SFGAO_READONLY, False); +end; + +function TNamespace.GetReadOnlyFile: Boolean; +{ GETTER: Does the file attributes contain ReadOnly? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_READONLY <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_READONLY <> 0 + else + Result := False; + end +end; + +function TNamespace.GetReparsePoint: Boolean; +{ GETTER: Does the file attributes contain ReadOnly? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT <> 0 + else + Result := False; + end +end; + +function TNamespace.GetRemovable: Boolean; +{ GETTER: Is this a removeable object? } +begin + Result := TestAttributesOf(SFGAO_REMOVABLE, False); +end; + +function TNamespace.GetShellDetailsInterface: IVETShellDetails; +var + Found: Boolean; +begin + { This flag keeps us from constantly trying to get IShellDetails if it is not } + { supported by the namespace. } + if (nsShellDetailsSupported in States) and not Assigned(FShellDetailsInterface) then + begin + Found := False; + if not Found and Assigned(ShellFolder) then + Found := ShellFolder.CreateViewObject(ParentWnd, IID_IShellDetails, Pointer(FShellDetailsInterface)) = NOERROR; + if not Found and Assigned(ParentShellFolder) then + Found := ParentShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, IID_IShellDetails, nil, + Pointer(FShellDetailsInterface)) = NOERROR; + if Found then + Include(FStates, nsShellDetailsSupported) + else + begin + Exclude(FStates, nsShellDetailsSupported); + FShellDetailsInterface := nil + end + end; + Result := FShellDetailsInterface; +end; + +function TNamespace.GetShellIconInterface: IShellIcon; +var + Found: Boolean; +begin + if not Assigned(FShellIconInterface) then + begin + Found := False; + if Assigned(ParentShellFolder) then + Found := ParentShellFolder.QueryInterface(IID_IShellIcon, + Pointer(FShellIconInterface)) <> E_NOINTERFACE; + if not Found then + FShellIconInterface := nil + end; + Result := FShellIconInterface +end; + +function TNamespace.GetShellFolder: IShellFolder; +var + P: PItemIDList; + ParentFolder, Desktop: IShellFolder; +begin + if not Assigned(FShellFolder) then + begin + SHGetDesktopFolder(Desktop); + if PIDLMgr.IDCount(AbsolutePIDL) > 1 then + begin + P := PIDLMgr.StripLastID(PIDLMgr.CopyPIDL(AbsolutePIDL)); + Desktop.BindToObject(P, nil, IID_IShellFolder, Pointer(ParentFolder)); + PIDLMgr.FreePIDL(P) + end else + ParentFolder := Desktop; + + if Assigned(ParentFolder) then + begin + if IsDesktop or not Folder then + FShellFolder := ParentFolder + else begin + if not Succeeded(ParentFolder.BindToObject(FRelativePIDL, nil, IID_IShellFolder, Pointer(FShellFolder))) then + FShellFolder := nil + end + end else + FShellFolder := nil + end; + Result := FShellFolder +end; + +function TNamespace.GetShellFolder2: IShellFolder2; +begin + { This flag keeps us from constantly trying to get FShellFolder2 if it is not } + { supported by the namespace. } + if (nsShellFolder2Supported in States) and not Assigned(FShellFolder2) then + begin + if Assigned(ShellFolder) then + if ShellFolder.QueryInterface(IID_IShellFolder2, Pointer(FShellFolder2)) = E_NOINTERFACE + then begin + FShellFolder2 := nil; + Exclude(FStates, nsShellFolder2Supported) + end else + Include(FStates, nsShellFolder2Supported) + end; + Result := FShellFolder2; +end; + +function TNamespace.GetShellLink: TVirtualShellLink; +begin + if Link then + begin + if not Assigned(FShellLink) then + FShellLink := TVirtualShellLink.Create(nil); + FShellLink.ReadLink(NameParseAddress); + end; + Result := FShellLink +end; + +function TNamespace.GetSizeOfFile: WideString; +{ GETTER: Get the size of the file in string format} +begin + if not (scFileSize in ShellCache.ShellCacheFlags) then + begin + if not Folder then + begin + FShellCache.Data.FileSize := Format('%0.0n', [SizeOfFileInt64 + 0.0]); + // FShellCache.Data.FileSize := AddCommas(WideIntToStr(SizeOfFileInt64)); + Include(FShellCache.ShellCacheFlags, scFileSize); + end else + FShellCache.Data.FileSize := '' + end; + Result := ShellCache.Data.FileSize +end; + +function TNamespace.GetSizeOfFileDiskUsage: WideString; +var + Size, BytesPerCluster: Int64; + Drive: string; + DriveW: WideString; + SectorsPerCluster, + BytesPerSector, + FreeClusters, + TotalClusters, + i : DWORD; + ValidData: Boolean; +begin + if not Folder then + begin + Size := SizeOfFileInt64; + DriveW := WideExtractFileDrive(Self.NameForParsing) + '\'; + Drive := DriveW; + if WideDirectoryExists(Drive) then + begin + ValidData := GetDiskFreeSpaceMP(PWideChar( DriveW), SectorsPerCluster, BytesPerSector, FreeClusters, TotalClusters); + + if ValidData then + begin + BytesPerCluster := Int64(SectorsPerCluster) * Int64(BytesPerSector); + if BytesPerCluster <> 0 then + begin + { In the *rare* instance where the actual size is equal to multiple of } + { the sector size don't do the math :^) } + if Size mod BytesPerCluster <> 0 then + i := 1 + else + i := 0; + Result := Format('%0.0n', [Int64(BytesPerCluster) *(Size div Int64(BytesPerCluster) + i) + 0.0]) + end else + Result := SizeOfFile + end else + Result := SizeOfFile + end else + Result := SizeOfFile + end; +end; + +function TNamespace.GetSizeOfFileInt64: Int64; +var + H: THandle; + FindDataW: TWin32FindDataW; + FindDataA: TWin32FindDataA; +{ GETTER: Get the file size in bytes. } +// The PIDL does not store the file size for > 4G files, need to use FindFirstFile +begin + if not (scFileSizeInt64 in ShellCache.ShellCacheFlags) then + begin + if FileSystem then + begin + if IsUnicode then + begin + H := FindFirstFileW_MP(PWideChar(NameForParsing), FindDataW); + if H <> INVALID_HANDLE_VALUE then + begin + Windows.FindClose(H); + FShellCache.Data.FileSizeInt64 := FindDataW.nFileSizeLow; + if FShellCache.Data.FileSizeInt64 < 0 then + FShellCache.Data.FileSizeInt64 := FShellCache.Data.FileSizeInt64 + 4294967296; + if FindDataW.nFileSizeHigh > 0 then + FShellCache.Data.FileSizeInt64 := FShellCache.Data.FileSizeInt64 + (FindDataW.nFileSizeHigh * 4294967296) + end + end else + begin + H := FindFirstFileA(PChar(string(NameForParsing)), FindDataA); + if H <> INVALID_HANDLE_VALUE then + begin + Windows.FindClose(H); + FShellCache.Data.FileSizeInt64 := FindDataA.nFileSizeLow; + if FShellCache.Data.FileSizeInt64 < 0 then + FShellCache.Data.FileSizeInt64 := FShellCache.Data.FileSizeInt64 + 4294967296; + if FindDataA.nFileSizeHigh > 0 then + FShellCache.Data.FileSizeInt64 := FShellCache.Data.FileSizeInt64 + (FindDataA.nFileSizeHigh * 4294967296) + end + end + end; + Include(FShellCache.ShellCacheFlags, scFileSizeInt64) + end; + Result := FShellCache.Data.FileSizeInt64 +end; + +function TNamespace.GetSizeOfFileKB: WideString; +{ GETTER: Get the file size in Explorer KiloByte format. } +begin + if not (scFileSizeKB in ShellCache.ShellCacheFlags) then + begin + if not Folder then + begin + if SizeOfFileInt64 > 0 then + begin + FShellCache.Data.FileSizeKB := Format('%0.0n '+ 'KB', [SizeOfFileInt64/1024]); + if (FShellCache.Data.FileSizeKB = STR_ZERO_KB) then + FShellCache.Data.FileSizeKB := STR_ONE_KB; + end else + FShellCache.Data.FileSizeKB := STR_ONE_KB; + Include(FShellCache.ShellCacheFlags, scFileSizeKB) + end else + FShellCache.Data.FileSizeKB := ''; + end; + Result := FShellCache.Data.FileSizeKB; +end; + +function TNamespace.GetSparseFile: Boolean; +{ GETTER: Does the file attributes contain ReadOnly? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_SPARSE_FILE <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_SPARSE_FILE <> 0 + else + Result := False; + end +end; + +function TNamespace.GetShare: Boolean; +begin + Result := TestAttributesOf(SFGAO_SHARE, False); +end; + +procedure TNamespace.GetSHFileInfo; +{ Retrieves and caches the some information about the namespace with } +{ ShGetFileInfo. } +var + InfoA: TSHFileInfoA; + InfoW: TSHFileInfoW; +begin + if not Assigned(FSHGetFileInfoRec) then + begin + if IsUnicode then + begin + GetMem(FSHGetFileInfoRec, SizeOf(FSHGetFileInfoRec^)); + Initialize(FSHGetFileInfoRec^.FileType); + if Assigned(FSHGetFileInfoRec) then + begin + SHGetFileInfoW_MP(PWideChar(AbsolutePIDL), 0, InfoW, SizeOf(InfoW), SHGFI_TYPENAME or SHGFI_PIDL); + FSHGetFileInfoRec^.FileType := InfoW.szTypeName; + { NT only half-assed supports the SHGetFileInfo...only if the ext is } + { associated with a program. So we build it ourselves } + if FSHGetFileInfoRec^.FileType = '' then + FSHGetFileInfoRec^.FileType := WideUpperCase(WideExtractFileExt(NameForParsing)) + STR_FILE; + end + end else + begin + GetMem(FSHGetFileInfoRec, SizeOf(FSHGetFileInfoRec^)); + Initialize(FSHGetFileInfoRec^.FileType); + if Assigned(FSHGetFileInfoRec) then + begin + SHGetFileInfoA(PChar(AbsolutePIDL), 0, InfoA, SizeOf(InfoA), SHGFI_TYPENAME or SHGFI_PIDL); + FSHGetFileInfoRec^.FileType := InfoA.szTypeName; + { NT only half-assed supports the SHGetFileInfo...only if the ext is } + { associated with a program. So we build it ourselves } + if FSHGetFileInfoRec^.FileType = '' then + FSHGetFileInfoRec^.FileType := WideUpperCase(WideExtractFileExt(NameForParsing)) + STR_FILE; + end + end; + end; +end; + +function TNamespace.GetShortFileName: WideString; +{ GETTER: Get the 8:3 short file name (DOS) } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + begin + Result := FWin32FindDataW^.cAlternateFileName; + if Result = '' then + Result := WideUpperCase(FWin32FindDataW^.CFileName) + end else + Result := ''; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + begin + Result := FWin32FindDataA^.cAlternateFileName; + if Result = '' then + Result := WideUpperCase(FWin32FindDataA^.CFileName) + end else + Result := ''; + end +end; + +function TNamespace.GetSubFolders: Boolean; +{ Tests to see if a namespace is a true folder and has at least one } +{ sub-namespace within it. } +begin + Result := InternalSubItems(SHCONTF_FOLDERS or SHCONTF_INCLUDEHIDDEN) +end; + +function TNamespace.GetSubItems: Boolean; +{ Tests to see if a namespace is a true folder and has at least one } +{ sub-namespace within it. } +begin + Result := InternalSubItems(SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN) +end; + +function TNamespace.GetSystem: Boolean; +{ GETTER: Does the file attributes contain System? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_SYSTEM <> 0 + else + Result := False; + end else + begin +if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_SYSTEM <> 0 + else + Result := False; + end +end; + +function TNamespace.GetTemporary: Boolean; +{ GETTER: Does the file attributes contain Temporary? } +begin + if IsUnicode then + begin + if not Assigned(FWin32FindDataW) then + GetDataFromIDList; + if Assigned(FWin32FindDataW) and FileSystem then + Result := FWin32FindDataW^.dwFileAttributes and FILE_ATTRIBUTE_TEMPORARY <> 0 + else + Result := False; + end else + begin + if not Assigned(FWin32FindDataA) then + GetDataFromIDList; + if Assigned(FWin32FindDataA) and FileSystem then + Result := FWin32FindDataA^.dwFileAttributes and FILE_ATTRIBUTE_TEMPORARY <> 0 + else + Result := False; + end +end; + +function TNamespace.GetThreadedIconLoaded: Boolean; +begin + Result := nsThreadedIconLoaded in States +end; + +function TNamespace.GetThreadIconLoading: Boolean; +begin + Result := nsThreadedIconLoading in States +end; + +function TNamespace.GetShellIconOverlayInterface: IShellIconOverlay; +var + Found: Boolean; +begin + if (nsShellOverlaySupported in States) and not Assigned(FShellIconOverlayInterface) then + begin + Found := False; + if Assigned(ShellFolder) then + Found := ShellFolder.QueryInterface(IShellIconOverlay, + Pointer(FShellIconOverlayInterface)) <> E_NOINTERFACE; + if not Found then // Here we have to check again + begin + IF Assigned(ParentShellFolder) then + Found := ParentShellFolder.QueryInterface(IShellIconOverlay, + Pointer(FShellIconOverlayInterface)) <> E_NOINTERFACE; + end; + if not Found then + begin + Exclude(FStates, nsShellOverlaySupported); + FShellIconOverlayInterface := nil + end + end; + Result := FShellIconOverlayInterface +end; + +procedure TNamespace.HandleContextMenuMsg(Msg, wParam, lParam: Longint; var Result: LRESULT); +{ This is called when the ContextMenu calls back to its owner window to ask } +{ questions to implement the addition of icons to the menu. The messages sent } +{ to the owner window are: WM_INITMENUPOPUP, WM_DRAWITEM, or WM_MEASUREITEM. } +{ Which must be passed on to the ContextMenu2 interface to display items with } +{ icons. } +var + ContextMenu3: IContextMenu3; +begin + if Assigned(CurrentContextMenu2) then + if CurrentContextMenu2.QueryInterface(IContextMenu3, ContextMenu3) <> E_NOINTERFACE then + ContextMenu3.HandleMenuMsg2(Msg, wParam, lParam, Result) + else + CurrentContextMenu2.HandleMenuMsg(Msg, wParam, lParam); +end; + + +function TNamespace.InjectCustomSubMenu(Menu: HMenu; Caption: string; PopupMenu: TPopupMenu; + var SubMenu: HMenu): TMenuItemIDArray; +const + MENUMASK = MIIM_CHECKMARKS or MIIM_DATA or MIIM_ID or MIIM_STATE or MIIM_TYPE; + + +{ Searchs through the passed menu looking for an item identifer that is not } +{ currently being used. } + + function FindUniqueMenuID(AMenu: HMenu; StartID: cardinal): cardinal; + var + ItemCount, i: integer; + Duplicate, Done: Boolean; + begin + ItemCount := GetMenuItemCount(Menu); + Duplicate := True; + Result := StartID; + while Duplicate do + begin + i := 0; + Done := False; + while (i < ItemCount) and not Done do + begin + Done := GetMenuItemID(Menu, i) = Result; + Inc(i); + end; + Duplicate := Done; + if Duplicate then + Inc(Result) + end; + end; + +var + ItemCount, i: integer; + ItemInfo: TMenuItemInfo; + LastID: cardinal; +begin + Result := nil; + SubMenu := 0; + LastID := 0; + ItemCount := GetMenuItemCount(Menu); + SubMenu := CreatePopupMenu; + FillChar(ItemInfo, SizeOf(ItemInfo), #0); + ItemInfo.cbSize := SizeOf(ItemInfo); + ItemInfo.fmask := MIIM_TYPE; + ItemInfo.fType := MFT_SEPARATOR; + InsertMenuItem(Menu, ItemCount, True, ItemInfo); + + FillChar(ItemInfo, SizeOf(ItemInfo), #0); + ItemInfo.cbSize := SizeOf(ItemInfo); + ItemInfo.fmask := MIIM_SUBMENU or MIIM_TYPE; + ItemInfo.hSubMenu := SubMenu; + ItemInfo.dwTypeData := PChar(Caption); + // Insert the Root Menu Item + if InsertMenuItem(Menu, ItemCount + 1, True, ItemInfo) then + begin + SetLength(Result, PopupMenu.Items.Count); + + for i := PopupMenu.Items.Count - 1 downto 0 do + begin + FillChar(ItemInfo, SizeOf(ItemInfo), #0); + + ItemInfo.cbSize := SizeOf(ItemInfo); + + ItemInfo.fmask := MENUMASK; + + if PopupMenu.Items[i].Caption <> '-' then + ItemInfo.fType := MFT_STRING + else + ItemInfo.fType := MFT_SEPARATOR; + + + if PopupMenu.Items[i].RadioItem then + ItemInfo.fType := ItemInfo.fType or MFT_RADIOCHECK; + if PopupMenu.BiDiMode = bdRightToLeft then + ItemInfo.fType := ItemInfo.fType or MFT_RIGHTJUSTIFY; + if PopupMenu.Items[i].Break = mbBreak then + ItemInfo.fType := ItemInfo.fType or MFT_MENUBREAK; + if PopupMenu.Items[i].Break = mbBarBreak then + ItemInfo.fType := ItemInfo.fType or MFT_MENUBARBREAK; + + if PopupMenu.Items[i].Checked then + ItemInfo.fState := ItemInfo.fState or MFS_CHECKED + else + ItemInfo.fState := ItemInfo.fState or MFS_UNCHECKED; + if PopupMenu.Items[i].Default then + ItemInfo.fState := ItemInfo.fState or MFS_DEFAULT; + if PopupMenu.Items[i].Enabled then + ItemInfo.fState := ItemInfo.fState or MFS_ENABLED + else + ItemInfo.fState := ItemInfo.fState or MFS_DISABLED; + + ItemInfo.wID := FindUniqueMenuID(Menu, LastID + 1); + LastID := ItemInfo.wID; + Result[i] := ItemInfo.wID; + + // Store the TMenuItem so we can get it later + ItemInfo.dwItemData := Cardinal( PopupMenu.Items[i]); + + if not( ItemInfo.fType and MFT_SEPARATOR <> 0) then + ItemInfo.dwTypeData := PChar(PopupMenu.Items[i].Caption); + + InsertMenuItem(SubMenu, 0, True, ItemInfo) + end + end +end; + +function TNamespace.InternalGetContextMenuInterface(PIDLArray: TRelativePIDLArray): IContextMenu; +var + Found: Boolean; +begin + Found := False; + CurrentContextMenu2 := nil; // Clear since not sure if it is avaiable yet + if Assigned(PIDLArray) then + begin + if Assigned(ParentShellFolder) then + begin + Found := Succeeded(ParentShellFolder.GetUIObjectOf(ParentWnd, + Length(PIDLArray), PItemIDList( PIDLArray[0]), + IID_IContextMenu, nil, Pointer(Result))) + end; + if not Found and Assigned(ShellFolder) and (Length(PIDLArray) = 1) then + begin + Found := ShellFolder.CreateViewObject(ParentWnd, IID_IContextMenu, + Pointer(Result)) = NOERROR; + end; + if not Found then + Result := nil + end else + Result := nil +end; + +function TNamespace.InternalGetDataObjectInterface(PIDLArray: TRelativePIDLArray): IDataObject; +{ Creates an IDataObject using the passed relative PIDLs (actually siblings of } +{ the TNamespace) If a nil is passed for PIDLArray a single object based on } +{ TNamespace is created. } +var + Found: Boolean; +begin + if not Assigned(PIDLArray) then + begin + SetLength(PIDLArray, 1); + PIDLArray[0] := RelativePIDL + end; + Found := False; + if Assigned(PIDLArray) then + begin + if Assigned(ParentShellFolder) then + begin + Found := ParentShellFolder.GetUIObjectOf(ParentWnd, + Length(PIDLArray), PItemIDList( PIDLArray[0]), + IDataObject, nil, Pointer(Result)) = NOERROR; + end; + if not Found and Assigned(ShellFolder) and (Length(PIDLArray) = 1) then + begin + Found := ShellFolder.CreateViewObject(ParentWnd, IDataObject, + Pointer(Result)) = NOERROR; + end; + if not Found then + Result := nil + end else + Result := nil +end; + +function TNamespace.InternalShowContextMenu(Owner: TWinControl; + ContextMenuCmdCallback: TContextMenuCmdCallback; + ContextMenuShowCallback: TContextMenuShowCallback; + ContextMenuAfterCmdCallback: TContextMenuAfterCmdCallback; + PIDLArray: TRelativePIDLArray; Position: PPoint; CustomShellSubMenu: TPopupMenu; + CustomSubMenuCaption: WideString): Boolean; +// Displays the ContextMenu of the namespace. +const + MaxVerbLen = 128; +var + Menu: hMenu; + InvokeInfo: TCMInvokeCommandInfoEx; + MenuCmd: Cardinal; + x, y, i: integer; + OldErrorMode: integer; + VerbA: string; + VerbW: WideString; + GenericVerb: Pointer; + Handled, AllowShow: Boolean; + Flags: Longword; + ContextMenu: IContextMenu; + ContextMenu2: IContextMenu2; + ContextMenu3: IContextMenu3; + MenuIDs: TMenuItemIDArray; + ItemInfo: TMenuItemInfo; + SubMenu: HMenu; + OldMode: UINT; +begin + OldMode := SetErrorMode(SEM_FAILCRITICALERRORS); + try + MenuIDs := nil; + Result := False; + Assert(Assigned(Owner), 'To show a Context Menu using TNamespace you must pass a valid Owner TWinControl'); + if Assigned(Owner) then + begin + FOldWndProcForContextMenu := Owner.WindowProc; + try + // Hook the owner for the Window message for owner draw menus like + // Send To.. + Owner.WindowProc := WindowProcForContextMenu; + + if Assigned(PIDLArray) then + begin + ContextMenu := nil; + ContextMenu2 := nil; + ContextMenu3 := nil; + Result := False; + if Assigned(Position) then + begin + x := Position.x; + y := Position.y + end else + begin + x := Mouse.CursorPos.X; // Snag these fast. The mouse can move a fair amount + y := Mouse.CursorPos.Y; // before the popup menu is shown. + end; + FillChar(InvokeInfo, SizeOf(InvokeInfo), #0); + Menu := CreatePopupMenu; + OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX); + try + { The application must handle a rename, rename makes no sense for more than 1 item } + if Assigned(ContextMenuCmdCallback) and (Length(PIDLArray) = 1) then + Flags := CMF_CANRENAME or CMF_NORMAL or CMF_EXPLORE + else + Flags := CMF_NORMAL or CMF_EXPLORE; + + if GetKeyState(VK_SHIFT) and $8000 <> 0 then + Flags := Flags or CMF_EXTENDEDVERBS; + + if Assigned(PIDLArray) then + ContextMenu := InternalGetContextMenuInterface(PIDLArray) + else + ContextMenu := ContextMenuInterface; + + CurrentContextMenu := ContextMenu; + + CurrentContextMenu2 := nil; // not sure it is available yet + if Assigned(ContextMenu) then + begin + if ContextMenu.QueryInterface(IContextMenu3, Pointer(ContextMenu3)) = E_NOINTERFACE then + begin + if ContextMenu.QueryInterface(IID_IContextMenu2, Pointer(ContextMenu2)) <> E_NOINTERFACE then + CurrentContextMenu2 := ContextMenu2; + end else + CurrentContextMenu2 := ContextMenu3; + + if Assigned(ContextMenu3) then + ContextMenu3.QueryContextMenu(Menu, 0, 1, $7FFF, Flags) + else + if Assigned(ContextMenu2) then + ContextMenu2.QueryContextMenu(Menu, 0, 1, $7FFF, Flags) + else + if Assigned(ContextMenu) then + ContextMenu.QueryContextMenu(Menu, 0, 1, $7FFF, Flags); + + // Inject our custom menu item + if Assigned(CustomShellSubMenu) then + MenuIDs := InjectCustomSubMenu(Menu, CustomSubMenuCaption, CustomShellSubMenu, SubMenu); + + AllowShow := True; + if Assigned(ContextMenuShowCallback) then + ContextMenuShowCallback(Self, Menu, AllowShow); + + if AllowShow then + MenuCmd := Cardinal( TrackPopupMenuEx( + Menu, + TPM_LEFTALIGN or TPM_RETURNCMD or TPM_RIGHTBUTTON, + x, y, Owner.Handle, nil)) + else + MenuCmd := 0; + + if MenuCmd <> 0 then + begin + if IsUnicode then + begin + SetLength(VerbW, MaxVerbLen); + GenericVerb := @VerbW[1]; + Flags := GCS_VERBW + end else + begin + SetLength(VerbA, MaxVerbLen); + GenericVerb := @VerbA[1]; + Flags := GCS_VERBA + end; + if Assigned(ContextMenu3) then + Result := Succeeded(ContextMenu3.GetCommandString(MenuCmd-1, Flags, nil, GenericVerb, MaxVerbLen)) + else + if Assigned(ContextMenu2) then + Result := Succeeded(ContextMenu2.GetCommandString(MenuCmd-1, Flags, nil, GenericVerb, MaxVerbLen)) + else + if Assigned(ContextMenu) then + Result := Succeeded(ContextMenu.GetCommandString(MenuCmd-1, Flags, nil, GenericVerb, MaxVerbLen)); + + if IsUnicode then + SetLength(VerbW, lstrlenW(PWideChar( VerbW))) + else begin + SetLength(VerbA, StrLen(PChar( VerbA))); + VerbW := VerbA + end; + + if not Result then + VerbW := STR_UNKNOWNCOMMAN; + + Handled := False; + for i := 0 to Length(MenuIDs) - 1 do + begin + if MenuCmd = MenuIDs[i] then + begin + if SubMenu <> 0 then + begin + Handled := True; + FillChar(ItemInfo, SizeOf(ItemInfo), #0); + ItemInfo.cbSize := SizeOf(TMenuItemInfo); + ItemInfo.fMask := MIIM_DATA; + GetMenuItemInfo(SubMenu, i, True, ItemInfo); + if ItemInfo.dwItemData <> 0 then + TMenuItem(ItemInfo.dwItemData).Click + end + end + end; + + if not Handled then + if Assigned(ContextMenuCmdCallback) then + ContextMenuCmdCallBack(Self, VerbW, MenuCmd, Handled); + + if not Handled then + begin + FillChar(InvokeInfo, SizeOf(InvokeInfo), #0); + with InvokeInfo do + begin + { For some reason the lpVerbW won't work } + lpVerb := MakeIntResourceA(MenuCmd-1); + if IsUnicode then + begin + fMask := CMIC_MASK_UNICODE; + lpVerbW := MakeIntResourceW(MenuCmd-1) + end; + // Win95 get confused if size = TCMInvokeCommandInfoEx + if IsUnicode then + cbSize := SizeOf(TCMInvokeCommandInfoEx) + else + cbSize := SizeOf(TCMInvokeCommandInfo); + + hWnd := Owner.Handle; + nShow := SW_SHOWNORMAL; + end; + if Assigned(ContextMenu3) then + Result := Succeeded(ContextMenu3.InvokeCommand(InvokeInfo)) + else + if Assigned(ContextMenu2) then + Result := Succeeded(ContextMenu2.InvokeCommand(InvokeInfo)) + else + if Assigned(ContextMenu) then + Result := Succeeded(ContextMenu.InvokeCommand(InvokeInfo)); + + end + end; + if Assigned(ContextMenuAfterCmdCallback) then + ContextMenuAfterCmdCallback(Self, VerbW, MenuCmd, Result); + end; + finally + { Don't access any properties or field of the object. If the verb is } + { 'delete' the component using this class could have freed the instance } + { of the object through a ShellNotifyRegister or some other way. } + DestroyMenu(Menu); + SetErrorMode(OldErrorMode); + end + end + finally + Owner.WindowProc := FOldWndProcForContextMenu; + FOldWndProcForContextMenu := nil; + // Don't nil until after the hook is unset + CurrentContextMenu := nil; + CurrentContextMenu2 := nil; // not sure it is available yet + end + end + finally + SetErrorMode(OldMode) + end +end; + +function TNamespace.OkToBrowse(ShowExplorerMsg: Boolean): Boolean; +var + S: WideString; +begin + Result := True; + S := NameForParsing; + if ((Length(S) = 3) and (S[2] = ':') and (S[3] = '\')) then + Result := DiskInDrive(Char(S[1])); + if not Result and ShowExplorerMsg then + EnumerateFolderEx(ParentWnd, [foFolders, foNonFolders, foHidden], nil, nil) +end; + +function TNamespace.InternalSubItems(Flags: Longword): Boolean; +{ Tests to see if a namespace is a true folder and has at least one } +{ sub-namespace within it. } +var + Enum: IEnumIDList; + Fetched: Longword; + Item: PItemIDList; + OldError: DWORD; +begin + Result := False; + OldError := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX); + try + { The recycle bin enumerates slow if it is full. VT will InitNode for various } + { reasons eventhough the node is not expanded. We will always assume there is } + { is something in the bin. If not when it is clicked it will clear the "+" } + if IsRecycleBin then + Result := True + else + // if ILIsParent(HistoryFolder.AbsolutePIDL, AbsolutePIDL, False) then + // Result := True + // else + begin + if Folder and Assigned(ShellFolder) then + begin + Item := nil; + Enum := nil; + // Since this is just an internal test don't show any dialogs so send a 0 + if ShellFolder.EnumObjects(0, Flags, Enum) = NOERROR then + begin + // Vista Enum is nil every once in a while + if Assigned(Enum) then + begin + Result := Enum.Next(1, Item, Fetched) = NOERROR; + if Assigned(Item) then + PIDLMgr.FreePIDL(Item) + end + end + end + end + finally + SetErrorMode(OldError); + end +end; + +procedure TNamespace.InvalidateCache; +{ Forces the class to reload any cached data the next time it is retrieved. } +begin + FShellCache.Data.InFolderName := ''; + FShellCache.Data.NormalName := ''; + FShellCache.Data.ParsedName := ''; + FShellCache.Data.SmallIcon := -1; + FShellCache.Data.SmallOpenIcon := -1; + FShellCache.Data.OverlayIndex := -1; + FShellCache.Data.OverlayIconIndex := -1; + FShellCache.Data.CreationTime := ''; + FShellCache.Data.LastAccessTime := ''; + FShellCache.Data.LastWriteTime := ''; + FShellCache.Data.FileSize := ''; + FShellCache.Data.FileSizeKB := ''; + FShellCache.Data.FileType := ''; + FShellCache.Data.FileSizeInt64 := 0; + FShellCache.Data.SupportedColumns := 0; + FShellCache.Data.Attributes := []; + SetLength(FShellCache.Data.DetailsOfCache, 0); + FShellCache.ShellCacheFlags := []; + FreeAndNil(FExtractImage); + FreeAndNil(FShellLink); + InvalidateThumbImage +end; + +procedure TNamespace.InvalidateNamespace(RefreshIcon: Boolean = True); +var + Icon1, Icon2: integer; + Icon1Initialized, Icon2Initialized: Boolean; +begin + Icon1 := 0; + Icon2 := 0; + Icon1Initialized := False; + Icon2Initialized := False; + if not RefreshIcon then + begin + if scSmallIcon in FShellCache.ShellCacheFlags then + begin + Icon1Initialized := True; + Icon1 := FShellCache.Data.SmallIcon; + end; + if scSmallOpenIcon in FShellCache.ShellCacheFlags then + begin + Icon2Initialized := True; + Icon2 := FShellCache.Data.SmallOpenIcon; + end; + end else + begin + // Flush the thread state so the icon is reloaded by the thread + States := States - [nsThreadedIconLoading]; + States := States - [nsThreadedIconLoaded]; + end; + + InvalidateDetailsOfCache(True); + InvalidateCache; + if nsOwnsParent in States then + FreeAndNil(FParent); + FDropTargetInterface := nil; + FShellDetailsInterface := nil; + FShellIconOverlayInterface := nil; + FShellFolder := nil; + if Assigned(Parent) then + if Parent.IsDesktop then + PhysicalDesktopFolder.InvalidateNamespace; + if IsUnicode then + begin + if Assigned(FWin32FindDataW) then + FreeMem(FWin32FindDataW, SizeOf(TWin32FindDataW)); + FWin32FindDataW := nil; + end else + begin + if Assigned(FWin32FindDataA) then + FreeMem(FWin32FindDataA, SizeOf(TWin32FindDataA)); + FWin32FindDataA := nil; + end; + if Assigned(FSHGetFileInfoRec) then + begin + Finalize(FSHGetFileInfoRec^); + FreeMem(FSHGetFileInfoRec, SizeOf(TSHGetFileInfoRec)); + end; + FSHGetFileInfoRec := nil; + Include(FStates, nsShellDetailsSupported); // Be optomistic + Include(FStates, nsShellFolder2Supported); // Be optomistic + FQueryInfoInterface := nil; + FShellIconInterface := nil; + FCurrentContextMenu2 := nil; + + if not RefreshIcon then + begin + if Icon1Initialized then + begin + Include(FShellCache.ShellCacheFlags, scSmallIcon); + FShellCache.Data.SmallIcon := Icon1; + end; + if Icon2Initialized then + begin + Include(FShellCache.ShellCacheFlags, scSmallOpenIcon); + FShellCache.Data.SmallOpenIcon := Icon2; + end; + end; +end; + +procedure TNamespace.InvalidateRelativePIDL(FileObjects: TFileObjects); +var + Enum: IEnumIDList; + Flags: Longword; + Fetched: Longword; + Item: PItemIDList; + Done: Boolean; +begin + if Assigned(ParentShellFolder) then + begin + Flags := FileObjectsToFlags(FileObjects); + Done := False; + if ParentShellFolder.EnumObjects(ParentWnd, Flags, Enum) = NOERROR then + begin + // Vista Enum is nil every once in a while + if Assigned(Enum) then + begin + while (Enum.Next(1, Item, Fetched) = NOERROR) and not Done do + begin + if ComparePIDL(Item, False) = 0 then + begin + PIDLMgr.FreePIDL(FAbsolutePIDL); + FAbsolutePIDL := PIDLMgr.AppendPIDL(Parent.AbsolutePIDL, Item); + FRelativePIDL := PIDLMgr.GetPointerToLastID(FAbsolutePIDL); + InvalidateNamespace; + Done := True + end; + PIDLMgr.FreePIDL(Item) + end + end + end + end +end; + +function TNamespace.IsChildByNamespace(TestNamespace: TNamespace; + Immediate: Boolean): Boolean; +{ Returns True if the TestNamespace is a child of the namespace. Immediate } +{ forces function to be true only of the passed PIDL is the immidiate child } +{ of the namespace. } +begin + Result := Boolean( ILIsParent(FAbsolutePIDL, TestNamespace.FAbsolutePIDL, Immediate)); +end; + +function TNamespace.IsChildByPIDL(TestPIDL: PItemIDList; + Immediate: Boolean): Boolean; +{ Returns True if the TestPIDL is a child of the namespace. Immediate forces } +{ function to be true only of the passed PIDL is the immidiate child of the } +{ namespace. } +begin + Result := Boolean( ILIsParent(FAbsolutePIDL, TestPIDL, Immediate)); +end; + +function TNamespace.IsChildOfRemovableDrive: Boolean; +// Checks to see if the namespace is a child of a removable drive. If the drive +// is removed then ILIsParent fails because the drive is no longer valid so any +// PIDL walking routines will fail and the PIDL is orphaned +var + NS: TNamespace; + PIDL, NewPIDL: PItemIDList; + OldCB: Word; +begin + Result := False; + if PIDLMgr.IDCount(AbsolutePIDL) > 1 then + begin + PIDL := PIDLMgr.NextID(FAbsolutePIDL); + PIDL := PIDLMgr.NextID(PIDL); // Now we have the Drive + PIDL := PIDLMgr.NextID(PIDL); // Now we have the one past the Drive + OldCb := PIDL.mkid.cb; + PIDL.mkid.cb := 0; + NewPIDL := PIDLMgr.CopyPIDL(FAbsolutePIDL); + PIDL.mkid.cb := OldCB; + // NS is now a TNamespace to the Drive + NS := TNamespace.Create(NewPIDL, nil); + Result := NS.Removable; + NS.Free + end +end; + +function TNamespace.IsControlPanel: Boolean; +begin + if Assigned(ControlPanelFolder) then + Result := ILIsEqual(AbsolutePIDL, ControlPanelFolder.AbsolutePIDL) + else + Result := False +end; + +function TNamespace.IsControlPanelChildFolder: Boolean; +begin + if Assigned(ControlPanelFolder) then + Result := ILIsParent(ControlPanelFolder.AbsolutePIDL, AbsolutePIDL, True) + else + Result := False +end; + +function TNamespace.IsDesktop: Boolean; +begin + Result := PIDLMgr.IsDesktopFolder(AbsolutePIDL) +end; + +function TNamespace.IsMyComputer: Boolean; +begin + if Assigned(DrivesFolder) then + Result := ILIsEqual(DrivesFolder.AbsolutePIDL, AbsolutePIDL) + else + Result := False; +end; + +function TNamespace.IsNetworkNeighborhood: Boolean; +begin + if Assigned(NetworkNeighborHoodFolder) then + Result := ILIsEqual(NetworkNeighborHoodFolder.AbsolutePIDL, AbsolutePIDL) + else + Result := False; +end; + +function TNamespace.IsNetworkNeighborhoodChild: Boolean; +begin + if Assigned(NetworkNeighborHoodFolder) then + Result := ILIsParent(NetworkNeighborHoodFolder.AbsolutePIDL, AbsolutePIDL, False) + else + Result := False; +end; + +function TNamespace.IsParentByNamespace(TestNamespace: TNamespace; + Immediate: Boolean): Boolean; +{ Returns True if the TestNamespace is a parent of the namespace. Immediate } +{ forces function to be true only of the passed PIDL is the immidiate parent } +{ of the namespace. } +begin + Result := Boolean( ILIsParent(TestNamespace.FAbsolutePIDL, FAbsolutePIDL, Immediate)); +end; + +function TNamespace.IsParentByPIDL(TestPIDL: PItemIDList; + Immediate: Boolean): Boolean; +{ Returns True if the TestPIDL is a parent of the namespace. Immediate forces } +{ function to be true only of the passed PIDL is the immidiate parent of the } +{ namespace. } +begin + Result := Boolean( ILIsParent(TestPIDL, FAbsolutePIDL, Immediate)); +end; + +function TNamespace.IsRecycleBin: Boolean; +begin + { RecycleBin may not be avaiable if System Administrator has removed it in Win2k at least } + if Assigned(RecycleBinFolder) and not (nsRecycleBinChecked in States) then + begin + if ILIsEqual(AbsolutePIDL, RecycleBinFolder.AbsolutePIDL) then + Include(FStates, nsIsRecycleBin) + else + Exclude(FStates, nsIsRecycleBin); + Include(FStates, nsRecycleBinChecked); + end; + Result := nsIsRecycleBin in States; +end; + +function TNamespace.ParseDisplayName: PItemIDList; +begin + Result := ParseDisplayName(NameForParsing) +end; + +function TNamespace.ParseDisplayName(Path: WideString): PItemIDList; +var + chEaten: ULONG; + Attrib: ULONG; + Desktop: IShellFolder; +begin + Result := nil; + Attrib := 0; + SHGetDesktopFolder(Desktop); + if Assigned(Desktop) then + begin + if Desktop.ParseDisplayName(ParentWnd, nil, PWideChar( Path), + chEaten, Result, Attrib) <> NOERROR + then + Result := nil; + end +end; + +function TNamespace.Paste(NamespaceArray: TNamespaceArray; AsShortCut: Boolean = False): Boolean; +var + NSA: TNamespaceArray; + i: integer; +begin + Result := False; + if CanPasteToAll(NamespaceArray) then + begin + if IsDesktop then + begin + SetLength(NSA, Length(NamespaceArray)); + // Convert the virtual Desktop based TNamespaces to the Physical Desktop Folder based TNamespaces + for i := 0 to Length(NSA) - 1 do + NSA[i] := TNamespace.Create(PathToPIDL(NamespaceArray[i].NameForParsing), nil); + Result := PhysicalDesktopFolder.Paste(NSA, AsShortCut); + end else + begin + if VerifyPIDLRelationship(NamespaceArray, True) then + begin + if AsShortCut then + Result := ExecuteContextMenuVerb('pastelink', NamespaceToRelativePIDLArray(NamespaceArray)) + else + Result := ExecuteContextMenuVerb('paste', NamespaceToRelativePIDLArray(NamespaceArray)) + end else + begin + if AsShortCut then + ExecuteContextMenuVerbMultiPath('pastelink', NamespaceArray) + else + ExecuteContextMenuVerbMultiPath('paste', NamespaceArray) + end + end + end +end; + +procedure TNamespace.LoadCategoryInfo; +var + ColumnID: TSHColumnID; + CatGUID: TGUID; + Buffer: WideString; + i: Integer; + Done: Boolean; +begin + if (CatInfo.CategoryCount = 0) and Assigned(ShellFolder2) and Assigned(CategoryProviderInterface) then + begin + CatGUID := GUID_NULL; + FCatInfo.CategoryCount := DetailsSupportedColumns; + SetLength(FCatInfo.Categories, DetailsSupportedColumns); + SetLength(FCatInfo.CategoryNames, DetailsSupportedColumns); + SetLength(FCatInfo.CatGUID, DetailsSupportedColumns); + SetLength(FCatInfo.ColumnID, DetailsSupportedColumns); + SetLength(FCatInfo.CanCatatorize, DetailsSupportedColumns); + SetLength(Buffer, 256); + for i := 0 to DetailsSupportedColumns - 1 do + begin + FillChar(ColumnID, SizeOf(ColumnID), #0); + FillChar(PWideChar( Buffer)^, 256 * 2, #0); + CatGUID := GUID_NULL; + FCatInfo.Categories[i].Description := ''; + FCatInfo.Categories[i].Collapsed := False; + FCatInfo.Categories[i].Hidden := False; + FCatInfo.CategoryNames[i] := ''; + FCatInfo.ColumnID[i].pid := 0; + FCatInfo.ColumnID[i].fmtid := GUID_NULL; + FCatInfo.CatGUID[i] := GUID_NULL; + FCatInfo.CanCatatorize[i] := False; + FCatInfo.DefaultColumn := -1; + if Succeeded(ShellFolder2.MapColumnToSCID(i, ColumnID)) then + begin + CatInfo.ColumnID[i] := ColumnID; + if Succeeded(CategoryProviderInterface.CanCategorizeOnSCID(ColumnID)) then + begin + ColumnID := CatInfo.ColumnID[i]; + CatInfo.CanCatatorize[i] := True; + if Succeeded(CategoryProviderInterface.GetCategoryForSCID(ColumnID, CatGUID)) then + begin + ColumnID := CatInfo.ColumnID[i]; + CatInfo.CatGUID[i] := CatGUID; + if not IsEqualGUID(CatGUID, GUID_NULL) then + if Succeeded(CategoryProviderInterface.GetCategoryName(CatGUID, PWideChar(Buffer), 256)) then + begin + FCatInfo.CategoryNames[i] := Buffer; + SetLength(FCatInfo.CategoryNames[i], lstrlenW(PWideChar(FCatInfo.CategoryNames[i]))); + end + end + end + end + end; + CatGUID := GUID_NULL; + if Succeeded(CategoryProviderInterface.GetDefaultCategory(CatGUID, ColumnID)) then + begin + i := 0; + Done := False; + while (i < Length(CatInfo.ColumnID)) and not Done do + begin + if IsEqualGUID(ColumnID.fmtid, CatInfo.ColumnID[i].fmtid) and (ColumnID.pid = CatInfo.ColumnID[i].pid) then + begin + FCatInfo.DefaultColumn := i; + Done := True + end; + Inc(i) + end + end + end +end; + +procedure TNamespace.SetDetailByThread(ColumnIndex: Integer; Detail: WideString); +var + TempCache: PDetailsOfCacheRec; +begin + EnsureDetailCache; + if DetailsValidIndex(ColumnIndex) then + begin + TempCache := @ShellCache.Data.DetailsOfCache[ColumnIndex]; + TempCache.Caption := Detail; + Include(TempCache.Cached, docCaptionValid); + Include(TempCache.Cached, docThreadLoaded); + Exclude(TempCache.Cached, docThreadLoading); + end +end; + +procedure TNamespace.SetFreePIDLOnDestroy(const Value: Boolean); +begin + if Value then + Include(FStates, nsFreePIDLOnDestroy) + else + Exclude(FStates, nsFreePIDLOnDestroy) +end; + +procedure TNamespace.SetIconIndexChanged(const Value: Boolean); +// Sets or resets if the index changed. Currently the SetIconIndexByThread method sets +// this flag. It is not reset automaticlly it is up to the application to reset then +// when it has detected and used it. +begin + if Value then + Include(FStates, nsIconIndexChanged) + else + Exclude(FStates, nsIconIndexChanged); +end; + +procedure TNamespace.SetIconIndexByThread(IconIndex: Integer; ClearThreadLoading: Boolean); +begin + Include(FStates, nsThreadedIconLoaded); // Small Normal Icon is now Cached + FShellCache.Data.SmallIcon := IconIndex; + Include(FShellCache.ShellCacheFlags, scSmallIcon); + if ClearThreadLoading then + Exclude(FStates, nsThreadedIconLoading); + IconIndexChanged := True; +end; + +procedure TNamespace.SetImageByThread(Bitmap: TBitmap; + ClearThreadLoading: Boolean); +begin + Include(FStates, nsThreadedImageLoaded); + FImage := Bitmap; + if ClearThreadLoading then + Exclude(FStates, nsThreadedImageLoading); +end; + +function TNamespace.SetNameOf(NewName: WideString): Boolean; +const + ALL_FOLDERS = SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN; +var + P, NewPIDL, NewAbsPIDL: PItemIDList; + Oldcb: Word; + OldCursor: TCursor; +begin + Result := False; + if CanRename and Assigned(ParentShellFolder) then + begin + OldCursor := Screen.Cursor; + Screen.Cursor := crHourglass; + try + { The shell frees the PIDL so we need a copy } + P := PIDLMgr.CopyPIDL(FRelativePIDL); + NewPIDL := nil; + if Succeeded(ParentShellFolder.SetNameOf(ParentWnd, P, PWideChar(NewName), ALL_FOLDERS, NewPIDL)) then + begin + // Win98 will return success but never touch NewPIDL when trying to change name + // of dialup connection. Not sure how do it if this fails though?? + if Assigned(NewPIDL) then + begin + Result := True; + { Temporary shortening of AbsolutePIDL } + Oldcb := RelativePIDL.mkid.cb; + RelativePIDL.mkid.cb := 0; + NewAbsPIDL := PIDLMgr.AppendPIDL(AbsolutePIDL, NewPIDL); + RelativePIDL.mkid.cb := Oldcb; + PIDLMgr.FreePIDL(FAbsolutePIDL); // Remember Relative PIDL overlays AbsPIDL + FAbsolutePIDL := NewAbsPIDL; + FRelativePIDL := PIDLMgr.GetPointerToLastID(AbsolutePIDL); + end + end + finally + Screen.Cursor := OldCursor + end + end; +end; + +procedure TNamespace.SetThreadedDetailLoaded(ColumnIndex: Integer; Value: Boolean); +begin + EnsureDetailCache; + if DetailsValidIndex(ColumnIndex) then + Include(ShellCache.Data.DetailsOfCache[ColumnIndex].Cached, docThreadLoaded) +end; + +procedure TNamespace.SetThreadedDetailLoading(ColumnIndex: Integer; Value: Boolean); +begin + EnsureDetailCache; + if DetailsValidIndex(ColumnIndex) then + Include(ShellCache.Data.DetailsOfCache[ColumnIndex].Cached, docThreadLoading) +end; + +procedure TNamespace.SetThreadIconLoading(const Value: Boolean); +begin + if Value then + Include(FStates, nsThreadedIconLoading) + else + Exclude(FStates, nsThreadedIconLoading) +end; + +function TNamespace.GetThreadedImageLoaded: Boolean; +begin + Result := nsThreadedImageLoaded in States +end; + +function TNamespace.GetThreadedImageLoading: Boolean; +begin + Result := nsThreadedImageLoading in States +end; + +procedure TNamespace.SetThreadImageLoading(const Value: Boolean); +begin + if Value then + Include(FStates, nsThreadedImageLoading) + else + Exclude(FStates, nsThreadedImageLoading) +end; + +function TNamespace.ShellExecuteNamespace(WorkingDir, CmdLineArguments: WideString; + ExecuteFolder: Boolean = False; ExecuteFolderShortCut: Boolean = False; + RunInThread: Boolean = False): Boolean; +{ Attempts execute the object that the namespace is representing. WorkingDir } +{ is the directory that will be the current directory of the application that } +{ is being executed. If the directory does not exist the directory where the } +{ file being executed resides. CmdLineArguments are any switches or parameters } +{ that can be added to the file being executed. } +{ ExecuteFolder stops the call from being performed if the namespace is a folder} +{ Doing so usually opens an explorer window to Explore the folder. } +var + ShellExecuteInfoA: TShellExecuteInfoA; + ShellExecuteInfoW: TShellExecuteInfoW; + ShortWorkingDir, ShortCmdLine: string; + DoExecute: Boolean; + ShellLink: TVirtualShellLink; + ShellExecuteThread: TCommonShellExecuteThread; +begin + Result := False; + DoExecute := True; + + if not ExecuteFolder then + DoExecute := not Folder; + + if not ExecuteFolderShortCut and DoExecute then + begin + if Link then + begin + ShellLink := TVirtualShellLink.Create(nil); + try + ShellLink.ReadLink(NameParseAddress); + DoExecute := not WideDirectoryExists(ShellLink.TargetPath); + finally + ShellLink.Free + end + end + end; + + if DoExecute then + begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + begin + FillChar(ShellExecuteInfoW, SizeOf(TShellExecuteInfoW), #0); + if WideDirectoryExists(WorkingDir) then + ShellExecuteInfoW.lpDirectory := PWideChar(WorkingDir) + else // This should always be a file not a folder so this is ok + ShellExecuteInfoW.lpDirectory := PWideChar(WideExtractFileDir(NameParseAddress)); + ShellExecuteInfoW.cbSize := SizeOf(TShellExecuteInfoW); + ShellExecuteInfoW.fMask := SEE_MASK_INVOKEIDLIST or SEE_MASK_NOCLOSEPROCESS; + if RunInThread then + ShellExecuteInfoW.fMask := ShellExecuteInfoW.fMask or SEE_MASK_FLAG_DDEWAIT; + ShellExecuteInfoW.Wnd:= ParentWnd; + ShellExecuteInfoW.nShow := SW_SHOWNORMAL; + ShellExecuteInfoW.lpIDList:= AbsolutePIDL; + ShellExecuteInfoW.lpParameters := PWideChar(CmdLineArguments); + if RunInThread then + begin + ShellExecuteThread := TCommonShellExecuteThread.Create(True); + ShellExecuteThread.ShellExecuteInfoW.cbSize := ShellExecuteInfoW.cbSize; + ShellExecuteThread.ShellExecuteInfoW.fMask := ShellExecuteInfoW.fMask; + ShellExecuteThread.ShellExecuteInfoW.Wnd := ShellExecuteInfoW.Wnd; + ShellExecuteThread.ShellExecuteInfoW.nShow := ShellExecuteInfoW.nShow; + ShellExecuteThread.ShellExecuteInfoW.hInstApp := ShellExecuteInfoW.hInstApp; + ShellExecuteThread.ShellExecuteInfoW.hkeyClass := ShellExecuteInfoW.hkeyClass; + ShellExecuteThread.ShellExecuteInfoW.dwHotKey := ShellExecuteInfoW.dwHotKey; + ShellExecuteThread.ShellExecuteInfoW.hIcon := ShellExecuteInfoW.hIcon; + ShellExecuteThread.ShellExecuteInfoW.hProcess := ShellExecuteInfoW.hProcess; + ShellExecuteThread.lpDirectory := ShellExecuteInfoW.lpDirectory; + ShellExecuteThread.lpParameters := ShellExecuteInfoW.lpParameters; + ShellExecuteThread.PIDL := PIDLMgr.CopyPIDL(ShellExecuteInfoW.lpIDList); + ShellExecuteThread.Resume; + Result := True; + end else + Result := ShellExecuteExW_MP(@ShellExecuteInfoW); + end else + begin + FillChar(ShellExecuteInfoA, SizeOf(TShellExecuteInfo), #0); + if WideDirectoryExists(WorkingDir) then + ShortWorkingDir := WorkingDir + else + ShortWorkingDir := ExtractFileDir(NameParseAddress); + ShellExecuteInfoA.lpDirectory := PChar(ShortWorkingDir); + ShellExecuteInfoA.cbSize := SizeOf(TShellExecuteInfo); + ShellExecuteInfoA.fMask := SEE_MASK_INVOKEIDLIST or SEE_MASK_NOCLOSEPROCESS; + if RunInThread then + ShellExecuteInfoA.fMask := ShellExecuteInfoA.fMask or SEE_MASK_FLAG_DDEWAIT; + ShellExecuteInfoA.Wnd:= ParentWnd; + ShellExecuteInfoA.nShow := SW_SHOWNORMAL; + ShellExecuteInfoA.lpIDList:= AbsolutePIDL; + ShortCmdLine := CmdLineArguments; + ShellExecuteInfoA.lpParameters := PChar(ShortCmdLine); + if RunInThread then + begin + ShellExecuteThread := TCommonShellExecuteThread.Create(True); + ShellExecuteThread.ShellExecuteInfoA.cbSize := ShellExecuteInfoA.cbSize; + ShellExecuteThread.ShellExecuteInfoA.fMask := ShellExecuteInfoA.fMask; + ShellExecuteThread.ShellExecuteInfoA.Wnd := ShellExecuteInfoA.Wnd; + ShellExecuteThread.ShellExecuteInfoA.nShow := ShellExecuteInfoA.nShow; + ShellExecuteThread.ShellExecuteInfoA.hInstApp := ShellExecuteInfoA.hInstApp; + ShellExecuteThread.ShellExecuteInfoA.hkeyClass := ShellExecuteInfoA.hkeyClass; + ShellExecuteThread.ShellExecuteInfoA.dwHotKey := ShellExecuteInfoA.dwHotKey; + ShellExecuteThread.ShellExecuteInfoA.hIcon := ShellExecuteInfoA.hIcon; + ShellExecuteThread.ShellExecuteInfoA.hProcess := ShellExecuteInfoA.hProcess; + ShellExecuteThread.lpDirectory := ShellExecuteInfoA.lpDirectory; + ShellExecuteThread.lpParameters := ShellExecuteInfoA.lpParameters; + ShellExecuteThread.PIDL := PIDLMgr.CopyPIDL(ShellExecuteInfoA.lpIDList); + ShellExecuteThread.Resume; + Result := True; + end else + Result := ShellExecuteEx(@ShellExecuteInfoA); + end + end +end; + +function TNamespace.ShowContextMenu(Owner: TWinControl; + ContextMenuCmdCallback: TContextMenuCmdCallback; + ContextMenuShowCallback: TContextMenuShowCallback; + ContextMenuAfterCmdCallback: TContextMenuAfterCmdCallback; + Position: PPoint = nil; + CustomShellSubMenu: TPopupMenu = nil; + CustomSubMenuCaption: WideString = ''): Boolean; +{ Displays the ContextMenu of the namespace. } +var + PIDLArray: TRelativePIDLArray; +begin + SetLength(PIDLArray, 1); + PIDLArray[0] := RelativePIDL; + Result := InternalShowContextMenu(Owner, ContextMenuCmdCallback, ContextMenuShowCallback, + ContextMenuAfterCmdCallback, PIDLArray, Position, CustomShellSubMenu, CustomSubMenuCaption); +end; + +function TNamespace.ShowContextMenuMulti(Owner: TWinControl; + ContextMenuCmdCallback: TContextMenuCmdCallback; + ContextMenuShowCallback: TContextMenuShowCallback; + ContextMenuAfterCmdCallback: TContextMenuAfterCmdCallback; + NamespaceArray: TNamespaceArray; Position: PPoint = nil; + CustomShellSubMenu: TPopupMenu = nil; CustomSubMenuCaption: WideString = ''): Boolean; +begin + Result := False; + if VerifyPIDLRelationship(NamespaceArray, True) then + begin + Result := InternalShowContextMenu(Owner, ContextMenuCmdCallBack, + ContextMenuShowCallback, ContextMenuAfterCmdCallback, + NamespaceToRelativePIDLArray(NamespaceArray), Position, CustomShellSubMenu, + CustomSubMenuCaption) + end else + begin + if Length(NamespaceArray) > 0 then + ShowContextMenuMultiPath(Owner, NamespaceArray[0], NamespaceArray, Position) + end +end; + +function TNamespace.ShowContextMenuMultiPath(Owner: TWinControl; + Focused: TNamespace; Namespaces: TNamespaceArray; Position: PPoint = nil): Boolean; +var + Menu: TCommonShellMultiParentContextMenu; + Temp: TWinControl; +begin + Menu := TCommonShellMultiParentContextMenu.Create(nil); + Temp := TWinControl.CreateParented(GetDesktopWindow); + try + Temp.Width := 0; + Temp.Height := 0; + Temp.Visible := True; + Result := Menu.ShowContextMenu(Owner, Focused, Namespaces, Position); + Temp.Visible := False; + finally + Temp.Free; + Menu.Free + end +end; + +procedure TNamespace.ShowPropertySheet; +var + NamespaceArray: TNamespaceArray; +begin + if HasPropSheet then + begin + SetLength(NamespaceArray, 1); + NamespaceArray[0] := Self; + if VerifyPIDLRelationship(NamespaceArray, True) then + ExecuteContextMenuVerb('properties', NamespaceToRelativePIDLArray(NamespaceArray)) + else + ExecuteContextMenuVerbMultiPath('properties', NamespaceArray) + end +end; + +procedure TNamespace.ShowPropertySheetMulti(NamespaceArray: TNamespaceArray; + UseSHMultiFileProperties: Boolean = True; ForceNonMultiPath: Boolean = False); +var + IDO: IDataObject; +begin + if CanShowPropertiesOfAll(NamespaceArray) then + begin + // Call SHMultiFileProperties_MP to show the property sheet when the + // APIDLArray items are from different folders. + // Minimum OS: Win2k + if not ForceNonMultiPath and (UseSHMultiFileProperties and Assigned(SHMultiFileProperties_MP)) then + begin + CreateFullyQualifiedShellDataObject(NamespaceToAbsolutePIDLArray(NamespaceArray), IDO); + if Assigned(IDO) then + SHMultiFileProperties_MP(IDO, 0); + IDO._Release // I did this in DefMenuCreateCallback, I don't know why I have to but I do + end else + begin + if VerifyPIDLRelationship(NamespaceArray, True) or ForceNonMultiPath then + ExecuteContextMenuVerb('properties', NamespaceToRelativePIDLArray(NamespaceArray)) + else + ExecuteContextMenuVerbMultiPath('properties', NamespaceArray) + end + end +end; + +function TNamespace.TestAttributesOf(Flags: Longword; FlushCache: Boolean; SoftFlush: Boolean = False): Boolean; +// Pass any of the flags for IShellFolder.GetAttributesOf to see if they exist +// for the Folder. FlushCache forces the shell to reload the information on the +// namespace. Useful to handle the bug where the shell caches the icon for a +// CD drive and never changes it. Flushing it will force it to reload the Index +// Note this is dangerous with 3rd party namespaces. M$ suggests this method for +// their namespaces but at least Hummingbird network namespace crashes with this +// they apparently don't check for 0 PIDL's +// Soft Flush add the SFGAO_VALIDATE flag to get the fresh info +var + x: Longword; +begin + if Assigned(ParentShellFolder) then + begin + x := Flags; + if FlushCache then + begin + x := x or SFGAO_VALIDATE; + ParentShellFolder.GetAttributesOf(0, FRelativePIDL, x); + end else + if SoftFlush then + begin + x := x or SFGAO_VALIDATE; + ParentShellFolder.GetAttributesOf(1, FRelativePIDL, x) + end else + ParentShellFolder.GetAttributesOf(1, FRelativePIDL, x); + Result := Flags and x = Flags; + end else + Result := False; +end; + +function TNamespace.VerifyPIDLRelationship(NamespaceArray: TNamespaceArray; + Silent: Boolean = False): Boolean; +var + i: integer; +begin + Result := True; + i := 0; + while (i < Length(NamespaceArray)) and Result do + begin + { TNamespace is based off using the parent to access the data so it is } + { correct to do the test for childPIDLs relative from the parent. } + if IsDesktop and (Length(NamespaceArray) = 1) then + begin + Result := (PIDLMgr.IDCount(NamespaceArray[i].AbsolutePIDL) = 1) or (NamespaceArray[0].IsDesktop) + end else + begin + if Assigned(Parent) then + Result := ILIsParent(Parent.AbsolutePIDL, NamespaceArray[i].AbsolutePIDL, True) + else begin + if (Length(NamespaceArray) = 1) and NamespaceArray[0].IsDesktop then + Result := True + else + Result := False; + end + end; + Inc(i) + end; + if not Silent and (not Result and not IsDesktop) then + WideShowMessage(ParentWnd, STR_ERROR, STR_ERR_BAD_PIDL_RELATIONSHIP); +end; + +procedure TNamespace.WindowProcForContextMenu(var Message: TMessage); +begin + if Assigned(FOldWndProcForContextMenu) then + FOldWndProcForContextMenu(Message); // Call the OldWindProc of the ContextMenu owner + case Message.Msg of + WM_DRAWITEM, WM_INITMENUPOPUP, WM_MEASUREITEM, WM_MENUCHAR: + HandleContextMenuMsg(Message.Msg, Message.WParam, Message.LParam, Message.Result); + end; +end; + +function TNamespace.GetCategoryProviderInterface: ICategoryProvider; +begin + if not Assigned(FCategoryProviderInterface) and Folder and Assigned(ShellFolder) then + begin + if not Succeeded(ShellFolder.CreateViewObject(ParentWnd, IID_ICategoryProvider, Pointer(FCategoryProviderInterface))) then + FCategoryProviderInterface := nil + end; + Result := FCategoryProviderInterface +end; + +function TNamespace.CreateCategory(GUID: TGUID): ICategorizer; +begin + Result := nil; + if Assigned(CategoryProviderInterface) then + begin + if not Succeeded(CategoryProviderInterface.CreateCategory(GUID, IID_ICategorizer, Result)) then + Result := nil; + end +end; + +function TNamespace.EnumFuncDummy(MessageWnd: HWnd; APIDL: PItemIDList; AParent: TNamespace; Data: Pointer; var Terminate: Boolean): Boolean; +begin + PIDLMgr.FreePIDL(APIDL); + Result := True; +end; + +function TNamespace.GetBrowserFrameOptionsInterface: IBrowserFrameOptions; +var + Found: Boolean; +begin + if not Assigned(FBrowserFrameOptionsInterface) then + begin + Found := False; + if Assigned(Parent) then + begin + Found := Succeeded(Parent.ShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, IBrowserFrameOptions, nil, Pointer(FBrowserFrameOptionsInterface))); + if not Found and Folder then + begin + Found := Succeeded(ShellFolder.CreateViewObject(ParentWnd, IBrowserFrameOptions, Pointer(FBrowserFrameOptionsInterface))); + if not Found then + Found := Succeeded(ShellFolder.QueryInterface(IBrowserFrameOptions, Pointer(FBrowserFrameOptionsInterface))) + end + end; + if not Found then + FBrowserFrameOptionsInterface := nil + end; + Result := FBrowserFrameOptionsInterface +end; + +function TNamespace.GetQueryAssociationsInterface: IQueryAssociations; +var + Found: Boolean; +begin + if not Assigned(FQueryAssociationsInterface) then + begin + Found := False; + if Assigned(Parent) then + begin + Found := Succeeded(Parent.ShellFolder.GetUIObjectOf(ParentWnd, 1, FRelativePIDL, IQueryAssociations, nil, Pointer(FQueryAssociationsInterface))); + if not Found and Folder then + begin + Found := Succeeded(ShellFolder.CreateViewObject(ParentWnd, IQueryAssociations, Pointer(FQueryAssociationsInterface))); + if not Found then + Found := Succeeded(ShellFolder.QueryInterface(IQueryAssociations, Pointer(FQueryAssociationsInterface))) + end + end; + if not Found then + FQueryAssociationsInterface := nil + end; + Result := FQueryAssociationsInterface +end; + +function TNamespace.GetValid: Boolean; +var + rgfInOut: UINT; +begin + // Does not work on floppy drives and such + // password proctected network drives also return false regardless if they have + // not been logged into yet so return true for those too. + if (not Removable and (Assigned(ParentShellFolder))) and not PotentialMappedDrive(Self) then + begin + rgfInOut := SFGAO_VALIDATE; + // This returns false on a password protected network folder + Result := ParentShellFolder.GetAttributesOf(1, FRelativePIDL, rgfInOut) = NOERROR + end else + Result := True +end; + +procedure TNamespace.ReplacePIDL(NewPIDL: PItemIDList; AParent: TNamespace); +begin + InvalidateNamespace(True); + PIDLMgr.FreeAndNilPIDL(FAbsolutePIDL); + if Assigned(Parent) then + FAbsolutePIDL := PIDLMgr.AppendPIDL(AParent.FAbsolutePIDL, PIDLMgr.CopyPIDL(NewPIDL)) + else + FAbsolutePIDL := PIDLMgr.CopyPIDL(NewPIDL); + FRelativePIDL := PIDLMgr.GetPointerToLastID(FAbsolutePIDL); +end; + +{ TExtractImage } + +constructor TExtractImage.Create; +begin + FWidth := 200; + FHeight := 200; + FColorDepth := 32; + FFlags := IEIFLAG_SCREEN; +end; + +function TExtractImage.GetImage: TBitmap; + + function BitsToPixelFormat(Bits: Windows.TBITMAP): TPixelFormat; + begin + case Bits.bmBitsPixel of + 32: Result := pf32Bit; + 24: Result := pf24Bit; + 16: Result := pf16Bit; + 15: Result := pf15Bit; + 8: Result := pf8Bit; + 4: Result := pf4Bit; + 1: Result := pf1Bit; + else + Result := pfDevice + end + end; + +var + Bits: HBITMAP; +begin + Bits := 0; + Result := nil; + if Assigned(ExtractImageInterface) then + if Succeeded(ExtractImageInterface.Extract(Bits)) then + begin + // Can't just assign the bitmap handle to the canvas because the bitmap + // may not be a DIB. If not then if the bitmap is written to as stream then + // TBitmap will be created as a DIB when it is read back from the stream and + // it will be displayed upside down + Result := TBitmap.Create; + Result.PixelFormat := pf32Bit; //BitsToPixelFormat(BitInfo); + Result.Transparent := True; + Result.Handle := Bits; + end +end; + +function TExtractImage.GetExtractImageInterface2: IExtractImage2; +var + Found: Boolean; +begin + if not Assigned(FExtractImage2Interface) then + begin + Found := False; + if Assigned(ExtractImageInterface) then + Found := ExtractImageInterface.QueryInterface(IID_IExtractImage2, + Pointer(FExtractImage2Interface)) <> E_NOINTERFACE; + if not Found then + FExtractImage2Interface := nil + end; + Result := FExtractImage2Interface +end; + + +function TExtractImage.GetExtractImageInterface: IExtractImage; +var + Found: Boolean; +begin + if not Assigned(FExtractImageInterface) then + begin + Found := False; + if Assigned(Owner.ParentShellFolder) then + begin + Found := Owner.ParentShellFolder.GetUIObjectOf(0, 1, Owner.FRelativePIDL, + IExtractImage, nil, Pointer(FExtractImageInterface)) = NOERROR; + end; + if not Found and Assigned(Owner.ShellFolder) then + begin + Found := Owner.ShellFolder.CreateViewObject(0, IExtractImage, + Pointer(FExtractImageInterface)) = NOERROR; + end; + if not Found then + FExtractImageInterface := nil + end; + Result := FExtractImageInterface + +end; + +function TExtractImage.GetImagePath: WideString; +var + Size: TSize; + Buffer: PWideChar; +begin + if Assigned(ExtractImageInterface) then + begin + GetMem(Buffer, MAX_PATH * 4); + try + try + Size.cx := Width; + Size.cy := Height; + if ExtractImageInterface.GetLocation(Buffer, MAX_PATH, FPriority, Size, + ColorDepth, FFlags) = NOERROR then + begin + Result := Buffer; + PathExtracted := True + end else + Result := ''; + finally + FreeMem(Buffer); + end except + Result := '' + end + end; +end; + + + +{ ----------------------------------------------------------------------------- } +{ Encapsulation of IShellLink } +{ ----------------------------------------------------------------------------- } + +{ TVirtualShellLink } + +destructor TVirtualShellLink.Destroy; +begin + FreeTargetIDList; + inherited; +end; + +procedure TVirtualShellLink.FreeTargetIDList; +var + Malloc: IMalloc; + PIDL: PItemIDList; +begin + if Assigned(TargetIDList) then + begin + PIDL := TargetIDLIst; + TargetIDList := nil; + SHGetMalloc(Malloc); + Malloc.Free(PIDL); + end; +end; + +function TVirtualShellLink.GetShellLinkAInterface: IShellLink; +begin + if not Assigned(FShellLinkA) then + begin + if not Succeeded(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, + IShellLinkA, FShellLinkA)) + then + FShellLinkA := nil; + end; + Result := FShellLinkA +end; + +function TVirtualShellLink.GetShellLinkWInterface: IShellLinkW; +begin + if not Assigned(FShellLinkW) then + begin + if not Succeeded(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, + IShellLinkW, FShellLinkW)) + then + FShellLinkW := nil + end; + Result := FShellLinkW +end; + +function TVirtualShellLink.ReadLink(LinkFileName: WideString): Boolean; +const + BUFFERSIZE = 1024; +var + Success: Boolean; + S: string; + PersistFile: IPersistFile; + pwHotKey: Word; + Cmd: integer; + FindData: WIN32_FIND_DATA; + FindDataW: WIN32_FIND_DATAW; +begin + Result := False; + Success := False; + if Assigned(ShellLinkWInterface) then + begin + if CommonSupports(ShellLinkWInterface, IPersistFile, PersistFile) then + begin + FFileName := LinkFileName; + Success := Succeeded(PersistFile.Load(PWideChar(FileName), STGM_READWRITE)); + if Success then + begin + Result := True; + + SetLength(FTargetPath, BUFFERSIZE); + Success := Succeeded(ShellLinkWInterface.GetPath(PWideChar( FTargetPath), MAX_PATH, FindDataW, SLGP_UNCPRIORITY)); + if Success then + SetLength(FTargetPath, lstrlenW(PWideChar( FTargetPath))); + + SetLength(FArguments, BUFFERSIZE); + Success := Succeeded(ShellLinkWInterface.GetArguments(PWideChar( FArguments), BUFFERSIZE)); + if Success then + SetLength(FArguments, lstrlenW(PWideChar( FArguments))); + + SetLength(FDescription, BUFFERSIZE); + Success := Succeeded(ShellLinkWInterface.GetDescription(PWideChar( FDescription), BUFFERSIZE)); + if Success then + SetLength(FDescription, lstrlenW(PWideChar( FDescription))); + + SetLength(FWorkingDirectory, BUFFERSIZE); + Success := Succeeded(ShellLinkWInterface.GetWorkingDirectory(PWideChar( FWorkingDirectory), BUFFERSIZE)); + if Success then + SetLength(FWorkingDirectory, lstrlenW(PWideChar( FWorkingDirectory))); + + SetLength(FIconLocation, BUFFERSIZE); + Success := Succeeded(ShellLinkWInterface.GetIconLocation(PWideChar( FIconLocation), BUFFERSIZE, FIconIndex)); + if Success then + SetLength(FIconLocation, lstrlenW(PWideChar( FIconLocation))); + + FreeTargetIDList; + ShellLinkWInterface.GetIDList(FTargetIDList); + + Success := Succeeded(ShellLinkWInterface.GetHotKey(pwHotKey)); + if Success then + begin + FHotKey := LoByte(pwHotKey); + FHotKeyModifiers := []; + if HiByte(pwHotKey) and HOTKEYF_ALT <> 0 then Include(FHotKeyModifiers, hkmAlt); + if HiByte(pwHotKey) and HOTKEYF_CONTROL <> 0 then Include(FHotKeyModifiers, hkmControl); + if HiByte(pwHotKey) and HOTKEYF_EXT <> 0 then Include(FHotKeyModifiers, hkmExtendedKey); + if HiByte(pwHotKey) and HOTKEYF_SHIFT <> 0 then Include(FHotKeyModifiers, hkmShift); + end; + + Success := Succeeded(ShellLinkWInterface.GetShowCmd(Cmd)); + if Success then + case Cmd of + SW_HIDE: ShowCmd := swHide; + SW_MAXIMIZE: ShowCmd := swMaximize; + SW_MINIMIZE: ShowCmd := swMinimize; + SW_RESTORE: ShowCmd := swRestore; + SW_SHOW: ShowCmd := swShow; + SW_SHOWDEFAULT: ShowCmd := swShowDefault; + SW_SHOWMINIMIZED: ShowCmd := swShowMinimized; + SW_SHOWMINNOACTIVE: ShowCmd := swShowMinNoActive; + SW_SHOWNA : ShowCmd := swShowNA; + SW_SHOWNOACTIVATE : ShowCmd := swShowNoActive; + SW_SHOWNORMAL: ShowCmd := swShowNormal; + end; + // Why was that here? Removed 11.12.02 + // PersistFile.Save(PWideChar(FileName), True) + end else + FFileName := '' + end + end; + if not Success and Assigned(ShellLinkAInterface) then + begin + if CommonSupports(ShellLinkAInterface, IPersistFile, PersistFile) then + begin + FFileName := LinkFileName; + Success := Succeeded(PersistFile.Load(PWideChar(FileName), STGM_READWRITE)); + if Success then + begin + Result := True; + + SetLength(S, BUFFERSIZE); + Success := Succeeded(ShellLinkAInterface.GetPath(PChar( S), MAX_PATH, FindData, SLGP_UNCPRIORITY)); + if Success then + begin + SetLength(S, lstrlen(PChar( S))); + FTargetPath := S + end; + + SetLength(S, BUFFERSIZE); + Success := Succeeded(ShellLinkAInterface.GetArguments(PChar( S), BUFFERSIZE)); + if Success then + begin + SetLength(S, lstrlen(PChar( S))); + FArguments := S + end; + + SetLength(S, BUFFERSIZE); + Success := Succeeded(ShellLinkAInterface.GetDescription(PChar( S), BUFFERSIZE)); + if Success then + begin + SetLength(S, lstrlen(PChar( S))); + FDescription := S + end; + + SetLength(S, BUFFERSIZE); + Success := Succeeded(ShellLinkAInterface.GetWorkingDirectory(PChar( S), BUFFERSIZE)); + if Success then + begin + SetLength(S, lstrlen(PChar( S))); + FWorkingDirectory := S + end; + + SetLength(S, BUFFERSIZE); + Success := Succeeded(ShellLinkAInterface.GetIconLocation(PChar( S), BUFFERSIZE, FIconIndex)); + if Success then + begin + SetLength(S, lstrlen(PChar( S))); + FIconLocation := S + end; + + FreeTargetIDList; + ShellLinkAInterface.GetIDList(FTargetIDList); + + Success := Succeeded(ShellLinkAInterface.GetHotKey(pwHotKey)); + if Success then + begin + FHotKey := LoByte(pwHotKey); + FHotKeyModifiers := []; + if HiByte(pwHotKey) and HOTKEYF_ALT <> 0 then Include(FHotKeyModifiers, hkmAlt); + if HiByte(pwHotKey) and HOTKEYF_CONTROL <> 0 then Include(FHotKeyModifiers, hkmControl); + if HiByte(pwHotKey) and HOTKEYF_EXT <> 0 then Include(FHotKeyModifiers, hkmExtendedKey); + if HiByte(pwHotKey) and HOTKEYF_SHIFT <> 0 then Include(FHotKeyModifiers, hkmShift); + end; + + Success := Succeeded(ShellLinkAInterface.GetShowCmd(Cmd)); + if Success then + case Cmd of + SW_HIDE: ShowCmd := swHide; + SW_MAXIMIZE: ShowCmd := swMaximize; + SW_MINIMIZE: ShowCmd := swMinimize; + SW_RESTORE: ShowCmd := swRestore; + SW_SHOW: ShowCmd := swShow; + SW_SHOWDEFAULT: ShowCmd := swShowDefault; + SW_SHOWMINIMIZED: ShowCmd := swShowMinimized; + SW_SHOWMINNOACTIVE: ShowCmd := swShowMinNoActive; + SW_SHOWNA : ShowCmd := swShowNA; + SW_SHOWNOACTIVATE : ShowCmd := swShowNoActive; + SW_SHOWNORMAL: ShowCmd := swShowNormal; + end; + + PersistFile.Save(PWideChar(FileName), True) + end else + FFileName := ''; + end + end +end; + +function TVirtualShellLink.WriteLink(LinkFileName: WideString): Boolean; +var + S: string; + PersistFile: IPersistFile; + pwHotKey, pwHotKeyHi: Word; + KeyModifier: THotKeyModifiers; + Cmd: integer; +begin + Result := False; + if (TargetPath = '') and not Assigned(TargetIDList) and not SilentWrite then + WideShowMessage(Application.Handle, STR_NOTARGETDEFINED, STR_ERROR) + else begin + if Assigned(ShellLinkWInterface) then + begin + if CommonSupports(ShellLinkWInterface, IPersistFile, PersistFile) then + begin + FFileName := LinkFileName; + ShellLinkWInterface.SetPath(PWideChar( FTargetPath)); + ShellLinkWInterface.SetArguments(PWideChar( FArguments)); + ShellLinkWInterface.SetDescription(PWideChar( FDescription)); + ShellLinkWInterface.SetPath(PWideChar( FTargetPath)); + ShellLinkWInterface.SetWorkingDirectory(PWideChar( FWorkingDirectory)); + ShellLinkWInterface.SetIconLocation(PWideChar( FIconLocation), FIconIndex); + if Assigned(FTargetIDList) then + ShellLinkWInterface.SetIDList(FTargetIDList); + + pwHotKey := HotKey; + pwHotKeyHi := 0; + KeyModifier := HotKeyModifiers; + if hkmAlt in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_ALT; + if hkmControl in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_CONTROL; + if hkmExtendedKey in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_EXT; + if hkmShift in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_SHIFT; + + pwHotKeyHi := pwHotKeyHi shl 8; // Make lower 8 bits the upper 8 bits + pwHotKeyHi := pwHotKeyHi and $FF00; // Make sure lower 8 bits clear + pwHotKey := pwHotKey or pwHotKeyHi; + ShellLinkWInterface.SetHotkey(pwHotKey); + + case ShowCmd of + swHide: Cmd := SW_HIDE; + swMaximize: Cmd := SW_MAXIMIZE; + swMinimize: Cmd := SW_MINIMIZE; + swRestore: Cmd := SW_RESTORE; + swShow: Cmd := SW_SHOW; + swShowDefault: Cmd := SW_SHOWDEFAULT; + swShowMinimized: Cmd := SW_SHOWMINIMIZED; + swShowMinNoActive: Cmd := SW_SHOWMINNOACTIVE; + swShowNA: Cmd := SW_SHOWNA; + swShowNoActive: Cmd := SW_SHOWNOACTIVATE; + swShowNormal: Cmd := SW_SHOWNORMAL; + else + Cmd := SW_SHOWNORMAL + end; + ShellLinkWInterface.SetShowCmd(Cmd); + + Result := Succeeded(PersistFile.Save(PWideChar(FileName), True)) + end; + end; + if not Result and Assigned(ShellLinkAInterface) then + begin + if CommonSupports(ShellLinkAInterface, IPersistFile, PersistFile) then + begin + FFileName := LinkFileName; + S := FTargetPath; + ShellLinkAInterface.SetPath(PChar( S)); + S := FArguments; + ShellLinkAInterface.SetArguments(PChar(S)); + S := FDescription; + ShellLinkAInterface.SetDescription(PChar( S)); + S := FTargetPath; + ShellLinkAInterface.SetPath(PChar( S)); + S := FWorkingDirectory; + ShellLinkAInterface.SetWorkingDirectory(PChar( S)); + S := FIconLocation; + ShellLinkAInterface.SetIconLocation(PChar( S), FIconIndex); + + if Assigned(FTargetIDList) then + ShellLinkAInterface.SetIDList(FTargetIDList); + + pwHotKey := HotKey; + pwHotKeyHi := 0; + KeyModifier := HotKeyModifiers; + if hkmAlt in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_ALT; + if hkmControl in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_CONTROL; + if hkmExtendedKey in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_EXT; + if hkmShift in KeyModifier then pwHotKeyHi := pwHotKeyHi or HOTKEYF_SHIFT; + + pwHotKeyHi := pwHotKeyHi shl 8; // Make lower 8 bits the upper 8 bits + pwHotKeyHi := pwHotKeyHi and $FF00; // Make sure lower 8 bits clear + pwHotKey := pwHotKey or pwHotKeyHi; + ShellLinkAInterface.SetHotkey(pwHotKey); + + case ShowCmd of + swHide: Cmd := SW_HIDE; + swMaximize: Cmd := SW_MAXIMIZE; + swMinimize: Cmd := SW_MINIMIZE; + swRestore: Cmd := SW_RESTORE; + swShow: Cmd := SW_SHOW; + swShowDefault: Cmd := SW_SHOWDEFAULT; + swShowMinimized: Cmd := SW_SHOWMINIMIZED; + swShowMinNoActive: Cmd := SW_SHOWMINNOACTIVE; + swShowNA: Cmd := SW_SHOWNA; + swShowNoActive: Cmd := SW_SHOWNOACTIVATE; + swShowNormal: Cmd := SW_SHOWNORMAL; + else + Cmd := SW_SHOWNORMAL + end; + ShellLinkAInterface.SetShowCmd(Cmd); + + Result := Succeeded(PersistFile.Save(PWideChar(FileName), True)) + end + end + end +end; + +{ ----------------------------------------------------------------------------- } +{ TList that implements basic streaming } +{ ----------------------------------------------------------------------------- } + +{ TStreamableList } + +constructor TStreamableList.Create; +begin + FStreamVersion := STREAM_VERSION_DEFAULT +end; + +procedure TStreamableList.LoadFromFile(FileName: WideString; Version: integer = 0; + ReadVerFromStream: Boolean = False); +var + {$IFDEF TNTSUPPORT} + FileStream: TTntFileStream; + {$ELSE} + FileStream: TFileStream; + {$ENDIF} +begin + FileStream := nil; + try + {$IFDEF TNTSUPPORT} + FileStream := TTntFileStream.Create(FileName, fmOpenRead or fmShareExclusive); + {$ELSE} + FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive); + {$ENDIF} + LoadFromStream(FileStream); + finally + FileStream.Free + end; +end; + +procedure TStreamableList.LoadFromStream(S: TStream; Version: integer; + ReadVerFromStream: Boolean); +begin + Clear; + if ReadVerFromStream then + S.ReadBuffer(FStreamVersion, Sizeof(FStreamVersion)) + else + FStreamVersion := Version; +end; + +procedure TStreamableList.SaveToFile(FileName: WideString; Version: integer = 0; + ReadVerFromStream: Boolean = False); +var + {$IFDEF TNTSUPPORT} + FileStream: TTntFileStream; + {$ELSE} + FileStream: TFileStream; + {$ENDIF} + +begin + FileStream := nil; + try + {$IFDEF TNTSUPPORT} + FileStream := TTntFileStream.Create(FileName, fmCreate or fmShareExclusive); + {$ELSE} + FileStream := TFileStream.Create(FileName, fmCreate or fmShareExclusive); + {$ENDIF} + SaveToStream(FileStream); + finally + FileStream.Free + end; +end; + +procedure TStreamableList.SaveToStream(S: TStream; Version: integer; + WriteVerToStream: Boolean); +begin + if WriteVerToStream then + S.WriteBuffer(Version, Sizeof(Version)); + FStreamVersion := Version; +end; + + +{ ----------------------------------------------------------------------------- } +{ TClass that implements basic streaming } +{ ----------------------------------------------------------------------------- } + +{ TStreamableClass } + +constructor TStreamableClass.Create; +begin + FStreamVersion := STREAM_VERSION_DEFAULT +end; + +procedure TStreamableClass.LoadFromFile(FileName: WideString; Version: integer = 0; ReadVerFromStream: Boolean = False); +var + {$IFDEF TNTSUPPORT} + FileStream: TTntFileStream; + {$ELSE} + FileStream: TFileStream; + {$ENDIF} +begin + FileStream := nil; + try + {$IFDEF TNTSUPPORT} + FileStream := TTntFileStream.Create(FileName, fmOpenRead or fmShareExclusive); + {$ELSE} + FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive); + {$ENDIF} + LoadFromStream(FileStream, Version, ReadVerFromStream); + finally + FileStream.Free + end; +end; + +procedure TStreamableClass.LoadFromStream(S: TStream; Version: integer; + ReadVerFromStream: Boolean); +begin + if ReadVerFromStream then + S.ReadBuffer(FStreamVersion, Sizeof(FStreamVersion)) + else + FStreamVersion := Version; +end; + +procedure TStreamableClass.SaveToFile(FileName: WideString; Version: integer = 0; ReadVerFromStream: Boolean = False); +var + {$IFDEF TNTSUPPORT} + FileStream: TTntFileStream; + {$ELSE} + FileStream: TFileStream; + {$ENDIF} +begin + FileStream := nil; + try + {$IFDEF TNTSUPPORT} + FileStream := TTntFileStream.Create(FileName, fmCreate or fmShareExclusive); + {$ELSE} + FileStream := TFileStream.Create(FileName, fmCreate or fmShareExclusive); + {$ENDIF} + SaveToStream(FileStream, Version, ReadVerFromStream); + finally + FileStream.Free + end; +end; + +procedure TStreamableClass.SaveToStream(S: TStream; Version: integer; + WriteVerToStream: Boolean); +begin + if WriteVerToStream then + S.WriteBuffer(Version, Sizeof(Version)); + FStreamVersion := Version; +end; + + +{ ----------------------------------------------------------------------------- } +{ Class that frees it self when the reference count goes to 0. Like a com } +{ object but the compiler does not inc/dec automaticlly } +{ ----------------------------------------------------------------------------- } + +{ TReferenceCounted } + +procedure TReferenceCounted.AddRef; +begin + InterlockedIncrement(FRefCount) +end; + +procedure TReferenceCounted.Release; +begin + InterlockedDecrement (FRefCount); + if FRefCount <= 0 then + Free; +end; + + +{ ----------------------------------------------------------------------------- } +{ TList that frees it self when the reference count goes to 0. Like a com } +{ object but the compiler does not inc/dec automaticlly } +{ ----------------------------------------------------------------------------- } + +{ TReferenceCountedList } + +procedure TReferenceCountedList.AddRef; +begin + InterlockedIncrement(FRefCount) +end; + +procedure TReferenceCountedList.Release; +begin + InterlockedDecrement (FRefCount); + if FRefCount <= 0 then + Free; +end; + +{ TShellSortHelper } + +function TShellSortHelper.CompareIDSort(SortColumn: integer; NS1, + NS2: TNamespace): Integer; +begin + if Assigned(NS1.ParentShellFolder) then + begin + Result := NS2.ComparePIDL(NS1.RelativePIDL, False, SortColumn); + { If we are not sorting the Name column then do a sub-sort on the name if } + { the items are equal. } + if (SortColumn > 0) and (Result = 0) then + Result := WideCompareText(NS1.NameInFolder, NS2.NameInFolder) + end else + Result := 0; +end; + +function TShellSortHelper.DiscriminateFolders(NS1, + NS2: TNamespace): Integer; +begin + Result := 0; + if NS1.Folder xor NS2.Folder then + begin + if NS1.Folder and not NS2.Folder then + Result := -1 + else + if not NS1.Folder and NS2.Folder then + Result := 1 + end +end; + +function TShellSortHelper.SortFileSize(NS1, NS2: TNamespace): Integer; +begin + Result := DiscriminateFolders(NS1, NS2); + if Result = 0 then + begin + if NS1.SizeOfFileInt64 > NS2.SizeOfFileInt64 then + Result := 1 + else + if NS1.SizeOfFileInt64 < NS2.SizeOfFileInt64 then + Result := -1 + else + Result := CompareIDSort(0, NS1, NS2) + end +end; + +function TShellSortHelper.SortFileTime(FT1, FT2: TFileTime; NS1, + NS2: TNamespace): Integer; +begin + Result := DiscriminateFolders(NS1, NS2); + if Result = 0 then + begin + Result := CompareFileTime(FT1, FT2); + if Result = 0 then + Result := CompareIDSort(0, NS1, NS2) + end +end; + +function TShellSortHelper.SortString(S1, S2: WideString; NS1, + NS2: TNamespace): Integer; +begin + Result := DiscriminateFolders(NS1, NS2); + if Result = 0 then + begin + Result := WideCompareText(S1, S2); + if Result = 0 then + Result := CompareIDSort(0, NS1, NS2) + end +end; + +function TShellSortHelper.SortType(NS1, NS2: TNamespace): Integer; +begin + if FileSort = fsFileType then + Result := SortString(NS1.FileType, NS2.FileType, NS1, NS2) + else begin + { Must be fsFileExtension } + Result := DiscriminateFolders(NS1, NS2); + if Result = 0 then + begin + if NS1.FileSystem and NS2.FileSystem then + begin + Result := SortString(ExtractFileExt(NS1.NameParseAddress), ExtractFileExt(NS2.NameParseAddress), NS1, NS2); + if Result = 0 then + CompareIDSort(0, NS1, NS2); // Secondary sort + end; + end + end +end; + +{$IFNDEF COMPILER_5_UP} +{ TObjectList } + +function TObjectList.Add(AObject: TObject): Integer; +begin + Result := inherited Add(AObject); +end; + +constructor TObjectList.Create; +begin + inherited Create; + FOwnsObjects := True; +end; + +constructor TObjectList.Create(AOwnsObjects: Boolean); +begin + inherited Create; + FOwnsObjects := AOwnsObjects; +end; + +function TObjectList.FindInstanceOf(AClass: TClass; AExact: Boolean; + AStartAt: Integer): Integer; +var + I: Integer; +begin + Result := -1; + for I := AStartAt to Count - 1 do + if (AExact and + (Items[I].ClassType = AClass)) or + (not AExact and + Items[I].InheritsFrom(AClass)) then + begin + Result := I; + break; + end; +end; + +function TObjectList.First: TObject; +begin + Result := TObject(inherited First); +end; + +function TObjectList.GetItem(Index: Integer): TObject; +begin + Result := inherited Items[Index]; +end; + +function TObjectList.IndexOf(AObject: TObject): Integer; +begin + Result := inherited IndexOf(AObject); +end; + +procedure TObjectList.Insert(Index: Integer; AObject: TObject); +begin + inherited Insert(Index, AObject); +end; + +function TObjectList.Last: TObject; +begin + Result := TObject(inherited Last); +end; + +function TObjectList.Remove(AObject: TObject): Integer; +begin + Result := inherited Remove(AObject); +end; + +procedure TObjectList.SetItem(Index: Integer; AObject: TObject); +begin + inherited Items[Index] := AObject; +end; +{$ENDIF} + +{ TVirtualNamespaceList } + +function TVirtualNamespaceList.Add(ANamespace: TNamespace): Integer; +begin + Result := inherited Add(ANamespace); +end; + +procedure TVirtualNamespaceList.FillArray(var NamespaceArray: TNamespaceArray); +var + I: Integer; +begin + SetLength(NamespaceArray, Count); + for I := 0 to Count - 1 do + NamespaceArray[0] := Items[I]; +end; + +function TVirtualNamespaceList.GetItems(Index: Integer): TNamespace; +begin + Result := TNamespace(inherited Items[Index]); +end; + +function TVirtualNamespaceList.IndexOf(ANamespace: TNamespace): Integer; +begin + Result := inherited IndexOf(ANamespace); +end; + +procedure TVirtualNamespaceList.Insert(Index: Integer; ANamespace: TNamespace); +begin + inherited Insert(Index, ANamespace); +end; + +procedure TVirtualNamespaceList.SetItems(Index: Integer; ANamespace: TNamespace); +begin + inherited Items[Index] := ANamespace; +end; + +{ TCommonShellContextMenu } +constructor TCommonShellContextMenu.Create(AOwner: TComponent); +begin + inherited; + {$IFDEF TNTSUPPORT} + KeyStrings := TTntStringList.Create; + {$ELSE} + KeyStrings := TStringList.Create; + {$ENDIF} + MenuMap := TMenuItemMap.Create; + KeyStrings.Duplicates := dupIgnore; + KeyStrings.Sorted := True; + Stub := CreateStub(Self, @TCommonShellContextMenu.DefMenuCreateCallback); + FRenameMenuItem := True; + FPasteMenuItem := True; +end; + +destructor TCommonShellContextMenu.Destroy; +begin + DisposeStub(Stub); + FreeAndNil(FKeyStrings); + inherited Destroy; +end; + +function TCommonShellContextMenu.BindToObject(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvOut{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; +begin + Result := ActiveFolder.BindToObject(pidl, pbcReserved, riid, ppvOut); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('BindToObject - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.BindToStorage(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvObj{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; +begin + Result := ActiveFolder.BindToStorage(pidl, pbcReserved, riid, ppvObj); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('BindToStorage - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.CompareIDs(lParam: LPARAM; pidl1, pidl2: PItemIDList): HResult; +begin + Result := ActiveFolder.CompareIDs(lParam, pidl1, pidl2); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('CompareIDs - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.CreateViewObject(hwndOwner: HWND; const riid: TIID; out ppvOut{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; +begin + Result := ActiveFolder.CreateViewObject(hwndOwner, riid, ppvOut); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('CreateViewObject - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.DefMenuCreateCallback(const psf: IShellfolder; wnd: HWND; const pdtObj: IDataObject; uMsg: UINT; WParm: WParam; lParm: LParam): HResult; +var + DoDefault: Boolean; + IDO: IDataObject; + QCMInfo: PQCMINFO; + DFMICS: PDFMICS; + MapCount, i: Integer; + MergeOffset: UINT; + {$IFDEF TNTSUPPORT} + MenuItem: TTntMenuItem; + {$ELSE} + MenuItem: TMenuItem; + {$ENDIF} +begin + Result := E_NOTIMPL; + DoDefault := True; + case uMsg of + DFM_MERGECONTEXTMENU: + begin + if cmeShellDefault in Extensions then + Result := S_OK + else + Result := S_FALSE; + QCMInfo := PQCMINFO( lParm); + // This seems to be broken. The items added "normally" (using idCmdFirst as is) + // don't get registered and send a 0 when selected. DFM_MERGECONTEXTMENUTOP works + // but the return in DFM_INVOKECOMMAND is the OFFSET of the idCmdFirst passed + // so we have to make sure that the offset does not overlap the idCmdFirst we + // use here so choose a large enough number. If we increase idCmdFirst from + // its passed value it seems to make it work and in DFM_INVOKECOMMAND we get that + // the (Value - 1) rather then then Offset. + MapCount := MenuMap.Count; + MergeOffset := QCMInfo^.idCmdFirst; + QCMInfo^.idCmdFirst := QCMInfo^.idCmdFirst + 200; // Allow up to 200 items to be added in DFM_MERGECONTEXTMENUTOP; + DoMenuMerge(QCMInfo^.Menu, QCMInfo^.IndexMenu, QCMInfo^.idCmdFirst, QCMInfo^.idCmdLast, CFM_FLAGSToShellContextMenuFlags(WParm)); + // Fix the MenuIDs to be commonly offset once all merging is done + if MenuMap.Count > MapCount then + for i := MapCount to MenuMap.Count - 1 do + MenuMap[i].MenuID := MenuMap[i].MenuID - MergeOffset; + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_MERGECONTEXTMENU'); + {$ENDIF} + end; + DFM_INVOKECOMMAND: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND'); + {$ENDIF} + case Cardinal( wParm) of + DFM_CMD_DELETE: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_DELETE'); + {$ENDIF} + DoDelete(psf, pdtObj, DoDefault); + end; + DFM_CMD_CUT: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_CUT'); + {$ENDIF} + DoCut(psf, pdtObj, DoDefault) + end; + DFM_CMD_COPY: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_COPY'); + {$ENDIF} + DoCopy(psf, pdtObj, DoDefault) + end; + DFM_CMD_CREATESHORTCUT: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_CREATESHORTCUT'); + {$ENDIF} + DoCreateShortCut(psf, pdtObj, DoDefault) + end; + DFM_CMD_PROPERTIES: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_PROPERTIES'); + {$ENDIF} + DoProperties(psf, pdtObj, DoDefault); + if DoDefault and not IsWinVistaOrUp then + begin + if Assigned(SHMultiFileProperties_MP) then + begin + CreateFullyQualifiedShellDataObject(NamespaceToAbsolutePIDLArray(LocalNamespaces), IDO); + if Assigned(IDO) then + SHMultiFileProperties_MP(IDO, 0); + // Not sure why I have to do this but I have to in order for the counting to work right.. + IDO._Release; + end else + DesktopFolder.ShowPropertySheetMulti(LocalNamespaces, False, True); + DoDefault := False + end + end; + DFM_CMD_NEWFOLDER: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_NEWFOLDER'); + {$ENDIF} + DoNewFolder(psf, pdtObj, DoDefault) + end; + DFM_CMD_PASTE: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_PASTE'); + {$ENDIF} + DoPaste(psf, pdtObj, DoDefault) + end; + DFM_CMD_VIEWLIST: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_VIEWLIST'); + {$ENDIF} + end; + DFM_CMD_VIEWDETAILS: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_VIEWDETAILS'); + {$ENDIF} + end; + DFM_CMD_PASTELINK: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_PASTELINK'); + {$ENDIF} + DoPasteLink(psf, pdtObj, DoDefault) + end; + DFM_CMD_PASTESPECIAL: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_PasteShortCut'); + {$ENDIF} + DoPasteShortCut(psf, pdtObj, DoDefault) + end; + DFM_CMD_MODALPROP: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMAND: DFM_CMD_MODALPROP'); + {$ENDIF} + end; + end; + if DoDefault then + Result := S_FALSE + else + Result := S_OK + end; + DFM_CREATE: + begin + DoShow; + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_CREATE'); + {$ENDIF} + end; + DFM_DESTROY: + begin + DoHide; + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_DESTROY'); + {$ENDIF} + end; + DFM_GETHELPTEXTA: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_GETHELPTEXTA'); + {$ENDIF} + end; + DFM_MEASUREITEM: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_MEASUREITEM'); + {$ENDIF} + end; + DFM_DRAWITEM: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_DRAWITEM'); + {$ENDIF} + end; + DFM_INITMENUPOPUP: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INITMENUPOPUP'); + {$ENDIF} + end; + DFM_VALIDATECMD: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_VALIDATECMD'); + {$ENDIF} + end; + DFM_MERGECONTEXTMENU_TOP: + begin + if cmeShellDefault in Extensions then + Result := S_OK + else + Result := S_FALSE; + QCMInfo := PQCMINFO( lParm); + // This seems to be broken. The items added "normally" (using idCmdFirst as is) + // don't get registered and send a 0 when selected. DFM_MERGECONTEXTMENUTOP works + // but the return in DFM_INVOKECOMMAND is the OFFSET of the idCmdFirst passed + // so we have to make sure that the offset does not overlap the idCmdFirst we + // use here so choose a large enough number. If we increase idCmdFirst from + // its passed value it seems to make it work and in DFM_INVOKECOMMAND we get that + // the (Value - 1) rather then then Offset. + MapCount := MenuMap.Count; + MergeOffset := QCMInfo^.idCmdFirst; + QCMInfo^.idCmdFirst := QCMInfo^.idCmdFirst + 600; // Allow up to 200 items to be added in DFM_MERGECONTEXTMENU; + DoMenuMergeTop(QCMInfo^.Menu, QCMInfo^.IndexMenu, QCMInfo^.idCmdFirst, QCMInfo^.idCmdLast, CFM_FLAGSToShellContextMenuFlags(WParm)); + DoMenuMergeBottom(QCMInfo^.Menu, GetMenuItemCount(QCMInfo^.Menu), QCMInfo^.idCmdFirst, QCMInfo^.idCmdLast, CFM_FLAGSToShellContextMenuFlags(WParm)); + // Fix the MenuIDs to be commonly offset once all merging is done + if MenuMap.Count > MapCount then + for i := MapCount to MenuMap.Count - 1 do + MenuMap[i].MenuID := MenuMap[i].MenuID - MergeOffset; + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_MERGECONTEXTMENU_TOP'); + {$ENDIF} + end; + DFM_MERGECONTEXTMENU_BOTTOM: + begin + // Only works in XP and up. Faked in DFM_MERGECONTEXTMENU_TOP + if cmeShellDefault in Extensions then + Result := S_OK + else + Result := S_FALSE; + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_MERGECONTEXTMENU_BOTTOM'); + {$ENDIF} + end; + DFM_GETHELPTEXTW: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_GETHELPTEXTW'); + {$ENDIF} + end; + DFM_INVOKECOMMANDEX: + begin + DFMICS := PDFMICS( lparm); + if FindCommandId(wParm, MenuItem) then + DoInvokeCommand(MenuItem, DFMICS^.pici); + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_INVOKECOMMANDEX'); + {$ENDIF} + end; + DFM_MAPCOMMANDNAME: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_MAPCOMMANDNAME'); + {$ENDIF} + end; + DFM_GETDEFSTATICID: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_GETDEFSTATICID'); + {$ENDIF} + end; + DFM_GETVERBW: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_GETVERBW'); + {$ENDIF} + end; + DFM_GETVERBA: + begin + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('DFM_GETVERBA'); + {$ENDIF} + end; + else + {$IFDEF GXDEBUG_DEFMENUCREATE_CALLBACK} + SendDebug('Undefined: ' + IntToStr(UMsg)); + {$ENDIF} + end; +end; + +function TCommonShellContextMenu.DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; +begin + Result := S_OK; + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('DragEnter - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.DragLeave: HResult; +begin + Result := S_OK; + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('DragLeave - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; +begin + Result := E_NOTIMPL; + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('DragOver - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; +begin + Result := E_NOTIMPL; + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('Drop - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.DuplicateKey(Key: HKEY): HKEY; +begin + if Assigned(RegOpenKeyExW_MP) then + RegOpenKeyExW_MP(Key, '', 0, MAXIMUM_ALLOWED, Result) + else + RegOpenKeyExA(Key, '', 0, MAXIMUM_ALLOWED, Result) +end; + +function TCommonShellContextMenu.EnumObjects(hwndOwner: HWND; grfFlags: DWORD; out EnumIDList: IEnumIDList): HResult; +begin + Result := ActiveFolder.EnumObjects(hwndOwner, grfFlags, EnumIDList); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('EnumObjects - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +{$IFDEF TNTSUPPORT} +function TCommonShellContextMenu.FindCommandId(CmdID: UINT; var MenuItem: TTntMenuItem): Boolean; +var + i: Integer; +begin + Result := False; + MenuItem := nil; + i := 0; + while not Result and (i < MenuMap.Count) do + begin + Result := MenuMap[i].MenuID = CmdID; + if Result then + MenuItem := MenuMap[i].Item + else + Inc(i) + end +end; +{$ELSE} +function TCommonShellContextMenu.FindCommandId(CmdID: UINT; var MenuItem: TMenuItem): Boolean; +var + i: Integer; +begin + Result := False; + MenuItem := nil; + i := 0; + while not Result and (i < MenuMap.Count) do + begin + Result := MenuMap[i].MenuID = CmdID; + if Result then + MenuItem := MenuMap[i].Item + else + Inc(i) + end +end; +{$ENDIF} + +function TCommonShellContextMenu.GetAttributesOf(cidl: UINT; var apidl: PItemIDList; var rgfInOut: UINT): HResult; +var + RequestedFlags: UINT; +begin + RequestedFlags := rgfInOut; + Result := ActiveFolder.GetAttributesOf(cidl, apidl, rgfInOut); + if RequestedFlags and SFGAO_CANCOPY <> 0 then + if CopyValidated then + rgfInOut := rgfInOut or SFGAO_CANCOPY; + if RequestedFlags and SFGAO_CANMOVE <> 0 then + if CutValidated then + rgfInOut := rgfInOut or SFGAO_CANMOVE; + +end; + +function TCommonShellContextMenu.GetDisplayNameOf(pidl: PItemIDList; uFlags: DWORD; var lpName: TStrRet): HResult; +begin + Result := ActiveFolder.GetDisplayNameOf(pidl, uFlags, lpName); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('GetDisplayNameOf - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.GetUIObjectOf(hwndOwner: HWND; cidl: UINT; var apidl: PItemIDList; const riid: TIID; prgfInOut: Pointer; out ppvOut{$IFNDEF COMPILER_5_UP}: Pointer{$ENDIF}): HResult; +var + DataObject: IDataObject; +begin + Result := E_NOINTERFACE; + if FromDesktop then + begin + // Need to create a correctly defined fully qualified HDROP in the DataObject + if IsEqualGUID(riid, IDataObject) then + begin + DataObject := nil; + CreateFullyQualifiedShellDataObject(ActivePIDLs, DataObject); + IDataObject( ppvOut) := DataObject; + UIObjectOfDataObject := IDataObject( ppvOut); + if Assigned(IDataObject( ppvOut)) then + Result := S_OK + end else + if IsEqualGUID(riid, IDropTarget) then + begin + if PasteMenuItem then + begin + // Need to support this to get a Paste menu item + IDropTarget( ppvOut) := Self; + UIObjectOfDropTarget := IDropTarget( ppvOut); + Result := S_OK + end + end else + Result := ActiveFolder.GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, ppvOut) + end else + Result := ActiveFolder.GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, ppvOut); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('GetUIObjectOf - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.ParseDisplayName(hwndOwner: HWND; pbcReserved: Pointer; lpszDisplayName: POLESTR; out pchEaten: ULONG; out ppidl: PItemIDList; var dwAttributes: ULONG): HResult; +begin + Result := ActiveFolder.ParseDisplayName(hwndOwner, pbcReserved, lpszDisplayName, pchEaten, ppidl, dwAttributes); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('ParseDisplayName - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.SetNameOf(hwndOwner: HWND; pidl: PItemIDList; lpszName: POLEStr; uFlags: DWORD; var ppidlOut: PItemIDList): HResult; +begin + Result := ActiveFolder.SetNameOf(hwndOwner, pidl, lpszName, uFlags, ppidlOut); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('SetNameOf - Result = ' + InttoStr(Result)); + {$ENDIF} +end; + +function TCommonShellContextMenu.InternalShowContextMenu(Owner: TWinControl; ParentPIDL: PItemIDList; ChildPIDLs: TAbsolutePIDLArray; Verb: WideString; Position: PPoint = nil): Boolean; +// +// If ParentPIDL is nil the assumption is that the Parent is the +// Desktop and the PIDLs are fully qualified PIDLs. If ParentPIDL is assigned then +// the PIDLs MUST be immediate children of the ParentPIDL +// +const + MaxVerbLen = 128; +type + THKeyArray = array of HKey; + + procedure AddKey(Key: HKey; var KeyArray: THKeyArray); + begin + SetLength(KeyArray, Length(KeyArray) + 1); + KeyArray[Length(KeyArray)-1] := Key + end; + +var + Menu: hMenu; + InvokeInfo: TCMInvokeCommandInfoEx; + MenuCmd: Cardinal; + x, y, i: integer; + VerbA: string; + VerbW: WideString; + GenericVerb: Pointer; + Handled, AllowShow, Success: Boolean; + Flags: Longword; + ContextMenu: IContextMenu; + ContextMenu2: IContextMenu2; + ContextMenu3: IContextMenu3; + OldMode: UINT; + Keys: THKeyArray; + Desktop: IShellFolder; + DesktopPIDL, ChildrenPIDLs: PItemIDList; + {$IFDEF TNTSUPPORT} + Reg: TTntRegistry; + {$ELSE} + Reg: TRegistry; + {$ENDIF} + WS, CurVer: WideString; + UnknownAdded: Boolean; +begin + Result := False; + DesktopPIDL := nil; + Desktop := nil; + begin + OldMode := SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOOPENFILEERRORBOX); + try + try + Result := False; + Assert(Assigned(Owner), 'To show a Context Menu using TNamespace you must pass a valid Owner TWinControl'); + if Assigned(Owner) then + begin + if Assigned(CDefFolderMenu_Create2_MP) then + begin + FOldWndProcForContextMenu := Owner.WindowProc; + try + // Hook the owner for the Window message for owner draw menus like + // Send To.. + Owner.WindowProc := WindowProcForContextMenu; + + ContextMenu := nil; + ContextMenu2 := nil; + ContextMenu3 := nil; + Result := False; + if Assigned(Position) then + begin + x := Position.x; + y := Position.y + end else + begin + x := Mouse.CursorPos.X; // Snag these fast. The mouse can move a fair amount + y := Mouse.CursorPos.Y; // before the popup menu is shown. + end; + FillChar(InvokeInfo, SizeOf(InvokeInfo), #0); + Menu := CreatePopupMenu; + try + Flags := CMF_NORMAL or CMF_EXPLORE; + if RenameMenuItem then + Flags := Flags or CMF_CANRENAME; + + if GetKeyState(VK_SHIFT) and $8000 <> 0 then + Flags := Flags or CMF_EXTENDEDVERBS; + + if cmeDirectory in Extensions then + AddMenuKey('Directory'); + if cmeDirBackground in Extensions then + AddMenuKey('Directory\Background'); + if cmeFolder in Extensions then + AddMenuKey('Folder'); + if cmeAsterik in Extensions then + AddMenuKey('*'); + if cmeAllFilesystemObjects in Extensions then + AddMenuKey('AllFilesystemObjects'); + + + // Need to rework this to do it right + // 1) look at the extension under HKCR, read default value + // 2) open key pointed to by above default value (file class) + // 3) see if file class has a "CurVer" key + // 4) if so open that key as the current version of the file class + // 5) open HKCR/SystemFileAssociations for the file extension + // 6) if 1 was unsuccessful (no association) use the "Unknown" key + // 7) see if the extension or file class key have \PerceivedType key + // 8) if so look in HKCR/SystemFileAssociations for a key of the perceived type from above + // + // Aug 25th - If I just pass the ext OR the file class then the Merge Extended items works ("Open" for instance) + + UnknownAdded := False; + {$IFDEF TNTSUPPORT} + Reg := TTntRegistry.Create; + {$ELSE} + Reg := TRegistry.Create; + {$ENDIF} + try + Reg.RootKey := HKEY_CLASSES_ROOT; + for i := 0 to KeyStrings.Count - 1 do + begin + if (KeyStrings[i] <> '') then + begin + if Reg.OpenKeyReadOnly(KeyStrings[i]) then + begin + // The extension key is open {.ext} + AddKey(DuplicateKey(Reg.CurrentKey), Keys); + WS := Reg.ReadString(''); + Reg.CloseKey; + if WS <> '' then + begin + if Reg.OpenKeyReadOnly(WS) then + begin + // The FileClass is open, see if there is mulitiple version and a current version + if Reg.KeyExists('CurVer') then + begin + if Reg.OpenKeyReadOnly('CurVer') then + begin + CurVer := Reg.ReadString(''); + if Reg.OpenKeyReadOnly('\' + CurVer) then + AddKey(DuplicateKey(Reg.CurrentKey), Keys); + end; + Reg.CloseKey; + end else + begin + AddKey(DuplicateKey(Reg.CurrentKey), Keys); + Reg.CloseKey; + end + end + end + end else + begin + if not UnknownAdded and Reg.OpenKeyReadOnly('Unknown') then + begin + AddKey(DuplicateKey(Reg.CurrentKey), Keys); + Reg.CloseKey; + UnknownAdded := True + end + end; + + if cmeFileSystemAssociations in Extensions then + begin + if Reg.OpenKeyReadOnly('SystemFileAssociations\' + KeyStrings[i]) then + begin + AddKey(DuplicateKey(Reg.CurrentKey), Keys); + Reg.CloseKey; + end + end; + + if cmePerceivedType in Extensions then + begin + if Reg.OpenKeyReadOnly(KeyStrings[i]) then + begin + WS := Reg.ReadString('PerceivedType'); + if WS <> '' then + begin + if Reg.OpenKeyReadOnly('\SystemFileAssociations\' + WS) then + AddKey(DuplicateKey(Reg.CurrentKey), Keys); + end; + Reg.CloseKey; + end + end + end + end + finally + Reg.CloseKey; + Reg.Free + end; + + Success := False; + ActivePIDLs := ChildPIDLs; + if not Assigned(ParentPIDL) and Assigned(ChildPIDLs) then + begin + FromDesktop := True; + SHGetDesktopFolder(FActiveFolder); + SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, DesktopPIDL); + Success := CDefFolderMenu_Create2_MP(DesktopPIDL, Owner.Handle, + Length(ChildPIDLs), PItemIDList(ChildPIDLs[0]), Self, + Stub, Length(Keys), PHKey(@Keys[0]), ContextMenu) = S_OK; + end else + begin + FromDesktop := False; + SHGetDesktopFolder(Desktop); + if PIDLMgr.IsDesktopFolder(ParentPIDL) then + FActiveFolder := Desktop + else + Desktop.BindToObject(ParentPIDL, nil, IShellFolder, Pointer( FActiveFolder)); + + if Assigned(ActiveFolder) then + begin + if Assigned(ParentPIDL) and Assigned(ChildPIDLs) then + Success := CDefFolderMenu_Create2_MP(ParentPIDL, Owner.Handle, + Length(ChildPIDLs), PItemIDList(ChildPIDLs[0]), + Self, Stub, Length(Keys), PHKey(@Keys[0]), ContextMenu) = S_OK + else begin + // Must be a background menu call + ChildrenPIDLs := nil; + if Assigned(ParentPIDL) and not Assigned(ChildPIDLs) then + Success := CDefFolderMenu_Create2_MP(ParentPIDL, Owner.Handle, + 0, ChildrenPIDLs, Self, Stub, Length(Keys), + PHKey(@Keys[0]), ContextMenu) = S_OK + end + end + end; + + if Success then + begin + + CurrentContextMenu := ContextMenu; + + CurrentContextMenu2 := nil; // not sure it is available yet + if Assigned(ContextMenu) then + begin + if ContextMenu.QueryInterface(IContextMenu3, Pointer(ContextMenu3)) = E_NOINTERFACE then + begin + if ContextMenu.QueryInterface(IID_IContextMenu2, Pointer(ContextMenu2)) <> E_NOINTERFACE then + CurrentContextMenu2 := ContextMenu2; + end else + CurrentContextMenu2 := ContextMenu3; + + if Assigned(ContextMenu3) then + ContextMenu3.QueryContextMenu(Menu, 0, 1, $7FFF, Flags) + else + if Assigned(ContextMenu2) then + ContextMenu2.QueryContextMenu(Menu, 0, 1, $7FFF, Flags) + else + if Assigned(ContextMenu) then + ContextMenu.QueryContextMenu(Menu, 0, 1, $7FFF, Flags); + + // May just be executing a verb + AllowShow := Verb = ''; + + if AllowShow then + MenuCmd := Cardinal( TrackPopupMenuEx( + Menu, + TPM_LEFTALIGN or TPM_RETURNCMD or TPM_RIGHTBUTTON, + x, y, Owner.Handle, nil)) + else + MenuCmd := 0; + + if (MenuCmd <> 0) or (Verb <> '') then + begin + if (MenuCmd <> 0) then + begin + if IsUnicode then + begin + SetLength(VerbW, MaxVerbLen); + GenericVerb := @VerbW[1]; + Flags := GCS_VERBW + end else + begin + SetLength(VerbA, MaxVerbLen); + GenericVerb := @VerbA[1]; + Flags := GCS_VERBA + end; + if Assigned(ContextMenu3) then + Result := Succeeded(ContextMenu3.GetCommandString(MenuCmd-1, Flags, nil, GenericVerb, MaxVerbLen)) + else + if Assigned(ContextMenu2) then + Result := Succeeded(ContextMenu2.GetCommandString(MenuCmd-1, Flags, nil, GenericVerb, MaxVerbLen)) + else + if Assigned(ContextMenu) then + Result := Succeeded(ContextMenu.GetCommandString(MenuCmd-1, Flags, nil, GenericVerb, MaxVerbLen)); + + if IsUnicode then + SetLength(VerbW, lstrlenW(PWideChar( VerbW))) + else begin + SetLength(VerbA, StrLen(PChar( VerbA))); + VerbW := VerbA + end; + end else + begin + VerbW := Verb; + VerbA := Verb; + Result := True; + end; + + if not Result then + VerbW := STR_UNKNOWNCOMMAN; + + Handled := False; + if not Handled then + begin + FillChar(InvokeInfo, SizeOf(InvokeInfo), #0); + with InvokeInfo do + begin + if MenuCmd > 0 then + begin + { For some reason the lpVerbW won't work } + lpVerb := MakeIntResourceA(MenuCmd-1); + if IsUnicode then + begin + fMask := CMIC_MASK_UNICODE; + lpVerbW := MakeIntResourceW(MenuCmd-1); + end; + end else + begin + if IsUnicode then + begin + fMask := CMIC_MASK_UNICODE; + lpVerbW := PWideChar( VerbW); + lpVerb := PChar( VerbA) + end else + lpVerb := PChar( VerbA) + end; + // Win95 get confused if size = TCMInvokeCommandInfoEx + if IsUnicode then + cbSize := SizeOf(TCMInvokeCommandInfoEx) + else + cbSize := SizeOf(TCMInvokeCommandInfo); + + hWnd := Owner.Handle; + nShow := SW_SHOWNORMAL; + end; + if Assigned(ContextMenu3) then + Result := Succeeded(ContextMenu3.InvokeCommand(InvokeInfo)) + else + if Assigned(ContextMenu2) then + Result := Succeeded(ContextMenu2.InvokeCommand(InvokeInfo)) + else + if Assigned(ContextMenu) then + Result := Succeeded(ContextMenu.InvokeCommand(InvokeInfo)); + end + end + end + end + finally + PIDLMgr.FreePIDL(DesktopPIDL); + CurrentContextMenu := nil; + CurrentContextMenu2 := nil; + ContextMenu := nil; + ContextMenu2 := nil; + ContextMenu3 := nil; + FActiveFolder := nil; + Desktop := nil; + // Special handling because this is a non reference counted Component + if Assigned(UIObjectOfDataObject) then + UIObjectOfDataObject._Release; + UIObjectOfDataObject := nil; + if Assigned(UIObjectOfDropTarget) then + UIObjectOfDropTarget._Release; + UIObjectOfDropTarget := nil; + { Don't access any properties or field of the object. If the verb is } + { 'delete' the component using this class could have freed the instance } + { of the object through a ShellNotifyRegister or some other way. } + DestroyMenu(Menu); + for i := 0 to Length(Keys) - 1 do + RegCloseKey(Keys[i]); + Keys := nil; + end; + finally + Owner.WindowProc := FOldWndProcForContextMenu; + FOldWndProcForContextMenu := nil; + end; + end + end; + finally + SetErrorMode(OldMode); + end + except + end + end +end; + +procedure TCommonShellContextMenu.AddMenuKey(Key: WideString); +begin + KeyStrings.Add(Key) +end; + +{$IFDEF TNTSUPPORT} +procedure TCommonShellContextMenu.AddMenuKeys(Keys: TTntStringList); +begin + KeyStrings.Assign(Keys) +end; +{$ELSE} +procedure TCommonShellContextMenu.AddMenuKeys(Keys: TStringList); +begin + KeyStrings.Assign(Keys) +end; +{$ENDIF} + +procedure TCommonShellContextMenu.ClearKeys; +begin + KeyStrings.Clear +end; + +procedure TCommonShellContextMenu.ClearMenuMap; +begin + MenuMap.Clear +end; + +procedure TCommonShellContextMenu.DoCopy(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuCopy) then + OnShellMenuCopy(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoCreateShortCut(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuCreateShortCut) then + OnShellMenuCreateShortCut(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoCut(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuCut) then + OnShellMenuCut(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoDelete(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuDelete) then + OnShellMenuDelete(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoHide; +begin + if Assigned(OnHide) then + OnHide(Self); +end; + +{$IFDEF TNTSUPPORT} +procedure TCommonShellContextMenu.DoInvokeCommand(MenuItem: TTntMenuItem; InvokeInfo: PCMInvokeCommandInfo); +var + Handled: Boolean; +begin + Handled := False; + if Assigned(OnInvokeCommand) then + OnInvokeCommand(Self, MenuItem, InvokeInfo, Handled); + if not Handled then + MenuItem.Click; +end; +{$ELSE} +procedure TCommonShellContextMenu.DoInvokeCommand(MenuItem: TMenuItem; InvokeInfo: PCMInvokeCommandInfo); +var + Handled: Boolean; +begin + Handled := False; + if Assigned(OnInvokeCommand) then + OnInvokeCommand(Self, MenuItem, InvokeInfo, Handled); + if not Handled then + MenuItem.Click; +end; +{$ENDIF} + +procedure TCommonShellContextMenu.DoMenuMerge(Menu: HMENU; IndexMenu: UINT; + var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); +begin + if Assigned(OnMenuMerge) then + OnMenuMerge(Self, Menu, IndexMenu, CmdFirst, CmdLast, Flags); +end; + +procedure TCommonShellContextMenu.DoMenuMergeBottom(Menu: HMENU; + IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; + Flags: TShellContextMenuFlags); +begin + if Assigned(OnMenuMergeBottom) then + OnMenuMergeBottom(Self, Menu, IndexMenu, CmdFirst, CmdLast, Flags); +end; + +procedure TCommonShellContextMenu.DoMenuMergeTop(Menu: HMENU; IndexMenu: UINT; + var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); +begin + if Assigned(OnMenuMergeTop) then + OnMenuMergeTop(Self, Menu, IndexMenu, CmdFirst, CmdLast, Flags); +end; + +procedure TCommonShellContextMenu.DoNewFolder(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuNewFolder) then + OnShellMenuNewFolder(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoPaste(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuPaste) then + OnShellMenuPaste(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoPasteLink(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuPasteLink) then + OnShellMenuPasteLink(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoPasteShortCut(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuPasteShortCut) then + OnShellMenuPasteShortCut(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoProperties(ShellFolder: IShellFolder; DataObject: IDataObject; var DoDefault: Boolean); +begin + if Assigned(OnShellMenuProperites) then + OnShellMenuProperites(Self, ShellFolder, DataObject, DoDefault) +end; + +procedure TCommonShellContextMenu.DoShow; +begin + if Assigned(OnShow) then + OnShow(Self); +end; + +procedure TCommonShellContextMenu.HandleContextMenuMsg(Msg, wParam, lParam: Longint; var Result: LRESULT); +{ This is called when the ContextMenu calls back to its owner window to ask } +{ questions to implement the addition of icons to the menu. The messages sent } +{ to the owner window are: WM_INITMENUPOPUP, WM_DRAWITEM, or WM_MEASUREITEM. } +{ Which must be passed on to the ContextMenu2 interface to display items with } +{ icons. } +var + ContextMenu3: IContextMenu3; +begin + if Assigned(CurrentContextMenu2) then + if CurrentContextMenu2.QueryInterface(IContextMenu3, ContextMenu3) <> E_NOINTERFACE then + Result := ContextMenu3.HandleMenuMsg2(Msg, wParam, lParam, Result) + else + Result := CurrentContextMenu2.HandleMenuMsg(Msg, wParam, lParam); +end; + +procedure TCommonShellContextMenu.LoadMultiFolderPIDLArray(Namespaces: TNamespaceArray; var PIDLs: TAbsolutePIDLArray); +var + i: Integer; +begin + CopyValidated := True; + CutValidated := True; + SetLength(PIDLs, Length(Namespaces)); + for i := 0 to Length(Namespaces) - 1 do + begin + PIDLs[i] := Namespaces[i].AbsolutePIDL; + if Namespaces[i].Folder and not Namespaces[i].Browsable then + Include(FExtensions, cmeDirectory); + if CopyValidated then + CopyValidated := Namespaces[i].CanCopy; + if CutValidated then + CutValidated := Namespaces[i].CanMove; + if Namespaces[i].Folder and not Namespaces[i].Directory then + Include(FExtensions, cmeFolder); + end; +end; + +procedure TCommonShellContextMenu.WindowProcForContextMenu(var Message: TMessage); +begin + FOldWndProcForContextMenu(Message); // Call the OldWindProc of the ContextMenu owner + case Message.Msg of + WM_DRAWITEM, WM_INITMENUPOPUP, WM_MEASUREITEM, WM_MENUCHAR: + HandleContextMenuMsg(Message.Msg, Message.WParam, Message.LParam, Message.Result); + end; +end; + +function TCommonShellContextMenu._AddRef: Integer; +begin + Result := -1 +end; + +function TCommonShellContextMenu._Release: Integer; +begin + Result := -1 +end; + +function TCommonShellContextMenu.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := inherited QueryInterface(IID, Obj); + {$IFDEF GXDEBUG_VIRTUALCONTEXTMENU} + SendDebug('QueryInterface - ' + GUIDToInterfaceStr(IID)); + {$ENDIF} +end; + +{$IFDEF TNTSUPPORT} +function TCommonShellContextMenu.MergeMenuIntoContextMenu(Menu: TTntPopupMenu; + ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; + // + // Returns the ItemID of the last item it added to the ContextMenu + // + + function RunMenu(MenuItem: TTntMenuItem; hPopupMenu: hMenu; MenuID: UINT): Integer; + var + i: Integer; + SubMenu: hMenu; + Map: PMenuItemLink; + NewIndex: Integer; + begin + Result := MenuID; + if MenuItem.Count > 0 then + begin + // Item has sub-items and won't take a MenuID + SubMenu := CreatePopupMenu; + NewIndex := AddContextMenuItem(hPopupMenu, MenuItem.Caption, Index, Result, SubMenu); + for i := MenuItem.Count - 1 downto 0 do + Result := RunMenu(MenuItem.Items[i] as TTntMenuItem, SubMenu, Result); + end else + NewIndex := AddContextMenuItem(hPopupMenu, MenuItem.Caption, Index, Result, 0); + if NewIndex <> $FFFF then + begin + Map := MenuMap.Add; + Map.MenuID := Result; + Map.Item := MenuItem; + Inc(Result) + end; + end; + +var + i: Integer; +begin + Result := idStart; + for i := Menu.Items.Count - 1 downto 0 do + Result := RunMenu(Menu.Items[i] as TTntMenuItem, ContextMenu, Result) +end; +{$ELSE} +function TCommonShellContextMenu.MergeMenuIntoContextMenu(Menu: TPopupMenu; + ContextMenu: HMenu; Index: Integer; idStart: UINT): Integer; + // + // Returns the ItemID of the last item it added to the ContextMenu + // + + function RunMenu(MenuItem: TMenuItem; hPopupMenu: hMenu; MenuID: UINT): Integer; + var + i: Integer; + SubMenu: hMenu; + Map: PMenuItemLink; + NewIndex: Integer; + begin + Result := MenuID; + if MenuItem.Count > 0 then + begin + // Item has sub-items and won't take a MenuID + SubMenu := CreatePopupMenu; + NewIndex := AddContextMenuItem(hPopupMenu, MenuItem.Caption, Index, Result, SubMenu, MenuItem.Enabled, MenuItem.Checked, MenuItem.Default); + for i := MenuItem.Count - 1 downto 0 do + Result := RunMenu(MenuItem.Items[i], SubMenu, Result); + end else + NewIndex := AddContextMenuItem(hPopupMenu, MenuItem.Caption, Index, Result, 0, MenuItem.Enabled, MenuItem.Checked, MenuItem.Default); + if NewIndex <> $FFFF then + begin + Map := MenuMap.Add; + Map.MenuID := Result; + Map.Item := MenuItem; + Inc(Result) + end; + end; + +var + i: Integer; +begin + Result := idStart; + for i := Menu.Items.Count - 1 downto 0 do + Result := RunMenu(Menu.Items[i], ContextMenu, Result) +end; +{$ENDIF} + +{ TCommonShellMultiParentContextMenu} +function TCommonShellMultiParentContextMenu.ExecuteContextMenuVerb( + Owner: TWinControl; Namespaces: TNamespaceArray; Verb: string): Boolean; +var + PIDLs: TAbsolutePIDLArray; +begin + PIDLs := nil; + LocalFocused := nil; + LocalNamespaces := Namespaces; + RenameMenuItem := True; + LoadRegistryKeyStrings(nil); + LoadMultiFolderPIDLArray(Namespaces, PIDLs); + Result := InternalShowContextMenu(Owner, nil, PIDLs, Verb, nil); +end; + +function TCommonShellMultiParentContextMenu.ShowContextMenu(Owner: TWinControl; Focused: TNamespace; Namespaces: TNamespaceArray; Position: PPoint = nil): Boolean; +var + PIDLs: TAbsolutePIDLArray; +begin + PIDLs := nil; + LocalFocused := Focused; + LocalNamespaces := Namespaces; + RenameMenuItem := True; + LoadRegistryKeyStrings(Focused); + LoadMultiFolderPIDLArray(Namespaces, PIDLs); + Result := InternalShowContextMenu(Owner, nil, PIDLs, '', Position); +end; + +procedure TCommonShellMultiParentContextMenu.LoadRegistryKeyStrings(Focused: TNamespace); +begin + KeyStrings.Clear; + Extensions := [cmeShellDefault, cmeAsterik, cmeAllFilesystemObjects, cmeFileSystemAssociations]; + + // Only add the menu handlers for the focused item class + if Assigned(Focused) then + begin + if Focused.Folder then + Extensions := [cmeShellDefault, {cmeDirectory,} cmeFolder] + else + AddMenuKey(WideExtractFileExt(Focused.NameForParsing)); + end +end; + +{ TCommonShellBackgroundContextMenu } +constructor TCommonShellBackgroundContextMenu.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FInitialItemList := TCommonPIDLList.Create; + FFinalItemList := TCommonPIDLList.Create; + FRenameMenuItem := False; + FPasteMenuItem := False; + FShowPasteItem := True; + FShowPasteShortCutItem := True; + FShowPropertiesItem := True; + FAutoDetectNewItem := True; + {$IFDEF TNTSUPPORT} + PopupMenuProperties := TTntPopupMenu.Create(Self); + PopupMenuPasteShortCut := TTntPopupMenu.Create(Self); + PopupMenuPaste := TTntPopupMenu.Create(Self); + Paste := TTntMenuItem.Create(PopupMenuPaste); + PasteShortCut := TTntMenuItem.Create(PopupMenuPasteShortCut); + Properties := TTntMenuItem.Create(PopupMenuProperties); + {$ELSE} + PopupMenuProperties := TPopupMenu.Create(Self); + PopupMenuPasteShortCut := TPopupMenu.Create(Self); + PopupMenuPaste := TPopupMenu.Create(Self); + Paste := TMenuItem.Create(PopupMenuPaste); + PasteShortCut := TMenuItem.Create(PopupMenuPasteShortCut); + Properties := TMenuItem.Create(PopupMenuProperties); + {$ENDIF} + Paste.Caption := STR_PASTELINK; + PasteShortCut.Caption := STR_PASTE; + Properties.Caption := STR_PROPERTIES; + Paste.OnClick := ClickPaste; + PasteShortCut.OnClick := ClickPasteShortCut; + Properties.OnClick := ClickProperties; + PopupMenuProperties.Items.Add(Properties); + PopupMenuPasteShortCut.Items.Add(PasteShortCut); + PopupMenuPaste.Items.Add(Paste); +end; + +destructor TCommonShellBackgroundContextMenu.Destroy; +begin + FreeAndNil(FInitialItemList); + FreeAndNil(FFinalItemList); + inherited Destroy; +end; + +function TCommonShellBackgroundContextMenu.EnumCallback(MessageWnd: HWnd; + APIDL: PItemIDList; AParent: TNamespace; Data: Pointer; var Terminate: Boolean): Boolean; +begin + // copy the relative PIDLs + TCommonPIDLList( Data).Add(APIDL); + Result := True; +end; + + +function TCommonShellBackgroundContextMenu.ShowContextMenu( + Owner: TWinControl; Root: TNamespace; Position: PPoint): Boolean; +begin + Result := False; + LocalFocused := Root; + LocalNamespaces := nil; + if Assigned(Root) then + begin + if Root.Folder then + begin + RenameMenuItem := True; + LoadRegistryKeyStrings(Root); + Result := InternalShowContextMenu(Owner, Root.AbsolutePIDL, nil, '', Position); + end + end +end; + +procedure TCommonShellBackgroundContextMenu.ClickPaste(Sender: TObject); +var + NSA: TNamespaceArray; +begin + if Assigned(LocalFocused) then + begin + SetLength(NSA, 1); + NSA[0] := LocalFocused; + LocalFocused.Paste(NSA, False) + end +end; + +procedure TCommonShellBackgroundContextMenu.ClickPasteShortCut(Sender: TObject); +var + NSA: TNamespaceArray; +begin + if Assigned(LocalFocused) then + begin + SetLength(NSA, 1); + NSA[0] := LocalFocused; + LocalFocused.Paste(NSA, True) + end +end; + +procedure TCommonShellBackgroundContextMenu.ClickProperties(Sender: TObject); +begin + if Assigned(LocalFocused) then + LocalFocused.ShowPropertySheet +end; + +procedure TCommonShellBackgroundContextMenu.DoHide; +var + i: Integer; + Found: Boolean; + NS: TNamespace; +begin + inherited DoHide; + if AutoDetectNewItem and Assigned(LocalFocused) then + begin + LocalFocused.EnumerateFolder(0, True, True, False, EnumCallback, FinalItemList); + if (InitialItemList.Count + 1) = FinalItemList.Count then + begin + // One item was added, time to find it. + PIDLListQuickSort(InitialItemList, LocalFocused.ShellFolder, 0, InitialItemList.Count - 1); + PIDLListQuickSort(FinalItemList, LocalFocused.ShellFolder, 0, FinalItemList.Count - 1); + Found := False; + i := 0; + while not Found and (i < FinalItemList.Count) do + begin + Found := LocalFocused.ShellFolder.CompareIDs(0, InitialItemList[i], FinalItemList[i]) <> 0; + if Found then + begin + NS := TNamespace.Create(FinalItemList[i], LocalFocused); + NS.FreePIDLOnDestroy := False; + DoNewItem(NS); + NS.Free + end; + Inc(i) + end + end + end; + FinalItemList.Clear; + InitialItemList.Clear; +end; + +procedure TCommonShellBackgroundContextMenu.DoMenuMerge(Menu: HMENU; + IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; + Flags: TShellContextMenuFlags); +begin + inherited DoMenuMerge(Menu, IndexMenu, CmdFirst, CmdLast, Flags); +end; + +procedure TCommonShellBackgroundContextMenu.DoMenuMergeBottom(Menu: HMENU; + IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; + Flags: TShellContextMenuFlags); +begin + if ShowPropertiesItem then + begin + if Assigned(LocalFocused) then + Properties.Enabled := LocalFocused.HasPropSheet + else + Properties.Enabled := False; + CmdFirst := MergeMenuIntoContextMenu(PopupMenuProperties, Menu, IndexMenu, CmdFirst); + AddContextMenuItem(Menu, '-', IndexMenu); + end; + inherited DoMenuMergeBottom(Menu, IndexMenu, CmdFirst, CmdLast, Flags); +end; + +procedure TCommonShellBackgroundContextMenu.DoMenuMergeTop(Menu: HMENU; IndexMenu: UINT; var CmdFirst: UINT; CmdLast: UINT; Flags: TShellContextMenuFlags); +begin + Paste.Enabled := ClipboardContainsShellFormats; + PasteShortCut.Enabled := ClipboardContainsShellFormats; + if ShowPasteItem or ShowPasteShortCutItem then + AddContextMenuItem(Menu, '-', IndexMenu); + if ShowPasteItem then + CmdFirst := MergeMenuIntoContextMenu(PopupMenuPaste, Menu, IndexMenu, CmdFirst); + if ShowPasteShortCutItem then + CmdFirst := MergeMenuIntoContextMenu(PopupMenuPasteShortCut, Menu, IndexMenu, CmdFirst); + if ShowPasteItem or ShowPasteShortCutItem then + AddContextMenuItem(Menu, '-', IndexMenu); + + inherited DoMenuMergeTop(Menu, IndexMenu, CmdFirst, CmdLast, Flags); +end; + +procedure TCommonShellBackgroundContextMenu.DoNewItem(NS: TNamespace); +begin + if Assigned(OnNewItem) then + OnNewItem(Self, NS) +end; + +procedure TCommonShellBackgroundContextMenu.DoShow; + +begin + inherited DoShow; + if AutoDetectNewItem and Assigned(LocalFocused) then + begin + InitialItemList.Clear; + LocalFocused.EnumerateFolder(0, True, True, False, EnumCallback, InitialItemList) + end +end; + +procedure TCommonShellBackgroundContextMenu.LoadRegistryKeyStrings(Focused: TNamespace); +begin + CopyValidated := False; + CutValidated := False; + KeyStrings.Clear; + PasteMenuItem := True; + Extensions := [cmeShellDefault, cmeDirBackground]; +end; + +{ TMenuItemMap } +function TMenuItemMap.Add: PMenuItemLink; +begin + New(Result); + if Assigned(Result) then + inherited Insert(Count, Result) +end; + +function TMenuItemMap.First: PMenuItemLink; +begin + Result := PMenuItemLink( inherited First) +end; + +function TMenuItemMap.Get(Index: Integer): PMenuItemLink; +begin + Result := PMenuItemLink( inherited Get(Index)) +end; + +function TMenuItemMap.IndexOf(Item: PMenuItemLink): Integer; +begin + Result := inherited IndexOf(Item) +end; + +function TMenuItemMap.Last: PMenuItemLink; +begin + Result := PMenuItemLink( inherited Last) +end; + +function TMenuItemMap.Remove(Item: PMenuItemLink): Integer; +begin + Result := inherited Remove(Item) +end; + +procedure TMenuItemMap.Clear; +var + i: Integer; +begin + try + for i := 0 to Count - 1 do + Dispose( Items[i]); + finally + SetCount(0); + SetCapacity(0); + end; +end; + +function TMenuItemMap.Insert(Index: Integer): PMenuItemLink; +begin + New(Result); + if Assigned(Result) then + inherited Insert(Index, Result) +end; + +procedure TMenuItemMap.Put(Index: Integer; Item: PMenuItemLink); +begin + inherited Put(Index, Item) +end; + +initialization + CoInitialize(nil); + // if IsWinNT4 then + FileIconInit(True); // This MUST be before the Namespaces are created or it won't work because the IconCache may have an icon in from the namespace + if not LoadShell32Functions then + Halt(0); + PIDLMgr := TCommonPIDLManager.Create; + DesktopFolder := CreateSpecialNamespace(CSIDL_DESKTOP); + RecycleBinFolder := CreateSpecialNamespace(CSIDL_BITBUCKET); + PhysicalDesktopFolder := CreateSpecialNamespace(CSIDL_DESKTOPDIRECTORY); + DrivesFolder := CreateSpecialNamespace(CSIDL_DRIVES); + PrinterFolder := CreateSpecialNamespace(CSIDL_PRINTERS); + HistoryFolder := CreateSpecialNamespace(CSIDL_HISTORY); + ControlPanelFolder := CreateSpecialNamespace(CSIDL_CONTROLS); + NetworkNeighborHoodFolder := CreateSpecialNamespace(CSIDL_NETWORK); + TemplatesFolder := CreateSpecialNamespace(CSIDL_TEMPLATES); + MyDocumentsFolder := CreateSpecialNamespace(CSIDL_PERSONAL); + FavoritesFolder := CreateSpecialNamespace(CSIDL_FAVORITES); + UserDocumentsFolder := CreateSpecialNamespace(CSIDL_APPDATA); + ProgramFilesFolder := CreateSpecialNamespace(CSIDL_PROGRAMS); + +finalization + FreeAndNil(DesktopFolder); + FreeAndNil(RecycleBinFolder); + FreeAndNil(PhysicalDesktopFolder); + FreeAndNil(DrivesFolder); + FreeAndNil(HistoryFolder); + FreeAndNil(PrinterFolder); + FreeAndNil(ControlPanelFolder); + FreeAndNil(NetworkNeighborHoodFolder); + FreeAndNil(TemplatesFolder); + FreeAndNil(MyDocumentsFolder); + FreeAndNil(FavoritesFolder); + FreeAndNil(UserDocumentsFolder); + FreeAndNil(ProgramFilesFolder); + FreeAndNil(PIDLMgr); + CoUninitialize; +end. + + + + + + + + + + diff --git a/official/1.7.0/Common Library/Source/MPThreadManager.hpp b/official/1.7.0/Common Library/Source/MPThreadManager.hpp new file mode 100644 index 0000000..16b9251 --- /dev/null +++ b/official/1.7.0/Common Library/Source/MPThreadManager.hpp @@ -0,0 +1,405 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Mpthreadmanager.pas' rev: 11.00 + +#ifndef MpthreadmanagerHPP +#define MpthreadmanagerHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Mpthreadmanager +{ +//-- type declarations ------------------------------------------------------- +typedef Shortint TCommonThreadPriority; + +class DELPHICLASS TPIDLCallbackThreadRequest; +typedef void __fastcall (__closure *TNamespaceCallbackProc)(TPIDLCallbackThreadRequest* Request); + +class DELPHICLASS TCommonThreadRequest; +class DELPHICLASS TCommonThread; +#pragma option push -b- +enum TCommonThreadDirection { etdFirstInFirstOut, etdFirstInLastOut }; +#pragma option pop + +class PASCALIMPLEMENTATION TCommonThread : public System::TObject +{ + typedef System::TObject inherited; + +private: + bool FFreeOnTerminate; + unsigned FHandle; + bool FOLEInitialized; + HWND FTargetWnd; + unsigned FThreadID; + void *FStub; + bool FTerminated; + bool FSuspended; + unsigned FEvent; + bool FCriticalSectionInitialized; + _RTL_CRITICAL_SECTION FCriticalSection; + int FRefCount; + Classes::TThreadList* FRequestList; + TCommonThreadDirection FDirection; + bool FRunning; + bool FRequestListLocked; + Classes::TList* FTempListLock; + Classes::TThreadPriority __fastcall GetPriority(void); + void __fastcall SetPriority(const Classes::TThreadPriority Value); + void __fastcall SetSuspended(const bool Value); + void __stdcall ExecuteStub(void); + _RTL_CRITICAL_SECTION __fastcall GetLock(); + unsigned __fastcall GetEvent(void); + void __fastcall SetDirection(const TCommonThreadDirection Value); + void __fastcall SetRequestListLocked(const bool Value); + +protected: + bool FFinished; + void __fastcall AddRequest(TCommonThreadRequest* Request, bool DoSetEvent); + virtual void __fastcall Execute(void) = 0 ; + virtual void __fastcall FinalizeThread(void); + virtual void __fastcall InitializeThread(void); + __property bool CriticalSectionInitialized = {read=FCriticalSectionInitialized, write=FCriticalSectionInitialized, nodefault}; + __property unsigned Event = {read=GetEvent, nodefault}; + __property bool RequestListLocked = {read=FRequestListLocked, write=SetRequestListLocked, nodefault}; + __property void * Stub = {read=FStub, write=FStub}; + __property bool Terminated = {read=FTerminated, nodefault}; + +public: + __fastcall virtual TCommonThread(bool CreateSuspended); + __fastcall virtual ~TCommonThread(void); + void __fastcall AddRef(void); + void __fastcall FlushRequestList(void); + void __fastcall ForceTerminate(void); + void __fastcall LockThread(void); + void __fastcall Release(void); + void __fastcall Resume(void); + virtual void __fastcall Terminate(void); + void __fastcall TriggerEvent(void); + void __fastcall UnlockThread(void); + __property TCommonThreadDirection Direction = {read=FDirection, write=SetDirection, nodefault}; + __property bool Finished = {read=FFinished, nodefault}; + __property bool FreeOnTerminate = {read=FFreeOnTerminate, write=FFreeOnTerminate, nodefault}; + __property unsigned Handle = {read=FHandle, nodefault}; + __property _RTL_CRITICAL_SECTION Lock = {read=GetLock}; + __property bool OLEInitialized = {read=FOLEInitialized, nodefault}; + __property Classes::TThreadPriority Priority = {read=GetPriority, write=SetPriority, default=3}; + __property int RefCount = {read=FRefCount, write=FRefCount, nodefault}; + __property Classes::TThreadList* RequestList = {read=FRequestList, write=FRequestList}; + __property bool Running = {read=FRunning, nodefault}; + __property bool Suspended = {read=FSuspended, write=SetSuspended, nodefault}; + __property HWND TargetWnd = {read=FTargetWnd, write=FTargetWnd, nodefault}; + __property unsigned ThreadID = {read=FThreadID, nodefault}; +}; + + +class PASCALIMPLEMENTATION TCommonThreadRequest : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + unsigned FID; + TCommonThreadPriority FPriority; + int FRefCount; + int FTag; + TCommonThread* FThread; + Controls::TWinControl* FWindow; + void *FItem; + int FRemainingRequests; + unsigned FCallbackWndMessage; + +protected: + __property int RefCount = {read=FRefCount, write=FRefCount, nodefault}; + +public: + __fastcall virtual TCommonThreadRequest(void); + __fastcall virtual ~TCommonThreadRequest(void); + virtual bool __fastcall HandleRequest(void) = 0 ; + virtual void __fastcall Assign(Classes::TPersistent* Source); + virtual void __fastcall Prioritize(Classes::TList* RequestList); + void __fastcall Release(void); + __property unsigned CallbackWndMessage = {read=FCallbackWndMessage, write=FCallbackWndMessage, nodefault}; + __property void * Item = {read=FItem, write=FItem}; + __property unsigned ID = {read=FID, write=FID, nodefault}; + __property TCommonThreadPriority Priority = {read=FPriority, write=FPriority, default=50}; + __property int RemainingRequests = {read=FRemainingRequests, write=FRemainingRequests, nodefault}; + __property int Tag = {read=FTag, write=FTag, nodefault}; + __property TCommonThread* Thread = {read=FThread}; + __property Controls::TWinControl* Window = {read=FWindow, write=FWindow}; +}; + + +#pragma pack(push,1) +struct TWMThreadRequest +{ + +public: + unsigned Msg; + int RequestID; + TCommonThreadRequest* Request; + int Result; +} ; +#pragma pack(pop) + +#pragma pack(push,4) +struct TThreadNameInfo +{ + +public: + unsigned FType; + char *FName; + unsigned FThreadID; + unsigned FFlags; +} ; +#pragma pack(pop) + +typedef TMetaClass* TCommonThreadRequestClass; + +class DELPHICLASS TPIDLThreadRequest; +class PASCALIMPLEMENTATION TPIDLThreadRequest : public TCommonThreadRequest +{ + typedef TCommonThreadRequest inherited; + +private: + _ITEMIDLIST *FPIDL; + +public: + __fastcall virtual ~TPIDLThreadRequest(void); + virtual void __fastcall Assign(Classes::TPersistent* Source); + __property Shlobj::PItemIDList PIDL = {read=FPIDL, write=FPIDL}; +public: + #pragma option push -w-inl + /* TCommonThreadRequest.Create */ inline __fastcall virtual TPIDLThreadRequest(void) : TCommonThreadRequest() { } + #pragma option pop + +}; + + +class DELPHICLASS TShellIconThreadRequest; +class PASCALIMPLEMENTATION TShellIconThreadRequest : public TPIDLThreadRequest +{ + typedef TPIDLThreadRequest inherited; + +private: + int FImageIndex; + bool FLarge; + bool FOpen; + +public: + virtual bool __fastcall HandleRequest(void); + __property int ImageIndex = {read=FImageIndex, nodefault}; + __property bool Large = {read=FLarge, write=FLarge, nodefault}; + __property bool Open = {read=FOpen, write=FOpen, nodefault}; +public: + #pragma option push -w-inl + /* TPIDLThreadRequest.Destroy */ inline __fastcall virtual ~TShellIconThreadRequest(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TCommonThreadRequest.Create */ inline __fastcall virtual TShellIconThreadRequest(void) : TPIDLThreadRequest() { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TPIDLCallbackThreadRequest : public TPIDLThreadRequest +{ + typedef TPIDLThreadRequest inherited; + +private: + TNamespaceCallbackProc FCallbackProc; + System::TObject* FTargetObject; + +public: + virtual void __fastcall Assign(Classes::TPersistent* Source); + __property TNamespaceCallbackProc CallbackProc = {read=FCallbackProc, write=FCallbackProc}; + __property System::TObject* TargetObject = {read=FTargetObject, write=FTargetObject}; +public: + #pragma option push -w-inl + /* TPIDLThreadRequest.Destroy */ inline __fastcall virtual ~TPIDLCallbackThreadRequest(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TCommonThreadRequest.Create */ inline __fastcall virtual TPIDLCallbackThreadRequest(void) : TPIDLThreadRequest() { } + #pragma option pop + +}; + + +typedef TMetaClass* TCommonBaseThreadClass; + +class DELPHICLASS TCommonEventThread; +class PASCALIMPLEMENTATION TCommonEventThread : public TCommonThread +{ + typedef TCommonThread inherited; + +private: + unsigned FTargetWndNotifyMsg; + +protected: + virtual void __fastcall Execute(void); + +public: + __fastcall virtual TCommonEventThread(bool CreateSuspended); + __fastcall virtual ~TCommonEventThread(void); + __property unsigned TargetWndNotifyMsg = {read=FTargetWndNotifyMsg, write=FTargetWndNotifyMsg, nodefault}; +}; + + +typedef TMetaClass* TCommonEventThreadClass; + +class DELPHICLASS TCommonShellExecuteThread; +class PASCALIMPLEMENTATION TCommonShellExecuteThread : public TCommonThread +{ + typedef TCommonThread inherited; + +private: + WideString FlpClass; + WideString FlpDirectory; + WideString FlpFile; + WideString FlpParameters; + WideString FlpVerb; + _ITEMIDLIST *FPIDL; + +protected: + virtual void __fastcall Execute(void); + +public: + _SHELLEXECUTEINFOA ShellExecuteInfoA; + _SHELLEXECUTEINFOW ShellExecuteInfoW; + __fastcall virtual TCommonShellExecuteThread(bool CreateSuspended); + __fastcall virtual ~TCommonShellExecuteThread(void); + __property WideString lpClass = {read=FlpClass, write=FlpClass}; + __property WideString lpDirectory = {read=FlpDirectory, write=FlpDirectory}; + __property WideString lpFile = {read=FlpFile, write=FlpFile}; + __property WideString lpParameters = {read=FlpParameters, write=FlpParameters}; + __property WideString lpVerb = {read=FlpVerb, write=FlpVerb}; + __property Shlobj::PItemIDList PIDL = {read=FPIDL, write=FPIDL}; +}; + + +class DELPHICLASS TCommonCallbackEventThread; +class PASCALIMPLEMENTATION TCommonCallbackEventThread : public TCommonEventThread +{ + typedef TCommonEventThread inherited; + +protected: + virtual void __fastcall Execute(void); +public: + #pragma option push -w-inl + /* TCommonEventThread.Create */ inline __fastcall virtual TCommonCallbackEventThread(bool CreateSuspended) : TCommonEventThread(CreateSuspended) { } + #pragma option pop + #pragma option push -w-inl + /* TCommonEventThread.Destroy */ inline __fastcall virtual ~TCommonCallbackEventThread(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCommonThreadManager; +class PASCALIMPLEMENTATION TCommonThreadManager : public Classes::TComponent +{ + typedef Classes::TComponent inherited; + +private: + AnsiString FAClassName; + Classes::TThreadList* FControlList; + void *FStub; + HWND FFilterWindow; + bool FEnabled; + TCommonThread* __fastcall GetThread(void); + HWND __fastcall GetFilterWindow(void); + int __fastcall GetRequestCount(void); + void __fastcall SetEnabled(const bool Value); + +protected: + TCommonThread* FThread; + int __stdcall FilterWndProc(HWND Wnd, unsigned uMsg, int wParam, int lParam); + virtual void __fastcall CreateThreadObject(void); + int __fastcall FindControl(Controls::TWinControl* Window, Classes::TList* LockedList); + virtual void __fastcall DispatchRequest(int lParam, int wParam); + void __fastcall FreeThread(void); + void __fastcall InternalUnRegisterControl(Controls::TWinControl* Window, Classes::TList* LockedControlList); + void __fastcall RegisterFilterWindow(void); + __property AnsiString AClassName = {read=FAClassName, write=FAClassName}; + __property Classes::TThreadList* ControlList = {read=FControlList, write=FControlList}; + __property HWND FilterWindow = {read=GetFilterWindow, write=FFilterWindow, nodefault}; + +public: + __fastcall virtual TCommonThreadManager(Classes::TComponent* AOwner); + __fastcall virtual ~TCommonThreadManager(void); + void __fastcall AddRequest(TCommonThreadRequest* Request, bool DoSetEvent); + void __fastcall FlushAllMessageCache(Controls::TWinControl* Window); + void __fastcall FlushMessageCache(Controls::TWinControl* Window, unsigned RequestID); + bool __fastcall RegisterControl(Controls::TWinControl* Window); + void __fastcall UnRegisterAll(void); + void __fastcall UnRegisterControl(Controls::TWinControl* Window); + __property int RequestCount = {read=GetRequestCount, nodefault}; + __property TCommonThread* Thread = {read=GetThread}; + +__published: + __property bool Enabled = {read=FEnabled, write=SetEnabled, default=0}; +}; + + +class DELPHICLASS TCallbackThreadManager; +class PASCALIMPLEMENTATION TCallbackThreadManager : public TCommonThreadManager +{ + typedef TCommonThreadManager inherited; + +protected: + virtual void __fastcall CreateThreadObject(void); + virtual void __fastcall DispatchRequest(int lParam, int wParam); + +public: + HIDESBASE void __fastcall AddRequest(TPIDLCallbackThreadRequest* Request, bool DoSetEvent); + void __fastcall FlushObjectCache(System::TObject* AnObject); +public: + #pragma option push -w-inl + /* TCommonThreadManager.Create */ inline __fastcall virtual TCallbackThreadManager(Classes::TComponent* AOwner) : TCommonThreadManager(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCommonThreadManager.Destroy */ inline __fastcall virtual ~TCallbackThreadManager(void) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +#define COMMONTHREADFILTERWNDCLASS "clsEasyThreadFilter" +static const Byte COMMONTHREADSAFETYVALVE = 0xc8; +static const Word WM_COMMONTHREADCALLBACK = 0x8164; +static const Word WM_COMMONTHREADNOTIFIER = 0x8163; +static const Shortint TID_START = 0x0; +static const Shortint FORCE_KILL_THREAD_COUNT = 0xa; +static const Byte THREAD_SHUTDOWN_WAIT_DELAY = 0xc8; +extern PACKAGE TCommonThreadManager* __fastcall GlobalThreadManager(void); +extern PACKAGE TCallbackThreadManager* __fastcall GlobalCallbackThreadManager(void); + +} /* namespace Mpthreadmanager */ +using namespace Mpthreadmanager; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Mpthreadmanager diff --git a/official/1.7.0/Common Library/Source/MPThreadManager.obj b/official/1.7.0/Common Library/Source/MPThreadManager.obj new file mode 100644 index 0000000000000000000000000000000000000000..194d54c29ad0721a71acee2ec10d07e3478de65b GIT binary patch literal 26230 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�cDim)VyAHNSnlPuL;Os9D;lDbs*eflO zN5Ry>-w=rc#3;E@DI;MF6OIcZ;}S)1$+<6<^&8^X@}%_fKT&5HIqK|2TZl}4Zr zv=81#7P4||02HGo$wp`0$v?#RvB~ccG_w7JBRVbefZ>bUUP7y&uJ_%-V;l@S;u)S5 zkWXCmjsMD(Dc6S3(QA2&r>X>UF>!vrh3&#$nd>#{W_ve3qUP~Q6H>tm$Q+*)a@Z<1 z={e(%pp~`E>#Sadv$|ba?mxMdV`3qM!%PA1UUqMS{KtIaix>J>8vG~lYtHr_fo>j~ zm(k#yUARm8wOX17u~Q}yrO4rbH7*S0RO|q;v}_&|nlEL48%eRFJRdSqGuv!xnso!e zJQFfI*m2&cS+|&dP-y!z-1aDg{0%_N$H7zcM-1``gS^HdZ!pOJXO$Th96w0b)-=bR z^Af=>FvsvKCn-|g?P=aQ?C}?WCHSt(qur86&M2kJzr%^zyUuE$$#bxS%%w_`x0=@? z&9R}$Tg`1u)(%0|3xr+9m91A{W3Um6Pks%!H6u_dNDDoTCvuEzqNVo;a+c!EL>mW5 z*g{h(j6h9)T?LrYRT{_9SLEVbHb%hha zay~y?nBK=O5O(dG>Y;D9U(})ymX)#UAivpcg38TiE$`C}eAk41N`qZw!IpU}h@&5( zeAK~|HZ&G;u}-V||cgEt7$gbjWPG^uUxlECH4EF{RvEf_P0DL|CpWM0LS z*YF*}?E7(o%9GC|OIMasItd^0L2MzKG=b5K^W!jz|%5C7gSQE*Z4-i{*+CAA!utKO9|I4_|jy6(S6O z4F_cg&Dv?+%Bl;6eb8*ylmEaa zqMhbZ206hCMJy}z=p$qGXgv+?Aq%ziER_T2RhQHCQ+%gB#&WNI`RR4|62zaXZ_j+p zSqczYH=hCG^%t(WUacoz;W+CRvq5C?c!^~fPcLPSqOPI0rCLr$^ zeAewkh|cRKvc~vzpJPJAY+Q>RWTpo+R}sh1X?qCT2;^YL{D3PFTdn+s`u--N(Y2jRnENmg6MVWTZ9sf5tbx6 zirC-#X#wPt3ZQdFSW=6Prsg>zfLy8|}3qT^L&?E&K zcOgLYmJya~!P_$uD9~dBupn0GQ-OBrNL@Am4upU~Pfta!09Si=Sk*tjEcWj0@Zoou ztM%kroE0a3&gY+J*@gd{E%I5jo$rqF9d`21&4>7I5O?-7dYkz(enLF*3oeVEG2h1H z5aDsC0FQiDe0FFBKSCAH4Bg0&P{m&iA=EuHw1*#o{TD-Ve(cu|zWxwiE*^SBPyTX9 zT8J=N2t{BaIO0PUN_i#ux#_l90I8Lq;}g7V$eylQyK&Hz z4{wxjUW~X^y+4JU)o7{a7C&Ijda<8zKDP%U9!|S)+S +// +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +//---------------------------------------------------------------------------- + +interface + +{$I Options.inc} +{$I ..\Include\Addins.inc} + +{$B-} + +// See procedure TEasyThread.ExecuteStub; to understand what this does +{.$DEFINE DEBUG_THREAD} +{.$DEFINE DRAG_OUT_THREAD_SHUTDOWN} + + +uses + Windows, Messages, SysUtils, Classes, Controls, ShlObj, ShellAPI, ActiveX; + +const + COMMONTHREADFILTERWNDCLASS = 'clsEasyThreadFilter'; + COMMONTHREADSAFETYVALVE = 200; // Number of PostMessage trys before giving up + WM_COMMONTHREADCALLBACK = WM_APP + 356; // Handle this message to recieve the data from the thread + WM_COMMONTHREADNOTIFIER = WM_APP + 355; // Used internally to pass the data from the thread to the dispatch window + TID_START = 0; // Use this Thread ID to start custom ID's for the ThreadRequest.RequestID field + // This way the same thread can be used for various tasks and call a common + // message handler + + FORCE_KILL_THREAD_COUNT = 10; // 100 loops of THREAD_SHUTDOWN_WAIT_DELAY then TerminateThread() + THREAD_SHUTDOWN_WAIT_DELAY = 200; // miliseconds + +type + TCommonThreadRequest = class; + TCommonThreadManager = class; + TCommonThread = class; + TPIDLCallbackThreadRequest = class; + + TCommonThreadPriority = 0..100; + TNamespaceCallbackProc = procedure(Request: TPIDLCallbackThreadRequest) of object; + + // TMessage definition for how the data is passed to the target window via PostMessage + TWMThreadRequest = packed record + Msg: Cardinal; + RequestID: Longint; + Request: TCommonThreadRequest; + Result: Longint; + end; + + TCommonThreadDirection = ( + etdFirstInFirstOut, // Requests are serviced from the first to the last + etdFirstInLastOut // Requests are serviced from the last to to first + ); + + // ************************************************************************** + // Record that is used to set the name of the Thread. + // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxtsksettingthreadname.asp + // http://bdn.borland.com/article/0,1410,29800,00.html + // ************************************************************************** + TThreadNameInfo = record + FType: LongWord; // must be 0x1000 + FName: PChar; // pointer to name (in user address space) + FThreadID: LongWord; // thread ID (-1 indicates caller thread) + FFlags: LongWord; // reserved for future use, must be zero + end; + + // ************************************************************************** + // Thread Request + // Any requests for a TCommonThread to extract data are made through a Thread + // Request object. The main thread typically creates the object (or decendent) + // and fills in the basic info, the item index associated with the request, the + // Window to notify when finished. + // The TCommonThreadRequest object pointer is in the lParam of the message. + // Define the message handle using the TWMRequestThread type for the parameter. + // i.e. + // type + // TSomeTWinControl = class(TWinControl) + // procedure WMEasyThreadCallback(var Msg: TWMRequestThread); message WM_COMMONTHREADCALLBACK; + // end; + // ************************************************************************** + TCommonThreadRequest = class(TPersistent) + private + FID: Cardinal; // The ID that identifies the request type + FPriority: TCommonThreadPriority; // The Thread will sort the request list by Priority, 0 being highest 100 being the lowest + FRefCount: Integer; + FTag: Integer; // User defineable field + FThread: TCommonThread; // Reference to the thread handling the request + FWindow: TWinControl; // The control to send the Message to, set to nil to have the thread free the object without dispatching it to the main thread + FItem: Pointer; // Identifier of the Item the threaded data is being extracted for + FRemainingRequests: Integer; // Number of remaining requests in the thread prior to being dispatched to the window + FCallbackWndMessage: Cardinal; // This is the window message that is sent to the client window, WM_COMMONTHREADCALLBACK by default + protected + property RefCount: Integer read FRefCount write FRefCount; + public + constructor Create; virtual; + destructor Destroy; override; + function HandleRequest: Boolean; virtual; abstract; + procedure Assign(Source: TPersistent); override; + + procedure Prioritize(RequestList: TList); virtual; + procedure Release; + property CallbackWndMessage: Cardinal read FCallbackWndMessage write FCallbackWndMessage; + property Item: Pointer read FItem write FItem; + property ID: Cardinal read FID write FID; + property Priority: TCommonThreadPriority read FPriority write FPriority default 50; + property RemainingRequests: Integer read FRemainingRequests write FRemainingRequests; + property Tag: Integer read FTag write FTag; + property Thread: TCommonThread read FThread; + property Window: TWinControl read FWindow write FWindow; + end; + TCommonThreadRequestClass = class of TCommonThreadRequest; + + // *************************************************************** + // A ThreadRequest that uses a PIDL to extract its data from within + // the context of the thread. + // *************************************************************** + TPIDLThreadRequest = class(TCommonThreadRequest) + private + FPIDL: PItemIDList; + public + destructor Destroy; override; + procedure Assign(Source: TPersistent); override; + property PIDL: PItemIDList read FPIDL write FPIDL; + end; + + // *************************************************************** + // A ThreadRequest that extracts the shell supplied Icon index of an object via a PIDL + // *************************************************************** + TShellIconThreadRequest = class(TPIDLThreadRequest) + private + FImageIndex: Integer; // [OUT] the image index for the PIDL + FLarge: Boolean; // [IN] Get the large image index + FOpen: Boolean; // [IN] Get the "open" (folder expanded) image index + public + function HandleRequest: Boolean; override; // Extracts the Icon from the PIDL + property ImageIndex: Integer read FImageIndex; + property Large: Boolean read FLarge write FLarge; + property Open: Boolean read FOpen write FOpen; + end; + + // *************************************************************** + // A ThreadRequest that has a callback function instead of a Window Handle to send a message to + // *************************************************************** + TPIDLCallbackThreadRequest = class(TPIDLThreadRequest) + private + FCallbackProc: TNamespaceCallbackProc; + FTargetObject: TObject; + public + procedure Assign(Source: TPersistent); override; + property CallbackProc: TNamespaceCallbackProc read FCallbackProc write FCallbackProc; + property TargetObject: TObject read FTargetObject write FTargetObject; + end; + + // ************************************************************************** + // Easy Thread + // A thread object that does not use a Syncronize type implementation. The + // method of blocking the main thread to service the thread result is ok for + // a long processing thread that is not used often. Extracting Icons for an + // Explorer type listview for instance needs to update the listview very fast + // and very often. In this case it is better to use the Window messaging + // system to post message to the window with the extracted data and allow the + // window to process it when it can. This method is much smoother for the GUI + // but has more challenges to keep it thread safe. A number of syncronization + // objects are defined and created to use for various tasks. + // Use the TCommonThreadManager and its methods to make using TCommonThread easier + // and safer. + // ************************************************************************** + TCommonThread = class + private + FFreeOnTerminate: Boolean; + FHandle: THandle; + FOLEInitialized: Boolean; + FTargetWnd: HWnd; // Window that the message is posted to. It will get a WM_COMMONTHREADNOTIFIER message with the TCommonThreadRequest in LParam + FThreadID: THandle; + FStub: pointer; + FTerminated: Boolean; + FSuspended: Boolean; + FEvent: THandle; + FCriticalSectionInitialized: Boolean; + FCriticalSection: TRTLCriticalSection; + FRefCount: Integer; + FRequestList: TThreadList; + FDirection: TCommonThreadDirection; + FRunning: Boolean; + FRequestListLocked: Boolean; + FTempListLock: TList; + function GetPriority: TThreadPriority; + procedure SetPriority(const Value: TThreadPriority); + procedure SetSuspended(const Value: Boolean); + procedure ExecuteStub; stdcall; + function GetLock: TRTLCriticalSection; + function GetEvent: THandle; + procedure SetDirection(const Value: TCommonThreadDirection); + procedure SetRequestListLocked(const Value: Boolean); + protected + FFinished: Boolean; + procedure AddRequest(Request: TCommonThreadRequest; DoSetEvent: Boolean); + procedure Execute; virtual; abstract; // Called in context of thread + procedure FinalizeThread; virtual; // Called in context of thread + procedure InitializeThread; virtual; // Called in context of thread + + property CriticalSectionInitialized: Boolean read FCriticalSectionInitialized write FCriticalSectionInitialized; + property Event: THandle read GetEvent; + property RequestListLocked: Boolean read FRequestListLocked write SetRequestListLocked; // Don't set/reset this across threads! + property Stub: pointer read FStub write FStub; + property Terminated: Boolean read FTerminated; + public + constructor Create(CreateSuspended: Boolean); virtual; + destructor Destroy; override; + + procedure AddRef; + procedure FlushRequestList; + procedure ForceTerminate; + procedure LockThread; + procedure Release; + procedure Resume; + procedure Terminate; virtual; + procedure TriggerEvent; + procedure UnlockThread; + property Direction: TCommonThreadDirection read FDirection write SetDirection; + property Finished: Boolean read FFinished; + property FreeOnTerminate: Boolean read FFreeOnTerminate write FFreeOnTerminate; + property Handle: THandle read FHandle; + property Lock: TRTLCriticalSection read GetLock; + property OLEInitialized: Boolean read FOLEInitialized; + property Priority: TThreadPriority read GetPriority write SetPriority default tpNormal; + property RefCount: Integer read FRefCount write FRefCount; + property RequestList: TThreadList read FRequestList write FRequestList; + property Running: Boolean read FRunning; + property Suspended: Boolean read FSuspended write SetSuspended; + property TargetWnd: HWnd read FTargetWnd write FTargetWnd; + property ThreadID: THandle read FThreadID; + end; + TCommonBaseThreadClass = class of TCommonThread; + + // ************************************************************************** + // Event Thread + // A decendant of TCommonThread that takes the encapsulation a step further. + // This class defines a thread loop that calls virtual methods that can be + // overridden in a decendent. It makes creating a thread VERY easy and + // very safe. + // ************************************************************************** + TCommonEventThread = class(TCommonThread) + private + FTargetWndNotifyMsg: DWORD; + protected + procedure Execute; override; + public + constructor Create(CreateSuspended: Boolean); override; + destructor Destroy; override; + property TargetWndNotifyMsg: DWORD read FTargetWndNotifyMsg write FTargetWndNotifyMsg; + end; + TCommonEventThreadClass = class of TCommonEventThread; + + // ************************************************************************** + // ShellExecute Thread + // A decendant of TCommonThread that ShellExecuteEx's in a thread + // ************************************************************************** + TCommonShellExecuteThread = class(TCommonThread) + private + FlpClass: WideString; + FlpDirectory: WideString; + FlpFile: WideString; + FlpParameters: WideString; + FlpVerb: WideString; + FPIDL: PItemIDList; + protected + procedure Execute; override; + public + ShellExecuteInfoA: TShellExecuteInfoA; + ShellExecuteInfoW: TShellExecuteInfoW; + + constructor Create(CreateSuspended: Boolean); override; + destructor Destroy; override; + // Need local variable for the strings and PIDLs so they won't get freed on + // us before the thread uses them. + property lpClass: WideString read FlpClass write FlpClass; + property lpDirectory: WideString read FlpDirectory write FlpDirectory; + property lpFile: WideString read FlpFile write FlpFile; + property lpParameters: WideString read FlpParameters write FlpParameters; + property lpVerb: WideString read FlpVerb write FlpVerb; + property PIDL: PItemIDList read FPIDL write FPIDL; + end; + + + // ************************************************************************** + // Callback Event Thread + // ************************************************************************** + TCommonCallbackEventThread = class(TCommonEventThread) + protected + procedure Execute; override; + end; + + // ************************************************************************** + // Thread Manager + // A class the encapsulate the TCommonThread or decendant. The Thread filters + // all requests to a window created in this object for dispatch to the + // desired window and messageID. By accessing the Thread through the methods + // in the class using the thread is simple and safe from race conditions since + // the class handles the syncronization of the data for you. + // Simply register a TWinControl decendent and create a TCommonThreadRequest + // decendant. Make SURE to override the Assign method, the thread must make + // a copy of each object to use to extract the data. + // This copy is what is sent to the registered window, not the original + // that was added to the Request list through AddRequest. + // ************************************************************************** + TCommonThreadManager = class(TComponent) + private + FAClassName: String; + FControlList: TThreadList; + FStub: Pointer; + FFilterWindow: HWND; + FEnabled: Boolean; + + function GetThread: TCommonThread; + function GetFilterWindow: HWND; + function GetRequestCount: Integer; + procedure SetEnabled(const Value: Boolean); + protected + FThread: TCommonThread; + + function FilterWndProc(Wnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; + procedure CreateThreadObject; virtual; + function FindControl(Window: TWinControl; LockedList: TList): Integer; + procedure DispatchRequest(lParam: LPARAM; wParam: WPARAM); virtual; + procedure FreeThread; + procedure InternalUnRegisterControl(Window: TWinControl; LockedControlList: TList); + procedure RegisterFilterWindow; + + property AClassName: String read FAClassName write FAClassName; + property ControlList: TThreadList read FControlList write FControlList; + property FilterWindow: HWND read GetFilterWindow write FFilterWindow; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + procedure AddRequest(Request: TCommonThreadRequest; DoSetEvent: Boolean); + procedure FlushAllMessageCache(Window: TWinControl); + procedure FlushMessageCache(Window: TWinControl; RequestID: Cardinal); + function RegisterControl(Window: TWinControl): Boolean; + procedure UnRegisterAll; + procedure UnRegisterControl(Window: TWinControl); + + property RequestCount: Integer read GetRequestCount; + property Thread: TCommonThread read GetThread; + + published + property Enabled: Boolean read FEnabled write SetEnabled default False; + end; + + // ************************************************************************** + // Callback Thread Manager + // ************************************************************************** + TCallbackThreadManager = class(TCommonThreadManager) + protected + procedure CreateThreadObject; override; + procedure DispatchRequest(lParam: LPARAM; wParam: WPARAM); override; + public + procedure AddRequest(Request: TPIDLCallbackThreadRequest; DoSetEvent: Boolean); reintroduce; + procedure FlushObjectCache(AnObject: TObject); + end; + + +function GlobalThreadManager: TCommonThreadManager; +function GlobalCallbackThreadManager: TCallbackThreadManager; + +implementation + +uses + MPCommonUtilities, MPCommonObjects, MPResources; + +var + PIDLMgr: TCommonPIDLManager; + GlobalThread: TCommonThreadManager; + GlobalCallbackThread: TCallbackThreadManager; + ThreadsAlive: Integer = 0; + ThreadRequestsAlive: Integer = 0; + +function GlobalThreadManager: TCommonThreadManager; +begin + if not Assigned(GlobalThread) then + begin + GlobalThread := TCommonThreadManager.Create(nil); + GlobalThread.Enabled := True; + end; + Result := GlobalThread +end; + +function GlobalCallbackThreadManager: TCallbackThreadManager; +begin + if not Assigned(GlobalCallbackThread) then + begin + GlobalCallbackThread := TCallbackThreadManager.Create(nil); + GlobalCallbackThread.Enabled := True; + end; + Result := GlobalCallbackThread +end; + +{ TCommonThreadRequest } +destructor TCommonThreadRequest.Destroy; +begin + Dec(ThreadRequestsAlive); + inherited Destroy; +end; + + +procedure TCommonThreadRequest.Assign(Source: TPersistent); +var + S: TCommonThreadRequest; +begin + if Source is TCommonThreadRequest then + begin + S := TCommonThreadRequest(Source); + Window := S.Window; + ID := S.ID; + Item := S.Item; + RemainingRequests := S.RemainingRequests; + CallbackWndMessage := S.CallbackWndMessage; + Priority := S.Priority; + Tag := S.Tag + end +end; + +constructor TCommonThreadRequest.Create; +begin + inherited; + FCallbackWndMessage := WM_COMMONTHREADCALLBACK; + Priority := 50; + Inc(ThreadRequestsAlive) +end; + +procedure TCommonThreadRequest.Prioritize(RequestList: TList); +begin + // Override to allow control of the order the thread requests are sorted +end; + +procedure TCommonThreadRequest.Release; +begin + InterlockedDecrement(FRefCount); + if RefCount <= 0 then + begin + RefCount := 0; + Free + end +end; + +{ TEasyPIDLThreadRequest } + +destructor TPIDLThreadRequest.Destroy; +begin + PIDLMgr.FreePIDL(PIDL); + inherited Destroy; +end; + +procedure TPIDLThreadRequest.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TPIDLThreadRequest then + PIDL := PIDLMgr.CopyPIDL(TPIDLThreadRequest( Source).PIDL); +end; + +{ TEasyIconThreadRequest } + +function TShellIconThreadRequest.HandleRequest: Boolean; + + function GetIconByIShellIcon(PIDL: PItemIDList; var Index: integer): Boolean; + var + Flags: Longword; + OldCB: Word; + Old_ID: PItemIDList; + Desktop, Folder: IShellFolder; + ShellIcon: IShellIcon; + begin + Result := False; + PIDLMgr.StripLastID(PIDL, OldCB, Old_ID); + try + SHGetDesktopFolder(Desktop); + Desktop.BindToObject(PIDL, nil, IShellFolder, Pointer(Folder)); + Old_ID.mkid.cb := OldCB; + if Assigned(Folder) then + if Folder.QueryInterface(IShellIcon, ShellIcon) = S_OK then + begin + Flags := GIL_FORSHELL; + if Open then + Flags := Flags or GIL_OPENICON; + Result := ShellIcon.GetIconOf(Old_ID, Flags, Index) = NOERROR + end + finally + Old_ID.mkid.cb := OldCB + end + end; + + procedure GetIconBySHGetFileInfo(APIDL: PItemIDList; var Index: Integer); + var + Flags: integer; + Info: TSHFILEINFO; + begin + Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SHELLICONSIZE; + if Large then + Flags := Flags or SHGFI_LARGEICON + else + Flags := Flags or SHGFI_SMALLICON; + + if Open then + Flags := Flags or SHGFI_OPENICON; + + if SHGetFileInfo(PChar(APIDL), 0, Info, SizeOf(Info), Flags) <> 0 then + Index := Info.iIcon + else + Index := 0 + end; + +begin + Result := GetIconByIShellIcon(PIDL, FImageIndex); + if not Result then + GetIconBySHGetFileInfo(PIDL, FImageIndex); + Result := True; +end; + +{ TPIDLCallbackThreadRequest } + +procedure TPIDLCallbackThreadRequest.Assign(Source: TPersistent); +begin + inherited Assign(Source); + CallbackProc := (Source as TPIDLCallbackThreadRequest).CallbackProc; + TargetObject := (Source as TPIDLCallbackThreadRequest).TargetObject +end; + +{ TCommonThread } + +procedure TCommonThread.AddRef; +begin + InterlockedIncrement(FRefCount); +end; + +procedure TCommonThread.AddRequest(Request: TCommonThreadRequest; DoSetEvent: Boolean); +var + List: TList; +begin + List := RequestList.LockList; + try + List.Add(Request); + if DoSetEvent then + TriggerEvent; + finally + RequestList.UnlockList + end +end; + +constructor TCommonThread.Create(CreateSuspended: Boolean); +var + Flags: DWORD; +begin + Inc(ThreadsAlive); + IsMultiThread := True; + Direction := etdFirstInLastOut; + RequestList := TThreadList.Create; + Stub := CreateStub(Self, @TCommonThread.ExecuteStub); + Flags := 0; + if CreateSuspended then + begin + Flags := CREATE_SUSPENDED; + FSuspended := True + end; + FHandle := CreateThread(nil, 0, Stub, nil, Flags, FThreadID); +end; + +destructor TCommonThread.Destroy; +var + i: Integer; + List: TList; +begin + Assert(Finished, 'The Thread must be terminated before destroying the TCommonThread object'); + DisposeStub(Stub); + Stub := nil; + if Handle <> 0 then + CloseHandle(Handle); + FHandle := 0; + if Event <> 0 then + CloseHandle(Event); + FEvent := 0; + if CriticalSectionInitialized then + DeleteCriticalSection(FCriticalSection); + List := RequestList.LockList; + try + for i := 0 to List.Count - 1 do + TObject(List[i]).Free; + List.Count := 0; + finally + RequestList.UnlockList; + end; + FreeAndNil(FRequestList); + FRequestList := nil; + Dec(ThreadsAlive); + inherited; +end; + +procedure TCommonThread.ExecuteStub; +// Called in the context of the thread +{$IFDEF DEBUG_THREAD} +var + ThreadNameInfo: TThreadNameInfo; +{$ENDIF} +begin + {$IFDEF DEBUG_THREAD} + if IsWinNT then + begin + // Set the name for the thread to debug it with the Thread View panel. + // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxtsksettingthreadname.asp + // http://bdn.borland.com/article/0,1410,29800,00.html + ThreadNameInfo.FType := $1000; + ThreadNameInfo.FName := PChar(string(ClassName)); + ThreadNameInfo.FThreadID := $FFFFFFFF; + ThreadNameInfo.FFlags := 0; + try + RaiseException($406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo); + except + end; + end; + {$ENDIF} + + try + FRunning := True; + InitializeThread; + try + Execute + except + end + finally + FinalizeThread; + {$IFDEF DRAG_OUT_THREAD_SHUTDOWN} + Sleep(3000); + {$ENDIF} + if FreeOnTerminate then + begin + // If FreeOnTerminate then the user can't expect to look at these + // variables since they can't be sure when the object will be freed + FRunning := False; + FFinished := True; + FHandle := 0; + Free; + ExitThread(0); + end else + begin + // Set these here or there will be a race condtion as to when the + // main thread frees the object and we still need to access + // local variables (like FreeOnTerminate) + FRunning := False; + FFinished := True; + FHandle := 0; + ExitThread(0); + end + end +end; + +function TCommonThread.GetEvent: THandle; +begin + if FEvent = 0 then + FEvent := CreateEvent(nil, True, False, nil); + Result := FEvent; +end; + +function TCommonThread.GetLock: TRTLCriticalSection; +begin + if not CriticalSectionInitialized then + begin + InitializeCriticalSection(FCriticalSection); + CriticalSectionInitialized := True + end; + Result := FCriticalSection +end; + +function TCommonThread.GetPriority: TThreadPriority; +var + P: Integer; +begin + Result := tpNormal; + P := GetThreadPriority(FHandle); + case P of + THREAD_PRIORITY_IDLE: Result := tpIdle; + THREAD_PRIORITY_LOWEST: Result := tpLowest; + THREAD_PRIORITY_BELOW_NORMAL: Result := tpLower; + THREAD_PRIORITY_NORMAL: Result := tpNormal; + THREAD_PRIORITY_HIGHEST: Result := tpHigher; + THREAD_PRIORITY_ABOVE_NORMAL: Result := tpHighest; + THREAD_PRIORITY_TIME_CRITICAL: Result := tpTimeCritical; + end +end; + +procedure TCommonThread.FinalizeThread; +begin + try + if OLEInitialized then + OLEUnInitialize + except + end +end; + +procedure TCommonThread.FlushRequestList; +var + List: TList; + i: Integer; + Request: TObject; +begin + List := RequestList.LockList; + try + for i := List.Count - 1 downto 0 do + begin + Request := TObject(TObject(List[i])); + List.Delete(i); + Request.Free; + end + finally + RequestList.UnlockList + end +end; + +procedure TCommonThread.InitializeThread; +begin + FOLEInitialized := Succeeded( OLEInitialize(nil)) +end; + +procedure TCommonThread.LockThread; +begin + if not CriticalSectionInitialized then + Lock; + EnterCriticalSection(FCriticalSection) +end; + +procedure TCommonThread.Release; +begin + InterlockedDecrement(FRefCount); +end; + +procedure TCommonThread.Resume; +begin + Suspended := False +end; + +procedure TCommonThread.SetDirection(const Value: TCommonThreadDirection); +begin + FDirection := Value; +end; + +procedure TCommonThread.SetPriority(const Value: TThreadPriority); +begin + case Value of + tpIdle : SetThreadPriority(Handle, THREAD_PRIORITY_IDLE); + tpLowest : SetThreadPriority(Handle, THREAD_PRIORITY_LOWEST); + tpLower : SetThreadPriority(Handle, THREAD_PRIORITY_BELOW_NORMAL); + tpNormal : SetThreadPriority(Handle, THREAD_PRIORITY_NORMAL); + tpHigher : SetThreadPriority(Handle, THREAD_PRIORITY_HIGHEST); + tpHighest : SetThreadPriority(Handle, THREAD_PRIORITY_ABOVE_NORMAL); + tpTimeCritical: SetThreadPriority (Handle, THREAD_PRIORITY_TIME_CRITICAL); + end +end; + +procedure TCommonThread.SetRequestListLocked(const Value: Boolean); +begin + if FRequestListLocked <> Value then + begin + if Value then + FTempListLock := RequestList.LockList + else + RequestList.UnlockList; + FRequestListLocked := Value; + end +end; + +procedure TCommonThread.SetSuspended(const Value: Boolean); +begin + if FSuspended <> Value then + begin + if Handle <> 0 then + begin + if Value then + SuspendThread(FHandle) + else + ResumeThread(FHandle); + FSuspended := Value; + end + end +end; + +procedure TCommonThread.Terminate; +begin + Suspended := False; + FTerminated := True; + TriggerEvent; +end; + +procedure TCommonThread.TriggerEvent; +begin + SetEvent(Event); +end; + +procedure TCommonThread.ForceTerminate; +var + Temp: THandle; +begin + Temp := Handle; + if Temp <> 0 then + begin + FHandle := 0; + FRunning := False; + FFinished := True; + TerminateThread(Temp, 0); + end +end; + +procedure TCommonThread.UnlockThread; +begin + if CriticalSectionInitialized then + LeaveCriticalSection(FCriticalSection) +end; + +{ TCommonEventThread } + +function PrioritizeSort(Item1, Item2: Pointer): Integer; +begin + Result := TCommonThreadRequest(Item2).Priority - TCommonThreadRequest(Item1).Priority +end; + +constructor TCommonEventThread.Create(CreateSuspended: Boolean); +begin + inherited Create(CreateSuspended); + TargetWndNotifyMsg := WM_COMMONTHREADNOTIFIER; // Default for the internal dispatch Window + // Create the event + Event; +end; + +destructor TCommonEventThread.Destroy; +begin + inherited Destroy; +end; + +procedure TCommonEventThread.Execute; +var + ARequestCopy, OriginalRequest: TCommonThreadRequest; + List: TList; + WorkingIndex, SafetyValve: Integer; + LoopCount: Cardinal; + RequestClassType: TCommonThreadRequestClass; +begin + LoopCount := 0; + while not Terminated and (TargetWnd <> 0) do + try + WaitForSingleObject(Event, INFINITE); + if not Terminated then + begin + // Small breather so thread does not steal too much processor time + Sleep(0); + // Take the Request from the list and make a copy of it to work with. + // This is in case a control purges the list of requests, this way the + // thread is working on a copy and when it it ready it sees if the original + // is still in the list. If not it dumps it. + List := RequestList.LockList; + try + // Only do this every so many extracts. It can be rather slow with lots of items + if LoopCount mod 10 = 0 then + List.Sort(PrioritizeSort); + + ARequestCopy := nil; + OriginalRequest := nil; + + if List.Count > 0 then + begin + if Direction = etdFirstInFirstOut then + WorkingIndex := 0 + else + WorkingIndex := List.Count - 1; + // Make a copy of the pointer to the original Request + OriginalRequest := TCommonThreadRequest(List[WorkingIndex]); + // Need to make a copy of the Request. This is because while we are + // extracting the data for the Request the main thread may do something + // to the list that renders the object in the list invalid. By working + // with a copy we do not worry about it. We will later check to make + // sure that the object on the list is still valid before dispatching the + // results to the main thread + + RequestClassType := TCommonThreadRequestClass(OriginalRequest.ClassType); + ARequestCopy := RequestClassType.Create; + ARequestCopy.Assign(OriginalRequest); + end else + begin + WorkingIndex := -1; + // Reset the event to enter the WaitForSingleObject method again + ResetEvent(FEvent) + end + finally + RequestList.UnlockList + end; + + if Assigned(ARequestCopy) then + begin + ARequestCopy.FThread := Self; + // Extract the data for the Request + if ARequestCopy.HandleRequest then + begin + List := RequestList.LockList; + try + // Check to see if the WorkingIndex is still valid in the list. + // If not the item will be left if the queue and it will have to be done again + if (List.Count > 0) and (WorkingIndex < List.Count) then + begin + // Now make sure the actual object is still in the list in the same + // position. If not then we will leave it in the list and extract it + // again. + if (OriginalRequest = TCommonThreadRequest(List[WorkingIndex])) then + begin + // It still exists so we can delete it as we will dispatch it + List.Delete(WorkingIndex); + ARequestCopy.RemainingRequests := List.Count; + // Try to Post it to the main thread through the ThreadManagers window + SafetyValve := 0; + while not PostMessage(TargetWnd, TargetWndNotifyMsg, 0, + LPARAM(ARequestCopy)) and (SafetyValve < COMMONTHREADSAFETYVALVE) do + begin + Inc(SafetyValve); + Sleep(10); + end; + + // If failed (VERY, VERY, VERY unlikely) then add it back to the list + // and try it again later + if SafetyValve >= COMMONTHREADSAFETYVALVE then + begin + List.Add(OriginalRequest); + FreeAndNil(ARequestCopy) + end else + FreeAndNil(OriginalRequest); + end else + FreeAndNil(ARequestCopy) + end else + FreeAndNil(ARequestCopy) + finally + RequestList.UnlockList + end + end else + FreeAndNil(ARequestCopy) + end; + Inc(LoopCount) + end + except + end +end; + +{ TCommonThreadManager } + +procedure TCommonThreadManager.AddRequest(Request: TCommonThreadRequest; DoSetEvent: Boolean); +var + DoAdd: Boolean; +begin + if Assigned(Request) and Enabled then + begin + DoAdd := False; + if (Request is TPIDLCallbackThreadRequest) then + DoAdd := Assigned( TPIDLCallbackThreadRequest(Request).CallbackProc) and + Assigned(TPIDLCallbackThreadRequest(Request).TargetObject); + if not DoAdd then + DoAdd := (FindControl(Request.Window, nil) > -1) or Assigned(Request.Window); + Assert(DoAdd, STR_UNREGISTEREDCONTROL); + if DoAdd and Assigned(Thread) then + Thread.AddRequest(Request, DoSetEvent); + end else + Request.Free +end; + +constructor TCommonThreadManager.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + ControlList := TThreadList.Create; + AClassName := COMMONTHREADFILTERWNDCLASS + IntToStr( Integer( Self)) +end; + +procedure TCommonThreadManager.CreateThreadObject; +begin + FThread := TCommonEventThread.Create(True); + FThread.TargetWnd := FilterWindow; + Thread.Resume; +end; + +destructor TCommonThreadManager.Destroy; +begin + UnRegisterAll; + FlushMessageCache(nil, TID_START); + // Thread Freed with last client is unregistered + // Safe to destroy the window now + if FFilterWindow <> 0 then + DestroyWindow(FFilterWindow); + FFilterWindow := 0; + // Unregister the window class. If another thread is also using this class + // windows will not unregister it until the last thread has destroyed any windows + // based on this class + if AClassName <> '' then + Windows.UnregisterClass(PChar(AClassName), hInstance); + // Free the stub for the window procedure + if Assigned(FStub) then + DisposeStub(FStub); + FStub := nil; + FreeAndNil(FControlList); + FreeThread; + inherited; +end; + +function TCommonThreadManager.FilterWndProc(Wnd: HWND; uMsg: UINT; + wParam: WPARAM; lParam: LPARAM): LRESULT; +begin + Result := 0; + case uMsg of + WM_NCCREATE: Result := 1; + WM_COMMONTHREADNOTIFIER: DispatchRequest(lParam, wParam); + else + Result := DefWindowProc(Wnd, uMsg, wParam, lParam); + end +end; + +function TCommonThreadManager.FindControl(Window: TWinControl; LockedList: TList): Integer; +// +// Loops the Window/MessageID pairs in the ControlList looking for a match +// +var + List: TList; + I: Integer; + Found: Boolean; +begin + Result := -1; + if not Assigned(LockedList) then + List := ControlList.LockList + else + List := LockedList; + + try + I := 0; + Found := False; + while (I < List.Count) and not Found do + begin + if (Window = TWinControl(List[I])) then + begin + Result := I; + Found := True + end; + Inc(i); + end + finally + if not Assigned(LockedList) then + ControlList.UnlockList + end +end; + +procedure TCommonThreadManager.DispatchRequest(lParam: LPARAM; wParam: WPARAM); +var + i: Integer; + RegList: TList; + Request: TCommonThreadRequest; + RequestList: TList; +begin + Request := TCommonThreadRequest(lParam); + try + RequestList := Thread.RequestList.LockList; + try + // Allow the Request to prioritize the list if it wants to + Request.Prioritize(RequestList); + + if not Assigned(Request.Window) then + begin + RegList := ControlList.LockList; + try + Request.RefCount := 1; + for i := 0 to RegList.Count - 1 do + begin + if TWinControl(RegList[i]).HandleAllocated then + Request.RefCount := RegList.Count + 1; + end; + // It is a broadcast message + wParam := Request.ID; + for i := 0 to RegList.Count - 1 do + begin + if TWinControl(RegList[i]).HandleAllocated then + SendMessage(TWinControl(RegList[i]).Handle, Request.CallbackWndMessage, wParam, lParam); + end + finally + ControlList.UnlockList + end + end + finally + Thread.RequestList.UnLockList; + end; + + // Not a broadcast message + if Assigned(Request.Window) then + begin + Request.RefCount := 1; + if Request.Window.HandleAllocated then + begin + Request.RefCount := Request.RefCount + 1; + wParam := Request.ID; + SendMessage(Request.Window.Handle, Request.CallbackWndMessage, wParam, lParam); + end + end; + finally + Request.Release + end; +end; + +procedure TCommonThreadManager.FlushAllMessageCache(Window: TWinControl); +// Flushes all the message cache +begin + FlushMessageCache(Window, TID_START); +end; + +procedure TCommonThreadManager.FlushMessageCache(Window: TWinControl; RequestID: Cardinal); +// First locks the thread by locking its RequestList. This stops the thread +// from accessing a new request. It then flushes the Windows message cache +// of pending messages matching the RequestId. +// Next any pending requests in the Threads RequestList matching the RequestID +// are removed and freed. +var + Msg: TMsg; + List: TList; + I: Integer; + R: TCommonThreadRequest; + RepostQuitMsg: Boolean; + QuitMsgExitCode: Integer; +begin + List := nil; + if Enabled then + begin + RepostQuitMsg := False; + QuitMsgExitCode := 0; + // If the thread is not created yet then there is no point in flushing it + if Assigned(FThread) then + List := Thread.RequestList.LockList; + try + // Remove the requests in the hidden dispatch message cache + // I have seen PeekMessage return true and return the WM_QUIT message, this + // strips the queue of the message to shut down the app! Don't strip it out + // until we check to see if it is the right message + if PeekMessage(Msg, FilterWindow, WM_COMMONTHREADNOTIFIER, WM_COMMONTHREADNOTIFIER, PM_REMOVE) then + begin + if Msg.Message = WM_QUIT then + begin + QuitMsgExitCode := Msg.wParam; + RepostQuitMsg := True; + end else + begin + // If the message is for the window to flush then free it, else dispatch it normally + R := TCommonThreadRequest(Msg.lParam); + if (R.Window = Window) and ((RequestID = TID_START) or (R.ID = RequestID)) then + R.Free + else begin + if R.Window.HandleAllocated then + SendMessage(R.Window.Handle, R.CallbackWndMessage, Msg.wParam, Msg.lParam) + end + end + end; + + if Assigned(Window) then + begin + // Remove the requests in the windows cache + if Window.HandleAllocated then + begin + // I have seen PeekMessage return true and return the WM_QUIT message, this + // strips the queue of the message to shut down the app! Don't strip it out + // until we check to see if it is the right message + if PeekMessage(Msg, Window.Handle, WM_COMMONTHREADCALLBACK, WM_COMMONTHREADCALLBACK, PM_REMOVE) then + begin + if Msg.Message = WM_QUIT then + begin + QuitMsgExitCode := Msg.wParam; + RepostQuitMsg := True; + end else + begin + // If the message is for the window to flush then free it + R := TCommonThreadRequest(Msg.lParam); + if (R.Window = Window) and ((RequestID = TID_START) or (R.ID = RequestID)) then + R.Free; + end + end; + if RepostQuitMsg then + PostQuitMessage(QuitMsgExitCode); + end + end; + + if Assigned(List) then + begin + // Now remove any waiting requests from the list in the thread + for I := List.Count - 1 downto 0 do + begin + R := TCommonThreadRequest(List[I]); + if (Window = nil) or ((R.Window = Window) and ((RequestID = TID_START) or (R.ID = RequestID))) then + begin + R.Free; + List.Delete(I); + end + end; + end + finally + if Assigned(FThread) then + Thread.RequestList.UnlockList + end; + end; +end; + +function TCommonThreadManager.GetFilterWindow: HWND; +begin + if FFilterWindow = 0 then + begin + RegisterFilterWindow; + end; + Result := FFilterWindow; +end; + +function TCommonThreadManager.GetRequestCount: Integer; +var + List: TList; +begin + if Enabled then + begin + List := Thread.RequestList.LockList; + try + Result := List.Count + finally + Thread.RequestList.UnlockList + end + end else + Result := 0 +end; + +function TCommonThreadManager.GetThread: TCommonThread; +begin + if not Assigned(FThread) then + CreateThreadObject; + Result := FThread; +end; + +procedure TCommonThreadManager.FreeThread; +var + i: Integer; +begin + if Assigned(FThread) then + begin + try + i := 0; + // Signal the thread the terminate + FThread.Terminate; + while not FThread.Finished do + begin + Sleep(THREAD_SHUTDOWN_WAIT_DELAY); + if i > FORCE_KILL_THREAD_COUNT then + begin + FThread.ForceTerminate; + Break + end; + Inc(i) + end; + finally + // Done with the thread + FreeAndNil(FThread); + end + end +end; + +procedure TCommonThreadManager.InternalUnRegisterControl(Window: TWinControl; LockedControlList: TList); +// +// Unregisters the Window/MessageID pair +// +var + List: TList; + I: Integer; +begin + if not Assigned(LockedControlList) then + List := ControlList.LockList + else + List := LockedControlList; + + try + if Enabled then + begin + // Lock the Thread from accessing its Request List until we are finished + // If the thread is not created yet there is no point creating it + if Assigned(FThread) then + Thread.RequestListLocked := True; + try + I := FindControl(Window, List); + if I > -1 then + begin + FlushAllMessageCache(Window); + List.Delete(I); + end; + finally + if Assigned(FThread) then + Thread.RequestListLocked := False; + end + end else + begin + I := FindControl(Window, List); + if I > -1 then + begin + FlushAllMessageCache(Window); + List.Delete(i); + end + end + finally + if not Assigned(LockedControlList) then + ControlList.UnlockList + end + +end; + +function TCommonThreadManager.RegisterControl(Window: TWinControl): Boolean; +var + List: TList; +begin + RegisterFilterWindow; + List := ControlList.LockList; + try + Result := List.Add(Window) > -1 + finally + ControlList.UnlockList + end +end; + +procedure TCommonThreadManager.RegisterFilterWindow; +var + ClassInfo: TWndClass; +begin + if FFilterWindow = 0 then + begin + if not GetClassInfo(hInstance, PChar( AClassName), ClassInfo) then + begin + if not Assigned(FStub) then + FStub := CreateStub(Self, @TCommonThreadManager.FilterWndProc); + ClassInfo.style := 0; + ClassInfo.lpfnWndProc := FStub; + ClassInfo.cbClsExtra := 0; + ClassInfo.cbWndExtra := 0; + ClassInfo.hInstance := hInstance; + ClassInfo.hIcon := 0; + ClassInfo.hCursor := 0; + ClassInfo.hbrBackground := 0; + ClassInfo.lpszMenuName := ''; + ClassInfo.lpszClassName := PChar( AClassName); + Windows.RegisterClass(ClassInfo); + end; + FFilterWindow := CreateWindow(PChar( AClassName), '', 0, 0, 0, 0, 0, 0, 0, hInstance, nil); + end +end; + +procedure TCommonThreadManager.SetEnabled(const Value: Boolean); +begin + if Value <> FEnabled then + begin + if not (csDesigning in ComponentState) then + begin + if not Value then + begin + if Assigned(Thread) then + begin + if not Thread.Terminated then + begin + Thread.Terminate; + while not Thread.Finished do + Sleep(200); + end; + FreeThread; + end + end + end; + FEnabled := Value + end +end; + +procedure TCommonThreadManager.UnRegisterAll; +var + List: TList; + i: Integer; +begin + List := ControlList.LockList; + try + for i := List.Count - 1 downto 0 do + InternalUnRegisterControl(TWinControl(List[i]), List); + finally + ControlList.UnlockList + end +end; + +procedure TCommonThreadManager.UnRegisterControl(Window: TWinControl); +var + List: TList; +begin + List := ControlList.LockList; + try + InternalUnRegisterControl(Window, List) + finally + ControlList.UnlockList; + end; +end; + +procedure TCallbackThreadManager.AddRequest(Request: TPIDLCallbackThreadRequest; + DoSetEvent: Boolean); +begin + inherited AddRequest(Request, DoSetEvent) +end; + +procedure TCallbackThreadManager.CreateThreadObject; +begin + FThread := TCommonCallbackEventThread.Create(True); + FThread.TargetWnd := FilterWindow; + Thread.Resume; + RegisterFilterWindow; +end; + +procedure TCallbackThreadManager.DispatchRequest(lParam: LPARAM; wParam: WPARAM); +var + RequestList: TList; + Request: TPIDLCallbackThreadRequest; +begin + Request := TPIDLCallbackThreadRequest(lParam); + try + Request.FRefCount := 1; + RequestList := Thread.RequestList.LockList; + try + // Allow the Request to prioritize the list if it wants to + Request.Prioritize(RequestList); + if Assigned(Request.CallbackProc) then + begin + Request.FRefCount := 2; + Request.CallbackProc(Request) + end + finally + Thread.RequestList.UnLockList; + end; + finally + Request.Release + end +end; + +procedure TCallbackThreadManager.FlushObjectCache(AnObject: TObject); +var + List: TList; + i: Integer; +begin + if Assigned(Thread) then + begin + List := Thread.RequestList.LockList; + try + for i := 0 to List.Count - 1 do + begin + if TPIDLCallbackThreadRequest( List[i]).TargetObject = AnObject then + begin + List.Delete(i); + Exit; + end + end; + finally + Thread.RequestList.UnlockList + end + end +end; + +{ TCommonCallbackEventThread } +procedure TCommonCallbackEventThread.Execute; +begin + inherited Execute; +end; + +{ TCommonShellExecuteThread } +constructor TCommonShellExecuteThread.Create(CreateSuspended: Boolean); +begin + inherited; + FreeOnTerminate := True; + FillChar(ShellExecuteInfoW, SizeOf(ShellExecuteInfoW), #0); + FillChar(ShellExecuteInfoA, SizeOf(ShellExecuteInfoA), #0); +end; + +destructor TCommonShellExecuteThread.Destroy; +begin + PIDLMgr.FreePIDL(FPIDL); + inherited Destroy; +end; + +procedure TCommonShellExecuteThread.Execute; +begin + if IsUnicode then + begin + if lpClass <> '' then + ShellExecuteInfoW.lpClass := PWideChar(lpClass); + if lpDirectory <> '' then + ShellExecuteInfoW.lpDirectory := PWideChar(lpDirectory); + if lpFile <> '' then + ShellExecuteInfoW.lpFile := PWideChar(lpFile); + if lpParameters <> '' then + ShellExecuteInfoW.lpParameters := PWideChar(lpParameters); + if lpVerb <> '' then + ShellExecuteInfoW.lpVerb := PWideChar(lpVerb); + ShellExecuteInfoW.lpIDList := PIDL; + ShellExecuteExW_MP(@ShellExecuteInfoW); + end else + begin + if lpClass <> '' then + ShellExecuteInfoA.lpClass := PChar(string( lpClass)); + if lpDirectory <> '' then + ShellExecuteInfoA.lpDirectory := PChar(string( lpDirectory)); + if lpFile <> '' then + ShellExecuteInfoA.lpFile := PChar(string( lpFile)); + if lpParameters <> '' then + ShellExecuteInfoA.lpParameters := PChar(string( lpParameters)); + if lpVerb <> '' then + ShellExecuteInfoA.lpVerb := PChar(string( lpVerb)); + ShellExecuteInfoA.lpIDList := PIDL; + ShellExecuteExA(@ShellExecuteInfoA); + end +end; + +initialization + IsMultiThread := True; + PIDLMgr := TCommonPIDLManager.Create; + +finalization + FreeAndNil(GlobalThread); + FreeAndNil(GlobalCallbackThread); + FreeAndNil(PIDLMgr); + +end. diff --git a/official/1.7.0/Common Library/Source/Options.inc b/official/1.7.0/Common Library/Source/Options.inc new file mode 100644 index 0000000..16949ae --- /dev/null +++ b/official/1.7.0/Common Library/Source/Options.inc @@ -0,0 +1,15 @@ +{$I Compilers.inc} + +{$IFDEF COMPILER_7_UP} + {$DEFINE USETHEMES} + {$UNDEF JCL_THEME} +{$ENDIF} + +{$IFDEF JCL_THEME} + {$DEFINE USETHEMES} +{$ENDIF} + +// ----------------------------------------------------------------------------- +// Use unicode-aware inplace editors. This implementation uses Troy Wolbrink's +// TNT controls, which can be found at: www.tntware.com +{.$DEFINE TNTSUPPORT} diff --git a/official/1.7.0/Common Library/unins000.dat b/official/1.7.0/Common Library/unins000.dat new file mode 100644 index 0000000000000000000000000000000000000000..2cd7a3122516e88950114b0adb05a0ff868a9430 GIT binary patch literal 29097 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 WwzlSWo&a9`8+d^~#P@7s=YIhv9=MAD literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/unins000.exe b/official/1.7.0/Common Library/unins000.exe new file mode 100644 index 0000000000000000000000000000000000000000..ff8c8ed3802b059e0b95ed1801784f09f0e42a9d GIT binary patch literal 683832 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%0AIUr%0ub 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

QUl&SNLJwlDcEr{j3 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1029 +CodePage=1250 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=1 +Item0=..\..\Source;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=2 +Item0=$(BCB)\Projects\Lib;$(BCB)\Projects\Bpl;..\..\Source;$(BCB)\lib\obj;$(BCB)\lib;M:\CPPprojs\CBuilder\Mustangpeak\EasyListview\Resources +Item1=$(BCB)\Projects\Lib;$(BCB)\Projects\Bpl;..\..\Source;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=2 +Item0=_DEBUG;NO_WIN32_LEAN_AND_MEAN +Item1=_DEBUG + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.cpp new file mode 100644 index 0000000..87d53a8 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USERES("DemoBCB5.res"); +USEFORM("Unit1.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.res b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/DemoBCB5.res new file mode 100644 index 0000000000000000000000000000000000000000..64958adfd10926e14cdc47a1d70bbc16022e8e13 GIT binary patch literal 876 zcmb7@u}Z{15QhI;BI)!BdsABa1}ZM>im0z*aj<2kSh$4~@;I@~qgYy6UU9Jgn{09k z9*C3tnVEbuv&+H)Kt+Wxh~dJ%RwK_@ll5%9J}bteYX%i{M`cLA*>lkw_?N-L{2_Q;jmZX71ABWFJLvwq3dlCyrn<9uyq z{c*lb^POYA!I2xMoG?%Ocg`!~8JB_>{Q)jV66q-#_SItr_7WyKBbcXFQ_Z(R*@j^Y|m43AOy@ +#pragma hdrstop + +#include "Unit1.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "EasyListview" +#pragma link "EasyLVCommonObjects" +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + /*TEasyItem *item=*/EasyListview1->Items->AddVirtual(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::EasyListview1ItemGetCaption( + TCustomEasyListview *Sender, TEasyItem *Item, int Column, + WideString &Caption) +{ + Caption="Hello World"; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.dfm new file mode 100644 index 0000000..55e4bee --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.dfm @@ -0,0 +1,28 @@ +object Form1: TForm1 + Left = 502 + Top = 475 + Width = 583 + Height = 386 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object EasyListview1: TEasyListview + Left = 8 + Top = 8 + Width = 561 + Height = 337 + UseDockManager = False + Selection.MouseButtonSelRect = [embLeft, embRight] + TabOrder = 0 + View = elsIcon + OnItemGetCaption = EasyListview1ItemGetCaption + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.h b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.h new file mode 100644 index 0000000..a6cbc12 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB5/Unit1.h @@ -0,0 +1,28 @@ +//--------------------------------------------------------------------------- + +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include "EasyListview.hpp" +#include "EasyLVCommonObjects.hpp" +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TEasyListview *EasyListview1; + void __fastcall FormCreate(TObject *Sender); + void __fastcall EasyListview1ItemGetCaption( + TCustomEasyListview *Sender, TEasyItem *Item, int Column, + WideString &Caption); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.bpr b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.bpr new file mode 100644 index 0000000..c3379c1 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.bpr @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1029 +CodePage=1250 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.cpp new file mode 100644 index 0000000..7ae2369 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.cpp @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USEFORM("Unit1.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.res b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/DemoBCB6.res new file mode 100644 index 0000000000000000000000000000000000000000..64958adfd10926e14cdc47a1d70bbc16022e8e13 GIT binary patch literal 876 zcmb7@u}Z{15QhI;BI)!BdsABa1}ZM>im0z*aj<2kSh$4~@;I@~qgYy6UU9Jgn{09k z9*C3tnVEbuv&+H)Kt+Wxh~dJ%RwK_@ll5%9J}bteYX%i{M`cLA*>lkw_?N-L{2_Q;jmZX71ABWFJLvwq3dlCyrn<9uyq z{c*lb^POYA!I2xMoG?%Ocg`!~8JB_>{Q)jV66q-#_SItr_7WyKBbcXFQ_Z(R*@j^Y|m43AOy@ +#pragma hdrstop + +#include "Unit1.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "EasyListview" +#pragma link "EasyLVCommonObjects" +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + /*TEasyItem *item=*/EasyListview1->Items->AddVirtual(NULL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::EasyListview1ItemGetCaption( + TCustomEasyListview *Sender, TEasyItem *Item, int Column, + WideString &Caption) +{ + Caption="Hello World"; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.dfm new file mode 100644 index 0000000..c53b0d8 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.dfm @@ -0,0 +1,28 @@ +object Form1: TForm1 + Left = 296 + Top = 718 + Width = 193 + Height = 163 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object EasyListview1: TEasyListview + Left = 8 + Top = 8 + Width = 169 + Height = 113 + UseDockManager = False + Selection.MouseButtonSelRect = [embLeft, embRight] + TabOrder = 0 + View = elsIcon + OnItemGetCaption = EasyListview1ItemGetCaption + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.h b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.h new file mode 100644 index 0000000..a6cbc12 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/Basic/Unit1.h @@ -0,0 +1,28 @@ +//--------------------------------------------------------------------------- + +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include "EasyListview.hpp" +#include "EasyLVCommonObjects.hpp" +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TEasyListview *EasyListview1; + void __fastcall FormCreate(TObject *Sender); + void __fastcall EasyListview1ItemGetCaption( + TCustomEasyListview *Sender, TEasyItem *Item, int Column, + WideString &Caption); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.bpr b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.bpr new file mode 100644 index 0000000..870b9b5 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.bpr @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Excluded Packages] +c:\progra~1\borland\cbuild~1\Projects\Bpl\MPCommonLibC6D.bpl=Mustang Peak Common Library DesignTime Package + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.cpp new file mode 100644 index 0000000..a7a958e --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.cpp @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("Unit1.cpp", Form1); +USEFORM("Unit2.cpp", EasyTaskPanelForm2); /* TEasyTaskPanelForm: File Type */ +USEFORM("Unit3.cpp", EasyTaskPanelForm3); /* TEasyTaskPanelForm: File Type */ +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->CreateForm(__classid(TEasyTaskPanelForm2), &EasyTaskPanelForm2); + Application->CreateForm(__classid(TEasyTaskPanelForm3), &EasyTaskPanelForm3); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + catch (...) + { + try + { + throw Exception(""); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.res b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/TaskPanelProject.res new file mode 100644 index 0000000000000000000000000000000000000000..e468bf918a523af7a3091b3eec019fa7b1c1693c GIT binary patch literal 876 zcmb_bF;2uV5Zu5uH0X-!NlA%xEfPT&DWU*=!4q&17bzp%{pX4_DNahW&!C{N_=1_S z(;tv z|In#nuj{navMjJhZPaM_QfNJD4x+|BdQI?CM=$p}-Rz^@qE3JH8vXRJG5P7?`N>Z` z^;5UnYGuEjugCL0h&O2V;=F@MIaK@b1)ytaHG_$|4Ry9gjf8ce7r;f$G$71Q;+N=W zkSqKfCkk>9V-oqZ{(-ldmnrWs9vrd4up7|(OL>%gd5|Y?BhQEl(|f_AGs*KsxD~ub GnS25s111yz literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.cpp new file mode 100644 index 0000000..acf87c7 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.cpp @@ -0,0 +1,38 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "Unit1.h" +#include "Unit2.h" +#include "Unit3.h" + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "EasyListview" +#pragma link "MPCommonObjects" +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::EasyTaskPanelBand1GetTaskPanel( + TCustomEasyListview *Sender, TEasyGroup *Group, + TEasyTaskPanelFormClass &TaskPanel) + { + switch( Group->Index ) + { + case 0: + TaskPanel = __classid(TEasyTaskPanelForm2); + break; + case 1: + TaskPanel = __classid(TEasyTaskPanelForm3); + break; + } + } + + +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.dfm new file mode 100644 index 0000000..6ab8795 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.dfm @@ -0,0 +1,62 @@ +object Form1: TForm1 + Left = 221 + Top = 205 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 281 + Top = 0 + Width = 3 + Height = 453 + Cursor = crHSplit + ResizeStyle = rsUpdate + end + object EasyTaskPanelBand1: TEasyTaskPanelBand + Left = 0 + Top = 0 + Width = 281 + Height = 453 + Align = alLeft + OnGetTaskPanel = EasyTaskPanelBand1GetTaskPanel + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Groups.Items = { + 0000000002000000800800000000000000000100000007000000500061006E00 + 65006C0020003100000000000000000000000000C80000008008000000000000 + 00000100000007000000500061006E0065006C00200032000000000000000000 + 00000000C8000000} + HotTrack.Enabled = True + HotTrack.GroupTrack = [htgIcon, htgText, htgTopMargin] + PaintInfoGroup.CaptionIndent = 9 + PaintInfoGroup.MarginBottom.Size = 11 + PaintInfoGroup.MarginBottom.Visible = True + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoGroup.MarginLeft.Size = 11 + PaintInfoGroup.MarginLeft.Visible = True + PaintInfoGroup.MarginRight.Size = 11 + PaintInfoGroup.MarginRight.Visible = True + PaintInfoGroup.MarginTop.Size = 26 + ParentFont = False + Selection.Enabled = False + TabOrder = 0 + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.h b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.h new file mode 100644 index 0000000..6c6460c --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit1.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- + +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include "EasyListview.hpp" +#include "MPCommonObjects.hpp" +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TEasyTaskPanelBand *EasyTaskPanelBand1; + TSplitter *Splitter1; + void __fastcall EasyTaskPanelBand1GetTaskPanel( + TCustomEasyListview *Sender, TEasyGroup *Group, + TEasyTaskPanelFormClass &TaskPanel); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.cpp new file mode 100644 index 0000000..fe6c235 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.cpp @@ -0,0 +1,17 @@ +//---------------------------------------------------------------- +#include "vcl.h" +#include "EasyTaskPanelForm.hpp" + +#pragma hdrstop + +#include "Unit2.h" +//---------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TEasyTaskPanelForm2 *EasyTaskPanelForm2; +//---------------------------------------------------------------- +__fastcall TEasyTaskPanelForm2::TEasyTaskPanelForm2(TComponent* Owner) + : TEasyTaskPanelForm(Owner) +{ +} +//---------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.dfm new file mode 100644 index 0000000..57f5ec6 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.dfm @@ -0,0 +1,37 @@ +object EasyTaskPanelForm2: TEasyTaskPanelForm2 + Left = 192 + Top = 107 + Width = 163 + Height = 186 + Caption = 'EasyTaskPanelForm2' + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + DesignSize = ( + 155 + 159) + PixelsPerInch = 96 + TextHeight = 13 + object Edit1: TEdit + Left = 16 + Top = 48 + Width = 121 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'Edit1' + end + object Edit2: TEdit + Left = 16 + Top = 80 + Width = 121 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = 'Edit2' + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.h b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.h new file mode 100644 index 0000000..aec46e4 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit2.h @@ -0,0 +1,23 @@ +//--------------------------------------------------------------------------- + +#ifndef Unit2H +#define Unit2H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TEasyTaskPanelForm2 : public TEasyTaskPanelForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TEdit *Edit2; +private: // User declarations +public: // User declarations + __fastcall TEasyTaskPanelForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TEasyTaskPanelForm2 *EasyTaskPanelForm2; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.cpp new file mode 100644 index 0000000..a71e094 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.cpp @@ -0,0 +1,17 @@ +//---------------------------------------------------------------- +#include "vcl.h" +#include "EasyTaskPanelForm.hpp" + +#pragma hdrstop + +#include "Unit3.h" +//---------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TEasyTaskPanelForm3 *EasyTaskPanelForm3; +//---------------------------------------------------------------- +__fastcall TEasyTaskPanelForm3::TEasyTaskPanelForm3(TComponent* Owner) + : TEasyTaskPanelForm(Owner) +{ +} +//---------------------------------------------------------------- \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.dfm new file mode 100644 index 0000000..33f26d9 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.dfm @@ -0,0 +1,50 @@ +object EasyTaskPanelForm3: TEasyTaskPanelForm3 + Left = 192 + Top = 107 + Width = 260 + Height = 151 + Caption = 'EasyTaskPanelForm3' + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + DesignSize = ( + 252 + 124) + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 219 + Height = 13 + Caption = 'Demo for C++Builder and EasyListview' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Button1: TButton + Left = 168 + Top = 80 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Button1' + TabOrder = 0 + end + object Edit1: TEdit + Left = 8 + Top = 40 + Width = 233 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = 'Edit1' + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.h b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.h new file mode 100644 index 0000000..e7976da --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BCB6/TaskPanel/Unit3.h @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- + +#ifndef Unit3H +#define Unit3H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TEasyTaskPanelForm3 : public TEasyTaskPanelForm +{ +__published: // IDE-managed Components + TButton *Button1; + TEdit *Edit1; + TLabel *Label1; +private: // User declarations +public: // User declarations + __fastcall TEasyTaskPanelForm3(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TEasyTaskPanelForm3 *EasyTaskPanelForm3; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.bdsproj b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.bdsproj new file mode 100644 index 0000000..6d8b089 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.bdsproj @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + + + + + + + TaskPanelProject.cpp + + + + diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.cpp new file mode 100644 index 0000000..55097a5 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.cpp @@ -0,0 +1,36 @@ +//$$---- EXE CPP ---- +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("Unit1.cpp", Form1); +USEFORM("Unit2.cpp", EasyTaskPanelForm2); /* TEasyTaskPanelForm: File Type */ +USEFORM("Unit3.cpp", EasyTaskPanelForm3); /* TEasyTaskPanelForm: File Type */ +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + catch (...) + { + try + { + throw Exception(""); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.res b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/TaskPanelProject.res new file mode 100644 index 0000000000000000000000000000000000000000..5d0dd1f2ea61337bc56e04ced716ab20eb66b590 GIT binary patch literal 4396 zcmeHLF-`+95cCNe8kB;bD=B#Z5+EuH;7fiE&&bb?nT^M1*7jX;3Zlu1iM{Lf%&vV2 z(uEMh2u#xfnEtZwoz}0AGuYa0cXO?z2TVrb1sH6G3HDsoa?`3QMC5N3O_}L>h===VCzWlBF(#bqd-+mua zht_*zPrsL+|9|MS2Eyt}^&!CGa;@H9>YrSCZq+Me#A<)ix5R1IcRuw! z5bEcjsGsXioRyDwB=BLtoL2VBW=o$O$M&y%y)i<|fRCQO=^>9CoSP4a{@VQ@*@&g@ zeXK6(YhN`Yz}Tw3yYDKW9IO#}k-gD}ReC;_^!Yo(y~;NZ@aTTBpY~Ti;)<~h{F#+} zoA^_G;^~dlGvK4A&-%1qwW>eGs}TXl4y5yb@0<3VR`p-;BG+Pxe{KD65%c|cpZZqQ z#`|B>=krniFY-S1BhHr~7k!#|8DF}81^F+PO zvFC$1M<9|WfpePt?nqwb@jRR7gS7~FiwF?hYrUkA9P$xbHR}smEq&D!8!YO_w0KU) z(R`~uYiRN==qulkt(qG&hkM0>-(UJIu5!IMZ|V7%&cDaOcuU{&Z1s +#pragma hdrstop + +#include "Unit1.h" +#include "Unit2.h" +#include "Unit3.h" + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "EasyListview" +#pragma link "MPCommonObjects" +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::EasyTaskPanelBand1GetTaskPanel( + TCustomEasyListview *Sender, TEasyGroup *Group, + TEasyTaskPanelFormClass &TaskPanel) +{ + switch( Group->Index ) + { + case 0: + TaskPanel = __classid(TEasyTaskPanelForm2); + break; + case 1: + TaskPanel = __classid(TEasyTaskPanelForm3); + break; + } +} +//--------------------------------------------------------------------------- + diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.dfm new file mode 100644 index 0000000..224132a --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.dfm @@ -0,0 +1,57 @@ +object Form1: TForm1 + Left = 0 + Top = 0 + Caption = 'Form1' + ClientHeight = 445 + ClientWidth = 536 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 225 + Top = 0 + Height = 445 + ExplicitLeft = 184 + ExplicitTop = 208 + ExplicitHeight = 100 + end + object EasyTaskPanelBand1: TEasyTaskPanelBand + Left = 0 + Top = 0 + Width = 225 + Height = 445 + Align = alLeft + OnGetTaskPanel = EasyTaskPanelBand1GetTaskPanel + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + HotTrack.Enabled = True + HotTrack.GroupTrack = [htgIcon, htgText, htgTopMargin] + PaintInfoGroup.CaptionIndent = 9 + PaintInfoGroup.MarginBottom.Size = 3 + PaintInfoGroup.MarginBottom.Visible = True + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoGroup.MarginLeft.Size = 11 + PaintInfoGroup.MarginLeft.Visible = True + PaintInfoGroup.MarginRight.Size = 11 + PaintInfoGroup.MarginRight.Visible = True + PaintInfoGroup.MarginTop.Size = 26 + ParentFont = False + Selection.Enabled = False + TabOrder = 0 + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.h b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.h new file mode 100644 index 0000000..2d4be77 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit1.h @@ -0,0 +1,29 @@ +//$$---- Form HDR ---- +//--------------------------------------------------------------------------- + +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include "EasyListview.hpp" +#include "MPCommonObjects.hpp" +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TEasyTaskPanelBand *EasyTaskPanelBand1; + TSplitter *Splitter1; + void __fastcall EasyTaskPanelBand1GetTaskPanel(TCustomEasyListview *Sender, + TEasyGroup *Group, TEasyTaskPanelFormClass &TaskPanel); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.cpp new file mode 100644 index 0000000..5e4f56c --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.cpp @@ -0,0 +1,17 @@ +//---------------------------------------------------------------- +#include "vcl.h" +#include "EasyTaskPanelForm.hpp" + +#pragma hdrstop + +#include "Unit2.h" +//---------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TEasyTaskPanelForm2 *EasyTaskPanelForm2; +//---------------------------------------------------------------- +__fastcall TEasyTaskPanelForm2::TEasyTaskPanelForm2(TComponent* Owner) + : TEasyTaskPanelForm(Owner) +{ +} +//---------------------------------------------------------------- \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.dfm new file mode 100644 index 0000000..d518c8c --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.dfm @@ -0,0 +1,64 @@ +object EasyTaskPanelForm2: TEasyTaskPanelForm2 + Left = 0 + Top = 0 + Width = 257 + Height = 341 + Caption = 'EasyTaskPanelForm2' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + DesignSize = ( + 249 + 314) + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 16 + Width = 218 + Height = 13 + Caption = 'CBuilder EasyListview TaskPanel Demo' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label2: TLabel + Left = 8 + Top = 47 + Width = 122 + Height = 13 + Caption = 'What do you want to do?' + end + object Label3: TLabel + Left = 8 + Top = 93 + Width = 115 + Height = 13 + Caption = 'Enter some information:' + end + object Edit1: TEdit + Left = 16 + Top = 66 + Width = 225 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'Edit1' + end + object Edit2: TEdit + Left = 16 + Top = 112 + Width = 225 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = 'Edit2' + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.h b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.h new file mode 100644 index 0000000..5eafc30 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit2.h @@ -0,0 +1,27 @@ +//$$---- Form HDR ---- +//--------------------------------------------------------------------------- + +#ifndef Unit2H +#define Unit2H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TEasyTaskPanelForm2 : public TEasyTaskPanelForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TEdit *Edit2; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; +private: // User declarations +public: // User declarations + __fastcall TEasyTaskPanelForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TEasyTaskPanelForm2 *EasyTaskPanelForm2; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.cpp b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.cpp new file mode 100644 index 0000000..5b62928 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.cpp @@ -0,0 +1,17 @@ +//---------------------------------------------------------------- +#include "vcl.h" +#include "EasyTaskPanelForm.hpp" + +#pragma hdrstop + +#include "Unit3.h" +//---------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TEasyTaskPanelForm3 *EasyTaskPanelForm3; +//---------------------------------------------------------------- +__fastcall TEasyTaskPanelForm3::TEasyTaskPanelForm3(TComponent* Owner) + : TEasyTaskPanelForm(Owner) +{ +} +//---------------------------------------------------------------- \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.dfm b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.dfm new file mode 100644 index 0000000..cd7daf7 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.dfm @@ -0,0 +1,47 @@ +object EasyTaskPanelForm3: TEasyTaskPanelForm3 + Left = 0 + Top = 0 + Width = 223 + Height = 240 + Caption = 'EasyTaskPanelForm3' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object RadioButton1: TRadioButton + Left = 8 + Top = 8 + Width = 113 + Height = 17 + Caption = 'RadioButton1' + TabOrder = 0 + end + object RadioButton2: TRadioButton + Left = 8 + Top = 31 + Width = 113 + Height = 17 + Caption = 'RadioButton2' + TabOrder = 1 + end + object ComboBox1: TComboBox + Left = 8 + Top = 54 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + ItemIndex = 0 + TabOrder = 2 + Text = 'Item 1' + Items.Strings = ( + 'Item 1' + 'Item 2' + 'Item 3') + end +end diff --git a/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.h b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.h new file mode 100644 index 0000000..294bac3 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/Demos/BDS 4.0/TaskPanel/Unit3.h @@ -0,0 +1,25 @@ +//$$---- Form HDR ---- +//--------------------------------------------------------------------------- + +#ifndef Unit3H +#define Unit3H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TEasyTaskPanelForm3 : public TEasyTaskPanelForm +{ +__published: // IDE-managed Components + TRadioButton *RadioButton1; + TRadioButton *RadioButton2; + TComboBox *ComboBox1; +private: // User declarations +public: // User declarations + __fastcall TEasyTaskPanelForm3(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TEasyTaskPanelForm3 *EasyTaskPanelForm3; +//--------------------------------------------------------------------------- +#endif diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.bpk b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.bpk new file mode 100644 index 0000000..c62f43a --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.bpk @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.cpp b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.cpp new file mode 100644 index 0000000..4802e45 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.cpp @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USERES("EasyListviewC5.res"); +USEPACKAGE("vcl50.bpi"); +USEPACKAGE("MPCommonLibC5.bpi"); +USEUNIT("..\Source\EasyListview.pas"); +USEUNIT("..\Source\EasyLVResources.pas"); +USEUNIT("..\Source\EasyScrollFrame.pas"); +USEUNIT("..\Source\EasyTaskPanelForm.pas"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.res b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5.res new file mode 100644 index 0000000000000000000000000000000000000000..277543de35d3b2bdf3e7d980c7407dba1d328184 GIT binary patch literal 1536 zcmb7DyKWOf6g{>V85(dwMT3P9LKMhIX{Z8X$Zo_Vh#gvic`$(Ca6UwhdCwi7r=Fy|Y zVv(k&>1hQgTHw*=MM$*3&4~$XcoeD{o`&IZ!oNIz6sgeWYoFQtCe8WnQ=31E!Y~sl za22XV#Yu@PbsQTMcqlk+?@xXmS9P5H8ZPm}sNyg2brIhf`bQ}7$S9*}=k*(tD#8_9 z2ZUhpQgFpPB_IhWn~Trk|Y79-ulNb zQ7YQvd7ZX-e~EgPx~b8eE&tM1wnVAlcs|1{y9}U5&9aMlg8SIUQ|bfkaQ9Mu7xEe! z=yn79D&!S45EpN$v-T~;%?*a?V;6f|AL2Pr+cv|V&9}v~$d};fZ;9trZrr=vlp`ge zx*KcS<*U8eMT{dHV2mNQxR0>U$YZ?5gse}N)58Wky-VF-4N}oHMr*Lw2@d%^2IPNW z*8^JnMS@$F<6|l!@9@&*nlk4Bea8j2hx256ZlByEvP;e#+-7#KKEKo%Tke>-M=KTF zu=yVoA6itZow82pc8E9hbmHnPc`wKq;1&H2xgX&zEAisEJ9!M5n&kC$i&aj*&FC4q z6GnT_-s6=D!C6Y*bbeYx37HkpC1P}xHJwr*cl`89#-_Ltx~9Mfw=X7yWK I2)+k@02SJ1%>V!Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.bpk b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.bpk new file mode 100644 index 0000000..e1b9bc2 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.bpk @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1029 +CodePage=1250 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.cpp b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.cpp new file mode 100644 index 0000000..eb54ca2 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.cpp @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USERES("EasyListviewC5D.res"); +USEPACKAGE("vcl50.bpi"); +USEPACKAGE("dsnide50.bpi"); +USEPACKAGE("EasyListviewC5.bpi"); +USEPACKAGE("MPCommonLIbC5D.bpi"); +USEUNIT("..\Design\EasyListviewReg.pas"); +USERES("..\Design\EasyListviewReg.dcr"); +USEFORMNS("..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.res b/official/1.7.0/EasyListview/CBuilder/EasyListViewC5D.res new file mode 100644 index 0000000000000000000000000000000000000000..6f0d8f03ccdcf1e48edb60a35ed2b995b081ede9 GIT binary patch literal 1536 zcmb7DO=}ZD7=Ds$i6_m$lNW=ChzE%h&sAKzTl}b4$+ZNnv6v+{a+>_-fUZ~M;7JJ0ieZUz9_)HJoqV?}<{9o`_PX0TRk%X6fg zJhZ9zsWoKR^w}&5;6IeI8&@8w3d`k^fD|EHYB#R7t`xJ6l({~m{EAhqW(j2;K3*&q zNwP{-C7fuEho2V#(Hz%jI;h}b;8*Y@2u@@EW%0w%4@|!1xyi4SjNe?D{9zabsYs6d zfgk%(T;RTc8foNsAUJL3Pkt5mt2p@;T;c~|$zS5DJigZS4^iNu_O+s&)vtBp6E5M( zBMdX(xuz&jfg%H#hZN;0n*V_dyX>FYc79r`%uY@GB+2Y%%qb=bE3-Hd$1yN*)<1TM zQql&`o3zRMOVq2>ZH4-5`Ik1*B?|q<^EqbeWdI#&nqI_HJisoVQ6FNDyOZ*}kk?Q{ zyX~1*A+M;0D1S?>jc+NccNwaOeH?Iogcm&RnhXaf-ww|rU%a2cC7xBevF~zQjuek- zZ;WY{ujXPO5vDl82m|bJAL5XaM|guVS)UB2gDyM0NA0qPyS%@~Xf^ga#xcJ~pZpK( zx=-scPjJg{Tuh(Hd%QBaCd_$6-%-x(-~!o>+aq^McEP!W+sy9N<(E1m!yPgAaIJzH zCjS%S1A|Jn6V@r+4)B(qR&1RG?ULEXUlX`)ehIe25xs_FmcPZ8 H_ucyg3T9@( literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC6.cpp b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6.cpp new file mode 100644 index 0000000..287da75 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC6.res b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6.res new file mode 100644 index 0000000000000000000000000000000000000000..277543de35d3b2bdf3e7d980c7407dba1d328184 GIT binary patch literal 1536 zcmb7DyKWOf6g{>V85(dwMT3P9LKMhIX{Z8X$Zo_Vh#gvic`$(Ca6UwhdCwi7r=Fy|Y zVv(k&>1hQgTHw*=MM$*3&4~$XcoeD{o`&IZ!oNIz6sgeWYoFQtCe8WnQ=31E!Y~sl za22XV#Yu@PbsQTMcqlk+?@xXmS9P5H8ZPm}sNyg2brIhf`bQ}7$S9*}=k*(tD#8_9 z2ZUhpQgFpPB_IhWn~Trk|Y79-ulNb zQ7YQvd7ZX-e~EgPx~b8eE&tM1wnVAlcs|1{y9}U5&9aMlg8SIUQ|bfkaQ9Mu7xEe! z=yn79D&!S45EpN$v-T~;%?*a?V;6f|AL2Pr+cv|V&9}v~$d};fZ;9trZrr=vlp`ge zx*KcS<*U8eMT{dHV2mNQxR0>U$YZ?5gse}N)58Wky-VF-4N}oHMr*Lw2@d%^2IPNW z*8^JnMS@$F<6|l!@9@&*nlk4Bea8j2hx256ZlByEvP;e#+-7#KKEKo%Tke>-M=KTF zu=yVoA6itZow82pc8E9hbmHnPc`wKq;1&H2xgX&zEAisEJ9!M5n&kC$i&aj*&FC4q z6GnT_-s6=D!C6Y*bbeYx37HkpC1P}xHJwr*cl`89#-_Ltx~9Mfw=X7yWK I2)+k@02SJ1%>V!Z literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.bpk b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.bpk new file mode 100644 index 0000000..e97d083 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.bpk @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1029 +CodePage=1250 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Excluded Packages] +C:\PROGRA~1\Borland\CBUILD~1\Bin\dcldb60.bpl=Borland Database Components +C:\PROGRA~1\Borland\CBUILD~1\Bin\dclstd60.bpl=Borland Standard Components +C:\PROGRA~1\Borland\CBUILD~1\Bin\dbx60.bpl=Borland SQL Explorer UI Package +c:\progra~1\borland\cbuild~1\Bin\DCLIB60.bpl=InterBase Data Access Components +C:\PROGRA~1\Borland\CBUILD~1\Bin\dclmid60.bpl=Borland MyBase DataAccess Components +c:\progra~1\borland\cbuild~1\Bin\dclqrt60.bpl=QuickReport Components +c:\progra~1\borland\cbuild~1\Bin\dclsmpedit60.bpl=Borland Editor Script Enhancements +c:\progra~1\borland\cbuild~1\Bin\applet60.bpl=Borland Control Panel Applet Package +c:\progra~1\borland\cbuild~1\Bin\dclemacsedit60.bpl=Borland Editor Emacs Enhancements +c:\progra~1\borland\cbuild~1\Bin\dclmlwiz60.bpl=Borland Markup Language Wizards +c:\progra~1\borland\cbuild~1\Bin\idefilters60.bpl=IDE Filter for CPP32 +c:\progra~1\borland\cbuild~1\Bin\dcl31w60.bpl=Delphi 1.0 Compatibility Components +c:\progra~1\borland\cbuild~1\Bin\dclbcbsmp60.bpl=Borland Sample Controls Design Time Package +c:\progra~1\borland\cbuild~1\Bin\dclado60.bpl=Borland ADO DB Components +c:\progra~1\borland\cbuild~1\Bin\dclbde60.bpl=Borland BDE DB Components +c:\progra~1\borland\cbuild~1\Bin\dclcds60.bpl=Borland Base Cached ClientDataset Component +c:\progra~1\borland\cbuild~1\Bin\dclbdecds60.bpl=Borland Local BDE ClientDataset Components +c:\progra~1\borland\cbuild~1\Bin\dcltee60.bpl=TeeChart Components +c:\progra~1\borland\cbuild~1\Bin\dcldss60.bpl=Borland Decision Cube Components +c:\progra~1\borland\cbuild~1\Bin\dcltqr60.bpl=TeeChart for QuickReport Components +c:\progra~1\borland\cbuild~1\Bin\dclclxdb60.bpl=Borland CLX Database Components +C:\PROGRA~1\Borland\CBUILD~1\Bin\dclclxstd60.bpl=Borland CLX Standard Components +c:\progra~1\borland\cbuild~1\Bin\dclmcn60.bpl=Borland DataSnap Connection Components +c:\progra~1\borland\cbuild~1\Bin\dclact60.bpl=Borland ActionBar Components +c:\progra~1\borland\cbuild~1\Projects\Bpl\TntLibD.bpl=Tnt Unicode VCL - Design + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.cpp b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.cpp new file mode 100644 index 0000000..51fa0bb --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.cpp @@ -0,0 +1,18 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USEFORMNS("..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.res b/official/1.7.0/EasyListview/CBuilder/EasyListViewC6D.res new file mode 100644 index 0000000000000000000000000000000000000000..6f0d8f03ccdcf1e48edb60a35ed2b995b081ede9 GIT binary patch literal 1536 zcmb7DO=}ZD7=Ds$i6_m$lNW=ChzE%h&sAKzTl}b4$+ZNnv6v+{a+>_-fUZ~M;7JJ0ieZUz9_)HJoqV?}<{9o`_PX0TRk%X6fg zJhZ9zsWoKR^w}&5;6IeI8&@8w3d`k^fD|EHYB#R7t`xJ6l({~m{EAhqW(j2;K3*&q zNwP{-C7fuEho2V#(Hz%jI;h}b;8*Y@2u@@EW%0w%4@|!1xyi4SjNe?D{9zabsYs6d zfgk%(T;RTc8foNsAUJL3Pkt5mt2p@;T;c~|$zS5DJigZS4^iNu_O+s&)vtBp6E5M( zBMdX(xuz&jfg%H#hZN;0n*V_dyX>FYc79r`%uY@GB+2Y%%qb=bE3-Hd$1yN*)<1TM zQql&`o3zRMOVq2>ZH4-5`Ik1*B?|q<^EqbeWdI#&nqI_HJisoVQ6FNDyOZ*}kk?Q{ zyX~1*A+M;0D1S?>jc+NccNwaOeH?Iogcm&RnhXaf-ww|rU%a2cC7xBevF~zQjuek- zZ;WY{ujXPO5vDl82m|bJAL5XaM|guVS)UB2gDyM0NA0qPyS%@~Xf^ga#xcJ~pZpK( zx=-scPjJg{Tuh(Hd%QBaCd_$6-%-x(-~!o>+aq^McEP!W+sy9N<(E1m!yPgAaIJzH zCjS%S1A|Jn6V@r+4)B(qR&1RG?ULEXUlX`)ehIe25xs_FmcPZ8 H_ucyg3T9@( literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListviewC5G.bpg b/official/1.7.0/EasyListview/CBuilder/EasyListviewC5G.bpg new file mode 100644 index 0000000..41c51f1 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListviewC5G.bpg @@ -0,0 +1,25 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = EasyListviewC5.bpl EasyListviewC5D.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +EasyListviewC5D.bpl: EasyListviewC5D.bpk + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +EasyListviewC5.bpl: EasyListviewC5.bpk + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + + diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListviewC6.bpk b/official/1.7.0/EasyListview/CBuilder/EasyListviewC6.bpk new file mode 100644 index 0000000..bad6243 --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListviewC6.bpk @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Excluded Packages] + + +[HistoryLists\hlIncludePath] +Count=2 +Item0=..\Source;$(BCB)\include;$(BCB)\include\vcl +Item1=..\Source;$(BCB)\include;$(BCB)\include\vcl;C:\Program Files\Borland\CBuilder6\Projects\Intermed + +[HistoryLists\hlLibraryPath] +Count=2 +Item0=$(BCB)\projects\lib;..\Source;$(BCB)\lib\obj;$(BCB)\lib;C:\Program Files\Borland\CBuilder6\Projects\Intermed +Item1=$(BCB)\projects\lib;..\Source;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=1 +Item0=$(BCB)\projects\Intermed + +[HistoryLists\hlFinalOutputDir] +Count=1 +Item0=$(BCB)\projects\Bpl\ + +[HistoryLists\hIBPIOutputDir] +Count=1 +Item0=$(BCB)\projects\Lib + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/1.7.0/EasyListview/CBuilder/EasyListviewC6G.bpg b/official/1.7.0/EasyListview/CBuilder/EasyListviewC6G.bpg new file mode 100644 index 0000000..c955afc --- /dev/null +++ b/official/1.7.0/EasyListview/CBuilder/EasyListviewC6G.bpg @@ -0,0 +1,25 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = EasyListviewC6.bpl EasyListviewC6D.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +EasyListviewC6D.bpl: EasyListviewC6D.bpk + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +EasyListviewC6.bpl: EasyListviewC6.bpk + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + + diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD10.bdsproj b/official/1.7.0/EasyListview/Delphi/EasyListviewD10.bdsproj new file mode 100644 index 0000000..463f121 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD10.bdsproj @@ -0,0 +1,658 @@ + + + + + + + + + + + + EasyListviewD10.dpk + + + 7.0 + + + 8 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Muststang Peak EasyListview Runtime Package + + + + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD10.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD10.dpk new file mode 100644 index 0000000..0aaf592 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD10.dpk @@ -0,0 +1,40 @@ +package EasyListviewD10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Muststang Peak EasyListview Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + MPCommonLibD10, + rtl, + vcl; + +contains + EasyListview in '..\Source\EasyListview.pas', + EasyLVResources in '..\Source\EasyLVResources.pas', + EasyScrollFrame in '..\Source\EasyScrollFrame.pas', + EasyTaskPanelForm in '..\Source\EasyTaskPanelForm.pas'; + +end. diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD10.identcache b/official/1.7.0/EasyListview/Delphi/EasyListviewD10.identcache new file mode 100644 index 0000000000000000000000000000000000000000..6be4cdd863058057556139dff4c6de123d496278 GIT binary patch literal 319 zcmZQ!U|?_xv5Ild&n?K$OU)}uEspUmEiOsSOD{-G%#LwQEUxs)EG{X_Of8QI&Mz%W zP6dkvCl}@CMZXf_jfN4Dd literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD10.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD10.res new file mode 100644 index 0000000000000000000000000000000000000000..142f72b2c8340b4f56f8ff17b52758928ab2ff83 GIT binary patch literal 1536 zcmb7D&ubGw6n?RRXeruIL&1wdM8tz6v}FYkRjh@AT4Qatw^Fp$Vw+~W+02w28j&&s z9(pSEuka=wim-o!e?bo(yy?w3h~xKWvP~Pj_}I5I-+SM@U%Nv@REApX727lN{aofB z0w?EuqoWt{8R;fAW#~O3q5^;rN{hDWybs)A#;Prr~X{6cal zr52O+ViJWUH9S#CbxI%Z2$2-D)*?|#9Y(d#V2SL%4CL);xpB+{*0;i}mzfzH|RmXKLPLR-As}Qd!)mXp*fKk7aIvQtO z*k`{rX0I3nHVa4qHp>`e;sARN^TaStU=!DhC4tU?`GB>U62m5c4#w7^Jr?}zjZyE&I(+2xzXp5;sa#~+U8l`Z~WPV*L$hkA>H?)B9f7N|wrv`!6L zqgkvQw2H_LdPQ4ceRP}(x~ibV3QeL0uIL(~=+c@D?=segNw+`+$*nLiwZX + + + + + + + + + + + EasyListviewD10D.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + MustangPeak EasyListview Designtime Package + + + + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD10D.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD10D.dpk new file mode 100644 index 0000000..f489448 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD10D.dpk @@ -0,0 +1,43 @@ +package EasyListviewD10D; + +{$R *.res} +{$R '..\Design\EasyListviewReg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + designide, + vclactnband, + vclx, + EasyListviewD10, + MPCommonLibD10D; + +contains + EasyListviewReg in '..\Design\EasyListviewReg.pas', + EasyCollectionEditor in '..\Design\EasyCollectionEditor.pas'; + +end. diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD10D.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD10D.res new file mode 100644 index 0000000000000000000000000000000000000000..142f72b2c8340b4f56f8ff17b52758928ab2ff83 GIT binary patch literal 1536 zcmb7D&ubGw6n?RRXeruIL&1wdM8tz6v}FYkRjh@AT4Qatw^Fp$Vw+~W+02w28j&&s z9(pSEuka=wim-o!e?bo(yy?w3h~xKWvP~Pj_}I5I-+SM@U%Nv@REApX727lN{aofB z0w?EuqoWt{8R;fAW#~O3q5^;rN{hDWybs)A#;Prr~X{6cal zr52O+ViJWUH9S#CbxI%Z2$2-D)*?|#9Y(d#V2SL%4CL);xpB+{*0;i}mzfzH|RmXKLPLR-As}Qd!)mXp*fKk7aIvQtO z*k`{rX0I3nHVa4qHp>`e;sARN^TaStU=!DhC4tU?`GB>U62m5c4#w7^Jr?}zjZyE&I(+2xzXp5;sa#~+U8l`Z~WPV*L$hkA>H?)B9f7N|wrv`!6L zqgkvQw2H_LdPQ4ceRP}(x~ibV3QeL0uIL(~=+c@D?=segNw+`+$*nLiwZX + + {c288355d-6219-4eff-8b1c-15e299b3134f} + EasyListviewD11.dpk + Release + AnyCPU + DCC32 + ..\Lib\D11\EasyListviewD11.bpl + + + 7.0 + False + False + False + 0 + RELEASE + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + 7.0 + False + DEBUG + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + Delphi.Personality + Package + + + False + True + False + + + Muststang Peak EasyListview Runtime Package + True + False + True + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VCL for the Web Design Package for CodeGear RAD Studio + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + + + EasyListviewD11.dpk + + + + + + + MainSource + + + + + + + + + + + + + diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD11.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD11.res new file mode 100644 index 0000000000000000000000000000000000000000..c73b102ecb032b6560c8343379c1ed1d472c2012 GIT binary patch literal 1536 zcmb7DK~EDw6n=#!m5b6~L*m887-Kvb8X&9jfJP)CQL!RjZiFZzv6L>`?F{LG8bf9h z51a`83U9^(G1=eXFW}(8o8Fv*as1v)mqNqEmwh|)&HLuP@6GNI5tZTAddKvP{TRyP z!{FpxY;<%apOJ22Qik7$=cu=gJ?C4O2oH6;e!v@3c$d;NMSw-{VEur%*Tsu4A%qNT zi3r262Zd5XEO(BCi-t@PBJ3RP5fuQ0P+GJ_=R@E&GgfV}ERQ}@L1L$rzrh#x5EqhD zDYcZemy#$XsS$}vs#E%SM~I}LwHAp|>M*K?9xD-PBsrLt0WxW=f{KY$ymQELY4rOz z0u~25sL+;nKMpE7)BrHKYjhk}O-1T`t&Ntu)|Muxbr{4lK~lAAO{H2iMKLYk0V8gz zL8PNNmJufaKM0DZG#SYx_~NjV5jaJi#g&S5wKA@&ae{)@T7`T?sm20M01W*~>S&yC zVV~pHn7v{Q*esv`*lc5ri4*KO%qNE91U7NCSQ6+Qm^WC9Q)1ZU&%xMQw5R#&;K2O? z;v5FSEtp=|EkK0vY|lU?t_8EH|26(#Zs5P*$MCf0U5xDiYhC=d>?zSO`!R$f_a)T0 zidr-7TBO7FG7(L{t-VN3=mE{sQ}{z#z?j+Td%?FMN9A(f-3q=%IclBUrO|WmQfp`m zscN)HD|kPm=a|jA3M;PO9Oi6a^FRM`KJUEZ@8t|nVR^V;anQZKxrIe)(Kc;RgVt#d zW1ZHJxk0aK3#?C$GeJ}6^e%h~8d%XaWXqw~E!w0et%ARUu2+H9P72&|oGj-oA~C&m zwVJ58fxV3r?gU)`JLA^C-3GhQsnBgy&pfNoI$Mt0K<)Z~f*Y>>W5m~8l+`w&le=A~ zH`wXT>+JJhfU!!iux}INHob+C%sh9YmxE7@>t?zc^-sW`(KB$jkS#&)tpSCEv*fz4C56JX&pa1{> literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dpk new file mode 100644 index 0000000..8b65e69 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dpk @@ -0,0 +1,44 @@ +package EasyListviewD11D; + +{$R *.res} +{$R '..\Design\EasyListviewReg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + designide, + vclactnband, + vclx, + EasyListviewD11, + MPCommonLibD11D; + +contains + EasyListviewReg in '..\Design\EasyListviewReg.pas', + EasyCollectionEditor in '..\Design\EasyCollectionEditor.pas'; + +end. diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dproj b/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dproj new file mode 100644 index 0000000..c6f24cc --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.dproj @@ -0,0 +1,634 @@ + + + {ca982b3b-e02c-4a82-b0a8-077e61209e5a} + EasyListviewD11D.dpk + Release + AnyCPU + DCC32 + ..\Lib\D11\EasyListviewD11D.bpl + + + 7.0 + False + False + False + 0 + RELEASE + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + 7.0 + False + DEBUG + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + Delphi.Personality + Package + + + False + True + False + + + MustangPeak EasyListview Designtime Package + True + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VCL for the Web Design Package for CodeGear RAD Studio + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + + + EasyListviewD11D.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD11D.res new file mode 100644 index 0000000000000000000000000000000000000000..142f72b2c8340b4f56f8ff17b52758928ab2ff83 GIT binary patch literal 1536 zcmb7D&ubGw6n?RRXeruIL&1wdM8tz6v}FYkRjh@AT4Qatw^Fp$Vw+~W+02w28j&&s z9(pSEuka=wim-o!e?bo(yy?w3h~xKWvP~Pj_}I5I-+SM@U%Nv@REApX727lN{aofB z0w?EuqoWt{8R;fAW#~O3q5^;rN{hDWybs)A#;Prr~X{6cal zr52O+ViJWUH9S#CbxI%Z2$2-D)*?|#9Y(d#V2SL%4CL);xpB+{*0;i}mzfzH|RmXKLPLR-As}Qd!)mXp*fKk7aIvQtO z*k`{rX0I3nHVa4qHp>`e;sARN^TaStU=!DhC4tU?`GB>U62m5c4#w7^Jr?}zjZyE&I(+2xzXp5;sa#~+U8l`Z~WPV*L$hkA>H?)B9f7N|wrv`!6L zqgkvQw2H_LdPQ4ceRP}(x~ibV3QeL0uIL(~=+c@D?=segNw+`+$*nLiwZXAdg%F~kKt^&yMUj9M2@ymhw~+R}tTd&j#NI z9Wz=FLozGW$jQG`P0rK8!sARCi#ej@6_1*$X3mnn?vG7yK-$=hY(u(bE^yB5HZ8yC z^vXKst~v@%HUBN`g<3^zO`TG0ffss)5p=fPj6{wn`mMM&SW=0Nz)p5Cq-&Dbbjzvj zKG_Lh{Ej^BH;yGcXQm%M#5^L_8VZ)SG@ph!2yI)|6+_gISO z$;l};IXU5^q`Mpx>2vfPl4a&xZ2`bPg1`noIiv@OlVXv07 z5S#?RR)G=}Cn0o!@sj5$-aYF16(2#P(Y3he*W7S??{g`^yJ1+bgsmvUpVoTy{j=6# zhWmc6(~1t6k9k_DcCdeT){0Izm%a_Z*Y0$hI(G#3_d4x%6n!C1f!#(gYM(Y)KoSHm zMVvJiha@ykqbB)^Cxj?!SzI$3eKHbU7Uq@;2hHe!DldakknHcq zm`^7K6U2EF@C%{WV_^0tFh#M2#9hwC^Z#;kUGYA7^xQe)1tY(*yoni4N_k_>U1Kf^ zj8lxWHvml2jk%6zc!Whfr$5FLV`{_qLT*D2#iFCPLT*tG)$A@!UU`?QV>2wZf@Q4o z`2;UHTGS4!+HZklv2V^Fk;{?2k7=A$ly7nfNtW+!0}G5>SZC!j-eQNu zugaOm40rmFK0^(n=ob6rxYr$Qqk=W^_qgjd&eqfNxTl=7<~)%Pc&)uE?77L@a>kv; zIN2$8h1^}T2b>4E&+e(G{Y7V0xn=g=8c}dZ`+LMU6cx1<>XhAX;2krqS)BvkD>Byb zhI!kJyLe9}saft)QbSHn`lh;NHaG!$MlZB71f=p8oW*5wtfkAhh=7MkvaS>CY)c+U-d&|)c^nh literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD5.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD5.dpk new file mode 100644 index 0000000..871bcf5 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD5.dpk @@ -0,0 +1,39 @@ +package EasyListviewD5; + +{$R *.RES} +{$ALIGN ON} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Muststang Peak EasyListview Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + MPCommonLibD5, + vcl50; + +contains + EasyListview in '..\Source\EasyListview.pas', + EasyLVResources in '..\Source\EasyLVResources.pas', + EasyScrollFrame in '..\Source\EasyScrollFrame.pas', + EasyTaskPanelForm in '..\Source\EasyTaskPanelForm.pas'; + +end. \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD5.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD5.res new file mode 100644 index 0000000000000000000000000000000000000000..22eb4e7eaf30b1658f1d0e73c3bdbf583e0e513e GIT binary patch literal 1536 zcmaJ=O>0v@6g{sAd3IwHbRjNm5D{@9DF&o;QNI`g%BJ8? zaZ_jm4MHdXLi+`Q{my^Q3Gn$8SdDd&Saf0d z4;7zR#)Qi}|8Yp>!3o?sm>sZX)N-OJ>=kk=3(n@#Gg zkXIC-GkQzuOW#swF3(g&Y+{S+GrZ<$T`O#9y#mi7-;%#CB%f2UxOcfKM@o|FEDCk` zp@vO#(83PtsGz{ThHYl9!=ORdSLNi8=cLQjJbRFiZZliJSsU2pV9)x}W!ehfGt!CcbIf}~Mj7uIx68eSDm(GwxEpZ}xizWl`xZ350e45Q$Zas&2hQG^ z=@7h2nR}WuJN@kJH+3#|_fk#nz<0Q&jTW_U-_`hQ0(bPE;3ljysz&DIx0p}0v@6g{sAd3IwHbRjNm5D{@9DF&o;QNI`g%BJ8? zaZ_jm4MHdXLi+`Q{my^Q3Gn$8SdDd&Saf0d z4;7zR#)Qi}|8Yp>!3o?sm>sZX)N-OJ>=kk=3(n@#Gg zkXIC-GkQzuOW#swF3(g&Y+{S+GrZ<$T`O#9y#mi7-;%#CB%f2UxOcfKM@o|FEDCk` zp@vO#(83PtsGz{ThHYl9!=ORdSLNi8=cLQjJbRFiZZliJSsU2pV9)x}W!ehfGt!CcbIf}~Mj7uIx68eSDm(GwxEpZ}xizWl`xZ350e45Q$Zas&2hQG^ z=@7h2nR}WuJN@kJH+3#|_fk#nz<0Q&jTW_U-_`hQ0(bPE;3ljysz&DIx0p}c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD7D.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD7D.dpk new file mode 100644 index 0000000..5a8e157 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD7D.dpk @@ -0,0 +1,43 @@ +package EasyListviewD7D; + +{$R *.res} +{$R '..\Design\EasyListviewReg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + EasyListviewD7, + MPCommonLibD7D, + designide, + vclactnband, + vclx; + +contains + EasyListviewReg in '..\Design\EasyListviewReg.pas', + EasyCollectionEditor in '..\Design\EasyCollectionEditor.pas' {FormEasyCollectionEditor}; + +end. diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD7D.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD7D.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD9.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD9.dpk new file mode 100644 index 0000000..f07a470 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD9.dpk @@ -0,0 +1,40 @@ +package EasyListviewD9; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Muststang Peak EasyListview Runtime Package'} +{$RUNONLY} +{$IMPLICITBUILD ON} + +requires + MPCommonLibD9, + rtl, + vcl; + +contains + EasyListview in '..\Source\EasyListview.pas', + EasyLVResources in '..\Source\EasyLVResources.pas', + EasyScrollFrame in '..\Source\EasyScrollFrame.pas', + EasyTaskPanelForm in '..\Source\EasyTaskPanelForm.pas'; + +end. diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD9.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD9.res new file mode 100644 index 0000000000000000000000000000000000000000..c2869c8ddda418d0c5f6f1a8c422f730659835db GIT binary patch literal 876 zcmb7Dv5FKy5Uq6&78AYU94@>K4IPeU1OpW#13e}<`#$5EX140sU`J%>0)vf?^GC#B zllhbj4bAL8XkX3jf`W;~yy<@Rs;g?cr-_K>K+YpD{mZ^TIOtQvOa|@v_~FqZ=qV<1 z;1w{Ty&G%(Z5bh~j8&ja8zV9Je6E@^=zdOpBkTSP0uN9iU4{&Ljgpaofs!euo<}R7`78Ug{CMO zUk+{ya>gzhy|&{po-;mA?R2o=qXW9h2pAk`FAokhk;dpT0+p;5EcfHD@eA_=`~dEO zevb~L;eV~eZ)@m@riOboirkM;;|#T44%ece<|jn-49NKry`$Ikmfizz=mO)x{=64< Q8zwZL9}Ty{ZqbB(1Go+zjsO4v literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD9D.dpk b/official/1.7.0/EasyListview/Delphi/EasyListviewD9D.dpk new file mode 100644 index 0000000..48f8358 --- /dev/null +++ b/official/1.7.0/EasyListview/Delphi/EasyListviewD9D.dpk @@ -0,0 +1,43 @@ +package EasyListviewD9D; + +{$R *.res} +{$R '..\Design\EasyListviewReg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + designide, + vclactnband, + vclx, + EasyListviewD9, + MPCommonLibD9D; + +contains + EasyListviewReg in '..\Design\EasyListviewReg.pas', + EasyCollectionEditor in '..\Design\EasyCollectionEditor.pas' {FormEasyCollectionEditor}; + +end. diff --git a/official/1.7.0/EasyListview/Delphi/EasyListviewD9D.res b/official/1.7.0/EasyListview/Delphi/EasyListviewD9D.res new file mode 100644 index 0000000000000000000000000000000000000000..c2869c8ddda418d0c5f6f1a8c422f730659835db GIT binary patch literal 876 zcmb7Dv5FKy5Uq6&78AYU94@>K4IPeU1OpW#13e}<`#$5EX140sU`J%>0)vf?^GC#B zllhbj4bAL8XkX3jf`W;~yy<@Rs;g?cr-_K>K+YpD{mZ^TIOtQvOa|@v_~FqZ=qV<1 z;1w{Ty&G%(Z5bh~j8&ja8zV9Je6E@^=zdOpBkTSP0uN9iU4{&Ljgpaofs!euo<}R7`78Ug{CMO zUk+{ya>gzhy|&{po-;mA?R2o=qXW9h2pAk`FAokhk;dpT0+p;5EcfHD@eA_=`~dEO zevb~L;eV~eZ)@m@riOboirkM;;|#T44%ece<|jn-49NKry`$Ikmfizz=mO)x{=64< Q8zwZL9}Ty{ZqbB(1Go+zjsO4v literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Data.txt b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Data.txt new file mode 100644 index 0000000..f293553 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Data.txt @@ -0,0 +1,18 @@ +John Smith +234 East Cherry Tree Lane +345-654-5578 +Tom Jones +4 East 5th Street +126-454-5578 +Mary McCormick +5344 North Elm St. +562-984-5568 +Henry Bottomsworth +657 Broadway +549-650-0534 +Fred Savage +23634 67th St. +234-654-5457 +Sue Smyth +234 East Cherry Tree Lane +267-567-6340 diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.dfm new file mode 100644 index 0000000..5139e78 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.dfm @@ -0,0 +1,2195 @@ +object Form1: TForm1 + Left = 237 + Top = 209 + Width = 741 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 217 + Top = 0 + Width = 6 + Height = 427 + ResizeStyle = rsUpdate + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 217 + Height = 427 + Align = alLeft + TabOrder = 0 + object Memo1: TMemo + Left = 16 + Top = 56 + Width = 193 + Height = 177 + Lines.Strings = ( + 'This demo shows how to use the User ' + 'Data Interfaces built into' + 'CoolControl. If it is desired to store' + 'the data within each node then this is' + 'a method to do so.') + TabOrder = 0 + end + object ComboBox1: TComboBox + Left = 32 + Top = 16 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 1 + OnChange = ComboBox1Change + Items.Strings = ( + 'clsIcon' + 'clsSmallIcon' + 'clsList' + 'clsReport' + 'clsThumbnail' + 'clsTile ') + end + object Button1: TButton + Left = 16 + Top = 240 + Width = 97 + Height = 25 + Caption = 'Add Customer...' + TabOrder = 2 + OnClick = Button1Click + end + object ButtonAddCustomers: TButton + Left = 16 + Top = 264 + Width = 97 + Height = 25 + Caption = 'Add Customers...' + TabOrder = 3 + OnClick = ButtonAddCustomersClick + end + object EditCustomerAddCount: TEdit + Left = 116 + Top = 266 + Width = 57 + Height = 21 + TabOrder = 4 + Text = '1' + end + object Button2: TButton + Left = 16 + Top = 288 + Width = 97 + Height = 25 + Caption = 'Clear' + TabOrder = 5 + OnClick = Button2Click + end + object ButtonChangeCaption: TButton + Left = 16 + Top = 312 + Width = 97 + Height = 25 + Caption = 'Change Caption' + TabOrder = 6 + OnClick = ButtonChangeCaptionClick + end + object ButtonLoadData: TButton + Left = 16 + Top = 352 + Width = 105 + Height = 25 + Caption = 'Load Defined Data' + TabOrder = 7 + OnClick = ButtonLoadDataClick + end + object CheckBoxAutoSort: TCheckBox + Left = 24 + Top = 392 + Width = 73 + Height = 17 + Caption = 'AutoSort' + TabOrder = 8 + OnClick = CheckBoxAutoSortClick + end + end + object StatusBar1: TStatusBar + Left = 0 + Top = 427 + Width = 733 + Height = 19 + Panels = < + item + Width = 200 + end + item + Width = 50 + end> + end + object ELV: TEasyListview + Left = 223 + Top = 0 + Width = 510 + Height = 427 + Align = alClient + CacheDoubleBufferBits = False + UseDockManager = False + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Columns.Items = { + 0300000005000000800800000000000000000000000064000000000400000400 + 00004E0061006D00650000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008008000100000101000000000001 + 6400000001000000070000004100640064007200650073007300000000000000 + 0000000000008008000100000102000000000001640000000100000005000000 + 500068006F006E00650000000000000000000000000080080001000001030000 + 0000000164000000010000000700000043006F006E0074006100630074000000 + 0000000000000000000080080001000001040000000000016400000001000000 + 0200000049004400000000000000000000000000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + ImagesSmall = ImageListSmall + ImagesLarge = ImageListLarge + ImagesExLarge = ImageListExLarge + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoItem.CheckType = ectBox + ParentFont = False + Sort.AutoSort = True + TabOrder = 2 + View = elsReport + end + object ImageListSmall: TImageList + Left = 304 + Top = 88 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0C0C000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000C0C0C000C0C0C000C0DCC000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000C0C0C000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0606000806040008060 + 40008060400080404000806040008060600080808000A4A0A000A4A0A0008080 + 80008080800080808000A4A0A000C0C0C000000000000000000000000000C0DC + C000C06060008060400080604000806040008040400080604000806060008080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0604000C0604000C0606000C080 + 6000C0606000C0604000C0606000C04020004060200040604000408040004080 + 4000408040004080200040604000A4A0A000000000000000000000000000C0A0 + A000C0604000C0606000C0806000C0606000C0604000C0606000C04020004060 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0806000C0606000C0806000C080 + 6000C0806000F0CAA600C0806000C06060008080400040A0600080A0600080C0 + 600040C0600040C0400040802000A4A0A000000000000000000000000000C0DC + C000C0606000C0806000C0806000C0806000F0CAA600C0806000C06060008080 + 4000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0DCC000C0604000C0806000C080 + 6000F0CAA600F0CAA600C0806000C080600080A0600080C080000000000040A0 + 600080E0800040C0600040804000C0C0C000000000000000000000000000C0DC + C000C0604000C0806000C0806000F0CAA600F0CAA600C0806000C080600080A0 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0A0A000C06040004020 + 60004040800080408000C06040008080400080E08000C0C0A000FFFFFF00C0C0 + A00080C0600040A0400080A08000000000000000000000000000000000000000 + 0000C0A0A000C0604000402060004040800080408000C0604000808040000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C00000000000000000000020 + 80000040A0000040A000002060004060400080A06000408080000080C0004080 + C0000080600040604000A4A0A00000000000000000000000000000000000C0C0 + C0000000000000000000002080000040A0000040A00000206000406040000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004040400040202000004060000040 + C0000060C0000060C0000040A000406060008080A00040A0E00040A0E00040A0 + E00040A0E0004060600080808000C0DCC0000000000000000000000000004040 + 400040202000004060000040C0000060C0000060C0000040A000406060000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040202000004080004080 + E0004080E0004080E0000060C000406060004080C00040A0E00040A0E00040A0 + E00040A0E0004080C00080606000C0C0C0000000000000000000000000000000 + 000040202000004080004080E0004080E0004080E0000060C000406060000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000040202000404040004040600040A0 + E00040A0E00040A0E0004080E0004060800040A0C00040C0E00040C0E00040C0 + E00040A0E00040A0E00080606000C0C0C0000000000000000000000000004020 + 2000404040004040600040A0E00040A0E00040A0E0004080E000406080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008060600040404000404040004040 + 60000040A0004060C000004080008080A00040A0E00040C0E00040C0E00040C0 + E00040C0E00040A0E00040808000C0C0C0000000000000000000000000008060 + 60004040400040404000404060000040A0004060C000004080008080A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000806060008080 + 8000A4A0A0004060600040404000C0C0C00080A0C0004080C00040A0E00080A0 + E00040A0E0000080A000A4A0A000000000000000000000000000000000000000 + 0000404040008060600080808000A4A0A0004060600040404000C0C0C0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000806060004060 + 60004060600080606000C0DCC00000000000000000004080C00080C0E00080C0 + E00040A0C00040A0A000C0DCC000000000000000000000000000000000000000 + 00000000000080606000406060004060600080606000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080C0E00080C0 + E00080C0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF000000008001F00F00000000 + 0000E00F000000000000E00F000000000000E00F000000000020E00F00000000 + 8001F01F000000000001E01F000000000000E01F000000000000E01F00000000 + 0000E01F000000000000E01F000000008001F01F000000008181F83F00000000 + FFC7FFFF00000000FFFFFFFF0000000000000000000000000000000000000000 + 000000000000} + end + object ImageListLarge: TImageList + Height = 32 + Width = 32 + Left = 336 + Top = 80 + Bitmap = { + 494C010102000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000002000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C0DC + C000C0C0C000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0 + A000A4A0A000C0C0C000C0C0C000C0DCC000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00C0DCC000C0C0C000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0DCC000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C080 + 8000806040008040400080402000804020008040200080402000804020008040 + 400080604000806060008080800080808000A4A0A000C0C0C000F0FBFF00F0FB + FF00F0FBFF00C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DC + C000C0DCC000F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00C0808000806040008040 + 4000804020008040200080402000804020008040200080404000806040008060 + 60008080800080808000A4A0A000C0C0C000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0602000C040 + 2000C0402000C0604000C0604000C0604000C0606000C0606000C0606000C040 + 2000C0402000C0402000C0402000804020008060600080808000A4A0A000A4A0 + A000A4A0A0008080800080808000808080008080800080808000808080008080 + 800080808000A4A0A000C0C0C000F0FBFF000000000000000000000000000000 + 000000000000000000000000000000000000C0602000C0402000C0402000C060 + 4000C0604000C0604000C0606000C0606000C0606000C0402000C0402000C040 + 2000C04020008040200080606000808080000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0400000C040 + 2000C0604000C0604000C0606000C0606000C0806000C0806000C0604000C080 + 6000C0604000C0606000C0606000C0604000C040200080402000406040004060 + 2000006020000080200040A02000408020004080200000802000008020000080 + 2000006020004060400080808000C0C0C0000000000000000000000000000000 + 000000000000000000000000000000000000C0400000C0402000C0604000C060 + 4000C0606000C0606000C0806000C0806000C0604000C0806000C0604000C060 + 6000C0606000C0604000C0402000804020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0402000C060 + 4000C0604000C0606000C0806000C0806000C0806000C0806000C0602000F0CA + A600C0806000C0606000C0606000C0606000C06040008060200040C0400040C0 + 600040A020004080200040C0600040C0600040C0400040C0400040C0400040A0 + 200040A020000080000040606000C0C0C0000000000000000000000000000000 + 000000000000000000000000000000000000C0402000C0604000C0604000C060 + 6000C0806000C0806000C0806000C0806000C0602000F0CAA600C0806000C060 + 6000C0606000C0606000C0604000806020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0602000C060 + 4000C0606000C0806000C0806000C0806000C0806000C0604000F0CAA600F0CA + A600F0CAA600C0604000C0806000C0606000C0606000C060200040C0600040C0 + 600080A0600080C0600040C0400080C0600040C0600040C0600040C0400040C0 + 400040A0200000A0200040606000C0C0C0000000000000000000000000000000 + 000000000000000000000000000000000000C0602000C0604000C0606000C080 + 6000C0806000C0806000C0806000C0604000F0CAA600F0CAA600F0CAA600C060 + 4000C0806000C0606000C0606000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C060 + 4000C0606000C0806000C0806000C0A08000C0806000C0806000F0CAA600F0CA + A600F0CAA600C0604000C0806000C0806000C0606000C060400080C0600040A0 + 4000C0DCC0000000000040A0400080E0800080C0600080C0600040C0600040C0 + 400040C0400000A0200080806000C0DCC0000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0604000C0606000C080 + 6000C0806000C0A08000C0806000C0806000F0CAA600F0CAA600F0CAA600C060 + 4000C0806000C0806000C0606000C06040000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0806000C0806000C0806000C0A08000C0604000F0CAA600F0CAA600F0CA + A600F0CAA600C0804000C0806000C0806000C06040008080400080E0800040A0 + 40000000000000000000C0DCC00040A0400080E0800080E0600080C0600040C0 + 600040C0400000802000C0C0C000F0FBFF000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0604000C0806000C080 + 6000C0806000C0A08000C0604000F0CAA600F0CAA600F0CAA600F0CAA600C080 + 4000C0806000C0806000C0604000808040000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0806000C0806000C0602000C0A08000C0808000C0808000F0CA + A600F0CAA600C0804000C0808000C0806000C040200080C0800080E0800080A0 + 600000000000000000000000000080C0800080C0600080E0800080C0600040C0 + 600040A0200080806000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C080 + 6000C0806000C0602000C0A08000C0808000C0808000F0CAA600F0CAA600C080 + 4000C0808000C0806000C0402000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0C0C000C0604000C0402000402060000000800000008000000080000000 + 800080406000C0604000C06040008060200080C0600080E0800080E0800080A0 + 6000000000000000000000000000F0FBFF0040A0400080C0800080E0800040C0 + 600040804000C0DCC00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00C0C0C000C060 + 4000C0402000402060000000800000008000000080000000800080406000C060 + 4000C06040008060200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C0C0 + C00040404000402020000000000000000000002080000040A0000040A0000020 + A0000020800040204000806060008080600040A0400080E0800080E0A00080A0 + 6000C0DCC00080A0A0004080A00080A0A000A4A0A00040A0400040A040004080 + 4000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00C0C0C000404040004020 + 20000000000000000000002080000040A0000040A0000020A000002080004020 + 4000806060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A0000000 + 0000000000000000000000000000002060000040A0000040A0000040A0000040 + A0000040A000002080004040600080808000C0C0A00080A0600040A040004080 + 60000080C0000080C0000080E0000080C0000080C00000608000406040008080 + 8000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000A4A0A00000000000000000000000 + 000000000000002060000040A0000040A0000040A0000040A0000040A0000020 + 80004040600080808000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00402020000000 + 00000000000000000000002060000040A0000040A0000040C0000040C0000040 + C0000040A0000040A0000020600080606000C0C0C000F0FBFF0080C0C0000080 + C00040A0E00040A0E00040A0E00040A0E00040A0E0004080E000006080008060 + 6000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF004020200000000000000000000000 + 0000002060000040A0000040A0000040C0000040C0000040C0000040A0000040 + A0000020600080606000C0C0C000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000000000004020 + 200040202000000000000060C0000060C0000060C0004060C0004060C0000060 + C0000060C0000060C0000020800040606000A4A0A000F0FBFF004080C00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0004080E0004060 + 800080808000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000808080000000000040202000402020000000 + 00000060C0000060C0000060C0004060C0004060C0000060C0000060C0000060 + C0000020800040606000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000402020004020 + 200040202000002040004060C0004060C0004060C0004060E0004060E0004060 + E0004060C0004060C0000040A00040406000A4A0A00080C0C0004080E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0000080 + C00040606000A4A0A000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000404040004020200040202000402020000020 + 40004060C0004060C0004060C0004060E0004060E0004060E0004060C0004060 + C0000040A00040406000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000402020004020 + 200040202000402020004060E0004080E0004080E0004080E0004080E0004080 + E0004080E0004080E0000060C00040406000A4A0A00080A0C00040A0E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040606000A4A0A000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000404040004020200040202000402020004020 + 20004060E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0000060C00040406000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000402020004040 + 400040404000402020004060C0004080E0004080E00040A0E00040A0E00040A0 + E0004080E0004080E0000060C00040406000A4A0A0004080C00040A0E00040A0 + E00040C0E00040C0E00040C0E00040C0E00040A0E00040A0E00040A0E00040A0 + E0004060800080808000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000404040004020200040404000404040004020 + 20004060C0004080E0004080E00040A0E00040A0E00040A0E0004080E0004080 + E0000060C00040406000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000402020004040 + 40004040400040404000004060004080E00040A0E00040A0E00040A0E00040A0 + E00040A0E00040A0E0000060C00040608000C0C0C00040A0C00040C0E00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040A0E00040A0 + E0004060A00080808000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000808080004020200040404000404040004040 + 4000004060004080E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E0000060C00040608000C0C0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000402020004040 + 4000404040004040400040202000002060000040A0000060E0004060E0004080 + E00040A0E00040A0E0000060A00040608000C0DCC00040A0C00040C0E00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0 + E0000080C00080808000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000C0DCC0004020200040404000404040004040 + 400040202000002060000040A0000060E0004060E0004080E00040A0E00040A0 + E0000060A00040608000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000404040004040 + 4000404040004040400040606000806060004040400040202000002060000020 + 80000040A0000020600000000000A4A0A000F0FBFF0040A0C00040C0E00040C0 + E00040A0E00040A0E00040C0E00040C0E00040C0E00040C0E00040C0E00040A0 + E0000080A00080808000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000004040400040404000404040004040 + 40004060600080606000404040004020200000206000002080000040A0000020 + 600000000000A4A0A000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC0004020 + 200040606000406060008060600080808000A4A0A000A4A0A000808080004040 + 4000402020004020200040404000C0C0C0000000000080C0E0000080C0000080 + A0004080C00040A0C0004080C0004080C0000080C0004080E0004080C0004080 + A00000608000A4A0A000F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000C0DCC00040202000406060004060 + 60008060600080808000A4A0A000A4A0A0008080800040404000402020004020 + 200040404000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000A4A0 + A0004020200080606000808080008080800080808000A4A0A000A4A0A0008080 + 80004040400040202000C0C0C000F0FBFF0000000000F0FBFF000080A00040A0 + C00040A0E00040A0E00080C0E00080C0E00080C0E00080A0C00040A0C0000080 + A00040808000C0C0C00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A000402020008060 + 6000808080008080800080808000A4A0A000A4A0A00080808000404040004020 + 2000C0C0C000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000402020008060600080808000A4A0A00080808000806060004040 + 400040404000A4A0A000F0FBFF0000000000000000000000000080C0C0004080 + C00080A0E00080C0E00080C0E00080C0E00080C0E00080A0E00040A0C0000080 + A000C0C0C000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0004020 + 20008060600080808000A4A0A00080808000806060004040400040404000A4A0 + A000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF0080808000404040004060600040606000406060008080 + 8000F0FBFF0000000000000000000000000000000000000000000000000040A0 + C00040A0C00080C0E00080E0E00080C0E00080C0E00040A0E0004080A000C0C0 + C000F0FBFF000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00808080004040400040606000406060004060600080808000F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080C0C00040A0C00040A0C00040A0C0004080C00040A0C000C0DCC000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000200000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFFFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 + F003FFFFFFC00FFF0000000000000000C0003FFFFF0000FF0000000000000000 + C0000001FF00007F0000000000000000C0000000FF0000FF0000000000000000 + C0000000FF0000FF0000000000000000C0000000FF0000FF0000000000000000 + C0000000FF0000FF0000000000000000C0000400FF0000FF0000000000000000 + E0000C00FF8000FF0000000000000000F0000E01FFC001FF0000000000000000 + E0000E03FF8003FF0000000000000000C0000007FF0007FF0000000000000000 + C0000007FF0001FF000000000000000080000003FE0000FF0000000000000000 + 80000003FE0001FF000000000000000080000001FE0001FF0000000000000000 + 80000001FE0001FF000000000000000080000001FE0001FF0000000000000000 + 80000001FE0001FF000000000000000080000001FE0001FF0000000000000000 + C0000001FF0001FF0000000000000000C0008001FF0003FF0000000000000000 + E0008003FF8003FF0000000000000000F001C003FFC007FF0000000000000000 + F807E007FFE01FFF0000000000000000FFFFF00FFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 + 000000000000} + end + object ImageListExLarge: TImageList + Height = 48 + Width = 48 + Left = 376 + Top = 96 + Bitmap = { + 494C010102000400040030003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000C00000003000000001002000000000000090 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00C0DCC000C0DCC000C0DCC000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000F0FBFF00F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00C0DCC000C0DCC000C0DCC000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000F0FBFF00F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0C0C000A4A0A000A4A0A000808080008080800080808000808080008080 + 8000808080008080800080808000808080008080800080808000A4A0A000A4A0 + A000A4A0A000C0C0C000C0DCC000F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0C0C000A4A0A000A4A0A000808080008080800080808000808080008080 + 8000808080008080800080808000808080008080800080808000A4A0A000A4A0 + A000A4A0A000C0C0C000C0DCC000F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C0C0 + C000806040008040200080402000C0400000C0400000C0400000C0400000C040 + 0000C0400000C0400000C0400000C04000008040200080402000804020008040 + 4000806040008060600080808000A4A0A000C0C0C000C0DCC000F0FBFF000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C0C0 + C000806040008040200080402000C0400000C0400000C0400000C0400000C040 + 0000C0400000C0400000C0400000C04000008040200080402000804020008040 + 4000806040008060600080808000A4A0A000C0C0C000C0DCC000F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C040 + 0000C0400000C0402000C0402000C0402000C0604000C0604000C0604000C060 + 4000C0604000C0604000C0606000C0604000C0604000C0402000C0400000C040 + 2000C0400000C040000080402000804040008060600080808000C0C0C000C0DC + C000F0FBFF00C0DCC000C0DCC000C0C0C000C0C0C000C0C0C000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0DCC000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C040 + 0000C0400000C0402000C0402000C0402000C0604000C0604000C0604000C060 + 4000C0604000C0604000C0606000C0604000C0604000C0402000C0400000C040 + 2000C0400000C040000080402000804040008060600080808000C0C0C000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0806000C040 + 0000C0402000C0402000C0402000C0604000C0604000C0604000C0606000C060 + 6000C0606000C0606000C0606000C0606000C0604000C0402000C0400000C060 + 6000C0606000C0604000C0402000C0400000C040000080404000806060008080 + 8000A4A0A0008080800080808000406060004060400040604000406020004060 + 2000406020004060200040602000406020004060200040602000406040004060 + 60008060600080808000C0C0C000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0806000C040 + 0000C0402000C0402000C0402000C0604000C0604000C0604000C0606000C060 + 6000C0606000C0606000C0606000C0606000C0604000C0402000C0400000C060 + 6000C0606000C0604000C0402000C0400000C040000080404000806060008080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C040 + 2000C0402000C0402000C0604000C0604000C0604000C0606000C0606000C060 + 6000C0806000C0806000C0806000C0806000C0400000C0C08000C0602000C060 + 4000C0606000C0606000C0604000C0604000C0402000C0400000804020004060 + 200000602000006000000060000000600000008000004080200040A0200040A0 + 200040A0200040A0200000802000008020000080200000800000008000000060 + 0000006000004060400080808000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C040 + 2000C0402000C0402000C0604000C0604000C0604000C0606000C0606000C060 + 6000C0806000C0806000C0806000C0806000C0400000C0C08000C0602000C060 + 4000C0606000C0606000C0604000C0604000C0402000C0400000804020004060 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C040 + 2000C0402000C0604000C0604000C0604000C0606000C0606000C0806000C080 + 6000C0806000C0806000C0806000C0602000C0604000F0CAA600C0A06000C040 + 2000C0806000C0606000C0606000C0604000C0604000C0604000C04000004080 + 200040A0400040C0400040C04000006000000080000040C0600040C0600040C0 + 400040C0400040C0400040C0400040C0400040C0400040C0200040A0200000A0 + 200000A020000060000040606000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C040 + 2000C0402000C0604000C0604000C0604000C0606000C0606000C0806000C080 + 6000C0806000C0806000C0806000C0602000C0604000F0CAA600C0A06000C040 + 2000C0806000C0606000C0606000C0604000C0604000C0604000C04000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C040 + 2000C0604000C0604000C0604000C0606000C0606000C0806000C0806000C080 + 6000C0806000C0806000C0604000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0806000C0806000C0606000C0606000C0604000C0604000C040200080A0 + 400040C0400040C0600040A04000408020004080200040A0400040C0600040C0 + 600040C0600040C0600040C0400040C0400040C0400040C0400040C0200040A0 + 200000A020000080000040604000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C040 + 2000C0604000C0604000C0604000C0606000C0606000C0806000C0806000C080 + 6000C0806000C0806000C0604000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0806000C0806000C0606000C0606000C0604000C0604000C04020000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0A000C040 + 0000C0604000C0604000C0606000C0606000C0806000C0806000C0806000C080 + 6000C0808000C0806000C0400000C0A08000F0CAA600F0CAA600F0CAA600C060 + 2000C0804000C0806000C0806000C0606000C0606000C0604000C040200080A0 + 400040C0600040C060000080200080C08000C0DCC0000060000080C0600080C0 + 600080C0600040C0600040C0600040C0600040C0400040C0400040C0400040C0 + 200040A020000080000040602000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0A000C040 + 0000C0604000C0604000C0606000C0606000C0806000C0806000C0806000C080 + 6000C0808000C0806000C0400000C0A08000F0CAA600F0CAA600F0CAA600C060 + 2000C0804000C0806000C0806000C0606000C0606000C0604000C04020000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 2000C0604000C0606000C0606000C0806000C0806000C0806000C0806000C080 + 8000C0A08000C0602000C0804000F0CAA600F0CAA600F0CAA600F0CAA600C080 + 4000C0604000C0806000C0806000C0806000C0606000C0606000C040200080A0 + 400080C0600080C0600000600000F0FBFF000000000080A060004080200080E0 + 800080C0600080C0600080C0600040C0600040C0600040C0400040C0400040C0 + 400040A020000080000040604000C0C0C0000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 2000C0604000C0606000C0606000C0806000C0806000C0806000C0806000C080 + 8000C0A08000C0602000C0804000F0CAA600F0CAA600F0CAA600F0CAA600C080 + 4000C0604000C0806000C0806000C0806000C0606000C0606000C04020000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0402000C0606000C0606000C0806000C0806000C0806000C0808000C0A0 + 8000C0604000C0602000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + 6000C0602000C0806000C0806000C0806000C0606000C0606000C040000080C0 + 600080E0600040C06000408020000000000000000000F0FBFF000080200040C0 + 600080E0800080E0800080C0600080C0600040C0600040C0600040C0400040C0 + 400040C040000080000080806000C0DCC0000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0402000C0606000C0606000C0806000C0806000C0806000C0808000C0A0 + 8000C0604000C0602000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + 6000C0602000C0806000C0806000C0806000C0606000C0606000C04000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0402000C0806000C0806000C0806000C0808000C0A08000C080 + 6000C0400000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + 8000C0402000C0808000C0806000C0806000C0806000C06040008060200080E0 + 800080E0800040A0400080C08000000000000000000000000000C0C0A0000060 + 000080C0800080E0800080E0800080C0600080C0600040C0600040C0400040C0 + 400040A0200000600000A4A0A000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0402000C0806000C0806000C0806000C0808000C0A08000C080 + 6000C0400000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + 8000C0402000C0808000C0806000C0806000C0806000C0604000806020000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0402000C0604000C0806000C0806000C0808000C0806000C040 + 0000C0806000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + 8000C0402000C0808000C0806000C0806000C0604000C040000080A0600080E0 + 800080E0800040802000C0DCC0000000000000000000000000000000000080A0 + 80004080200080E0800080E0800080E0800080C0600040C0600040C0600040C0 + 40000080000040806000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0402000C0604000C0806000C0806000C0808000C0806000C040 + 0000C0806000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + 8000C0402000C0808000C0806000C0806000C0604000C0400000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0CAA600C0604000C0402000C0806000C0806000C0400000C080 + 4000C0808000806080008060800080608000C0808000F0CAA600F0CAA600F0CA + A600C0400000C0A08000C0806000C0604000C04000008080400080E0800080E0 + 800080E0800000600000F0FBFF0000000000000000000000000000000000F0FB + FF004080400040A0400080E0800080E0800080C0600080C0600040C0600040A0 + 200000602000C0C0C000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0CAA600C0604000C0402000C0806000C0806000C0400000C080 + 4000C0808000806080008060800080608000C0808000F0CAA600F0CAA600F0CA + A600C0400000C0A08000C0806000C0604000C040000080804000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00C0806000C0400000C0400000802020004020 + 600000008000000080000000800000008000000080000000800080406000C080 + 6000C0402000C0804000C0402000C040000080A0400080C0600080E0800080E0 + 800080E080000060000000000000000000000000000000000000000000000000 + 0000C0DCC0000060000040C0600080E0800080E0800080C0600040A040000060 + 0000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00C0806000C0400000C0400000802020004020 + 600000008000000080000000800000008000000080000000800080406000C080 + 6000C0402000C0804000C0402000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00C0DCC000A4A0A000806060004020200040200000002040000020 + 6000002080000020800000208000002080000020800000208000000080004020 + 6000C0400000C0402000808040000060000040A0400080E0800080E0800080E0 + 800080C0800040802000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600C0C080000060000080C0600080E0800040A0400000600000A4A0 + A000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00C0DCC000A4A0A000806060004020200040200000002040000020 + 6000002080000020800000208000002080000020800000208000000080004020 + 6000C0400000C040200080804000006000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0C0C0004060600000000000000000000000000000000000000000000000 + 0000002060000040A0000040A0000040A0000040A0000040A000002080000020 + 80000020600040606000A4A0A00080C08000008020004080200080C0600080E0 + 800080C0600040802000F0CAA600A4A0A0004080A0000060A0000060A0000060 + A0004080A00080A0A00080A06000006000000080200000602000A4A0A000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0C0C0004060600000000000000000000000000000000000000000000000 + 0000002060000040A0000040A0000040A0000040A0000040A000002080000020 + 80000020600040606000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0C0 + C000402020000000000000000000000000000000000000000000000000000020 + 4000004080000040A0000040A0000040A0000040A0000040A0000040A0000040 + A000002080004020600080808000C0C0C000C0DCC00040A06000006000000080 + 200040A04000006000004080A0000080A0000080C0000080C0000080C0000080 + C0000080C0000080C000006080000060200040604000A4A0A000F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0C0 + C000402020000000000000000000000000000000000000000000000000000020 + 4000004080000040A0000040A0000040A0000040A0000040A0000040A0000040 + A000002080004020600080808000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC0004020 + 20000000000000000000000000000000000000000000002040000040A0000040 + A0000040A0000040A0000040A0000040A0000040A0000040A0000040A0000040 + A000002080000020600040606000A4A0A000F0FBFF0000000000F0FBFF0080C0 + A00040804000006080000080C0004080E0004080E0004080E0004080E0004080 + E0004080E0004080E0000080C0000060A0004060600080808000C0C0C000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC0004020 + 20000000000000000000000000000000000000000000002040000040A0000040 + A0000040A0000040A0000040A0000040A0000040A0000040A0000040A0000040 + A000002080000020600040606000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000406060000000 + 00000000000000000000000000000000000000000000004080000040A0000040 + C0000040C0000040C0000060C0000060C0000060C0000040C0000040C0000040 + C0000040A000002080004040600080808000C0DCC0000000000000000000F0FB + FF004080A0000080C0004080E0004080E00040A0E00040A0E00040A0E00040A0 + E0004080E0004080E0004080E0000080E0000060A0004060600080808000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000406060000000 + 00000000000000000000000000000000000000000000004080000040A0000040 + C0000040C0000040C0000060C0000060C0000060C0000040C0000040C0000040 + C0000040A000002080004040600080808000C0DCC00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0C0C000000000000000 + 000000000000000000004020200000000000002040000040C0000060C0000060 + C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060 + C0000060C0000040A0000020600080808000C0C0C0000000000000000000C0C0 + C0000080C00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E00040A0E00040A0E00040A0E0004080E0000060800080606000A4A0 + A000F0FBFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0C0C000000000000000 + 000000000000000000004020200000000000002040000040C0000060C0000060 + C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060 + C0000060C0000040A0000020600080808000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000000000000000 + 000040202000402020004020200000000000002040000060C0000060C0004060 + C0004060C0004060C0004060C0004060C0004060C0004060C0004060C0004060 + C0000060C0000040A0000020800080606000C0C0C000F0FBFF00000000004080 + A00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E0000080C000406060008080 + 8000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000000000000000 + 000040202000402020004020200000000000002040000060C0000060C0004060 + C0004060C0004060C0004060C0004060C0004060C0004060C0004060C0004060 + C0000060C0000040A0000020800080606000C0C0C000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040606000000000004020 + 200040202000402020004020200000000000002060004060C0004060C0004060 + C0004060E0004060E0004060E0004060E0004060E0004060E0004060E0004060 + C0004060C0004060C0000020800040606000C0C0C000F0FBFF00C0DCC0000080 + A00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E000006080008060 + 6000C0C0C000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040606000000000004020 + 200040202000402020004020200000000000002060004060C0004060C0004060 + C0004060E0004060E0004060E0004060E0004060E0004060E0004060E0004060 + C0004060C0004060C0000020800040606000C0C0C000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000000000004020 + 200040202000402020004020200040202000002040004060C0004060E0004080 + E0004080E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0004060E0004060C0000040800040606000A4A0A000F0FBFF0080C0C0004080 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0000080C0004060 + 6000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000000000004020 + 200040202000402020004020200040202000002040004060C0004060E0004080 + E0004080E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0004060E0004060C0000040800040606000A4A0A000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000402020004020 + 200040202000402020004040400040202000000000004080E0004080E0004080 + E0004080E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0004080E0004080E0000040A00040406000A4A0A000F0FBFF0080A0C00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0004080E0000060 + 800080808000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000402020004020 + 200040202000402020004040400040202000000000004080E0004080E0004080 + E0004080E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0004080E0004080E0000040A00040406000A4A0A000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000000000004020 + 200040404000404040004040400040404000000000004060C0004080E0004080 + E0004080E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0004080E0004080E0000040A00040408000C0C0C000F0FBFF004080A00040A0 + E00040A0E00040A0E00040A0E00040A0E00040C0E00040C0E00040C0E00040C0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0000060 + A00080606000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040404000000000004020 + 200040404000404040004040400040404000000000004060C0004080E0004080 + E0004080E0004080E0004080E0004080E0004080E0004080E0004080E0004080 + E0004080E0004080E0000040A00040408000C0C0C000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000000000004040 + 40004040400040404000404040004040400040202000004080004080E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0004080 + E0004080E0004080E0000040A00040606000C0C0C000F0FBFF004080A00040A0 + E00040A0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0 + E00040C0E00040C0E00040C0E00040A0E00040A0E00040A0E00040A0E0000080 + C00080606000C0C0C000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000000000004040 + 40004040400040404000404040004040400040202000004080004080E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E0004080 + E0004080E0004080E0000040A00040606000C0C0C000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0C0C000000000004040 + 40004040400040404000404040004040400040404000000000004080E0004080 + E0004080E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E0004080E0000040800040608000C0C0C000000000004080A00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040A0E00040A0E0000080 + C00040608000C0C0C000F0FBFF00000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0C0C000000000004040 + 40004040400040404000404040004040400040404000000000004080E0004080 + E0004080E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0E00040A0 + E00040A0E0004080E0000040800040608000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000402020004020 + 2000404040004040400040404000404040004040400040202000002040000040 + A0000040C0004060E0004060E0004060E0004080E00040A0E00040A0E00040A0 + E00040A0E0004080E0000040800080808000C0DCC000000000004080A00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040A0E0004080 + C00040608000C0C0C000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000402020004020 + 2000404040004040400040404000404040004040400040202000002040000040 + A0000040C0004060E0004060E0004060E0004080E00040A0E00040A0E00040A0 + E00040A0E0004080E0000040800080808000C0DCC00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 0000404040004040400040404000406060004060600040606000402020004020 + 20000000000000000000002060000040C0000040C0000060E0004060E0004060 + E0004060E0000020600000204000A4A0A000F0FBFF000000000040A0C00040A0 + E00040C0E00040C0E00040C0E00040C0E00080C0E00080C0E00080C0E00080C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E0000080 + C00040608000C0C0C000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 0000404040004040400040404000406060004060600040606000402020004020 + 20000000000000000000002060000040C0000040C0000060E0004060E0004060 + E0004060E0000020600000204000A4A0A000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF000000 + 0000404040004040400040404000404040004060600080606000806060008080 + 8000808080004040400040202000000000000020400000208000002080000020 + 6000000000000000000040404000C0C0C000F0FBFF000000000080A0C00040A0 + E00040C0E00040C0E00040A0E00040A0C0000080C00040A0E00040A0E00040C0 + E00040C0E00040C0E00040C0E00040C0E00040C0E00040C0E0004080C0000060 + A00040608000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF000000 + 0000404040004040400040404000404040004060600080606000806060008080 + 8000808080004040400040202000000000000020400000208000002080000020 + 6000000000000000000040404000C0C0C000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000A4A0 + A000000000004040400040606000406060004060600080606000808080008080 + 8000A4A0A000A4A0A000A4A0A000806060004020200040202000000000004020 + 2000402020000000000080808000F0FBFF000000000000000000C0DCC0004080 + C00040A0C0000080A0004080C00040A0C00040A0C0004080C0000060A0000080 + C0004080E00040A0E00040A0E00040A0E0004080E0000080C0000080A0000060 + A00080808000C0DCC00000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000A4A0 + A000000000004040400040606000406060004060600080606000808080008080 + 8000A4A0A000A4A0A000A4A0A000806060004020200040202000000000004020 + 2000402020000000000080808000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000406060000000000040606000406060008060600080606000808080008080 + 8000A4A0A000A4A0A000C0C0C000C0C0C0008080800080808000406060004040 + 40000000000040202000C0C0C000F0FBFF000000000000000000000000000060 + A0000060A0000080A0004080C00040A0C00040A0E00040A0E00080C0E00080A0 + E00040A0C0004080C0000080A0000080A0004080C0004080A0000060A0000060 + A000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000406060000000000040606000406060008060600080606000808080008080 + 8000A4A0A000A4A0A000C0C0C000C0C0C0008080800080808000406060004040 + 40000000000040202000C0C0C000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF004020200000000000406060008060600080808000808080008080 + 80008080800080808000A4A0A000A4A0A000A4A0A00080808000406060004040 + 400000000000C0C0C000F0FBFF000000000000000000000000000000000040A0 + C0000080A00040A0C00040A0E00040A0E00040A0E00080C0E00080C0E00080C0 + E00080E0E000C0DCC00080C0E00080C0C00040A0C0004080A0000080A0004060 + 8000C0C0C000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF004020200000000000406060008060600080808000808080008080 + 80008080800080808000A4A0A000A4A0A000A4A0A00080808000406060004040 + 400000000000C0C0C000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF004060600000000000406060008080800080808000A4A0 + A000A4A0A0008080800080808000808080008060600040606000402020000000 + 0000A4A0A000F0FBFF000000000000000000000000000000000000000000F0FB + FF000080A00040A0C00040A0E00080C0E00080C0E00080C0E00080C0E00080C0 + E000C0DCC000C0DCC00080C0E00040A0C00040A0C0004080C0000060A000A4A0 + A000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF004060600000000000406060008080800080808000A4A0 + A000A4A0A0008080800080808000808080008060600040606000402020000000 + 0000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A4A0A0000000000040202000406060008080 + 8000A4A0A000808080008060600040404000402020000000000040404000C0C0 + C000F0FBFF000000000000000000000000000000000000000000000000000000 + 000080C0E0000080A00040A0E00080C0E00080C0E00080C0E00080C0E00080C0 + E00080C0E00080C0E00040A0E00040A0E00040A0C0000080A0004080A000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A4A0A0000000000040202000406060008080 + 8000A4A0A000808080008060600040404000402020000000000040404000C0C0 + C000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00A4A0A000404040000000 + 00000000000000000000000000004040400080606000C0C0C000F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000040A0C0000080A00080A0E00080C0E00080C0E00080C0E00080C0 + E00080C0E00080C0E00080C0E00040A0E0000080A0004080A000C0DCC0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00A4A0A000404040000000 + 00000000000000000000000000004040400080606000C0C0C000F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0C0C0000080A0004080C00080C0E000C0DCC00080E0 + E00080C0E00040A0C0004080C0000080A00080C0C000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF0080C0E00040A0C0004080A0004080 + A0004080A00080A0C00080C0C000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000C0000000300000000100010000000000800400000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF00000000 + 0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 + FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF + FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000 + 0000000000000000F80003FFFFFFFFF80003FFFF000000000000000000000000 + E000007FFFFFFFE000007FFF000000000000000000000000C000001F000FFFC0 + 00001FFF000000000000000000000000C00000000001FFC000000FFF00000000 + 0000000000000000C00000000000FFC000000FFF000000000000000000000000 + C00000000000FFC000000FFF000000000000000000000000C00000000000FFC0 + 00001FFF000000000000000000000000C00000000000FFC000001FFF00000000 + 0000000000000000C00000000000FFC000001FFF000000000000000000000000 + E00000008000FFE000001FFF000000000000000000000000E00000018000FFE0 + 00001FFF000000000000000000000000F0000001C000FFF000001FFF00000000 + 0000000000000000F8000001E001FFF800003FFF000000000000000000000000 + F8000001E001FFF800003FFF000000000000000000000000FC000003F003FFFC + 0000FFFF000000000000000000000000F00000000007FFF00000FFFF00000000 + 0000000000000000E0000000000FFFE00001FFFF000000000000000000000000 + E0000000001FFFE00000FFFF000000000000000000000000C0000040000FFFC0 + 0000FFFF000000000000000000000000C0000060000FFFC000007FFF00000000 + 0000000000000000800000600007FF8000007FFF000000000000000000000000 + 800000200007FF8000003FFF000000000000000000000000800000000003FF80 + 00003FFF000000000000000000000000800000000003FF8000003FFF00000000 + 0000000000000000800000000003FF8000003FFF000000000000000000000000 + 800000000003FF8000003FFF000000000000000000000000800000000001FF80 + 00003FFF000000000000000000000000800000400001FF8000007FFF00000000 + 0000000000000000C00000400001FFC000007FFF000000000000000000000000 + C00000400001FFC000007FFF000000000000000000000000C00000400003FFC0 + 00007FFF000000000000000000000000E00000C00003FFE00000FFFF00000000 + 0000000000000000F00000E00003FFF00000FFFF000000000000000000000000 + F00001E00003FFF00001FFFF000000000000000000000000F80003E00007FFF8 + 0003FFFF000000000000000000000000FE0007F0000FFFFE0007FFFF00000000 + 0000000000000000FF001FF8001FFFFF001FFFFF000000000000000000000000 + FFFFFFFC003FFFFFFFFFFFFF000000000000000000000000FFFFFFFE00FFFFFF + FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000 + 0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 + FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF + FFFFFFFF00000000000000000000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.pas b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.pas new file mode 100644 index 0000000..8740eb5 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/Unit1.pas @@ -0,0 +1,464 @@ +unit Unit1; + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + Classes, + Graphics, + Controls, + Forms, + Dialogs, + StdCtrls, + ImgList, + ExtCtrls, + ActiveX, + ComCtrls, + {$IFDEF COMPILER_6_UP} + Variants, + DateUtils, + {$ENDIF COMPILER_6_UP} + {$IFDEF COMPILER_7_UP} + XPMan, + {$ENDIF COMPILER_7_UP} + EasyListview, + MPCommonUtilities, + MPCommonObjects; + +const + COLUMNSTRINGS: array[0..4] of WideString = ( + 'Name', + 'Address', + 'Phone', + 'Contact', + 'ID' + ); + COLUMNWIDTHS: array[0..4] of Integer = ( + 120, + 180, + 90, + 90, + 40 + ); + +type + // + // First some data object is defined for the task + // + TBusinessType = ( + btIndividual, + btCompany + ); + + // We are going to use reference counting for our objects by using + // TEasyInterfacedPersistent as the ancestor. This class also implements + // IEasyExtractObj which allows us to extract the TObject out of the interface + // I know it is very un-COM like but most don't like to create a new interface + // to do it right + TBusinessObject = class(TEasyInterfacedPersistent) + private + FBusinessType: TBusinessType; + public + property BusinessType: TBusinessType read FBusinessType write FBusinessType; + end; + + TCustomer = class(TBusinessObject) + private + FName: WideString; + FAddress: WideString; + FLastContact: TDateTime; + FPhone: WideString; + FRecordID: Integer; + public + constructor Create; + destructor Destroy; override; + + property Address: WideString read FAddress write FAddress; + property Name: WideString read FName write FName; + property Phone: WideString read FPhone write FPhone; + property LastContact: TDateTime read FLastContact write FLastContact; + property RecordID: Integer read FRecordID write FRecordID; + end; + + // + // Now we "teach" it to interact with our EasyListview through interfaces + // Currently the following interfaces are defined + // IEasyCaptions + // IEasyCaptionsEditable + // IEasyImages + // IEasyImagesEditable + // IEasyChecks + // IEasyCompareData + // IEasyNotifier + // IEasyExtractObj + // + + // Our customer Data will need Editable captions but the Images are + // hard coded and known by the class so we don't need to implement + // IEasyImageEditable + // + // A little gotcha here. We must also put IEasyCaptions which is + // IEasyCaptionsEditable's ancestor. If you don't a QueryInterface to + // IEasyCaptions fails and ELV can't query for the Caption. + TCustomerData = class(TCustomer, IEasyCaptions, IEasyCaptionsEditable, IEasyImages, + IEasyNotifier, IEasyCompare, IEasyDetails, IEasyChecks) + private + FNotifier: IEasyNotificationSink; + FChecked: Boolean; + function GetDetail(Line: Integer): Integer; + function GetDetailCount: Integer; + public + destructor Destroy; override; + + // IEasyNotifier + procedure OnRegisterNotify(const ANotifier: IEasyNotificationSink); + procedure OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); + // IEasyCaptions, IEasyCaptionsEditable + function GetCaption(Column: Integer): Variant; + function SetCaption(Column: Integer; const Value: Variant): Boolean; + // IEasyImages + function GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; + // IEasyCompareData + function Compare(const Data: IUnknown; Column: TEasyColumn): Integer; + // IEasyCaptions, IEasyCaptionsEditable + function GetChecked(Column: Integer): Boolean; + procedure SetChecked(Column: Integer; const Value: Boolean); + + property Captions[Column: Integer]: Variant read GetCaption; + property Checked[Column: Integer]: Boolean read GetChecked write SetChecked; + property Images[Column: Integer; ImageKind: TEasyImageKind]: Integer read GetImageIndex; + property Detail[Line: Integer]: Integer read GetDetail; + property DetailCount: Integer read GetDetailCount; + + property Notifier: IEasyNotificationSink read FNotifier write FNotifier; + end; + +type + TForm1 = class(TForm) + ImageListSmall: TImageList; + Splitter1: TSplitter; + Panel1: TPanel; + Memo1: TMemo; + ComboBox1: TComboBox; + Button1: TButton; + ImageListLarge: TImageList; + ImageListExLarge: TImageList; + ButtonAddCustomers: TButton; + EditCustomerAddCount: TEdit; + StatusBar1: TStatusBar; + Button2: TButton; + ButtonChangeCaption: TButton; + ButtonLoadData: TButton; + ELV: TEasyListview; + CheckBoxAutoSort: TCheckBox; + procedure ComboBox1Change(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ButtonAddCustomersClick(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure ButtonChangeCaptionClick(Sender: TObject); + procedure ButtonLoadDataClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure CheckBoxAutoSortClick(Sender: TObject); + private + { Private declarations } + procedure AddCustomers(Count: Integer); + public + { Public declarations } + RecordID: Integer; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +{ TCustomer } + +constructor TCustomer.Create; +begin + LastContact := Now +end; + +destructor TCustomer.Destroy; +begin + inherited; +end; + +{ TCustomerData } + +function TCustomerData.Compare(const Data: IUnknown; Column: TEasyColumn): Integer; +var + Customer: TCustomerData; +begin + // Pull our object out of the interface + Customer := TCustomerData( (Data as ICommonExtractObj).Obj); + case Column.Index of + 0: Result := WideStrIComp(PWideChar(Customer.Name), PWideChar( Name)); + 1: Result := WideStrIComp(PWideChar(Customer.Address), PWideChar( Address)); + 2: Result := WideStrIComp(PWideChar(Customer.Phone), PWideChar( Phone)); + 3: Result := CompareTime(Customer.LastContact, LastContact); + 4: Result := Customer.RecordID - RecordID + else + Result := 0 + end; + + if Column.SortDirection = esdDescending then + Result := -Result +end; + +destructor TCustomerData.Destroy; +begin + // Unhook from the EasyObject + if Assigned(FNotifier) then + Notifier.UnRegister; + inherited; +end; + +function TCustomerData.GetCaption(Column: Integer): Variant; +begin + case Column of + 0: + begin + // Flag it if it is checked + if FChecked then + Result := Name + '**' + else + Result := Name + end; + 1: Result := Address; + 2: Result := Phone; + 3: Result := LastContact; + 4: Result := RecordID; + else + // Empty the Variant + Result := '' + end; +end; + +function TCustomerData.GetChecked(Column: Integer): Boolean; +begin + if Column = 0 then + Result := FChecked + else + Result := False +end; + +function TCustomerData.GetDetail(Line: Integer): Integer; +begin + Result := 0; + case Line of + 0: Result := 0; /// Main Column caption + 1: Result := 3; /// Column 3 caption + 2: Result := 2; /// Column 2 caption + end +end; + +function TCustomerData.GetDetailCount: Integer; +begin + Result := 3 +end; + +function TCustomerData.GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; +begin + Result := -1; + + case ImageKind of + eikNormal: + begin + if Column < 1 then + begin + case BusinessType of + btIndividual: Result := 0; + btCompany: Result := 1; + end; + end + end; + eikOverlay: + begin + end; + eikState: + begin + end + end +end; + +procedure TCustomerData.OnRegisterNotify(const ANotifier: IEasyNotificationSink); +begin + Notifier := ANotifier +end; + +procedure TCustomerData.OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); +begin + Notifier := nil +end; + +function TCustomerData.SetCaption(Column: Integer; const Value: Variant): Boolean; +begin + Result := True; + case Column of + 0: Name := Value; + 1: Address := Value; + 2: Phone := Value; + 3: LastContact := Value; + 4: RecordID := Value + end +end; + + +procedure TCustomerData.SetChecked(Column: Integer; const Value: Boolean); +begin + if Column = 0 then + begin + FChecked := Value; + Notifier.InvalidateItem(True); + end; +end; + +{ TForm1 } + +procedure TForm1.ComboBox1Change(Sender: TObject); +begin + ELV.View := TEasyListStyle(ComboBox1.ItemIndex) +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + AddCustomers(1); +end; + +procedure TForm1.FormCreate(Sender: TObject); +begin + ComboBox1.ItemIndex:= 0; +end; + +procedure TForm1.ButtonAddCustomersClick(Sender: TObject); +begin + AddCustomers(StrToInt(EditCustomerAddCount.Text)); +end; + +procedure TForm1.AddCustomers(Count: Integer); +var + CustomerData: TCustomerData; + Group: TEasyGroup; + i: Integer; + TickCount: Cardinal; +begin + TickCount := GetTickCount; + ELV.BeginUpdate; + try + if ELV.Groups.Count = 0 then + begin + Group := ELV.Groups.Add; + Group.Caption := 'Group 1'; + end else + Group := ELV.Groups[0]; + + for i := 0 to Count -1 do + begin + CustomerData := TCustomerData.Create; + CustomerData.BusinessType := TBusinessType( Random(2)); + CustomerData.Name := 'New Customer ' + IntToStr(RecordID); + CustomerData.Address := '123 Elm St. Anytown USA, 99999'; + CustomerData.Phone := '102-555-7890'; + CustomerData.LastContact := Now; + CustomerData.RecordID := RecordID; + // Our Data object will freed automatically when the Item is freed + // because it is decended from TInterfacedObject + Group.Items.AddInterfaced(CustomerData); + Inc(RecordID) + end + finally + ELV.Sort.SortAll; + ELV.EndUpdate; + Statusbar1.Panels[0].Text := 'Elapsed Time: ' + IntToStr(GetTickCount - TickCount) + end +end; + +procedure TForm1.Button2Click(Sender: TObject); +var + TickCount: Cardinal; +begin + TickCount := GetTickCount; + if ELV.Groups.Count > 0 then + ELV.Groups.Clear; + Statusbar1.Panels[0].Text := 'Elapsed Time: ' + IntToStr(GetTickCount - TickCount); + RecordID := 0; +end; + +procedure TForm1.ButtonChangeCaptionClick(Sender: TObject); +begin +{ if Assigned(LocalData) then + begin + LocalData.SetCaption(0, 'John Smith'); + LocalData.SetCaption(1, '4523 WayEasy Way, Coolssville USA, 45687'); + LocalData.SetCaption(2, '406-555-6913'); + LocalData.Notifier.InvalidateItem(True); + end } +end; + +procedure TForm1.ButtonLoadDataClick(Sender: TObject); +var + CustomerData: TCustomerData; + Group: TEasyGroup; + i: Integer; + TickCount: Cardinal; + S: TStringList; +begin + S := TStringList.Create; + S.LoadFromFile('Data.txt'); + TickCount := GetTickCount; + ELV.BeginUpdate; + try + ELV.Groups.Clear; + Group := ELV.Groups.Add; + for i := 0 to (S.Count div 3) - 1 do + begin + CustomerData := TCustomerData.Create; + CustomerData.BusinessType := TBusinessType( Random(2)); + CustomerData.Name := S[i*3]; + CustomerData.Address := S[i*3+1]; + CustomerData.Phone := S[i*3+2]; + CustomerData.LastContact := Now; + CustomerData.RecordID := RecordID; + // Our Data object will freed automatically when the Item is freed + // because it is decended from TInterfacedObject + Group.Items.AddInterfaced(CustomerData); + Inc(RecordID) + end + finally + ELV.EndUpdate; + Statusbar1.Panels[0].Text := 'Elapsed Time: ' + IntToStr(GetTickCount - TickCount) + end; + S.Free +end; + +procedure TForm1.FormShow(Sender: TObject); +var + i: Integer; + Column: TEasyColumn; +begin + ComboBox1.ItemIndex := Integer(ELV.View); + CheckBoxAutoSort.Checked := ELV.Sort.AutoSort; + ELV.Header.Columns.Clear; + for i := 0 to High(COLUMNSTRINGS) do + begin + Column := ELV.Header.Columns.Add; + Column.Caption := COLUMNSTRINGS[i]; + Column.Width := COLUMNWIDTHS[i]; + Column.AutoToggleSortGlyph := True; + end; +end; + +procedure TForm1.CheckBoxAutoSortClick(Sender: TObject); +begin + ELV.Sort.AutoSort := CheckBoxAutoSort.Checked +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/UserInterfaceDataProject.dpr b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/UserInterfaceDataProject.dpr new file mode 100644 index 0000000..3a12310 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced (Jim)/UserInterfaceDataProject.dpr @@ -0,0 +1,13 @@ +program UserInterfaceDataProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/InterfacedPartOneProject.dpr b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/InterfacedPartOneProject.dpr new file mode 100644 index 0000000..ac13cae --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/InterfacedPartOneProject.dpr @@ -0,0 +1,17 @@ +program InterfacedPartOneProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}, + Unit2 in 'Unit2.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TImagelists, Imagelists); + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.dfm new file mode 100644 index 0000000..6b6d686 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.dfm @@ -0,0 +1,72 @@ +object Form1: TForm1 + Left = 121 + Top = 212 + Width = 595 + Height = 469 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object LV: TEasyListview + Left = 0 + Top = 33 + Width = 587 + Height = 402 + Align = alClient + CacheDoubleBufferBits = False + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsIcon + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 587 + Height = 33 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 22 + Height = 13 + Caption = 'View' + end + object cbViews: TComboBox + Left = 36 + Top = 6 + Width = 165 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.pas b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.pas new file mode 100644 index 0000000..8d3752b --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit1.pas @@ -0,0 +1,149 @@ +unit Unit1; + +// Demo: connect your your existing data classes to list items and keep the +// data handling code in one place: in your data class. +// +// This is part 1 of the interface demo which shows the basic usage. +// +// If you have a non-trivial application you probably also have some data +// classes, business objects, etc. How can you display aspects of this data +// without spreading data access code all over your different forms units? +// +// Let the data talk about itself and the associated list item will listen. +// Implement one or more of the following interfaces in your class: +// IEasyCaptions // Returns Captions for the control +// IEasyCaptionsEditable // Sets Captions in the data from the Control +// IEasyImages // Returns Images for the control +// IEasyImagesEditable // Sets Images in the data from the Control +// IEasyThumbnail // Returns Thumbnail for the control +// IEasyThumbnailEditable // Sets Thumbnail in the data from the Control +// IEasyChecks // Sets/Unsets the Checkbox State for the control +// IEasyNotifier // Returns an Inteterface to allow data to notify Control of changes in the data +// IEasyCompareData // Allows sorting of the data set +// +// They are all optional but usually you will want to implement at least +// IEasyCaptions (otherwise you won't have text on your listitems). +// Don't worry, the interfaces are all light weight, with only one or two +// methods. +// (We could have put all these methods into a single interface - but then +// you would have to implement 10 methods everytime. Even if you don't +// have thumbnails or don't need checkboxes...) +// +// Note the IEasyXXXEditable interfaces. If your data is readonly from the +// listview, in other words the user should not be able to edit captions etc, +// you don't need these. Otherwise, implement IEasyCaptionsEditable and your +// data class will be notified once the user has edited a listitem's caption +// and it may store the new caption in any way it wants to. +// Of course even if you don't want to have the data editable it can still +// change and the change can be reflected in the listitem. +// +// Editing and other things are demonstrated in the second part of this demo +// in the "Interfaced Part 2" demo folder. + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + EasyListview, + StdCtrls, + ExtCtrls, + Unit2, + MPCommonObjects; + +type + TForm1 = class(TForm) + LV: TEasyListview; + Panel1: TPanel; + cbViews: TComboBox; + Label1: TLabel; + procedure FormDestroy(Sender: TObject); + procedure cbViewsChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + FEmployees: TEmployees; + procedure AddColumns(Count: Integer); + procedure AddEmployees; + end; + +var + Form1: TForm1; + +implementation + +uses DatamoduleImagelists, ImgList; + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(LV.View); + + // Set up listview. This can be done at design time in the object inspector. + // It is done here so that you can see which properties are changed. + Imagelists.UseImagesForListview(LV); + LV.Header.Visible := True; + AddColumns(2); + + // Add a few items to play with. + FEmployees := TEmployees.Create; + FEmployees.Load; + AddEmployees; +end; + +procedure TForm1.FormDestroy(Sender: TObject); +begin + // This is very important to do before freeing the employees + LV.Groups.Clear; + FEmployees.Free; +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + // Synchronize list style combobox with listview list style. + LV.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.AddColumns(Count: Integer); +var + Column: TEasyColumn; + i: Integer; +begin + for i := 0 to Count - 1 do + begin + Column := LV.Header.Columns.Add; + Column.Caption := 'Column ' + IntToStr(i); + Column.ImageIndex := i; + Column.Width := 150; + end; +end; + +procedure TForm1.AddEmployees; +var + i: Integer; +begin + // Add items to the listview. Actually the items are added to the first + // group. This group is created automatically when the first item is added. + LV.BeginUpdate; + try + for i := 0 to FEmployees.Count - 1 do + LV.Items.AddInterfaced(FEmployees[i]); + finally + LV.EndUpdate; + end; +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit2.pas b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit2.pas new file mode 100644 index 0000000..fdf8417 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part One/Unit2.pas @@ -0,0 +1,158 @@ +unit Unit2; + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + SysUtils, + Classes, + Contnrs, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + EasyListview; + +type + TEmployee = class(TObject, // you could use any base class here + IInterface, // the list item can only be associated with an IInterface + IEasyCaptions, // implement only those interfaces you want to return data for + IEasyImages, + IEasyDetails) + private + FFirstname: WideString; + FLastname: WideString; + FImageIndex: Integer; + // IUnknown: in this case we don't use reference counting (although we could) + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; + protected + function GetCaption(Column: Integer): Variant; // IEasyCaptions + function GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; // IEasyImages + function GetDetail(Line: Integer): Integer; // IEasyDetails (for the tile view) + function GetDetailCount: Integer; // IEasyDetails (for the tile view) + public + constructor Create(Firstname, Lastname: WideString; ImageIndex: Integer); + destructor Destroy; override; + property Firstname: WideString read FFirstname; + property Lastname: WideString read FLastname; + end; + + TEmployees = class + private + FList: TObjectList; + function GetCount: Integer; + function GetEmployee(Index: Integer): TEmployee; + public + constructor Create; + destructor Destroy; override; + procedure Load; + property Count: Integer read GetCount; + property Employees[Index: Integer]: TEmployee read GetEmployee; default; + end; + +implementation + +{ TEmployee } + +constructor TEmployee.Create(Firstname, Lastname: WideString; + ImageIndex: Integer); +begin + inherited Create; + FFirstname := Firstname; + FLastname := Lastname; + FImageIndex := ImageIndex; +end; + +destructor TEmployee.Destroy; +begin + inherited Destroy; +end; + +function TEmployee.GetCaption(Column: Integer): Variant; +begin + case Column of + 0: Result := Firstname; + 1: Result := Lastname; + else + Result := Null; + end; +end; + +function TEmployee.GetDetail(Line: Integer): Integer; +begin + Result := Line; +end; + +function TEmployee.GetDetailCount: Integer; +begin + Result := 2; +end; + +function TEmployee.GetImageIndex(Column: Integer; + ImageKind: TEasyImageKind): Integer; +begin + if (Column = 0) and (ImageKind = eikNormal) then + Result := FImageIndex + else + Result := -1; +end; + +function TEmployee.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE; +end; + +function TEmployee._AddRef: Integer; +begin + Result := -1; +end; + +function TEmployee._Release: Integer; +begin + Result := -1; +end; + +{ TEmployees } + +constructor TEmployees.Create; +begin + inherited Create; + FList := TObjectList.Create; +end; + +destructor TEmployees.Destroy; +begin + FList.Free; + inherited; +end; + +function TEmployees.GetCount: Integer; +begin + Result := FList.Count; +end; + +function TEmployees.GetEmployee(Index: Integer): TEmployee; +begin + Result := TEmployee(FList[Index]); +end; + +procedure TEmployees.Load; +begin + // We could load data from disk but for this demo it may suffice to have + // some static data. + FList.Clear; + FList.Add(TEmployee.Create('Aniston', 'Jennifer', 0)); + FList.Add(TEmployee.Create('Carrey', 'Jim', 1)); + FList.Add(TEmployee.Create('Knightley', 'Keira', 2)); + FList.Add(TEmployee.Create('Lester', 'Adrian', 3)); + FList.Add(TEmployee.Create('Marceau', 'Sophie', 4)); + FList.Add(TEmployee.Create('Reno', 'Jean', 5)); +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/InterfacedPartTwoProject.dpr b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/InterfacedPartTwoProject.dpr new file mode 100644 index 0000000..75cc248 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/InterfacedPartTwoProject.dpr @@ -0,0 +1,17 @@ +program InterfacedPartTwoProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}, + Unit2 in 'Unit2.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TImagelists, Imagelists); + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.dfm new file mode 100644 index 0000000..3d0d83a --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.dfm @@ -0,0 +1,85 @@ +object Form1: TForm1 + Left = 223 + Top = 170 + Width = 595 + Height = 469 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object LV: TEasyListview + Left = 0 + Top = 33 + Width = 587 + Height = 402 + Align = alClient + CacheDoubleBufferBits = False + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsIcon + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 587 + Height = 33 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 587 + 33) + object Label1: TLabel + Left = 8 + Top = 8 + Width = 22 + Height = 13 + Caption = 'View' + end + object cbViews: TComboBox + Left = 36 + Top = 6 + Width = 165 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + object bBeSilly: TButton + Left = 508 + Top = 4 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Be Silly' + TabOrder = 1 + OnClick = bBeSillyClick + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.pas b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.pas new file mode 100644 index 0000000..01de098 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit1.pas @@ -0,0 +1,157 @@ +unit Unit1; + +// Demo: connect your your existing data classes to list items and keep the +// data handling code in one place: in your data class. +// +// Interfaced Demo Part 2: +// +// This demo extends part 1 and shows some of the more "involved" features. +// If you did not look at part 1 already you should probably do that now +// to get a feeling for this way of connecting data and listview. +// +// In this demo: +// +// 1. How can the listview know when data changes, although the data does not +// know the listview and vice versa? +// +// This is were IEasyNotifier comes into play. If your class is implementing +// this interface (two methods) the listitem will register itself with your +// data by providing an IEasyNotificationSink. This sink can be used to talk +// back to the listitem to have it repaint itself. Instead of long winded +// explanations, just start the demo and click on the "Be Silly" button which +// will trigger the data to change. Then see how IEasyNotifier and FNotifier +// is used in TEmployee in Unit2. +// Notice that Unit2 does not have any GUI accessing code, it is fully +// separated from its display (similar to the model-view-controller design +// pattern). +// +// 2. How can users edit captions and have the data changed? +// +// Enable editing in the listview's EditManager. In your data class implement +// IEasyCaptionsEditable which has only a SetCaption method. In this method +// verify that the input is ok and store it in your data fields. If the input +// is not ok, simply return false from this method and the listview will +// silently revert to the previous caption. +// +// 3. Sorting +// +// not implemented in ELV + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + EasyListview, + StdCtrls, + ExtCtrls, + Unit2, + MPCommonUtilities, MPCommonObjects; + +type + TForm1 = class(TForm) + LV: TEasyListview; + Panel1: TPanel; + cbViews: TComboBox; + Label1: TLabel; + bBeSilly: TButton; + procedure bBeSillyClick(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure cbViewsChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + FEmployees: TEmployees; + procedure AddColumns(Count: Integer); + procedure AddEmployees; + end; + +var + Form1: TForm1; + +implementation + +uses DatamoduleImagelists, ImgList; + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(LV.View); + + // Set up listview. This can be done at design time in the object inspector. + // It is done here so that you can see which properties are changed. + Imagelists.UseImagesForListview(LV); + LV.Header.Visible := True; + LV.EditManager.Enabled := True; // allow editing + AddColumns(2); + + // Add a few items to play with. + FEmployees := TEmployees.Create; + FEmployees.Load; + AddEmployees; +end; + +procedure TForm1.FormDestroy(Sender: TObject); +begin + // This is very important to do before freeing the employees + LV.Groups.Clear; + FEmployees.Free; +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + // Synchronize list style combobox with listview list style. + LV.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.AddColumns(Count: Integer); +var + Column: TEasyColumn; + i: Integer; +begin + for i := 0 to Count - 1 do + begin + Column := LV.Header.Columns.Add; + Column.Caption := 'Column ' + IntToStr(i); + Column.ImageIndex := i; + Column.Width := 150; + end; +end; + +procedure TForm1.AddEmployees; +var + i: Integer; +begin + // Add items to the listview. Actually the items are added to the first + // group. This group is created automatically when the first item is added. + LV.BeginUpdate; + try + for i := 0 to FEmployees.Count - 1 do + LV.Items.AddInterfaced(FEmployees[i]); + finally + LV.EndUpdate; + end; +end; + +procedure TForm1.bBeSillyClick(Sender: TObject); +begin + // This changes the name of a random employee. The listitem will be updated + // automatically. Notice that this call could be anywhere in the application, + // it does not need to be aware of the listview. + FEmployees.BeSilly; +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit2.pas b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit2.pas new file mode 100644 index 0000000..a79402d --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Interfaced Part Two/Unit2.pas @@ -0,0 +1,223 @@ +unit Unit2; + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + SysUtils, + Classes, + Contnrs, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + StrUtils, + EasyListview; + +type + TEmployee = class(TObject, // you could use any base class here + IInterface, // the list item can only be associated with an IInterface + IEasyCaptions, // implement only those interfaces you want to return data for + IEasyImages, + IEasyDetails, + IEasyNotifier, + IEasyCaptionsEditable, + IEasyCompare) + private + FFirstname: WideString; + FImageIndex: Integer; + FLastname: WideString; + FNotifier: IEasyNotificationSink; + protected + // IUnknown: in this case we don't use reference counting (although we could) + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; + // IEasyCaptions: provide captions for all columns and details for the tiled view + function GetCaption(Column: Integer): Variant; + // IEasyImages: provide imagelist indexes for normal, state and overlay images + function GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; + // IEasyDetails: provide a few captions (columns) for the tiled view + function GetDetail(Line: Integer): Integer; + function GetDetailCount: Integer; + // IEasyNotifier: report data changes back to the listitem + procedure OnRegisterNotify(const ANotifier: IEasyNotificationSink); + procedure OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); + // IEasyCaptionsEditable: accept edits from the listitem + function SetCaption(Column: Integer; const Value: Variant): Boolean; + // IEasyCompareData: compare data to allow listitem sorting + function Compare(const Data: IUnknown; Column: TEasyColumn): Integer; + public + constructor Create(Lastname, Firstname: WideString; ImageIndex: Integer); + destructor Destroy; override; + procedure ToggleFunnyName; + property Firstname: WideString read FFirstname; + property Lastname: WideString read FLastname; + end; + + TEmployees = class + private + FList: TObjectList; + function GetCount: Integer; + function GetEmployee(Index: Integer): TEmployee; + public + constructor Create; + destructor Destroy; override; + procedure BeSilly; + procedure Load; + property Count: Integer read GetCount; + property Employees[Index: Integer]: TEmployee read GetEmployee; default; + end; + +implementation + +{ TEmployee } + +function TEmployee.Compare(const Data: IUnknown; Column: TEasyColumn): Integer; +begin + Result := 0; // TODO +end; + +constructor TEmployee.Create(Lastname, Firstname: WideString; + ImageIndex: Integer); +begin + inherited Create; + FFirstname := Firstname; + FLastname := Lastname; + FImageIndex := ImageIndex; +end; + +destructor TEmployee.Destroy; +begin + inherited; +end; + +function TEmployee.GetCaption(Column: Integer): Variant; +begin + case Column of + 0: Result := Lastname; + 1: Result := Firstname; + else + Result := Null; + end; +end; + +function TEmployee.GetDetail(Line: Integer): Integer; +begin + Result := Line; +end; + +function TEmployee.GetDetailCount: Integer; +begin + Result := 2; +end; + +function TEmployee.GetImageIndex(Column: Integer; + ImageKind: TEasyImageKind): Integer; +begin + if (Column = 0) and (ImageKind = eikNormal) then + Result := FImageIndex + else + Result := -1; +end; + +procedure TEmployee.OnRegisterNotify(const ANotifier: IEasyNotificationSink); +begin + // Remember this notifier because we will use it later to talk back to the + // list item. + FNotifier := ANotifier; +end; + +procedure TEmployee.OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); +begin + // The list item will not be available anymore and we must forget its + // then useless notifier. + FNotifier := nil; +end; + +function TEmployee.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE; +end; + +function TEmployee.SetCaption(Column: Integer; const Value: Variant): Boolean; +var + NewName: WideString; +begin + // The caption of the given column has been edited. For this demo we + // allow editing column 0 only. + // You may check the input and reject it, e.g. if it does not have a suitable + // format. Let's require a minimum length of 3 characters. + NewName := Value; + Result := (Column = 0) and (Length(NewName) >= 3); + if Result then + FLastname := NewName // will be invalidated automatically via IEasyCaptions +// else +// raise Exception.Create('name must have at least 3 characters'); +end; + +procedure TEmployee.ToggleFunnyName; +begin + FLastname := ReverseString(FLastname); + if FNotifier <> nil then + FNotifier.InvalidateItem(True); +end; + +function TEmployee._AddRef: Integer; +begin + Result := -1; +end; + +function TEmployee._Release: Integer; +begin + Result := -1; +end; + +{ TEmployees } + +procedure TEmployees.BeSilly; +begin + if Count > 0 then + Employees[Random(Count)].ToggleFunnyName; +end; + +constructor TEmployees.Create; +begin + inherited Create; + FList := TObjectList.Create; +end; + +destructor TEmployees.Destroy; +begin + FList.Free; + inherited; +end; + +function TEmployees.GetCount: Integer; +begin + Result := FList.Count; +end; + +function TEmployees.GetEmployee(Index: Integer): TEmployee; +begin + Result := TEmployee(FList[Index]); +end; + +procedure TEmployees.Load; +begin + // We could load data from disk but for this demo it may suffice to have + // some static data. + FList.Clear; + FList.Add(TEmployee.Create('Aniston', 'Jennifer', 0)); + FList.Add(TEmployee.Create('Carrey', 'Jim', 1)); + FList.Add(TEmployee.Create('Knightley', 'Keira', 2)); + FList.Add(TEmployee.Create('Lester', 'Adrian', 3)); + FList.Add(TEmployee.Create('Marceau', 'Sophie', 4)); + FList.Add(TEmployee.Create('Reno', 'Jean', 5)); +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Simple/SimpleProject.dpr b/official/1.7.0/EasyListview/Demos/Basic/Simple/SimpleProject.dpr new file mode 100644 index 0000000..ddb4fd2 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Simple/SimpleProject.dpr @@ -0,0 +1,16 @@ +program SimpleProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TImagelists, Imagelists); + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.dfm new file mode 100644 index 0000000..cfc7338 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.dfm @@ -0,0 +1,72 @@ +object Form1: TForm1 + Left = 135 + Top = 189 + Width = 593 + Height = 467 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object LV: TEasyListview + Left = 0 + Top = 33 + Width = 585 + Height = 400 + Align = alClient + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoItem.TileDetailCount = 2 + ParentFont = False + Selection.MouseButtonSelRect = [cmbLeft, cmbRight] + TabOrder = 0 + View = elsIcon + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 585 + Height = 33 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 22 + Height = 13 + Caption = 'View' + end + object cbViews: TComboBox + Left = 36 + Top = 6 + Width = 165 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.pas b/official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.pas new file mode 100644 index 0000000..3956333 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Simple/Unit1.pas @@ -0,0 +1,107 @@ +unit Unit1; + +// Demo: simplest way to use EasyListview (very similar to TListview) + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + EasyListview, + StdCtrls, + ExtCtrls, + MPCommonObjects; + +type + TForm1 = class(TForm) + LV: TEasyListview; + Panel1: TPanel; + cbViews: TComboBox; + Label1: TLabel; + procedure cbViewsChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + procedure AddColumns(Count: Integer); + procedure AddItems(Count: Integer); + end; + +var + Form1: TForm1; + +implementation + +uses DatamoduleImagelists, ImgList; + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(LV.View); + + // Set up listview. This can be done at design time in the object inspector. + // It is done here so that you can see which properties are changed. + Imagelists.UseImagesForListview(LV); + LV.Header.Visible := True; + AddColumns(2); + + // Add a few items to play with. + AddItems(5000); +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + // Synchronize list style combobox with listview list style. + LV.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.AddColumns(Count: Integer); +var + Column: TEasyColumn; + i: Integer; +begin + for i := 0 to Count - 1 do + begin + Column := LV.Header.Columns.Add; + Column.Caption := 'Column ' + IntToStr(i); + Column.ImageIndex := i; + Column.Width := 150; + end; +end; + +procedure TForm1.AddItems(Count: Integer); +var + i: Integer; + Item: TEasyItem; +begin + // Add items to the listview. Actually the items are added to the first + // group. This group is created automatically when the first item is added. + LV.BeginUpdate; + try + for i := 0 to Count - 1 do + begin + Item := LV.Items.Add; + Item.Caption := 'Item ' + IntToStr(i); // this is the same as Item.Captions[0] + Item.Captions[1] := 'Detail ' + IntToStr(i); + Item.ImageIndex := i mod LV.ImagesSmall.Count; + Item.Details[0] := 0; // Use Report Column 0 for the first Tile View Detail + Item.Details[1] := 1; // Use Report Column 1 for the second Tile View Detail + end; + finally + LV.EndUpdate; + end; +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.dfm new file mode 100644 index 0000000..b27da73 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.dfm @@ -0,0 +1,75 @@ +object Form1: TForm1 + Left = 204 + Top = 221 + Width = 595 + Height = 469 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object LV: TEasyListview + Left = 0 + Top = 33 + Width = 587 + Height = 402 + Align = alClient + CacheDoubleBufferBits = False + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsIcon + OnItemGetCaption = LVItemGetCaption + OnItemGetImageIndex = LVItemGetImageIndex + OnItemGetTileDetail = LVItemGetTileDetail + OnItemGetTileDetailCount = LVItemGetTileDetailCount + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 587 + Height = 33 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 22 + Height = 13 + Caption = 'View' + end + object cbViews: TComboBox + Left = 36 + Top = 6 + Width = 165 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.pas b/official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.pas new file mode 100644 index 0000000..d2a7fcd --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Virtual/Unit1.pas @@ -0,0 +1,158 @@ +unit Unit1; + +// Demo: use EasyListview with virtual data +// +// In this mode the listview does not store item captions, imageindexes etc but +// asks for them on the fly when it needs them, using one of the data callback +// events: +// OnColumnGetCaption +// OnColumnGetDetail +// OnColumnGet... +// OnGroupGetCaption +// OnGroupGetDetail +// OnGroupGet... +// OnItemGetCaption +// OnItemGetTileDetail +// OnItemGet... +// +// This allows you to store the data anywhere you want. You can even reuse your +// existing data structures and simply use the listview as view into your data. + +interface + +{$I ..\..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + EasyListview, + StdCtrls, + ExtCtrls, MPCommonObjects; + +type + TForm1 = class(TForm) + LV: TEasyListview; + Panel1: TPanel; + cbViews: TComboBox; + Label1: TLabel; + procedure LVItemGetImageIndex(Sender: TCustomEasyListview; + const Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; + var ImageIndex: TCommonImageIndexInteger); + procedure LVItemGetCaption(Sender: TCustomEasyListview; + const Item: TEasyItem; Column: Integer; var Caption: WideString); + procedure cbViewsChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure LVItemGetTileDetailCount(Sender: TCustomEasyListview; + const Item: TEasyItem; var Count: Integer); + procedure LVItemGetTileDetail(Sender: TCustomEasyListview; + const Item: TEasyItem; Line: Integer; var Detail: Integer); + private + procedure AddColumns(Count: Integer); + procedure AddItems(Count: Integer); + end; + +var + Form1: TForm1; + +implementation + +uses DatamoduleImagelists, ImgList; + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(LV.View); + + // Set up listview. This can be done at design time in the object inspector. + // It is done here so that you can see which properties are changed. + Imagelists.UseImagesForListview(LV); + LV.Header.Visible := True; + AddColumns(2); + + // Add a few items to play with. + AddItems(5000); +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + // Synchronize list style combobox with listview list style. + LV.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.AddColumns(Count: Integer); +var + Column: TEasyColumn; + i: Integer; +begin + // Columns can also be virtual and query their caption (etc) on the fly. It + // works in the same way as with items. Here, the columns are static for + // simplicity. + for i := 0 to Count - 1 do + begin + Column := LV.Header.Columns.Add; + Column.Caption := 'Column ' + IntToStr(i); + Column.ImageIndex := i; + Column.Width := 150; + end; +end; + +procedure TForm1.AddItems(Count: Integer); +var + i: Integer; +begin + // Add items to the listview. Actually the items are added to the first + // group. This group is created automatically when the first item is added. + LV.BeginUpdate; + try + for i := 0 to Count - 1 do + LV.Items.AddVirtual; + finally + LV.EndUpdate; + end; +end; + +procedure TForm1.LVItemGetCaption(Sender: TCustomEasyListview; + const Item: TEasyItem; Column: Integer; var Caption: WideString); +begin + case Column of + 0: Caption := 'Item ' + IntToStr(Item.Index); + 1: Caption := 'Detail ' + IntToStr(Item.Index); + end; +end; + +procedure TForm1.LVItemGetImageIndex(Sender: TCustomEasyListview; + const Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; + var ImageIndex: TCommonImageIndexInteger); +begin + if ImageKind = eikNormal then // important, make sure you don't return normal images for states or overlays + ImageIndex := Item.Index mod LV.ImagesSmall.Count; +end; + +procedure TForm1.LVItemGetTileDetailCount(Sender: TCustomEasyListview; + const Item: TEasyItem; var Count: Integer); +begin + Count := 2 +end; + +procedure TForm1.LVItemGetTileDetail(Sender: TCustomEasyListview; + const Item: TEasyItem; Line: Integer; var Detail: Integer); +begin + // Map the Detail to a Header Column index + Detail := Line; + if Detail > LV.Header.Columns.Count - 1 then + Detail := 0 +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Basic/Virtual/VirtualProject.dpr b/official/1.7.0/EasyListview/Demos/Basic/Virtual/VirtualProject.dpr new file mode 100644 index 0000000..6f96490 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Basic/Virtual/VirtualProject.dpr @@ -0,0 +1,16 @@ +program VirtualProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TImagelists, Imagelists); + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/official/1.7.0/EasyListview/Demos/Context Menus/ContextMenuProject.dpr b/official/1.7.0/EasyListview/Demos/Context Menus/ContextMenuProject.dpr new file mode 100644 index 0000000..a2a74b9 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Context Menus/ContextMenuProject.dpr @@ -0,0 +1,13 @@ +program ContextMenuProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Context Menus/README-WIN.TXT b/official/1.7.0/EasyListview/Demos/Context Menus/README-WIN.TXT new file mode 100644 index 0000000..ed862f6 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Context Menus/README-WIN.TXT @@ -0,0 +1,39 @@ +About this icon set +Copyright (c) 2001 by Hide Itoh . All rights reserved. + + +Important note about using icons +-------------------------------- + +The copyright of original objects belongs to the original copyright +holder. PIXTURE STUDIO retains the copyright of icons, not the +copyright of the original object. + +The enclosed icons were created from scratch by Hide Itoh. Usage of +the icons are limited to personal computerÕs desktop only. + +Usage at web sites are also limited. Only non-profit indivisuals or +organizations can use these icons by giving authorÕs credit and URL +of PIXTURE STUDIO on each page that uses the icons. Any other sites +(including commercial sites) are required to obtain license from +the author by paying a license fee. + +Distribution of the icon set archive is also limited to non-profit +indivisual web sites only. All the other sites are required to obtain +a license to distribute the icon set archive. For distributing icon +sets, you must use the original archive. Any changes to the original +archive file and itÕs contents are strictly prohibited. You must +distribute it as a freeware icon set and must not charge or request +money or compensation of any kind. + +These icons may not be used for any commercial purposes. If you +want to put this archive to a free CD-ROM that comes with books, +magazines, etc.. , you are required to contact the author and must +get the written permission in advance. + + + +____________________________________________________________________ +Hide Itoh (PIXTURE STUDIO) +e-mail: hide@pixture.com +home page: http://www.pixture.com/ \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Demos/Context Menus/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Context Menus/Unit1.dfm new file mode 100644 index 0000000..d8baa38 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Context Menus/Unit1.dfm @@ -0,0 +1,9417 @@ +object Form1: TForm1 + Left = 251 + Top = 225 + Width = 678 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object ELV: TEasyListview + Left = 0 + Top = 65 + Width = 670 + Height = 381 + Align = alClient + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -16 + GroupFont.Name = 'Comic Sans MS' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + ImagesGroup = ImageListGroup + ImagesSmall = ImageListSmall + ImagesLarge = ImageListLarge + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoGroup.MarginTop.Size = 48 + PaintInfoItem.TileDetailCount = 3 + ParentFont = False + PopupMenu = PopupMenuGeneric + PopupMenuHeader = PopupMenuHeader + Selection.MouseButtonSelRect = [cmbLeft, cmbRight] + TabOrder = 0 + View = elsIcon + OnColumnContextMenu = ELVColumnContextMenu + OnGroupContextMenu = ELVGroupContextMenu + OnItemContextMenu = ELVItemContextMenu + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 670 + Height = 65 + Align = alTop + TabOrder = 1 + object cbViews: TComboBox + Left = 24 + Top = 8 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + object CheckBoxSpecialItem: TCheckBox + Left = 256 + Top = 8 + Width = 145 + Height = 17 + Caption = 'Special Item Menu' + TabOrder = 1 + end + object CheckBoxSpecialGroup: TCheckBox + Left = 256 + Top = 24 + Width = 161 + Height = 17 + Caption = 'Special Group Menu' + TabOrder = 2 + end + object CheckBoxSpecialColumn: TCheckBox + Left = 256 + Top = 40 + Width = 145 + Height = 17 + Caption = 'Special Column Menu' + TabOrder = 3 + end + end + object ImageListSmall: TImageList + Left = 128 + Top = 16 + Bitmap = { + 494C010117001800040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000006000000001002000000000000060 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000777777000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000CCCC0000CCCC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00777777007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CCCC0000CCCC00CCFFFF00CCFFFF0000CCCC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002222220022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF000000 + 0000AAAAAA000000000000000000FFFFFF000000000000000000AAAAAA000000 + 0000000000000000000088888800000000000000000000000000000000000000 + 0000000000000000000000CCCC00CCFFFF00CCFFFF00CCFFFF0000CCCC0000CC + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700222222004444 + 4400000000002222220000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF000000 + 0000000000000000000000000000FFFFFF000000000000000000000000000000 + 0000AAAAAA005555550000000000000000000000000000CCCC0066FFFF0066FF + FF00000000000000000000666600CCFFFF0066FFFF0000CCCC00FFFFFF000066 + 660000CCCC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770011111100000000000000000055555500000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + CC00000000000000000000000000FFFFFF000000000000000000000000000000 + 000000000000AAAAAA0000000000000000000000000000CCCC0066FFFF0066FF + FF0000CCCC0066FFFF0000CCCC0000CCCC00FFFFFF0066FFFF00000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA005555550022222200222222001111110088888800444444000000 + 550000000000000077000000770000000000000000000000000000000000FFFF + FF0000000000CCCCCC0044444400FFFFFF000000000088888800000000000000 + 0000DDDDDD000000000000000000000000000000000000CCCC0066FFFF0066FF + FF0066FFFF0000CCCC00FFFFFF0066FFFF0066FFFF0000000000000000000000 + 00000000000066FFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000044444400AAAAAA00555555002222220088888800555555000000 + 770000007700000000000000BB0000000000000000000000000000000000FFFF + FF000066FF00000000000000000044444400CCCCCC0044444400000000008888 + 8800444444000000000000000000000000000000000000CCCC0066FFFF0000CC + CC00FFFFFF0066FFFF0066FFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000022222200BBBBBB00BBBBBB000000AA000000 + AA0000002200000000000000BB0000000000000000000000000000000000FFFF + FF00000000004444440000000000FFFFFF0022222200EEEEEE00CCCCCC004444 + 4400000000000000000000000000000000000000000000CCCC000066660066FF + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000AAAAAA000000EE000000AA000000 + AA0000000000000000000000BB00000000000000000000000000000000004444 + 4400CCCCCC00BBBBBB00CCCCCC00EEEEEE00AAAAAA00FFFFFF0022222200AAAA + AA00CCCCCC004444440000000000000000000000000066FFFF00006666000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000EE000000 + EE0000000000000000000000BB00000000000000000044444400CCCCCC00FFFF + FF00CCCCCC0044444400444444003366CC00CCCCCC00EEEEEE00AAAAAA00FFFF + FF0022222200AAAAAA00CCCCCC000000000000000000000000000000000066FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000EE000000BB000000AA0000000000CCCCCC00DDDDDD0000000000FFFF + FF00FFFFFF00AAAAAA00DDDDDD009999CC00444444003366CC00CCCCCC00CCCC + CC00AAAAAA00FFFFFF0000000000000000000000000000000000000000000000 + 0000FFFFFF0000CCCC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCCCCC00FFFF + FF00DDDDDD0055555500FFFFFF00AAAAAA00DDDDDD009999CC00444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF0000CCCC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCCCC00BBBBBB00CCCCCC0055555500FFFFFF00AAAAAA00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 440088888800BBBBBB00BBBBBB00AAAAAA00AAAAAA00CCCCCC00888888002222 + 2200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000088888800BBBBBB005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003366990000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00444444004444 + 4400DDDDDD000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000044444400BBBB + BB00FFFFFF00DDDDDD00AAAAAA00AAAAAA00BBBBBB00DDDDDD00FFFFFF00CCCC + CC00222222000000000000000000000000000000000000000000000000000000 + 000088888800BBBBBB00000000002222220022222200AAAAAA00555555000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC003366990033669900336699000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0088888800555555003333 + 00003333000000000000CCCC660033330000BBBBBB0077777700000000000000 + 000000000000000000000000000000000000000000000000000022222200AAAA + AA00BBBBBB00FFFFFF00444444004444440044444400AAAAAA00DDDDDD005555 + 550000000000000000000000000000000000000000000000000088888800BBBB + BB00000000000033660066FFFF0000CCFF00003366005555550022222200AAAA + AA0055555500000000000000000000000000000000006699CC006699CC006699 + CC006699CC0099CCFF0033669900336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000777777006666 + 33003333000066660000CCCC6600FFFFFF00DDDDDD0077777700000055000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00AAAAAA00FFFFFF00444444004444440044444400AAAAAA00CCCCCC007777 + 77000000000000000000000000000000000088888800BBBBBB00000000000033 + 660066FFFF007777770066FFFF0000CCFF000099CC000099CC00003366005555 + 550022222200AAAAAA000000000000000000000000006699CC006699CC0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF003366990033669900336699003366 + 990000000000000000000000000000000000000000000000000099990000CCCC + 66009999000033330000CCCC6600FFFFFF00DDDDDD0000000000444444000000 + 0000DDDDDD0000000000000000000000000055000000FF66330000000000BBBB + BB00AAAAAA00FFFFFF00BBBBBB00AAAAAA00BBBBBB00DDDDDD00CCCCCC007777 + 770000000000000000005500000000000000555555000033660099FFFF007777 + 7700444444000099CC0066FFFF0033CCFF000099CC000099CC000099CC000066 + 9900003366002222220000000000000000000000000099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 00000000000099990000CCCC660055555500FFFFFF00BBBBBB00444444007777 + 77000000000033330000DDDDDD0000000000550000000000000000000000AAAA + AA0000000000555555005555550055555500444444001111110000000000FFFF + FF0000000000FF663300FF33000000000000000000000000000099FFFF000099 + CC004444440066FFFF0066FFFF0066FFFF0066FFFF0066FFFF000099CC000099 + CC0000669900000000000000000000000000000000000000000099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF003366990099CCFF0099CC + FF00336699003366990033669900000000000000000000000000000000006666 + 000099990000CCCC6600CCCC6600CCCC660055555500BBBBBB00FFFFFF00FFFF + FF00AAAAAA00666600006666000000000000FF33000000000000000000000000 + 0000BBBBBB00BBBBBB0077777700FFFFFF0077777700FFFFFF00444444000000 + 00000000000000000000FF33000000000000000000000000000066FFFF0099FF + FF0099FFFF0066FFFF0000CCFF0000CCFF0000CCFF0066FFFF0066FFFF0066FF + FF000099CC000000000000000000000000000000000000000000000000000000 + 000099CCFF0099CCFF0099CCFF00336699003333330033333300888888000000 + 000099CCFF0099CCFF0033669900000000000000000000000000000000009999 + 00006666000099990000999900006666000099990000CCCC6600CCCC6600CCCC + 6600999900000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00550000005500000055000000FFFFFF00444444000000 + 00000000000000000000CC33000000000000000000000000000000CCFF0033CC + FF0033CCFF000099CC000099CC000099CC000099CC0000CCFF0000CCFF0066FF + FF0066FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF00444444008888880055555500EEEEEE002222 + 22006699CC0099CCFF0099CCFF00000000000000000000000000000000000000 + 000099990000CCCC660099990000666600006666000066660000999900003333 + 0000999900000000000000000000000000000000000000000000000000000000 + 000000000000FF33000055000000663300005500000055000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000CC + FF000099CC0066FFFF0000CCFF000099CC0033669900336699000099CC0000CC + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880055555500DDDDDD008888 + 880099CCFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000999900003333000000000000FFFFFF00FFFFFF000000 + 0000666600000000000000000000000000000000000000000000000000000000 + 000055000000FF33000066330000663300006633000066330000550000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF000099CC0033669900336699000033660033669900003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC6600666600004444440000000000000000006666 + 0000999900004444440000000000000000000000000000000000000000000000 + 000066330000FF66330066330000663300006633000066330000550000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF0066FFFF0066FFFF0000CCFF0000CCFF000099CC00003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCCC660099990000CCCC6600CCCC66006666 + 0000000000000000000077777700000000000000000000000000000000000000 + 000066330000FF66330066330000663300006633000066330000550000000000 + 00000000000000000000000000000000000000000000000000000000000066FF + FF0000CCFF0033CCFF0033CCFF0033CCFF0033CCFF000066990000CCFF000066 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FF330000FF663300FF663300FF663300FF66330066330000663300000000 + 00000000000000000000000000000000000000000000000000000000000000CC + FF0066FFFF0066FFFF0066FFFF0033CCFF0033CCFF0033CCFF0033CCFF000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FF330000FF330000FF330000FF330000FF330000FF330000663300000000 + 00000000000000000000000000000000000000000000000000000000000066FF + FF0000CCFF0099FFFF0099FFFF0099FFFF0066FFFF0066FFFF00006699000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FF663300FF663300FF66330000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000099CC000099CC000066990000000000000000000000 + 0000000000005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000066CCFF007777770077777700AAAA + AA0066CCFF0066CCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033999900006666002222 + 2200111111001111110011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000066CCFF0044444400777777000000 + 00007777770077777700777777000099CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066666600555555002222 + 2200222222002222220022222200222222002222220011111100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002222 + 2200222222004444440055555500FFFFFF007777770066CCFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400333333003333 + 3300333333004444440044444400444444004444440033333300222222001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000022222200005500006666 + 00006666000066660000000000000000000055555500FFFFFF00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033333300333333004444 + 44004444440000FFFF0000FFFF0000FFFF0000FFFF0000999900333333001111 + 110000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000005500000055 + 0000005500006666000099993300000000000000000044444400777777000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000033333300333333004444 + 440000FFFF0000FFFF0000FFFF0000FFFF005555550088888800444444002222 + 2200BBBBBB007777770000FFFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000005500006666 + 0000666600006666000066660000005500009999330099993300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440000000000000000000000 + 0000000000000000000000000000000000000000000033333300333333004444 + 440000FFFF0000FFFF0000FFFF00555555005555550000FFFF0000FFFF003333 + 33000000000000FFFF0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000666600006666 + 0000666600009999330044444400999933006666000066660000666600000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400000000000000 + 0000000000000000000000000000000000000000000033333300444444004444 + 440000FFFF0000FFFF0000FFFF0000FFFF005555550000FFFF0000FFFF003333 + 3300000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD000000 + 00000000000000000000000000000000000000000000000000000099FF003366 + FF00666600004444440000000000222222006666000000550000005500000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444000000 + 0000000000000000000000000000000000000000000055555500666666006666 + 66000099990000FFFF0000FFFF0000FFFF005555550000FFFF0000FFFF003333 + 3300000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD000000000000000000000000000000000000000000000000000099FF003366 + FF00666600006666000000000000111111004444440066660000005500000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400000000000000000000000000000000000000000088888800888888005555 + 55004444440000FFFF0000FFFF0000FFFF005555550000FFFF00009999003333 + 3300000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00000000000000000000000000000000000000000066CCFF000099 + FF00666600009999330000550000000000006666000099996600999966000055 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00004444440000000000000000000000000000000000AAAAAA00DDDDDD00BBBB + BB0055555500666666000099990000FFFF0000FFFF0000999900444444005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000009999 + 330099993300CCCC9900666600000055000066660000FFFFFF00FFFFFF009999 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00004444440011111100000000000000000000000000BBBBBB00AAAAAA009999 + 9900888888007777770055555500555555004444440044444400555555006666 + 6600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00000000000000000000000000000000000000000000000000000000002222 + 22002222220099993300CCCC9900999933006666000000550000FFFFFF009999 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000444444001111110000000000000000000000000000000000000000007777 + 7700777777007777770066666600666666006666660077777700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000EEEEEE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000666600002222220099993300999933006666000066660000666600000055 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001111 + 1100BBBBBB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000066660000999933009999330099993300000000000000 + 0000000000007777770000000000000000000000000000000000000000000000 + 000000000000000000000000000055555500000000000000000044444400BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555004444440088888800444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000003399CC003399CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000003399CC003399CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000022222200111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF003399CC000066 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440055555500888888002222 + 2200000000001111110011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA00AAAA + AA00FFFFFF00DDDDDD00AAAAAA00000000000000000000000000000000000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003399CC003399 + CC00006699000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800000000000000 + 000022222200BBBBBB0022222200000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF003366 + FF0044444400555555007777770077777700AAAAAA0000000000000000000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003399 + CC003399CC000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888002222 + 2200555555002222220000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003366FF006666 + 0000666600000055000000550000444444007777770077777700AAAAAA000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB0088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003399CC003399CC0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA002222 + 2200000000005555550055555500555555005555550022222200111111001111 + 1100000000000000000000000000000000000000000000000000000000009999 + 0000666600006666000000000000000000000055000044444400777777000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB00DDDDDD00333399000000 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000003399CC0077777700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002222 + 2200555555005555550055555500000000002222220088888800333333002222 + 2200222222001111110000000000000000000000000000000000000000009999 + 0000666600006666000000110000001100004444440044444400005500000000 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000006666 + CC00333399000000660000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00DDDDDD000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00222222002222220022222200000000005555550022222200888888008888 + 880055555500222222000000000000000000000000000000000000000000CCCC + 990066660000BBBBBB0066660000666600004444440088888800444444004444 + 440000550000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000006666CC0033339900000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555008888880022222200000000000000 + 0000000000005555550000000000000000000000000000000000000000009999 + 0000999900004444440066660000999900006666000066660000001100006666 + 000000000000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880011111100000000000000 + 0000000000008888880000000000000000000000000000000000000000009999 + 0000999900006666000000550000CCCC99009999000099990000666600006666 + 000066660000000000000000000000000000EEEEEE0000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 0000000000003333330000000000000000000000000000000000000000009999 + 00009999000000550000000000000000000000000000CCCC9900999900009999 + 0000666600000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA00AAAA + AA0033333300000000000000000000000000000000000000000000000000CCCC + 9900999900006666000000550000000000000000000000000000000000009999 + 00006666000000000000777777000000000000000000DDDDDD00AAAAAA000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009999 + 0000CCCC99009999000066660000666600000055000000000000666600009999 + 000066660000000000000000000000000000000000000000000000000000DDDD + DD00AAAAAA00000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCC9900CCCC9900999900009999000066660000005500006666 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00AAAAAA00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCCC9900CCCC9900999900000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500DDDDDD007777770055555500555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF0000336600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770055555500DDDDDD007777770055555500555555000099 + CC00555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC00336699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF00003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770066FFFF0066FFFF0066FFFF0066FFFF0033CCFF005555 + 5500555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000055555500000000000000000000000000000000006699CC003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF000033 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000066FFFF0033CCFF0033CCFF0033CCFF0033CCFF005555 + 5500555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC00336699000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF000099CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066FFFF0033CCFF000066990066FFFF0033CC + FF0066FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + AA000000EE000000AA0000000000000000000000000000000000000000000000 + 00006699CC003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCFFFF000099CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000099CC0066FFFF0066FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + AA000000EE000000EE0000000000000000000000000000000000000000000000 + 0000000000006699CC0033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCFFFF000099CC0000000000DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033CCFF0066FFFF000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + EE000000EE000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC00336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00DDDDDD00EEEEEE00000000000000 + 00000000000000000000000000000000000000000000FFFFFF00555555007777 + 7700777777004444440000669900111111000000000033CCFF0066FFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000055000000AA00000055000000000044444400000055000000 + EE000000EE000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000006699CC003366990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00EEEEEE00DDDDDD00EEEEEE00FFFFFF000000 + 000000000000000000000000000000000000000000002222220077777700BBBB + BB00AAAAAA00555555000099CC000099CC0000669900006699000099CC000000 + 00000000000000000000000000000000000000000000FFFFFF00555555007777 + 770077777700000055000000EE000000AA0000005500000055000000AA003333 + FF000000EE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006699CC0033669900000000000000 + 000000000000AAAAAA0022222200000000000000000000000000000000000000 + 00000000000000000000DDDDDD00EEEEEE00DDDDDD00EEEEEE00FFFFFF00EEEE + EE00000000000000000000000000000000000000000000000000AAAAAA00FFFF + FF00555555005555550033CCFF0033CCFF0033CCFF0088888800000000000066 + 990000000000000000000000000000000000000000007777770077777700BBBB + BB00AAAAAA00555555000000EE000000EE000000EE0022222200000055000000 + 5500000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC00336699000000 + 00004444440055555500AAAAAA00000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00DDDDDD00EEEEEE00FFFFFF00EEEE + EE00DDDDDD000000000000000000000000000000000000000000000000005555 + 5500555555008888880033CCFF0033CCFF0033CCFF0055555500888888000000 + 0000555555000000000000000000000000000000000000000000FFFFFF00FFFF + FF0055555500555555000000FF000000FF000000EE0055555500000055002222 + 2200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 440055555500AAAAAA0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00EEEEEE00FFFFFF00EEEE + EE00DDDDDD00EEEEEE0000000000000000000000000000000000000000000000 + 000066FFFF0066FFFF000099CC0066FFFF007777770033CCFF0033CCFF0033CC + FF00555555000000000000000000000000000000000000000000000000000000 + 0000000055000000AA003333FF003333FF000000FF000000EE00777777005555 + 5500003366000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444005555 + 5500AAAAAA000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00FFFFFF00EEEE + EE00DDDDDD00EEEEEE00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000066FFFF0066FFFF0033CCFF00AAAAAA000000000033CC + FF00555555000000000000000000000000000000000000000000000000000000 + 0000000000006666FF009999FF006666FF00000055003333FF000000FF000000 + EE000000AA000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004444440077777700AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00EEEE + EE00DDDDDD00EEEEEE0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000066FFFF0066FFFF0033CCFF0033CC + FF0033CCFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000006666FF009999FF006666FF00000055003333 + FF000000FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440077777700AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006666FF009999FF006666 + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440000336600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000222222000000BB000000 + 88000000BB005555550000000000000000000000000000000000000000000000 + 0000444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000669900AAAAAA00777777000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + 9900CCCC9900777777000000000055555500DDDDDD00AAAAAA00AAAAAA000000 + 0000000000000000000000000000000000000000BB000000BB00777777002222 + 22004444440000000000BBBBBB00000000000000000000000000111111005555 + 5500444444000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCCCC00BBBBBB00BBBBBB0000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA006699CC003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCCC9900444444004444 + 4400444444004444440044444400FFFFFF002222220044444400DDDDDD00DDDD + DD00000000000000000000000000000000004444440000008800222222004444 + 4400000000004444440000000000AAAAAA001111110055555500AAAAAA001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00BBBBBB00BBBBBB0055555500AAAAAA000000 + 000000000000000000000000000000000000000000000000000099CCFF006699 + CC00336699000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00FFFFFF004444 + 44007777770044444400BBBBBB00DDDDDD0055555500DDDDDD0022222200DDDD + DD00000000000000000000000000000000000000000000000000000000005555 + 5500AAAAAA00AAAAAA000000000077777700AAAAAA0011111100000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00BBBBBB00BBBBBB00BBBBBB00AAAAAA00AAAA + AA000000000000000000000000000000000000000000000000000000000099CC + FF006699CC003366990000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF0000000000AAAA + AA0077777700BBBBBB0066666600BBBBBB00BBBBBB00DDDDDD0055555500DDDD + DD0000000000000000000000000000000000000000000000000000000000DDDD + DD00FFFFFF00FFFFFF0044444400000000007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD004444 + 4400DDDDDD00DDDDDD00FFFFFF0000000000FFFFFF00BBBBBB00BBBBBB00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 000099CCFF006699CC0033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000077777700FFFFFF0066666600DDDDDD00DDDDDD0077777700222222004444 + 4400777777008888880000000000000000000000000000000000000000000000 + 000011111100DDDDDD0011111100444444002222220000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB00DDDD + DD0000000000000000000000000000000000888888000000000000000000BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF006699CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 440044444400AAAAAA00BBBBBB00DDDDDD00DDDDDD0077777700444444004444 + 4400222222005555550000000000000000000000000000000000000000000000 + 000000000000AAAAAA00DDDDDD00777777000000000011111100111111003333 + 0000000000000000000000000000000000000000000000000000FFFFFF000000 + 000000000000888888008888880000000000000000000000000099CCFF006699 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00004444440077777700DDDDDD0066666600EEEEEE00DDDDDD00DDDDDD00DDDD + DD00444444000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA00AAAAAA00000000009999660066660000666600003333 + 0000333300003333000000000000000000000000000000000000000000006699 + CC000000000000000000888888005555550099CCFF00000000006699CC0099CC + FF00888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00AAAAAA0077777700BBBBBB00BBBBBB00EEEEEE00DDDDDD00888888008888 + 8800777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033330000999966006666 + 0000666600003333000011111100000000000000000000000000000000000000 + 000000000000000000000000000099CCFF006699CC0099CCFF0099CCFF0099CC + FF0099CCFF008888880000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB007777770077777700FFFFFF00BBBBBB0055555500555555007777 + 7700BBBBBB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003333 + 000099996600AAAAAA0055555500000000000000000000000000000000000000 + 000000000000000000000000000099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444002222 + 2200000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE0000000000AAAAAA0077777700EEEEEE00EEEEEE00BBBB + BB00000000004444440000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000001111110055555500000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF0099CCFF0099CCFF0099CC + FF006699CC006699CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444004444 + 4400222222000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400000000004444440044444400000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF006699CC006699 + CC006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA005555 + 550055555500FFFFFF0000000000000000000000000000000000000000000000 + 0000000000004444440000000000000000000000000077777700222222000000 + 0000000000004444440000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777002222 + 2200444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 770000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000600000000100010000000000000300000000000000000000 + 000000000000000000000000FFFFFF00FFFFFF7FFFFF0000FFFFFE7FFFFF0000 + FFFFFE7FFE3F0000FFFF983FFC1F00002DFFC20DCC0F0000807FCC6180070000 + C01FCC7B00130000C000E013007B0000F000E00300F90000FC04E00303FD0000 + FE00C0018FFC0000FF800000C7FE0000FFE10003E1FF0000FFFB800FF87F0000 + FFFFE01FFF7F0000FFFFF8BFFFFF0000FFFFFFFFF01FFEFFFFFFCFFFC007F83F + F1FF00FFC007E00FC07F001FC0078003001F800F000500010007C00300010001 + 0001C000000180038001E00020098007E001E0037019C007F801E007F01FC007 + FE03F803F01FE00FFF8FFC01F01FE01FFFFFFC05F01FC00FFFFFFE3FF01FC00F + FFFFFFFFF00FE007FFFFFFFFF825F030FFFFEFFF0FFF9FFFDFFFC7FF01FFC7FF + 007FE3FF007FE3FF001FF1FF001FF1FF000FF8FF800FF8FF0003FC7F800FFC7F + 0000FE3F801FFE3F0001FF1F801FFF1F000FFF8F800FFF8F000FFFC7800FFFC7 + 000FFFE3C00FFFE3000FFFE3C007FFF3800FFFC7E007FFF3C01FFF8FF003FFE3 + F07FFF1FF811FE07FFFFFF3FFFFCFE0F9FFFFFFFEFFF7FFF0FFFFFFFEFFF3FFF + 0FFF03FFE3FF2FFF8FFF01FF80FF3BFF87FF00FF003F3E7FC3FFC03F800F3F1F + E1FFC007C00F3F07F0FFC003C00F3F41FC7FE001C0073F70FE3FF001C0073F7D + FF3FFE01C0073F7FFF9FFF83C1013F7FFFCFFF81C0C08F7FFFE7FFFFE007C37F + FFF3FFFFF007F07FFFFBFFFFFE0FFCFFFE7FFFFEBFFF7FFFF80FFFFD1FFF3FFF + F807FFFB0FFF9FFFF807FFF387FFCFFFF807FFE3C3FFE7FFFC07FFE3E1FFF37F + FF0FFFC3F0FFF83F8E0FFF83F87FFC1F000F8803FC39F80F800F0007FE10F807 + C00F8007FF00FC03E007C007FF81FE01F003E007FF83FF00F803F007FF07FF81 + FE07FC07FF0FFFC3FFCFFF07FF1FFFE7FFFFFFFFFFFFFFFFC1FFFFEF1FFFF63F + 00E3FEFB0FFFC01F0003F83707FF000F0007E00B83FF0007801F800DC1FF8007 + C03F800FE0FFB001E01F800FF0FFE001F007800FF87FE003F801C007FE7FE001 + FE00F003FFBFE003FFC0FC01FF8FF009FFF1FE01FF87F409FFFFFF03FFC3F193 + FFFFFF8FFFE7F3C3FFFFFFBFFFFFFFE700000000000000000000000000000000 + 000000000000} + end + object ImageListLarge: TImageList + Height = 32 + Width = 32 + Left = 160 + Top = 16 + Bitmap = { + 494C010117001800040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 000000000000360000002800000080000000C000000001002000000000000080 + 0100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000077777700BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000CCCC0000CCCC0000CCCC0000CC + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CCCC0000CCCC00CCFFFF00CCFFFF00CCFFFF0000CC + CC0000CCCC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA00AAAAAA0077777700BBBBBB0077777700AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000CCCC0066FFFF0000CCCC00CCFFFF00CCFFFF00CCFFFF00CCFF + FF0000CCCC0000CCCC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00000000000000000000000000000000000000000000000000AAAA + AA00AAAAAA000000000000000000FFFFFF00BBBBBB000000000000000000AAAA + AA00AAAAAA000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066FFFF0000CCCC00CCFFFF00CCFFFF00CCFFFF00CCFFFF00CCFF + FF00CCFFFF0000CCCC0000666600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007777770022222200222222002222 + 2200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00000000000000000000000000AAAAAA00AAAAAA000000 + 0000000000000000000000000000FFFFFF00BBBBBB0000000000000000000000 + 000000000000AAAAAA00AAAAAA00000000000000000000000000000000000000 + 0000000000008888880000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000CCCC00CCFFFF00CCFFFF00CCFFFF00CCFFFF00CCFFFF00CCFF + FF00CCFFFF0000CCCC000066660000CCCC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700777777002222 + 2200222222002222220000000000777777000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0000000000AAAAAA00AAAAAA0000000000000000000000 + 0000000000000000000000000000FFFFFF00BBBBBB0000000000000000000000 + 0000000000000000000000000000AAAAAA00AAAAAA0000000000000000000000 + 0000DDDDDD000000000000000000000000000000000000000000000000000000 + 00000000000000CCCC0000CCCC0000CCCC000000000000000000000000000000 + 000066FFFF0033999900CCFFFF00CCFFFF0066FFFF0066FFFF0066FFFF0066FF + FF0000CCCC0000CCCC00006666000066660000CCCC0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 7700777777002222220000000000444444000000000000000000000000002222 + 2200222222000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00AAAAAA00000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00BBBBBB0000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00AAAAAA005555 + 5500AAAAAA0000000000000000000000000000000000000000000000000000CC + CC0000CCCC0066FFFF00CCFFFF0066FFFF0000CCCC0000000000000000000000 + 000066FFFF0000666600CCFFFF00CCFFFF0066FFFF0066FFFF0000CCCC0000CC + CC00FFFFFF00FFFFFF0000CCCC000066660066FFFF0000CCCC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770000000000000000004444440044444400000000005555 + 5500222222001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00000000000000000000000000000000000000 + 000000000000000000004444440044444400BBBBBB0000000000000000000000 + 000000000000000000000000000000000000000000000000000055555500AAAA + AA0000000000000000000000000000000000000000000000000000000000CCFF + FF0066FFFF00CCFFFF0066FFFF00CCFFFF0033CCCC0000000000000000000000 + 000066FFFF000066660066FFFF0066FFFF0000CCCC0000CCCC00FFFFFF00FFFF + FF0066FFFF0033CCCC000000000000000000FFFFFF0066FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400000000000000000000000000000000007777 + 7700555555001111110000000000000000000000000000000000000000005555 + 5500444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00CCCCCC000000000000000000000000000000 + 00000000000000000000CCCCCC00FFFFFF004444440000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA0000000000000000000000000000000000000000000000000066FFFF0000CC + CC00CCFFFF0066FFFF00CCFFFF0066FFFF00CCFFFF0000CCCC000000000066FF + FF000066660000CCCC0000CCCC0000CCCC00FFFFFF00FFFFFF00CCFFFF0066FF + FF00CCFFFF0000000000000000000000000000000000FFFFFF0000CCCC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555000000000000000000AAAAAA00FFFFFF0000000000222222007777 + 7700555555002222220011111100111111000000000000000000000000007777 + 7700555555004444440000005500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00CCCCCC000000000000000000000000000000 + 0000CCCCCC00DDDDDD000066FF00FFFFFF00CCCCCC00CCCCCC00888888000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 88000000000000000000000000000000000000000000000000000066660000CC + CC0066FFFF00CCFFFF0066FFFF00CCFFFF00CCFFFF0033CCCC0066FFFF000066 + 660000CCCC0000CCCC00FFFFFF00FFFFFF0066FFFF00CCFFFF0066FFFF000000 + 0000000000000000000000000000000000000000000000000000FFFFFF0000CC + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00FFFFFF005555 + 5500555555002222220022222200222222001111110011111100000000008888 + 8800777777004444440000007700000055000000550000000000000055000000 + 7700000077000000770000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF004444440000000000CCCCCC00CCCC + CC00DDDDDD0044444400DDDDDD00FFFFFF00CCCCCC0000000000000000008888 + 88008888880000000000000000000000000000000000DDDDDD00AAAAAA000000 + 00000000000000000000000000000000000000000000000000003399990000CC + CC00CCFFFF0066FFFF00CCFFFF0066FFFF00CCFFFF0066FFFF0000CCCC0000CC + CC00FFFFFF00FFFFFF00CCFFFF0066FFFF00CCFFFF0066FFFF00000000000000 + 00000000000000000000000000000000000000000000000000000000000066FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA00AAAA + AA00AAAAAA005555550055555500222222002222220022222200000000008888 + 8800777777005555550000000000000077000000770000005500000077000000 + BB000000BB000000770000005500000000000000000000000000000000000000 + 000000000000000000000000000044444400CCCCCC0000000000000000000000 + 000044444400CCCCCC00CCCCCC00000000000000000044444400444444000000 + 00000000000088888800888888000000000044444400AAAAAA00AAAAAA000000 + 000000000000000000000000000000000000000000000000000066FFFF000066 + 660000CCCC00CCFFFF0066FFFF00CCFFFF0066FFFF0000CCCC00FFFFFF00FFFF + FF0066FFFF00CCFFFF0066FFFF00CCFFFF000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0000CCCC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400AAAAAA00AAAAAA00AAAAAA00555555005555550022222200555555008888 + 880088888800555555000000AA00000077000000770000007700000000000000 + 0000000000000000BB0000007700000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF000066FF000066FF00CCCCCC000000 + 00000000000000000000000000004444440044444400CCCCCC00CCCCCC004444 + 4400444444000000000000000000888888008888880044444400444444000000 + 000000000000000000000000000000000000000000000000000066FFFF0000CC + CC003399990066FFFF00CCFFFF0000CCCC00FFFFFF00FFFFFF00CCFFFF0066FF + FF00CCFFFF0066FFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000055555500AAAAAA00AAAAAA002222220022222200AAAAAA00AAAA + AA0088888800555555000000AA000000AA000000220000007700000000000000 + 0000000000000000BB0000007700000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF0000000000CCCCCC00888888000000 + 000000000000000000000000000022222200AAAAAA00AAAAAA00AAAAAA00CCCC + CC00CCCCCC004444440044444400000000000000000088888800888888000000 + 000000000000000000000000000000000000000000000000000033CCCC0066FF + FF003399990033CCCC00FFFFFF00FFFFFF0066FFFF00CCFFFF0066FFFF00CCFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066FFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000002222220022222200BBBBBB00BBBBBB00BBBB + BB00888888000000AA000000AA000000AA000000AA0000002200000000000000 + 0000000000000000BB0000007700000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF000000000000000000000000004444 + 4400444444000000000000000000FFFFFF002222220022222200AAAAAA00EEEE + EE00EEEEEE00CCCCCC00CCCCCC00444444004444440000000000000000000000 + 000000000000000000000000000000000000000000000000000033CCCC0000CC + CC00FFFFFF000066660033CCCC0066FFFF00CCFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000AAAAAA00AAAAAA00BBBBBB00BBBBBB008888 + 88000000AA000000AA000000AA00000022000000AA000000AA00000000000000 + 0000000000000000BB0000007700000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004444440044444400BBBB + BB00CCCCCC000000000000000000AAAAAA00FFFFFF00FFFFFF00222222002222 + 2200EEEEEE00AAAAAA00AAAAAA00CCCCCC00CCCCCC0044444400444444000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF0066FFFF0066FFFF0000666600006666000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000066FFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00AAAAAA000000 + EE00000000000000AA000000AA000000AA000000220000000000FFFFFF000000 + 0000000000000000BB0000007700000000000000000000000000000000000000 + 00000000000000000000000000004444440044444400CCCCCC00BBBBBB00BBBB + BB00CCCCCC00CCCCCC00EEEEEE00EEEEEE00AAAAAA00AAAAAA00FFFFFF00FFFF + FF002222220022222200AAAAAA00AAAAAA00AAAAAA00CCCCCC00CCCCCC004444 + 44004444440000000000000000000000000000000000000000000000000066FF + FF00006666000066660000CCCC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00AAAAAA000000EE000000EE000000AA000000AA0000000000FFFFFF000000 + 0000000000000000BB0000007700000000000000000000000000000000000000 + 0000000000004444440044444400FFFFFF00CCCCCC00CCCCCC00BBBBBB00BBBB + BB003366CC003366CC003366CC00EEEEEE00CCCCCC00CCCCCC00AAAAAA00AAAA + AA00FFFFFF00FFFFFF002222220022222200AAAAAA00AAAAAA0000000000CCCC + CC00CCCCCC004444440044444400000000000000000000000000000000000000 + 0000FFFFFF0066FFFF0000CCCC0000CCCC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000EE000000EE000000EE000000000000000000FFFFFF000000 + 0000000000000000BB0000007700000000000000000000000000000000004444 + 440044444400CCCCCC00FFFFFF00FFFFFF00CCCCCC00CCCCCC00555555004444 + 44004444440044444400444444003366CC003366CC00CCCCCC00CCCCCC00EEEE + EE00AAAAAA00AAAAAA00FFFFFF00FFFFFF002222220022222200AAAAAA00AAAA + AA00AAAAAA00CCCCCC00CCCCCC00000000000000000000000000000000000000 + 00000000000000000000FFFFFF0066FFFF0000CCCC0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000EE000000EE000000AA00000000000000 + 00000000EE000000AA000000000000000000000000004444440044444400DDDD + DD00CCCCCC00CCCCCC00FFFFFF00FFFFFF00CCCCCC0055555500AAAAAA00DDDD + DD00DDDDDD009999CC009999CC0044444400444444003366CC003366CC00EEEE + EE00EEEEEE00CCCCCC00AAAAAA00AAAAAA00FFFFFF00FFFFFF00222222002222 + 2200AAAAAA000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF0066FFFF0000CCCC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000EE000000EE000000AA000000 + BB000000BB000000AA00000000000000000000000000CCCCCC00CCCCCC00DDDD + DD000000000000000000FFFFFF00FFFFFF0055555500FFFFFF00FFFFFF00AAAA + AA00AAAAAA00DDDDDD00DDDDDD009999CC009999CC0044444400444444003366 + CC003366CC00CCCCCC00CCCCCC00CCCCCC00AAAAAA00AAAAAA00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF0000CC + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000EE000000 + EE000000EE00000000000000000000000000000000000000000000000000CCCC + CC00CCCCCC00CCCCCC0000000000000000000066FF005555550055555500FFFF + FF00FFFFFF00AAAAAA00AAAAAA00DDDDDD00DDDDDD009999CC009999CC004444 + 4400444444003366CC00CCCCCC00CCCCCC00CCCCCC0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0066FFFF0000CCCC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCCCC00FFFFFF00FFFFFF000066FF00DDDDDD00BBBBBB005555 + 550055555500FFFFFF00FFFFFF00AAAAAA00AAAAAA00DDDDDD00DDDDDD009999 + CC009999CC004444440044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0066FFFF0000CCCC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00DDDDDD00DDDDDD00BBBBBB00BBBB + BB00CCCCCC005555550055555500FFFFFF00FFFFFF00AAAAAA00AAAAAA00DDDD + DD00DDDDDD00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0000CCCC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCCCCC00BBBBBB00BBBB + BB00DDDDDD00CCCCCC00CCCCCC005555550055555500FFFFFF00FFFFFF00AAAA + AA00AAAAAA00AAAAAA0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000BBBB + BB00DDDDDD00DDDDDD00EEEEEE00CCCCCC00CCCCCC000000000000000000FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00EEEEEE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444005555 + 5500555555005555550044444400444444004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000088888800888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444008888880088888800DDDDDD00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00AAAAAA00AAAAAA00AAAAAA00AAAAAA00CCCC + CC00BBBBBB008888880022222200222222000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008888880088888800BBBBBB00BBBBBB005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00DDDDDD00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400BBBBBB00DDDDDD00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BBBBBB00DDDDDD00DDDDDD002222220000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888008888 + 8800BBBBBB00BBBBBB005555550055555500AAAAAA00AAAAAA00555555005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000006699CC003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00DDDDDD00444444004444440044444400DDDDDD00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000044444400BBBBBB00BBBBBB00DDDDDD00FFFFFF00FFFFFF00DDDD + DD00DDDDDD00AAAAAA00AAAAAA00AAAAAA00BBBBBB00BBBBBB00BBBBBB00DDDD + DD00FFFFFF00FFFFFF00DDDDDD00CCCCCC00BBBBBB0022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880088888800BBBBBB00BBBB + BB00555555000000000000000000222222002222220022222200AAAAAA00AAAA + AA00555555005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006699CC006699CC006699CC003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00DDDDDD004444 + 4400444444008888880088888800888888003333000033330000DDDDDD00DDDD + DD000000000000000000DDDDDD00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000044444400BBBBBB0088888800FFFFFF00BBBBBB00DDDDDD00FFFF + FF0022222200222222002222220022222200222222002222220022222200AAAA + AA00DDDDDD00FFFFFF00FFFFFF0055555500BBBBBB0022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008888880088888800BBBBBB00BBBBBB00555555000000 + 0000000000000033660000336600003366000033660055555500222222002222 + 2200AAAAAA00AAAAAA0055555500555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC006699CC006699CC006699CC006699CC003366 + 9900336699003366990033669900336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00444444008888 + 8800888888005555550033330000333300009999000033330000000000000000 + 0000DDDDDD00CCCC66006666000033330000BBBBBB00BBBBBB00000000007777 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002222220088888800AAAAAA0077777700BBBBBB00DDDDDD00FFFF + FF004444440044444400AAAAAA0044444400777777004444440022222200AAAA + AA00FFFFFF00DDDDDD0055555500555555005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008888880088888800BBBBBB00BBBBBB005555550000000000000000000033 + 66000033660066FFFF0066FFFF0000CCFF000099CC0000336600003366005555 + 55002222220022222200AAAAAA00AAAAAA005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC006699CC006699CC006699CC006699CC006699CC006699CC003366 + 9900336699003366990033669900336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500333300003333000000000000666633009999000033330000666600006666 + 000000000000CCCC660055555500FFFFFF0044444400DDDDDD00000000007777 + 7700000000000000AA0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00AAAAAA0077777700BBBBBB00DDDDDD00FFFF + FF0044444400AAAAAA00444444007777770044444400AAAAAA0022222200AAAA + AA00FFFFFF00DDDDDD0055555500777777007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888008888 + 8800BBBBBB00BBBBBB00555555000000000000000000003366000033660066FF + FF0066FFFF0066FFFF0066FFFF0000CCFF000099CC000099CC000099CC000033 + 660000336600555555002222220022222200AAAAAA00AAAAAA00555555005555 + 55000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC0099CCFF0099CC + FF00336699003366990033669900336699003366990033669900336699003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000333300007777770077777700666633009999000033330000666600006666 + 000066660000CCCC660055555500FFFFFF00BBBBBB00DDDDDD00000000007777 + 770000000000000055000000AA00000000000000000000000000000000000000 + 0000000000000000000000000000000000007777770000000000550000000000 + 00000000000000000000AAAAAA00AAAAAA0077777700AAAAAA00DDDDDD00FFFF + FF0044444400444444004444440044444400444444004444440044444400AAAA + AA00FFFFFF00CCCCCC0055555500777777007777770000000000000000000000 + 0000000000000000000000000000000000000000000088888800BBBBBB00BBBB + BB00555555000000000000000000003366000033660066FFFF0066FFFF007777 + 77004444440066FFFF0066FFFF0000CCFF000099CC000099CC000099CC000099 + CC000099CC000033660000000000555555002222220022222200AAAAAA00AAAA + AA005555550000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000777777000000000099990000CCCC660066660000333300006666 + 000066660000CCCC660055555500FFFFFF00BBBBBB00DDDDDD00444444007777 + 7700444444000000000000000000000055000000550000000000000000000000 + 0000000000000000000000000000000000000000000055000000550000000000 + 00000000000000000000AAAAAA00AAAAAA0077777700AAAAAA00DDDDDD00FFFF + FF00FFFFFF00BBBBBB00BBBBBB00AAAAAA00AAAAAA00BBBBBB00DDDDDD00DDDD + DD00FFFFFF00CCCCCC0055555500777777007777770000000000000000000000 + 00000000000055000000000000000000000000000000BBBBBB00555555000000 + 000000000000003366000033660066FFFF0066FFFF0077777700444444004444 + 44004444440066FFFF0066FFFF0000CCFF000099CC000099CC000099CC000099 + CC000099CC000066990000000000003366000033660055555500222222002222 + 2200AAAAAA0000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF003366990033669900336699003366 + 9900336699003366990033669900336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000009999000099990000CCCC66009999000099990000666600003333 + 000066660000CCCC660055555500FFFFFF0044444400DDDDDD00888888000000 + 0000AAAAAA0044444400000000000000000000005500DDDDDD00000000000000 + 000000000000000000000000000000000000000000005500000055000000FF66 + 3300FF66330000000000BBBBBB00BBBBBB0077777700AAAAAA00DDDDDD00FFFF + FF00FFFFFF00BBBBBB00BBBBBB00AAAAAA00BBBBBB00BBBBBB00CCCCCC00DDDD + DD00FFFFFF00CCCCCC005555550077777700AAAAAA0000000000000000000000 + 0000550000005500000000000000000000000000000055555500000000000033 + 66000033660099FFFF0066FFFF00777777004444440044444400336699000099 + CC004444440066FFFF0066FFFF0033CCFF0000CCFF000099CC000099CC000099 + CC000099CC000099CC0000000000006699000099CC0000336600222222002222 + 22005555550000000000000000000000000000000000000000006699CC006699 + CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00336699003366 + 9900336699003366990033669900336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCC660044444400444444004444440099990000666600006666 + 000066660000CCCC660055555500BBBBBB00FFFFFF00DDDDDD00BBBBBB008888 + 880000000000AAAAAA00AAAAAA00444444004444440044444400DDDDDD00DDDD + DD00000000000000000000000000000000000000000055000000FF3300000000 + 00000000000000000000FFFFFF00FFFFFF0077777700AAAAAA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB0055555500AAAAAA00BBBBBB0000000000FF663300FF66 + 3300550000005500000000000000000000000000000000000000555555000000 + 000066FFFF0099FFFF00444444004444440000CCFF000099CC00444444004444 + 44007777770066FFFF0066FFFF0066FFFF0066FFFF0066FFFF0000CCFF000099 + CC000099CC000099CC000099CC00000000002222220022222200000000005555 + 550000000000000000000000000000000000000000000000000099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00336699003366990033669900336699003366990033669900336699003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00000000000000000000000000999900009999 + 000066660000CCCC66009999000055555500DDDDDD00FFFFFF00BBBBBB00BBBB + BB00888888004444440000000000777777007777770000000000333300003333 + 0000DDDDDD00DDDDDD0000000000000000000000000055000000FF3300000000 + 0000000000000000000000000000AAAAAA000000000000000000444444005555 + 5500555555005555550055555500555555004444440044444400111111001111 + 1100111111000000000000000000FFFFFF00000000000000000000000000FF66 + 330055000000FF33000000000000000000000000000000000000000000000000 + 000066FFFF0099FFFF00444444000099CC0033669900444444007777770066FF + FF0066FFFF0066FFFF0033CCFF0066FFFF0066FFFF0066FFFF0066FFFF0066FF + FF0000CCFF000099CC000099CC000099CC000066990000669900000000000000 + 000000000000000000000000000000000000000000000000000099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099990000999900009999 + 000066660000CCCC6600CCCC66009999000055555500BBBBBB00FFFFFF00FFFF + FF0044444400BBBBBB00BBBBBB004444440000000000BBBBBB00333300006666 + 00006666000033330000DDDDDD00000000000000000055000000FF3300000000 + 0000000000000000000000000000000000004444440055555500BBBBBB004444 + 4400444444004444440044444400444444004444440044444400444444004444 + 4400444444001111110011111100000000000000000000000000000000000000 + 000055000000FF33000000000000000000000000000000000000000000000000 + 000066FFFF0099FFFF0044444400444444007777770099FFFF0099FFFF0066FF + FF0066FFFF0033CCFF0000CCFF0000CCFF0000CCFF0066FFFF0066FFFF0066FF + FF0066FFFF0066FFFF0000CCFF000099CC000099CC000099CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC003366 + 99006699CC0099CCFF0099CCFF0099CCFF003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 000000000000000000000000000066660000999900009999000099990000CCCC + 6600CCCC6600CCCC6600CCCC6600CCCC6600999900005555550055555500BBBB + BB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA00333300006666 + 00006666000066660000000000000000000000000000FF330000FF6633000000 + 00000000000000000000000000000000000055555500BBBBBB0088888800BBBB + BB00BBBBBB0077777700BBBBBB00FFFFFF00BBBBBB0077777700FFFFFF00FFFF + FF00444444004444440011111100000000000000000000000000000000000000 + 000055000000FF33000000000000000000000000000000000000000000000000 + 000033CCFF0066FFFF007777770099FFFF0099FFFF0099FFFF0066FFFF0066FF + FF0033CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0066FF + FF0066FFFF0066FFFF0066FFFF0066FFFF0000CCFF000099CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF006699CC0033669900333333003333 + 330022222200000000006699CC0099CCFF0099CCFF0099CCFF00336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 00000000000000000000000000006666000099990000CCCC6600CCCC6600CCCC + 6600CCCC6600999900009999000099990000CCCC6600CCCC6600999900005555 + 5500555555005555550055555500555555005555550088888800666600009999 + 00009999000000000000000000000000000000000000FF663300CC3300007777 + 770000000000000000000000000000000000BBBBBB0088888800BBBBBB00FFFF + FF00BBBBBB0077777700BBBBBB00FFFFFF00BBBBBB0077777700FFFFFF00FFFF + FF00BBBBBB004444440044444400000000000000000000000000000000000000 + 0000FF330000FF66330000000000000000000000000000000000000000000000 + 000000CCFF0033CCFF0066FFFF0066FFFF0066FFFF0066FFFF0066FFFF0033CC + FF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CC + FF0000CCFF0066FFFF0066FFFF0066FFFF0066FFFF0066FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC00336699003333330033333300333333003333 + 3300888888008888880000000000000000006699CC0099CCFF0099CCFF0099CC + FF00336699003366990000000000000000000000000000000000000000000000 + 000000000000000000000000000099990000CCCC660066660000CCCC66009999 + 0000999900009999000066660000666600009999000099990000CCCC6600CCCC + 6600CCCC6600CCCC6600CCCC6600CCCC6600CCCC660099990000999900000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB00FFFF + FF0055000000550000005500000055000000550000005500000055000000FFFF + FF00BBBBBB004444440000000000000000000000000000000000000000000000 + 0000FF663300CC33000077777700000000000000000000000000000000000000 + 00000000000000CCFF0033CCFF0033CCFF0033CCFF0033CCFF0000CCFF000099 + CC000099CC000099CC000099CC000099CC000099CC000099CC000099CC0000CC + FF0000CCFF0000CCFF0000CCFF0066FFFF0066FFFF0066FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF0099CC + FF006699CC006699CC0033669900333333003333330033333300888888008888 + 8800BBBBBB00EEEEEE002222220000000000000000006699CC006699CC0099CC + FF0099CCFF0099CCFF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCCC66006666000066660000CCCC + 6600999900009999000033330000666600006666000066660000999900009999 + 0000999900009999000099990000999900009999000033330000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000660000006600 + 0000550000005500000055000000550000005500000055000000550000005500 + 0000550000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000CCFF0000CCFF0000CCFF0000CCFF0033CCFF000099CC000099 + CC000099CC000099CC000099CC000099CC003366990033669900336699003366 + 99000099CC0000CCFF0000CCFF0000CCFF0000CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF0099CCFF006699CC00444444008888880088888800444444005555 + 5500BBBBBB00EEEEEE004444440022222200000000006699CC0099CCFF0099CC + FF0099CCFF0099CCFF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000009999000033330000CCCC + 6600999900009999000033330000666600006666000066660000666600006666 + 0000666600009999000000000000333300006666000099990000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000066330000FF33 + 0000550000005500000055000000663300005500000055000000550000005500 + 0000550000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CCFF0000CCFF000099CC000099CC0033CCFF0066FF + FF0000CCFF0000CCFF000099CC000099CC000099CC0033669900336699003366 + 9900336699000099CC0000CCFF0000CCFF0000CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF0099CCFF00BBBBBB0044444400444444005555 + 5500BBBBBB00EEEEEE0044444400222222000000000099CCFF0099CCFF0099CC + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + 6600CCCC66009999000066660000333300006666000066660000000000000000 + 00000000000000000000FFFFFF00000000003333000099990000999900000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000066330000FF33 + 0000663300005500000066330000550000005500000055000000663300005500 + 0000550000005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000CCFF000033660000CCFF0066FFFF0066FF + FF0000CCFF0000CCFF000099CC00336699003366990033669900336699003366 + 9900336699000033660000CCFF0000CCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF0088888800888888005555 + 5500BBBBBB00DDDDDD00222222008888880099CCFF0099CCFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCC66009999000099990000333300000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000003333000066660000999900000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055000000FF330000FF33 + 0000FF3300006633000055000000663300005500000066330000550000006633 + 0000550000005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000033660000CCFF0066FFFF000099 + CC000099CC003366990033669900336699000033660000336600003366003366 + 9900336699000033660000CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF0099CC + FF00888888008888880099CCFF0099CCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCC6600CCCC660099990000333300000000000000000000000000000000 + 0000FFFFFF00FFFFFF0000000000000000003333000066660000999900000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066330000FF330000FF66 + 3300FF3300005500000066330000550000006633000055000000663300005500 + 0000550000005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000099CC000099CC0000CC + FF0000CCFF0000CCFF0000CCFF000099CC000099CC000099CC000099CC000033 + 6600003366000033660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF0099CCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCC660099990000666600000000000044444400444444000000 + 0000000000000000000066660000666600009999000099990000999900004444 + 4400444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066330000FF330000FF66 + 3300FF3300006633000055000000663300005500000066330000550000006633 + 0000550000005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000099CC0000CCFF0066FFFF0066FF + FF0066FFFF0066FFFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF000099 + CC000099CC000033660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCC6600CCCC6600999900009999000000000000000000000000 + 0000666600006666000099990000999900009999000066660000000000000000 + 0000777777004444440000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066330000FF330000FF66 + 3300FF3300005500000066330000550000006633000055000000663300005500 + 0000550000005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000CCFF0066FFFF0066FFFF0066FFFF000099 + CC000099CC000099CC00006699000066990000669900006699000066990000CC + FF0000CCFF000099CC0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC6600CCCC66009999000099990000CCCC6600CCCC + 6600CCCC6600CCCC660099990000666600000000000000000000000000000000 + 0000000000007777770000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066330000FF330000FF66 + 3300FF3300006633000066330000663300005500000066330000550000006633 + 0000550000005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CCFF0066FFFF0066FFFF0000CCFF0000CCFF0033CC + FF0066FFFF0033CCFF0000CCFF0033CCFF0000CCFF0033CCFF0033CCFF000066 + 99000066990000CCFF000099CC00006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCCC6600CCCC6600CCCC6600999900009999 + 0000333300000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066330000FF330000FF66 + 3300FF330000FF330000FF330000663300006633000066330000663300005500 + 0000663300005500000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FFFF0066FFFF0000CCFF0066FFFF0066FFFF0066FF + FF0033CCFF0066FFFF0033CCFF0066FFFF0033CCFF0066FFFF0033CCFF0000CC + FF0033CCFF000066990000CCFF000099CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF330000FF330000FF66 + 3300FF663300FF663300FF663300FF663300FF663300FF663300FF6633006633 + 0000663300006633000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FFFF0000CCFF0033CCFF0066FFFF0099FFFF0066FF + FF0066FFFF0066FFFF0066FFFF0033CCFF0066FFFF0033CCFF0066FFFF0033CC + FF0000CCFF0033CCFF00006699000099CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF330000FF663300FF33 + 0000FF330000FF330000FF330000FF330000FF330000FF330000FF330000FF66 + 3300FF6633006633000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FFFF0000CCFF0033CCFF0099FFFF0099FFFF0066FF + FF0066FFFF0066FFFF0066FFFF0066FFFF0033CCFF0066FFFF0033CCFF0066FF + FF0033CCFF0033CCFF00006699000099CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF330000FF663300FF33 + 0000FF663300FF330000FF330000FF330000FF330000FF330000FF330000FF33 + 0000FF6633006633000044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066FFFF0000CCFF0000CCFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0066FFFF0066FFFF0066FFFF0066FF + FF0000CCFF00006699000099CC00000000005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FF663300FF66 + 3300FF330000FF663300FF330000FF663300FF330000FF330000FF330000FF33 + 0000FF3300000000000000000000444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000099CC0000CCFF0066FF + FF0066FFFF0066FFFF0066FFFF0066FFFF0066FFFF0066FFFF0033CCFF0033CC + FF000099CC000000000000000000000000007777770077777700555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FF663300FF663300FF663300FF663300FF663300FF663300FF6633000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000006699000099CC000099CC000099CC000099CC0000669900000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066CCFF0066CCFF0066CC + FF0066CCFF0066CCFF0066CCFF0066CCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00DDDDDD00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066CCFF00555555007777 + 7700777777007777770077777700AAAAAA000099CC0066CCFF0066CCFF0066CC + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000FFFF003399990033999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00DDDDDD00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066CCFF00444444005555 + 550077777700777777007777770077777700000000007777770077777700AAAA + AA000099CC0066CCFF0066CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000BBBBBB004444440011111100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000FFFF003399 + 9900006666000066660077777700222222001111110011111100111111001111 + 1100111111001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066CCFF00555555004444 + 4400555555007777770077777700000000007777770077777700777777007777 + 77007777770077777700AAAAAA000099CC0066CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0044444400111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00006666000066 + 6600666666006666660077777700222222001111110011111100111111001111 + 1100111111001111110011111100111111001111110011111100111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777004444 + 4400444444005555550000000000444444005555550055555500555555005555 + 5500777777000099FF000099FF0077777700AAAAAA0066CCFF0066CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00444444001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000666666006666 + 6600666666005555550077777700222222001111110022222200222222002222 + 2200222222002222220022222200222222002222220022222200111111001111 + 1100111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555000000 + 0000000000000000000022222200222222002222220022222200222222004444 + 4400555555005555550077777700FFFFFF00AAAAAA00777777000099CC0066CC + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB004444 + 4400111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000666666005555 + 5500555555004444440066666600333333002222220022222200333333003333 + 3300333333003333330033333300333333003333330033333300222222002222 + 2200111111001111110011111100111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555005555 + 5500222222000055000000550000005500000055000000550000222222002222 + 22000000000022222200555555005555550077777700FFFFFF00AAAAAA007777 + 77000099CC0066CCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000BBBB + BB00444444001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555004444 + 4400444444003333330066666600333333002222220033333300333333004444 + 4400444444004444440044444400444444004444440044444400444444003333 + 3300222222002222220011111100111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002222 + 2200005500000055000066660000666600006666000066660000666600006666 + 0000666600000000000000000000000000002222220055555500AAAAAA00FFFF + FF0077777700AAAAAA0066CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB004444440011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444003333 + 3300333333003333330066666600444444003333330033333300444444000099 + 990000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000999900444444004444 + 4400333333002222220011111100111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000666600000055000099993300999933009999330099993300999933009999 + 3300666600000000000000000000000000000000000000000000555555007777 + 7700777777007777770077777700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB0044444400111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 330033333300333333006666660044444400333333004444440000CCCC0000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000099 + 9900444444003333330011111100111111000000000000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000999933000055000000550000005500000055000000550000005500006666 + 0000999933009999330066660000000000000000000000000000000000004444 + 4400555555007777770055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00444444001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 330033333300333333006666660044444400444444000099990000FFFF0000FF + FF0000FFFF0055555500AAAAAA008888880000FFFF0000FFFF0000FFFF0000FF + FF0000999900444444003333330022222200000000007777770000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00EEEEEE00EEEEEE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000005500000055000099993300999933006666000099993300666600000055 + 0000005500000055000099993300999933006666000000000000000000002222 + 2200222222000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000BBBBBB004444440011111100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 3300333333003333330066666600444444004444440000FFFF0000FFFF0000FF + FF00AAAAAA0000FFFF0000FFFF0000FFFF00AAAAAA0055555500AAAAAA008888 + 880000FFFF0044444400333333002222220000000000BBBBBB00BBBBBB007777 + 770000FFFF0000FFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000EEEEEE00EEEEEE00EEEEEE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000999933000055000099993300666600009999330066660000666600006666 + 0000666600006666000000550000005500009999330099993300666600009999 + 3300666600000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0044444400111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 3300333333003333330066666600444444004444440000FFFF0000FFFF0000FF + FF00AAAAAA0055555500555555008888880000FFFF0000FFFF0000FFFF00AAAA + AA0000FFFF0000CCCC0033333300222222000000000000FFFF0000FFFF00BBBB + BB00BBBBBB007777770000FFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00EEEEEE00EEEE + EE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000999933006666000099993300999933006666000099993300666600006666 + 0000999933009999330099993300666600006666000000550000999933009999 + 3300666600000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00444444001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 3300333333003333330066666600444444004444440000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF00888888005555550055555500555555008888880000FF + FF0000FFFF0000FFFF00444444003333330000000000000000000000000000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000999933006666000099993300666600009999330066660000666600009999 + 3300000000004444440044444400999933006666000066660000005500006666 + 0000999933006666000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB004444 + 4400111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 3300333333003333330066666600444444004444440000FFFF0000FFFF0000FF + FF005555550055555500AAAAAA0000FFFF0000FFFF008888880055555500AAAA + AA0000FFFF0000FFFF0044444400333333000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000999933003366FF003366FF00666600006666000099993300666600004444 + 4400000000001111110022222200444444009999330066660000005500000055 + 0000005500009999330000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000BBBB + BB00444444001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333003333 + 3300333333004444440077777700444444004444440000FFFF0000FFFF0000FF + FF005555550000FFFF006666660000FFFF00555555005555550000FFFF0000FF + FF0000FFFF0000FFFF0044444400333333000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066CCFF000099FF000099FF003366FF006666000066660000666600004444 + 4400000000000000000011111100222222004444440066660000666600000055 + 0000005500000055000099993300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB004444440011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333004444 + 4400444444005555550077777700666666004444440000FFFF0000FFFF0000FF + FF0000FFFF005555550000FFFF0000FFFF0000FFFF0000FFFF005555550000FF + FF0000FFFF0000FFFF0044444400333333000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00DDDDDD00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066CCFF003366FF003366FF003366FF003366FF0099993300666600000055 + 0000000000000000000011111100222222004444440000550000666600000055 + 0000005500000055000000550000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB0044444400111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444005555 + 550066666600666666007777770066666600444444000099990000FFFF0000FF + FF005555550000FFFF005555550000FFFF0055555500555555005555550000FF + FF0000FFFF0000FFFF0044444400333333000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00DDDDDD00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003366FF000099FF000099FF003366FF003366FF0066660000999933006666 + 0000444444000000000000000000111111002222220044444400005500006666 + 0000005500000055000000550000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00444444001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555006666 + 660066666600888888008888880066666600444444004444440000FFFF0000FF + FF00AAAAAA00555555005555550000FFFF005555550000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF0044444400333333000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00DDDDDD00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066CCFF003366FF003366FF000099FF003366FF0066660000999933006666 + 0000005500000000000000000000111111000000000044444400666600000055 + 0000999966000055000000550000005500000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000BBBBBB004444440011111100000000000000 + 0000000000000000000000000000000000000000000000000000666666008888 + 88008888880088888800888888005555550066666600444444000099990000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF00AAAAAA00555555005555550000FF + FF0000FFFF000099990044444400333333000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00DDDDDD00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066CCFF000099FF000099FF003366FF0066660000CCCC99009999 + 3300666600000055000044444400000000000000000066660000666600009999 + 6600005500009999660000550000005500000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0044444400111111000000 + 0000000000000000000000000000000000000000000000000000888888008888 + 880088888800AAAAAA00AAAAAA00555555006666660066666600444444000099 + 990000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF + FF0000CCCC004444440044444400444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00DDDDDD00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 000000000000999933000099FF003366FF006666000099993300CCCC9900CCCC + 990066660000666600000055000066660000666600006666000066660000FFFF + FF00666600000055000099996600005500000055000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00111111000000 + 000000000000000000000000000000000000000000000000000088888800AAAA + AA00AAAAAA00DDDDDD00DDDDDD00BBBBBB005555550055555500666666006666 + 6600444444000099990000CCCC0000FFFF0000FFFF0000FFFF0000FFFF000099 + 9900444444004444440044444400555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000009999330099993300666600009999330099993300CCCC + 990099993300666600006666000000550000005500006666000066660000FFFF + FF0099996600FFFFFF0099996600999966000055000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400BBBBBB001111 + 110000000000000000000000000000000000000000000000000000000000DDDD + DD00DDDDDD00BBBBBB00BBBBBB00AAAAAA009999990088888800555555005555 + 5500555555006666660066666600666666006666660066666600444444004444 + 4400444444004444440055555500777777000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099993300CCCC99009999330066660000222222006666 + 0000CCCC9900999933006666000066660000005500000055000000550000FFFF + FF00FFFFCC00FFFFFF00FFFFCC00FFFFFF009999660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400BBBBBB001111 + 110000000000000000000000000000000000000000000000000000000000BBBB + BB00BBBBBB00AAAAAA00AAAAAA00999999008888880088888800888888007777 + 7700777777005555550055555500555555004444440044444400444444004444 + 4400444444005555550055555500666666000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000222222002222220022222200666600009999 + 3300CCCC9900CCCC990099993300999933006666000066660000005500000055 + 000000550000FFFFFF009999660099996600FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400BBBBBB001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA009999990088888800888888008888880077777700777777007777 + 7700777777007777770077777700666666005555550055555500555555005555 + 5500555555006666660066666600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCCC990099993300666600009999 + 33006666000022222200CCCC9900CCCC99009999330099993300666600009999 + 3300666600000055000000550000FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000001111110044444400BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000088888800777777007777770077777700777777007777 + 7700666666006666660066666600666666006666660066666600666666007777 + 7700777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000EEEEEE00EEEEEE00EEEEEE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066660000222222002222 + 220022222200999933009999330099993300CCCC990066660000999933006666 + 0000999933006666000000550000005500000000000055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000001111110044444400BBBBBB00111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700666666006666 + 6600666666006666660066666600666666006666660077777700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00EEEEEE00EEEEEE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009999 + 3300666600009999330099993300999933009999330099993300999933009999 + 3300666600009999330066660000000000005555550077777700444444004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000055555500000000001111110044444400BBBBBB0044444400000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00DDDD + DD00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006666000066660000999933009999330099993300999933009999 + 3300999933000000000000000000000000000000000000000000555555007777 + 7700444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555000000000000000000000000000000 + 0000111111004444440044444400BBBBBB004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00DDDDDD00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500111111004444 + 440044444400BBBBBB00BBBBBB00444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000EEEEEE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555000000000044444400444444008888 + 8800888888004444440000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF003399CC000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF003399 + CC003399CC003399CC0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF003399 + CC003399CC003399CC0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF003399 + CC003399CC003399CC0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000333333002222 + 2200222222001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00AAAAAA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000066990099CC + FF003399CC003399CC003399CC00006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033333300333333003333 + 3300333333002222220022222200000000000000000011111100111111001111 + 1100111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00AAAAAA00AAAAAA00AAAAAA00FFFFFF00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF003399CC003399CC003399CC00006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400444444005555 + 5500888888008888880055555500222222000000000000000000111111001111 + 1100111111001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00AAAAAA00AAAAAA00AAAAAA0055555500FFFFFF00AAAAAA00DDDD + DD00DDDDDD00AAAAAA0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000066 + 99003399CC003399CC003399CC003399CC000066990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700777777007777 + 7700222222000000000000000000555555002222220000000000BBBBBB005555 + 5500111111001111110011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00AAAA + AA008888880088888800FFFFFF0055555500AAAAAA00AAAAAA00FFFFFF007777 + 7700AAAAAA0077777700DDDDDD00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF003399CC003399CC003399CC003399CC0000669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 880000000000000000007777770000000000555555002222220000000000BBBB + BB00555555002222220011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF0088888800FFFF + FF00FFFFFF00FFFFFF000033CC003366FF004444440044444400444444005555 + 55007777770077777700AAAAAA0077777700DDDDDD00AAAAAA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF003399CC003399CC003399CC003399CC00006699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770000000000000000005555550022222200222222000000 + 000000000000BBBBBB0011111100111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF008888 + 88000099FF003366FF003366FF000033CC006666000000550000005500004444 + 440044444400444444007777770077777700AAAAAA0077777700FFFFFF00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF003399CC003399CC003399CC003399CC000066 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880022222200222222000000000055555500222222002222 + 2200111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000099FF003366FF0066660000666600006666000066660000666600000055 + 0000005500000055000044444400444444007777770077777700AAAAAA007777 + 7700FFFFFF00AAAAAA0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000008888 + 8800444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF003399CC003399CC003399CC003399 + CC00006699000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880022222200222222000000000055555500555555002222 + 2200222222002222220022222200222222002222220022222200111111001111 + 1100111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006666000066660000999900009999000066660000666600006666 + 0000005500000000000000550000005500004444440044444400777777007777 + 7700AAAAAA0077777700FFFFFF00DDDDDD000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB0000000000DDDD + DD00888888000000660000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF003399CC003399CC003399 + CC003399CC000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA002222220022222200FFFFFF0000000000333333005555 + 5500555555005555550055555500555555005555550055555500222222002222 + 2200111111001111110011111100111111001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099990000999900009999000066660000666600006666 + 0000005500000000000066660000000000000055000000550000444444004444 + 4400777777007777770000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB0000000000DDDD + DD00888888003333990000006600000066000000660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF003399CC003399 + CC003399CC0000336600DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA0022222200222222005555550055555500000000000000 + 0000000000000000000000000000222222002222220055555500555555005555 + 5500222222002222220022222200222222001111110011111100111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000099990000666600006666 + 0000666600000011000066660000000000006666000044444400005500000055 + 0000444444000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 00006666CC006666CC0033339900333399000000660000006600000066000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF003399 + CC000033660077777700DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00222222002222220055555500FFFFFF005555 + 5500FFFFFF005555550022222200000000002222220022222200888888008888 + 8800555555003333330022222200222222002222220022222200222222001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000066660000005500006666 + 0000005500000011000066660000001100006666000044444400444444004444 + 4400005500000055000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 000000000000000000006666CC006666CC003333990033339900000066000000 + 6600000066000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB00BBBBBB00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00AAAAAA002222220022222200555555005555 + 5500555555002222220022222200000000000000000022222200222222002222 + 2200888888005555550055555500333333003333330033333300222222002222 + 2200000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900005500000055000099990000444444004444 + 44006666000000550000666600000011000066660000444444000066FF004444 + 4400444444004444440000550000005500000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000006666CC006666CC00333399003333 + 9900000066000000660000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB00DDDDDD00DDDDDD00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000AAAAAA00AAAAAA0022222200222222002222 + 2200222222002222220000000000000000000000000055555500222222002222 + 2200555555008888880088888800888888008888880055555500333333002222 + 2200111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000099990000CCCC9900999900006666000088888800BBBB + BB00444444006666000066660000666600006666000044444400AAAAAA008888 + 8800444444004444440066660000444444000055000000550000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006666CC006666 + CC00333399003333990000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00DDDDDD00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00888888008888 + 8800888888000000000000000000000000003333330055555500555555002222 + 2200222222000000000011111100000000001111110088888800555555003333 + 3300222222000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC99009999000099990000999900000066FF004444 + 4400888888006666000066660000666600006666000066660000444444004444 + 4400AAAAAA004444440000110000999900006666000000550000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006666CC006666CC0033339900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555008888880088888800555555002222 + 2200222222000000000000000000000000000000000000000000AAAAAA005555 + 5500222222000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000099990000555555004444 + 4400444444006666000000550000999900009999000066660000666600006666 + 0000444444000011000099990000666600000055000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000AAAAAA0088888800555555002222 + 2200222222000000000000000000000000000000000000000000111111008888 + 8800222222000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000099990000666600005555 + 55005555550000550000CCCC9900999900009999000099990000999900006666 + 0000666600006666000066660000005500006666000000550000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800888888001111 + 1100000000000000000000000000000000000000000000000000000000008888 + 8800222222000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000099990000666600006666 + 0000666600000055000000000000CCCC9900CCCC990099990000999900009999 + 0000999900006666000066660000666600000055000066660000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001111 + 1100000000000000000000000000000000000000000000000000000000008888 + 8800222222000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000099990000666600006666 + 00000055000000000000000000000000000000000000CCCC9900CCCC99009999 + 0000999900009999000099990000666600006666000000550000005500000000 + 00000000000000000000000000000000000000000000EEEEEE00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500000000000000000000000000000000000000000000000000888888003333 + 3300000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000099990000666600000055 + 000022222200000000000000000000000000000000000000000000000000CCCC + 9900CCCC99009999000099990000999900006666000066660000005500000000 + 0000000000000000000000000000000000000000000000000000DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 8800AAAAAA001111110000000000000000001111110088888800333333002222 + 2200000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC99009999000099990000CCCC9900666600000055 + 0000222222000000000000000000000000000000000000000000000000000000 + 000000000000CCCC990099990000999900009999000066660000005500000000 + 0000777777002222220000000000000000000000000000000000DDDDDD00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00BBBBBB00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA00AAAAAA00AAAAAA00AAAAAA0033333300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900CCCC9900CCCC990099990000999900006666 + 0000005500000055000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900999900009999000066660000005500000000 + 000000000000777777005555550000000000000000000000000000000000DDDD + DD00DDDDDD00AAAAAA0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCCC9900CCCC990099990000999900009999 + 0000666600006666000000550000005500000000000000000000000000000000 + 0000000000000000000066660000999900009999000066660000005500000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00DDDDDD00AAAAAA000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099990000CCCC9900CCCC9900999900009999 + 0000999900006666000066660000666600000055000000550000000000000000 + 0000000000006666000066660000999900006666000066660000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00DDDDDD00AAAAAA00000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCCC9900CCCC9900CCCC + 9900999900009999000099990000666600006666000066660000005500000055 + 0000000000000000000000000000005500006666000000550000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00DDDDDD00AAAA + AA000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + 9900CCCC9900CCCC9900CCCC9900999900009999000099990000666600006666 + 0000005500000055000000550000666600006666000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00DDDDDD00AAAAAA000000000000000000AAAAAA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCC9900CCCC9900CCCC9900CCCC9900999900009999 + 0000666600006666000066660000666600000055000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00DDDDDD00DDDDDD00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCCC9900CCCC9900CCCC + 9900CCCC99009999000099990000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500AAAAAA008888880077777700555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000003366000033 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000336600003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555005555550088888800DDDDDD008888880077777700555555005555 + 5500555555005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033669900336699003366 + 9900003366000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF00336699000033 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500555555005555550088888800DDDDDD008888880077777700555555005555 + 5500555555000099CC0055555500555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF006699CC006699 + CC00336699000033660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF003366 + 9900003366000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 7700555555005555550088888800DDDDDD008888880077777700555555005555 + 55005555550055555500555555000099CC005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF006699 + CC006699CC003366990000336600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF00336699000033660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 770055555500555555008888880066FFFF0066FFFF0066FFFF000099CC005555 + 55005555550033CCFF0055555500555555005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 88000000000000000000000000000000000000000000000000000000000099CC + FF006699CC006699CC0033669900003366000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF003366990000336600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 77005555550066FFFF0066FFFF0066FFFF0066FFFF0066FFFF005555550066FF + FF000099CC0033CCFF0033CCFF00555555005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 000099CCFF006699CC006699CC00336699000033660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF0033669900003366000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 770066FFFF0066FFFF0066FFFF0033CCFF0033CCFF0033CCFF0033CCFF0066FF + FF0066FFFF0066FFFF0033CCFF000099CC005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF006699CC006699CC003366990000336600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF00336699000033660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066FFFF0066FFFF0033CCFF0033CCFF0033CCFF0033CCFF0033CCFF0033CC + FF0033CCFF0033CCFF0066FFFF00555555000099CC0055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF006699CC006699CC0033669900003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF00336699000099CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066FFFF0066FFFF0033CCFF0033CCFF0033CCFF000099CC000099 + CC000099CC000099CC0033CCFF0033CCFF0066FFFF0066FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000055000000AA000000AA00555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF006699CC006699CC00336699000033 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCFFFF0000CCFF000099CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066FFFF0033CCFF0033CCFF00006699000066 + 990033CCFF0066FFFF000099CC0033CCFF0033CCFF0066FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000AA000000EE000000EE003333FF000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF006699CC006699CC003366 + 9900003366000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCFFFF0000CCFF000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000033CCFF00003366000099 + CC0033CCFF0033CCFF0066FFFF000099CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000AA000000EE003333FF000000EE000000 + EE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF006699CC006699 + CC00336699000033660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCFFFF0000CC + FF000099CC0000000000000000000000000000000000DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000003366000099 + CC0033CCFF0066FFFF0033CCFF0066FFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000AA000000AA000000EE000000EE003333FF000000 + EE00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF006699 + CC006699CC003366990000336600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCFF + FF0000CCFF000099CC000000000000000000EEEEEE00DDDDDD00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000006699000099 + CC0033CCFF0033CCFF0066FFFF0033CCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000EE000000EE003333FF000000EE000000 + EE00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF006699CC006699CC0033669900003366000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCFFFF003366990000000000EEEEEE00EEEEEE00DDDDDD00DDDDDD00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000099CC0033CC + FF0033CCFF0066FFFF0033CCFF000099CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00004444440000000000000000000000EE000000EE000000EE000000EE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF006699CC006699CC00336699000033660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF007777 + 7700000000002222220055555500777777000000000000000000000000000000 + 00000000000000000000000000000000000077777700000000000099CC0033CC + FF0066FFFF0066FFFF0033CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 770044444400000000000000AA000000EE003333FF000000EE000000EE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF006699CC006699CC003366990000336600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00AAAAAA0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000077777700FFFF + FF0000000000555555002222220077777700AAAAAA0077777700555555004444 + 44000099CC0000669900000000001111110011111100000000000099CC0033CC + FF0066FFFF0066FFFF0033CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 5500000055000000AA0000005500000055000000000000000000000000004444 + 440000000000000055000000AA000000EE000000EE000000EE000000AA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF006699CC006699CC0033669900003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 770077777700777777005555550077777700AAAAAA00AAAAAA00555555005555 + 550044444400444444000099CC00555555001111110000336600003366000066 + 990066FFFF0066FFFF0033CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF007777 + 7700000000002222220055555500777777000000000000000000000000000000 + AA000000AA000000AA000000AA000000AA000000550000005500000055000000 + 0000000055000000AA000000EE000000EE003333FF000000EE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF006699CC006699CC00336699000033 + 660000000000000000000000000000000000000000000000000000000000AAAA + AA00222222002222220000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00DDDDDD00DDDDDD00DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002222 + 2200777777007777770077777700BBBBBB0077777700AAAAAA00222222005555 + 5500444444000099CC000099CC000099CC000099CC0000669900006699000066 + 9900006699000099CC000099CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF0000000000555555002222220077777700AAAAAA0077777700000000000000 + 55000000AA000000EE000000EE000000AA000000550000005500000055000000 + 5500000055000000AA000000EE003333FF003333FF000000EE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF006699CC006699CC003366 + 990000336600000000000000000000000000000000000000000022222200AAAA + AA00777777002222220022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002222220077777700FFFFFF00FFFFFF00FFFFFF0077777700555555002222 + 2200444444000099CC0033CCFF000099CC0033CCFF000099CC000099CC000066 + 9900006699000066990000336600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 770077777700777777005555550077777700AAAAAA00AAAAAA00555555000000 + 00000000AA000000EE000000EE000000EE000000AA000000AA000000AA000000 + 55000000550000005500000055000000EE000000EE000000EE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF006699CC006699 + CC00336699000033660000000000000000000000000022222200444444005555 + 5500AAAAAA007777770022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA00DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00AAAAAA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA00BBBBBB00FFFFFF007777770055555500222222005555 + 55004444440033CCFF000099CC0033CCFF000099CC0033CCFF000099CC008888 + 8800555555000000000000669900006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 7700FFFFFF007777770077777700BBBBBB0077777700AAAAAA00222222005555 + 5500000055000000EE000000EE000000EE000000AA000000EE000000AA002222 + 2200222222000000550000005500000055000000550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF006699 + CC006699CC003366990000336600000000002222220044444400555555005555 + 550077777700AAAAAA00AAAAAA00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00EEEEEE00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000777777002222220055555500555555004444 + 44008888880033CCFF0033CCFF0033CCFF0033CCFF000099CC0033CCFF004444 + 440099CCCC000099990000000000000000000066990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00007777770077777700FFFFFF00FFFFFF00FFFFFF0077777700555555002222 + 2200000055000000EE000000EE000000EE000000AA000000EE000000AA002222 + 22000000AA002222220022222200000055000000550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF006699CC006699CC0000000000222222004444440055555500555555007777 + 7700AAAAAA007777770000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000AAAAAA00EEEEEE00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555005555550055555500444444008888 + 880066FFFF0033CCFF0033CCFF0033CCFF0033CCFF0033CCFF000099CC005555 + 5500000000008888880099CCCC00000000000066990055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00BBBBBB00FFFFFF007777770055555500222222005555 + 55000000AA000000FF000000FF000000FF003333FF000000EE000000EE005555 + 550055555500000055000000AA00222222000000550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF00000000002222220044444400555555005555550077777700AAAA + AA00777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00DDDDDD00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00EEEE + EE00DDDDDD000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000088888800888888008888880066FF + FF000099CC007777770066FFFF0033CCFF0033CCFF0033CCFF0033CCFF0033CC + FF00555555005555550000000000555555000099CC0055555500006699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000777777002222220055555500555555000000 + 55000000EE003333FF000000FF000000AA003333FF000000AA000000EE007777 + 7700555555005555550055555500222222000033660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002222220044444400555555005555550077777700AAAAAA007777 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00EEEE + EE00DDDDDD00AAAAAA0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066FFFF0066FFFF0066FF + FF000099CC000099CC0033CCFF0066FFFF0066FFFF00777777000000000033CC + FF0033CCFF0033CCFF005555550033CCFF000099CC0055555500006699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000055555500000055000000AA000000 + AA006666FF003333FF000000AA003333FF000000FF000000FF000000FF000000 + EE000000EE007777770055555500555555000000AA0000336600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002222220044444400555555005555550077777700AAAAAA00777777000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00EEEE + EE00DDDDDD00DDDDDD00FFFFFF00000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000066FF + FF0066FFFF0066FFFF0066FFFF0066FFFF0033CCFF00AAAAAA00777777000000 + 00000000000033CCFF0033CCFF0033CCFF00555555000099CC00555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000EE003333FF009999FF009999 + FF006666FF006666FF003333FF000000FF000000FF003333FF003333FF000000 + FF000000FF000000EE000000EE00777777000000EE000000AA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002222 + 220044444400555555005555550077777700AAAAAA0077777700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00EEEE + EE00DDDDDD00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066FFFF0066FFFF0066FFFF0066FFFF0033CCFF000099CC00AAAA + AA0077777700000000000000000033CCFF0033CCFF00555555000099CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003333FF006666 + FF009999FF009999FF006666FF006666FF003333FF0000005500003366003333 + FF003333FF000000FF000000FF000000EE000000EE000000AA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000222222004444 + 4400777777007777770077777700AAAAAA007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00EEEE + EE00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066FFFF0066FFFF0066FFFF0066FFFF0033CC + FF000099CC00AAAAAA00777777007777770033CCFF0033CCFF0033CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003333FF006666FF009999FF009999FF006666FF006666FF000000FF000000 + 5500003366003333FF003333FF000000FF000000FF000000EE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000022222200444444007777 + 77007777770077777700AAAAAA00777777000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA00FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE00EEEE + EE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066FFFF0066FFFF0066FF + FF0066FFFF0033CCFF000099CC0033CCFF0066FFFF0033CCFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003333FF006666FF009999FF009999FF006666FF006666 + FF000000FF0000005500003366003333FF003333FF000000FF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400555555007777 + 770077777700AAAAAA0077777700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00DDDDDD00DDDDDD00EEEEEE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066FFFF0066FFFF0066FFFF0066FFFF0033CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003333FF006666FF009999FF009999 + FF006666FF006666FF000000FF0000005500003366000000FF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500555555007777 + 7700AAAAAA007777770000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000AAAAAA00DDDDDD00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006666 + FF009999FF009999FF006666FF006666FF000000FF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000077777700AAAA + AA00777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000077777700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400000000000033 + 6600555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000222222002222220022222200222222002222220022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 7700000000000000000000000000000000000000000000000000777777000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440000000000003366000066 + 9900555555007777770000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00777777000000 + 000000000000000000000000000000000000DDDDDD00DDDDDD00AAAAAA00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000222222002222 + 22000000BB000000BB000000880000008800000088000000BB000000BB005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400000000000000 + 0000777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000066990000669900AAAA + AA00777777007777770000336600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCCC990088888800CCCC9900BBBBBB007777 + 77004444440000000000000000005555550055555500DDDDDD00DDDDDD00AAAA + AA00DDDDDD00AAAAAA0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000222222000000BB000000 + BB009999FF0000008800000088000000880000008800000088000000BB000000 + BB00000000004444440000000000000000000000000000000000000000000000 + 0000000000000000000000000000111111001111110044444400000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000EEEEEE00BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500AAAAAA00FFFF + FF00AAAAAA003366990033669900003366000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB004444440044444400DDDDDD004444440044444400BBBB + BB007777770044444400FFFFFF00555555005555550044444400444444005555 + 5500AAAAAA00AAAAAA00DDDDDD00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000BB009999FF000000 + BB00000088007777770044444400222222002222220044444400000088000000 + 000044444400BBBBBB0000000000000000000000000000000000000000000000 + 000000000000111111001111110055555500AAAAAA0044444400000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCCCC00CCCCCC00EEEEEE00BBBBBB00BBBBBB00BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000077777700AAAA + AA006699CC006699CC0033669900336699000033660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + 99004444440044444400DDDDDD0044444400DDDDDD0044444400DDDDDD004444 + 4400444444004444440044444400FFFFFF00FFFFFF0022222200222222004444 + 440055555500DDDDDD00AAAAAA00DDDDDD000000000000000000000000000000 + 000000000000000000000000000000000000000000000000BB009999FF000000 + 8800777777002222220022222200000000000000000000000000444444004444 + 440044444400000000000000000000000000AAAAAA0000000000000000001111 + 11001111110055555500AAAAAA00AAAAAA005555550011111100111111000000 + 0000444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCCCCC00CCCC + CC00CCCCCC00DDDDDD00EEEEEE00BBBBBB00BBBBBB00BBBBBB00AAAAAA00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF0099CCFF006699CC006699CC00336699003366990000336600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00CCCC99004444 + 4400444444008888880044444400DDDDDD00DDDDDD0044444400DDDDDD00DDDD + DD004444440077777700BBBBBB005555550055555500DDDDDD00FFFFFF002222 + 22002222220044444400DDDDDD00AAAAAA000000000000000000000000000000 + 00000000000000000000000000000000000000000000444444000000BB000000 + 8800777777002222220000000000444444000000000000000000000000004444 + 4400000000000000000000000000AAAAAA000000000011111100111111005555 + 5500AAAAAA00AAAAAA0055555500111111001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00EEEEEE00BBBBBB00BBBBBB00BBBBBB00888888005555 + 5500AAAAAA00AAAAAA0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099CCFF0099CCFF006699CC006699CC003366990033669900003366000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000044444400AAAA + AA0000000000FFFFFF00BBBBBB00444444004444440077777700444444004444 + 440055555500BBBBBB00BBBBBB00DDDDDD00DDDDDD005555550055555500DDDD + DD00FFFFFF002222220022222200DDDDDD00AAAAAA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444000000 + BB00000088007777770000000000444444000000000055555500555555000000 + 0000000000000000000000000000AAAAAA001111110055555500AAAAAA00AAAA + AA00555555001111110011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00EEEEEE00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00555555008888880055555500AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF0099CCFF006699CC006699CC0033669900336699000033 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD007777770000000000AAAAAA00000000007777770088888800FFFFFF00BBBB + BB005555550077777700BBBBBB00BBBBBB00DDDDDD00DDDDDD00DDDDDD005555 + 550055555500DDDDDD00FFFFFF00555555005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000044444400000000000000000055555500BBBBBB00AAAAAA00AAAAAA00AAAA + AA004444440000000000000000007777770077777700AAAAAA00555555001111 + 1100111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00EEEEEE00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00AAAAAA0088888800AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF0099CCFF006699CC006699CC00336699003366 + 9900003366000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00AAAAAA000000000000000000AAAAAA007777770077777700FFFFFF00BBBB + BB00BBBBBB0066666600BBBBBB00BBBBBB00BBBBBB00BBBBBB00DDDDDD00DDDD + DD00DDDDDD005555550055555500DDDDDD00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00AAAAAA00DDDDDD00FFFFFF00DDDDDD00BBBB + BB00444444000000000000000000555555004444440011111100111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00BBBBBB0044444400DDDDDD00DDDD + DD00DDDDDD00DDDDDD00FFFFFF00FFFFFF00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00AAAAAA00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF0099CCFF006699CC006699CC003366 + 9900336699000033660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00FFFFFF000000000000000000000000000000000077777700FFFFFF00FFFF + FF00BBBBBB0066666600DDDDDD00DDDDDD00BBBBBB00BBBBBB00BBBBBB002222 + 220022222200DDDDDD00DDDDDD005555550055555500DDDDDD00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00DDDDDD00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00AAAAAA004444440000000000000000005555550077777700555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00BBBBBB0044444400BBBBBB00DDDDDD00DDDDDD00DDDD + DD00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF0000000000BBBB + BB00BBBBBB00BBBBBB00BBBBBB00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF0099CCFF006699CC006699 + CC00336699003366990000336600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700AAAAAA00FFFF + FF00BBBBBB0066666600DDDDDD00DDDDDD00EEEEEE00DDDDDD00222222007777 + 77000000000022222200DDDDDD00444444004444440077777700777777008888 + 8800888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00DDDDDD00BBBBBB00AAAAAA00AAAA + AA00FFFFFF007777770044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD008888880088888800DDDDDD00DDDDDD0000000000FFFFFF00FFFF + FF0000000000000000000000000088888800000000000000000000000000FFFF + FF00BBBBBB00BBBBBB00BBBBBB00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF0099CCFF006699 + CC006699CC003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000444444007777770077777700FFFF + FF00BBBBBB0066666600DDDDDD005555550088888800DDDDDD0044444400AAAA + AA002222220022222200BBBBBB0044444400888888004444440055555500FFFF + FF00FFFFFF005555550088888800000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB0011111100BBBBBB00DDDD + DD00DDDDDD001111110077777700444444002222220022222200222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00BBBBBB00DDDDDD00DDDDDD00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000008888880088888800000000000000 + 00000000000000000000BBBBBB00BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF0099CC + FF006699CC006699CC0033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000044444400444444004444440077777700AAAA + AA00FFFFFF00BBBBBB0066666600DDDDDD00EEEEEE00DDDDDD00555555007777 + 7700AAAAAA0044444400BBBBBB00444444008888880022222200000000005555 + 5500555555000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00BBBBBB005555 + 550011111100AAAAAA00EEEEEE00777777004444440000000000111111001111 + 1100333300003333000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000008888880088888800888888000000000088888800000000000000 + 00006699CC006699CC00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF0099CCFF006699CC0000000000888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444004444440044444400777777007777 + 7700FFFFFF00BBBBBB0066666600DDDDDD008888880055555500DDDDDD005555 + 550044444400DDDDDD00DDDDDD00000000004444440022222200777777000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA00AAAA + AA00DDDDDD00DDDDDD0011111100777777007777770000000000111111001111 + 1100111111001111110033330000333300000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0033669900000000000000000000000000000000008888 + 880088888800888888000000000000000000888888000000000099CCFF000000 + 00000000000099CCFF006699CC006699CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00888888008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440044444400777777007777 + 7700FFFFFF00DDDDDD00BBBBBB0066666600EEEEEE00EEEEEE0088888800DDDD + DD00DDDDDD00DDDDDD0055555500DDDDDD002222220044444400000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000BBBB + BB005555550011111100AAAAAA00AAAAAA000000000066660000666600006666 + 0000111111001111110033330000333300003333000033330000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC006699CC006699CC00000000006699CC0000000000888888008888 + 88000000000088888800555555005555550000000000000000000000000099CC + FF0099CCFF0099CCFF006699CC006699CC008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700444444007777 + 7700AAAAAA00FFFFFF00BBBBBB0066666600EEEEEE00EEEEEE00DDDDDD005555 + 55008888880055555500DDDDDD00BBBBBB002222220077777700444444004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00AAAAAA00AAAAAA0033330000000000000000000099996600999966006666 + 0000666600006666000033330000333300003333000033330000333300003333 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC006699CC006699CC0000000000000000000000 + 00000000000088888800000000005555550099CCFF0099CCFF0099CCFF000000 + 00006699CC006699CC0099CCFF0099CCFF0099CCFF0088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00BBBBBB00AAAAAA00444444007777 + 770077777700BBBBBB00DDDDDD00BBBBBB0066666600EEEEEE00DDDDDD00DDDD + DD00DDDDDD0088888800BBBBBB00888888002222220077777700777777000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009999 + 6600999966006666000066660000666600003333000033330000333300003333 + 0000111111001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006699CC006699CC00000000006699 + CC00000000008888880000000000000000000000000099CCFF006699CC006699 + CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00BBBBBB00AAAAAA00777777004444 + 44007777770088888800FFFFFF00FFFFFF00BBBBBB006666660088888800BBBB + BB00BBBBBB00BBBBBB0055555500222222007777770077777700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003333 + 0000666600009999660099996600666600006666000066660000333300003333 + 0000111111001111110011111100000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000006699CC000000 + 00006699CC000000000099CCFF0099CCFF006699CC006699CC0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF008888 + 8800000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 8800000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000EEEEEE00BBBBBB00AAAAAA007777 + 7700444444007777770088888800FFFFFF00FFFFFF00BBBBBB00BBBBBB005555 + 55005555550055555500222222007777770077777700BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333000066660000999966009999660066660000666600006666 + 0000555555001111110011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC00000000006699CC006699CC0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00BBBBBB00BBBB + BB0077777700444444007777770077777700FFFFFF00FFFFFF00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB0000000000444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000033330000666600009999660099996600AAAA + AA00AAAAAA005555550055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA004444440044444400222222000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00BBBBBB000000000044444400AAAAAA007777770077777700EEEEEE00EEEE + EE00EEEEEE00EEEEEE00AAAAAA00BBBBBB000000000000000000000000004444 + 4400444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000011111100111111005555 + 550055555500AAAAAA00AAAAAA00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699 + CC006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000777777005555550055555500555555002222220000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000044444400000000004444440044444400AAAAAA00AAAAAA00AAAA + AA00AAAAAA007777770000000000000000000000000000000000000000000000 + 0000444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001111 + 1100111111005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699CC006699CC006699 + CC006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000777777004444440044444400444444004444440022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555000000 + 000000000000444444000000000000000000BBBBBB0044444400444444004444 + 4400444444000000000000000000000000000000000000000000000000000000 + 0000444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA005555550055555500555555005555550055555500222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000444444000000000000000000000000000000000000000000BBBBBB00BBBB + BB00222222000000000000000000000000000000000000000000000000004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099CCFF0099CC + FF006699CC006699CC006699CC006699CC006699CC006699CC006699CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000AAAAAA0055555500555555005555550055555500BBBBBB00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400000000000000000000000000000000000000000000000000000000007777 + 7700444444002222220000000000000000000000000000000000000000004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC006699CC006699CC006699CC006699CC0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA005555550055555500BBBBBB00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000777777004444440022222200000000000000000000000000444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC006699CC006699CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000AAAAAA00BBBBBB00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770044444400222222000000000044444400444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000077777700444444004444440044444400000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000777777007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000C00000000100010000000000000C00000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFFFFFF3FFFFFFFFFFF00000000 + FFFFFFFFFFFE3FFFFFFFFFFF00000000FFFFFFFFFFFE3FFFFFFFFFFF00000000 + FFFFFFFFFFFE3FFFFFFF0FFF00000000FFFFFFFFFFFC3FFFFFFC07FF00000000 + FFFFFFFFE7F81FFFFFF803FF00000000FFFFFFFFE3E007FFFFF001FF00000000 + FFFFFFFFE38001F9FFF000FF000000000E71FFFFF0042071F8F0007F00000000 + 80607FFFF01C3803E060003F00000000E0001FFFF0783E03C020001F00000000 + F80007FFF8F83F87C020001F00000000F80001FFF8701FC78000030F00000000 + F0000043F84007878000078700000000F2000000FC00010F80001FC700000000 + FF800000FC00000F80003FC300000000FF800000FC00000F8000FFE300000000 + FFE00010FC00000F8003FFF100000000FFF00010FC00000F800FFFF100000000 + FFFC0010FC000007807FFFF800000000FFFE0000F8000001C0FFFFF800000000 + FFFF8000E0000000E07FFFF800000000FFFFE00080000000F01FFFFC00000000 + FFFFF80100000001FC0FFFFF00000000FFFFFE0100000007FE03FFFF00000000 + FFFFFF038000000FFF80FFFF00000000FFFFFFC7E000007FFFE03FFF00000000 + FFFFFFFFF80001FFFFF81FFF00000000FFFFFFFFFE0001FFFFFF1FFF00000000 + FFFFFFFFFF8001FFFFFFFFFF00000000FFFFFFFFFFE067FFFFFFFFFF00000000 + FFFFFFFFFFF9FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFF8003FFFFFCFFFF + FFFFFFFFFFFFFFFFFE0000FFFFF03FFFFFFFFFFFF8FFFFFFF800003FFFC00FFF + FFCFFFFFE03FFFFFF000001FFF0003FFFF03FFFF8008FFFFF000001FFC0000FF + FC00FFFF000007FFF000001FF000003FF0003FFF000001FFF000001FC000000F + C0000FFF800000FF9800003F00000003800003FFE000007F0800003300000003 + 800000FFF000003F00000021000000038000003FF000000F0000000100000003 + 8000000FF0000003000000018000000780000003F000000008000001C000000F + 80000001F80000000E0000E1E000001FC0000001FC0000000E0000E1E000001F + F0000001FC0000030E0000E1E000001FFC000001FC0000079F0001E1F000001F + FF000001FE00001FFF8003F3F000003FFFC00001FE00001FFF8003FFF800003F + FFF00003FF80000FFF8003FFFC00007FFFFC000FFFE0000FFF0001FFFE0000FF + FFFF003FFFE00007FF0001FFFF0001FFFFFFC0FFFFF00003FF0001FFFE0001FF + FFFFF3FFFFF00001FF0001FFFC0000FFFFFFFFFFFFF80031FF0001FFF800007F + FFFFFFFFFFFC00F8FF0001FFF800007FFFFFFFFFFFFE0FFFFF0001FFF800007F + FFFFFFFFFFFFFFFFFF0000FFF800003FFFFFFFFFFFFFFFFFFF00007FFC00001F + FFFFFFFFFFFFFFFFFF80007FFE000007FFFFFFFFFFFFFFFFFFC00639FF800700 + FFFFFFFFFFFFFFFFFFF01FC7FFF03FCFFFFFFFFFFEFFFFFF00FFFFFFE3FFFFFF + FFFFFFFFFC7FFFFF000FFFFFF0FFFFFFF1FFFFFFF83FFFFF0001FFFFF83FFFFF + C003FFFFFC1FFFFF00007FFFFC1FFFFF80001FFFFE0FFFFF00001FFFFE0FFFFF + 000007FFFF07FFFF80000FFFFF07FFFF800001FFFF83FFFF800003FFFF83FFFF + 800000FFFFC1FFFF800001FFFFC1FFFF8000007FFFE0FFFFC00000FFFFE0FFFF + 8000003FFFF07FFFE00000FFFFF07FFF8000000FFFF83FFFE00000FFFFF83FFF + 80000002FFFC1FFFE00001FFFFFC1FFF80000000FFFE0FFFE00003FFFFFE0FFF + 80000000FFFF07FFE00003FFFFFF07FF80000001FFFF83FFE00001FFFFFF83FF + 80000067FFFFC1FFE00001FFFFFFC1FF8000007FFFFFE0FFE00000FFFFFFE0FF + 8000007FFFFFF07FE00000FFFFFFF07F8000007FFFFFF83FE00000FFFFFFF83F + 8000007FFFFFFC1FE000007FFFFFFC1F8000007FFFFFFE0FF000007FFFFFFE0F + 8000007FFFFFFF07F000003FFFFFFF0F8000007FFFFFFE0FF800003FFFFFFF07 + C000007FFFFFFC1FF800003FFFFFFF07C000007FFFFFF83FFC00003FFFFFFF07 + E00000FFFFFFF07FFE00001FFFFFFE0FF00001FFFFFFE0FFFF000007FFFFFC0F + FC0007FFFFFFC1FFFF800003FFFFF01FFF803FFFFFFF83FFFFE00103FFFE003F + FFFFFFFFFFFF07FFFFF807C0FFFF807FFFFFFFFFFFFF8FFFFFFFFFF8FFFE00FF + FFFFFFFFFFFFDFFFFFFFFFFFFFFF83FFE3FFFFFFFFFFFFFFFEFFFFFF9FFFFFFF + C1FFFFFFFFFFFFFFFE7FFFFF0FFFFFFF80FFFFFFFFFFFFFFFE7FFFFF0FFFFFFF + 80FFFFFFC3FFFFFFFE3FFFFF01FFFFFF80FFFFFF8007FFFFFC0FFFFF0C7FFFFF + 807FFFFF0003FFFFF003FFFF0F1FFFFFC07FFFFF0001FFFFC000FFFF0FC7FFFF + C03FFFFF0000FFFF00003FFF0FF1BFFFE01FFFFF8000FFFF00000FFF0FFC1FFF + F00FFFFFE0007FFF800003FF0FFF07FFF807FFFFF00007FFC00000FF0FFF01FF + FC03FFFFF00000FFF000007F0FFF007FFE01FFFFF000003FF80000FF0FFF001F + FF00FFFFF000000FF80003FF0FFF0007FF80FFFFF8000007F80000FF0FFF1001 + FFC03FFFF8000007F800003F0FFF1C00FFF03FFFFC000003F800001F0FFF1F00 + FFF80FFFFE000003F800001F0FFF1FC0FFFC0FFFFF800003F800003F0FFF1FF1 + FFFE07FFFFFE0003F800001F0FFF1FFFFFFF07FFFFFE0003F800001F0FFF1FFF + FFFF81FFFFFF0003F802000F0FFF1FFFFFFFC1FFFFFFC007F80380038FFF1FFF + FFFFE0FFFFFFC007F803E00083FF1FFFFFFFF0FFFFFFE009F800F800C0FF1FFF + FFFFF83FFFFFF83EFC003809E03F1FFFFFFFFC3FFFFFFFFFFC00001FF80F1FFF + FFFFFE3FFFFFFFFFFE00001FFE031FFFFFFFFF0FFFFFFFFFFF80003FFF803FFF + FFFFFF8FFFFFFFFFFFE0003FFFE03FFFFFFFFFC7FFFFFFFFFFFC007FFFF87FFF + FFFFFFE7FFFFFFFFFFFF81FFFFFFFFFFFFFC1FFFFFFFFFFCCFFFFFFF9FFFFFFF + FFF003FFFFFFFFF987FFFFFF0FFFFFFFFFE000FFFFFFFFFB03FFFFFF07FFFFFF + FFC0003FFFFFFFF301FFFFFF83FFFFFFFFC0001FFFFFFFC780FFFFFFC1FFFFFF + FFC0001FFFFFFFC7C07FFFFFE0FFFFFFFFC0001FFFFFFF87E03FFFFFF07FFFFF + FFC0001FFFFFFF87F01FFFFFF83FFFFFFFE0001FFFFFFE0FF80FFFFFFC1FFFFF + FFE0001FFFFFFC0FFC07FFFFFE0FFFFFFFF8001FFFFFFC07FE03FFFFFF07BFFF + FFFE003FFFFFFC07FF01FFFFFF831FFFFFFF807FFFFFF807FF80FFFFFFC00FFF + FFFF807FFFFFF007FFC07FFFFFE007FFC0FE007FFFFFE00FFFE03FFFFFF003FF + 800200FFFFE0C00FFFF01FFFFFF001FF800000FFC0C0000FFFF80FE3FFE000FF + C00000FF8000001FFFFC07C1FFC0007FC00000FF8000001FFFFE0380FFE0003F + E00000FFC000001FFFFF0100FFF0001FF000007FC000003FFFFF8000FFF8000F + F800003FE000003FFFFFC001FFFC0007FC00001FF000003FFFFFE003FFFE0003 + FE00000FF800003FFFFFF007FFFF0001FF00000FFC00001FFFFFE00FFFFF8000 + FF80000FFE00001FFFFFC01FFFFFC001FFE0000FFF00001FFFFF803FFFFFE003 + FFF8000FFFC0001FFFFF007FFFFFF007FFFE001FFFF0001FFFFF00FFFFFFF80F + FFFF803FFFFC001FFFFF01FFFFFFFC1FFFFFF07FFFFF003FFFFF83FFFFFFFE3F + FFFFFFFFFFFFE07FFFFFC7FFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFEFFC7FFFFFFFFFFFFFFF009FFFFFFDFFCFF83FFFFFFFF9E0FFF + C000FF8FC01FFD3F01FFFFFFFE0403FF80007E07FFDCFFCF00FFFFFFF80001FF + 00007807FFF03FF3007FFFFFE00000FF00002007FFC00FBF803FFFFF8000007F + 00000007FF0003DFC01FFFFF0000007F0000001FFC0000EFE00FFFFF8000003F + 8000007FF0000077F007FFFFC000003FC00001FFE0000079F803FFFFC000001F + F00003FFE000007BFC01FFFFC2000007F80007FFE000007FFE00FFFFE7000001 + FC0007FFE000007FFF00FFFFFE000000FE0003FFE000007FFF807FFFFC000001 + FF0000FFE000007FFFC07FFFFC000007FF80003FE000007FFFE03FFFFE00000F + FFC0000FE000003FFFF83FFFFE000007FFC00003F000001FFFFE1FFFFC000003 + FFE00001FC00000FFFFF8FFFFC000019FFFE0000FF000007FFFFC7FFFE00000F + FFFFE000FF800003FFFFE0FFFF000007FFFFF800FFF00003FFFFE07FFF800043 + FFFFFE00FFFC0003FFFFE03FFF8000E3FFFFFF81FFFE0003FFFFE01FFF1000E3 + FFFFFFE3FFFF0003FFFFE00FFF310243FFFFFFFFFFFF8007FFFFF007FF23C107 + FFFFFFFFFFFFC01FFFFFF80FFF07E007FFFFFFFFFFFFC07FFFFFFC1FFF8FF00F + FFFFFFFFFFFFC1FFFFFFFE3FFFFFF80FFFFFFFFFFFFFE7FFFFFFFF7FFFFFFC1F + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F00000000000000000000000000000000 + 000000000000} + end + object ImageListGroup: TImageList + Height = 32 + Width = 32 + Left = 192 + Top = 16 + Bitmap = { + 494C010122002700040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000004001000001002000000000000080 + 0200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000444444000000000000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000550000005500000055000000550000005500000044000000 + 4400000000000000000000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000033 + 6600000066000000000000000000000000000000330000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 5500000055000000770000007700000077000000770000007700000044000000 + 4400000000000000000000000000000000005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000002200000055000000 + BB00000066000000330000003300000000000000550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 5500000077000000220000002200000055000000550000005500000044000000 + 440000004400000000000000000000002200FFFFFF0055555500000055000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000088000000880000002200000055000000 + 5500000066000000330000003300000000000000770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 7700000000000000220000002200000055000000550000005500000044000000 + 4400000044000000440000004400000022005555550088888800000055000000 + 4400000044000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000111111000000 + 0000000000000000880000008800000000000000000000006600000055000066 + FF00000066000000330000003300000033000000000000000000000033000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000077000000 + 5500000000000000220000002200000055000066990000339900000055000000 + 44000000440000004400000044000000220088888800BBBBBB00000055000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 8800000088000000000000000000000055000000550000006600000055000000 + 5500000066000000220000002200000033000000330000003300000033000000 + 3300000033000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 55000000000000002200000022000000550099CCCC0000669900000055000000 + 44000000BB00000044000000440000002200AAAAAA00CCCCCC00000055000000 + 4400000044000000440000004400000044000000440000000000444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 2200000022000000550000005500000055000000550000006600000055000000 + 5500000066000000550000005500000022000000220000003300000033000000 + 3300000033000000330000003300000000000000000000000000444444000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000000000000000000005500000055000000550000005500000055000000 + 440000004400000044000000440000002200AAAAAA00BBBBBB00000055000000 + 4400000044000000440000004400000044000000440000004400000044000000 + 0000000066000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000BB000000 + 5500000022000000550000005500000055000000550000006600000055000000 + 5500000066000000330000003300000055000000550000002200000022000000 + 3300000033000000330000003300000033006666660000000000444444000000 + 0000000033000000000000000000000000000000000000000000006699000033 + 9900000055000000550000005500000055000000770000007700000077000000 + 440000004400000000000000440000002200AAAAAA00AAAAAA00000055000000 + 2200000022000000440000004400000044000000440000004400000044000000 + 0000000066000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000000550000005500000055000000550000006600000055000000 + 5500000066000000330000003300000033000000330000005500000055000000 + 220000002200000033000000330000003300DDDDDD0066666600000000000000 + 000000005500000000000000000000000000000000000000000099CCCC000066 + 9900000055000000550000007700000077000000770000007700000077000000 + 770000000000000044000000000000002200CCCCCC00EEEEEE00000055000000 + 6600000066000000220000002200000044000000440000004400000044000000 + 4400000000000000000000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000066FF000000 + 5500000022000000550000666600000055000000550000006600000055000000 + 5500000066000000330000003300000033000000330000003300000033000000 + 55000000550000002200000022000000330066666600DDDDDD00000077000000 + 0000000077000000000000000000000000000000000000000000000055000000 + 5500000077000000770000007700000077000000770000007700CCCC9900CCCC + 990000007700000044000000000000002200BBBBBB00CCCCCC00000055000000 + 4400000044000000660000006600000022000000220000004400000044000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000099990000999900000055000000550000006600000055000000 + 5500000066000000330000003300000033000000330000003300000033000000 + 330000003300000055000000550000002200DDDDDD0088888800000077000000 + 0000000000000000000000003300000000000000000000000000000000000000 + 770000007700000077000000770000007700FFFFCC00CCCC9900CCCC9900CCCC + 990000007700000044000000000000002200BBBBBB00CCCCCC00000055000000 + 440000CCCC000066660000004400000066000000660000002200000022000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000099990000666600000055000000550000006600000055000000 + 5500000055000000220000003300000033000000330000003300000033000000 + 3300000033000099990000003300000055008888880088888800000077000000 + 3300000033000000330000003300000000000000000000000000000000000000 + 77000000770000007700FFFFCC00FFFFCC00CCCC9900FFFFCC00CCCC9900CCCC + 99000000770000000000000000000000220088888800BBBBBB00000055000000 + 4400009999000099990000004400000044000000440000006600000066000000 + 2200000022000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000000550000005500000055000000550000006600000022000000 + 2200000066000000550000002200000022000000330000003300000033000000 + 330033CCCC000000550000999900000033008888880088888800000077000000 + 3300000033000000330000003300000000000000000000000000000000000000 + 0000CCCC9900FFFFCC00FFFFFF00FFFFCC00FFFFCC00CCCC9900FFFFCC00CCCC + 9900000077000000440000004400000022000000660088888800000055000000 + 44000066660000CCCC0000004400000044000000440000004400000044000000 + 6600000066000000220000002200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000000550000005500000055000000220000002200000055000000 + 5500000066000000330000005500000055000000220000002200000033000000 + 33000099990033CCCC0033CCCC00000033008888880088888800000077000000 + 3300000033000000330000003300000000000000000000000000000000000000 + 0000CCCC9900CCCC9900FFFFCC00FFFFFF00FFFFCC00FFFFCC00CCCC99000000 + 4400000044000000770000004400000044000000220000002200000055000000 + 2200000022000000440000004400000044000000440000004400000044000000 + 4400000044000000660000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000000550000002200000022000000550000005500000055000000 + 5500000066000000330000003300000033000000550000005500000022000000 + 2200000033000000550000999900000033008888880088888800000077000000 + 3300000033000000BB0000003300000000000000000044444400FFFFFF000000 + 0000FFFFCC00CCCC9900CCCC9900FFFFCC00FFFFFF0000004400000044000000 + 5500000066000000660000008800000044000000440000004400000044000000 + 6600000066000000220000002200000044000000440000004400000044000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000022000000220000005500000055000000550000005500000055000000 + 7700000077000000770000003300000033000000330000003300000055000000 + 5500000022000000220000003300000033008888880088888800000077000000 + 3300000033000000330000003300000000000000000044444400FFFFFF000000 + 0000FFFFCC00CCCC9900CCCC9900000044000000440000005500000066000000 + 6600000077000000770000007700000088000000660000004400000044000000 + 4400000044000000660000006600000022000000220000004400000044000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000022000000 + 2200000055000000550000005500000055000000550000007700000077000000 + 7700000077000000770000007700000077000000330000003300000033000000 + 33000000550000005500000022000000220088888800AAAAAA00000077000000 + 3300000000000000330000000000000000000000000044444400444444002222 + 2200FFFFCC000000440000004400000055000000660000006600000077000000 + 7700000077000000770000008800000088000000880000008800000066000000 + 4400000044000000440000004400000066000000660000002200000022000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000055000000550000005500000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000033000000 + 33000000330000003300000055000000550088888800AAAAAA00000077000000 + 3300DDDDDD0000000000FFFFFF00777777000000000000000000000000000000 + 0000000000000000550000006600000066000000770000007700000077000000 + 7700000088000000880000008800000088000000880000008800000088000000 + 8800000066000000440000004400000044000000440000006600000066000000 + 2200000022000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 5500000055000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000033000000330000003300000033000000330000007700000077000000 + 3300DDDDDD0000000000FFFFFF00777777000000000000000000000000000000 + 0000000000000000770000007700000077000000770000007700000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000006600000044000000440000004400000044000000 + 6600000066000000220000002200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000055000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000003300000033000000330000003300000033000000 + 3300DDDDDD0000000000FFFFFF00777777000000000000000000000000000000 + 0000000000000000000000007700000077000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000008800000088000000660000004400000044000000 + 4400000044000000660000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000330000003300000033000000 + 3300DDDDDD000000000077777700777777000000000000000000000000000000 + 0000000000000000000000004400000088000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000066000000 + 4400000044000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000033000000 + 3300AAAAAA000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000066000000440000004400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000006600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000880000008800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000007700000077000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000008800000088000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 8800000088000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000077000000770000007700000077000000770000007700000077000000 + 7700000077000000770000007700000077000000770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000880000008800000088000000 + 8800000088000000880000008800000088000000880000008800000088000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000007700000077000000770000007700000077000000 + 7700000077000000770000007700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000088000000 + 8800000088000000880000008800000088000000880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000007700000077000000 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000088000000880000008800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444002222220011111100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500555555007777 + 7700999999007777770055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440044444400444444002222220011111100111111001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA004444 + 4400DDDDDD00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555005555550055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000AAAAAA00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00777777000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000007777770055555500555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770055555500555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555005555 + 5500999999009999990099999900555555005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000008888880044444400DDDD + DD004444440044444400DDDDDD00DDDDDD007777770000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000022222200000000005555 + 5500555555007777770055555500555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770055555500555555007777 + 7700555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550055555500999999009999 + 9900888888008888880088888800999999009999990055555500555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550000000000AAAAAA00DDDD + DD00DDDDDD007777770044444400DDDDDD0000000000AAAAAA00999999000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770055555500555555007777 + 7700555555005555550077777700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500555555009999990099999900888888008888 + 8800888888008888880088888800888888008888880099999900999999005555 + 5500555555000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000005555550055555500AAAA + AA00999999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770055555500555555007777 + 7700555555005555550077777700555555005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555005555550099999900999999008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888009999 + 9900999999005555550055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000888888007777770055555500444444000000000000000000000000005555 + 550055555500AAAAAA0099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770055555500555555007777 + 7700555555005555550077777700555555005555550077777700555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000044444400555555005555 + 5500999999009999990088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888009999990099999900555555005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000055555500AAAAAA00888888000000000000000000000000000000 + 0000000000005555550055555500AAAAAA009999990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555007777770055555500555555007777 + 7700999999007777770055555500555555007777770055555500555555007777 + 7700555555005555550077777700555555005555550077777700555555005555 + 5500777777000000000022222200000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220000000000111111001111 + 1100111111001111110011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000044444400999999009999 + 9900888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800999999009999990055555500555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0088888800555555008888880000000000000000000000 + 00000000000000000000000000005555550055555500AAAAAA00999999000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555007777770055555500555555005555 + 5500999999007777770055555500555555007777770055555500555555005555 + 5500000000004444440055555500555555005555550077777700555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100000000000000 + 0000111111001111110011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000044444400444444009999 + 9900888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880099999900999999005555 + 5500555555000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00888888005555550000000000000000000000 + 000000000000000000000000000000000000000000005555550055555500AAAA + AA00999999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555007777770055555500555555005555 + 5500333333002222220022222200555555007777770055555500555555007777 + 7700222222000000000000000000444444005555550077777700555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110044444400111111001111 + 1100666666004444440044444400444444002222220011111100111111001111 + 1100000000000000000011111100111111001111110022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400444444009999990088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888009999 + 9900999999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF008888880055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 550055555500AAAAAA0099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555007777770055555500555555005555550055555500333333007777 + 7700999999005555550033333300222222002222220055555500555555007777 + 7700222222002222220022222200000000000000000044444400555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111001111110011111100444444002222 + 2200666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110000000000000000001111110022222200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440044444400999999008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0088888800555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550055555500AAAAAA009999990000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555005555550055555500555555003333330077777700777777007777 + 7700999999005555550055555500555555003333330022222200222222007777 + 7700222222002222220022222200222222002222220000000000555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 0000000000006666660044444400111111002222220044444400FFFFFF00FFFF + FF00666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444004444440099999900888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00888888005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000005555550055555500AAAAAA00999999000000 + 0000000000000000000000000000000000000000000000000000777777005555 + 5500555555005555550033333300777777007777770077777700777777009999 + 9900888888008888880077777700555555005555550055555500333333007777 + 7700555555002222220022222200222222002222220022222200555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 000000000000666666004444440011111100FFFFFF00FFFFFF00BBBBBB005555 + 5500666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110011111100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400444444009999 + 9900888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF008888 + 8800555555000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000005555550055555500AAAA + AA00999999000000000000000000000000000000000000000000555555005555 + 5500333333007777770077777700777777007777770099999900888888008888 + 8800888888008888880088888800888888007777770055555500555555007777 + 7700888888005555550055555500444444002222220022222200555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 000066666600444444004444440011111100BBBBBB0055555500444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110011111100222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400444444009999990088888800888888008888880088888800888888008888 + 8800888888008888880088888800000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00888888005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 550055555500AAAAAA0099999900000000000000000000000000333333007777 + 7700777777007777770077777700999999008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800777777005555 + 5500555555007777770088888800555555005555550022222200555555005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 0000666666004444440044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110011111100222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440044444400999999008888880088888800888888008888 + 8800888888000000000000000000000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF008888880055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550088888800000000000000000077777700777777007777 + 7700777777009999990088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800777777005555550055555500777777008888880055555500222222005555 + 5500777777005555550000000000000000000000000000000000000000000000 + 0000666666004444440044444400111111001111110044444400444444004444 + 4400666666004444440044444400444444002222220011111100111111001111 + 1100111111001111110011111100111111001111110011111100222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444004444440099999900888888005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0088888800555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700777777009999 + 9900888888008888880088888800888888008888880088888800888888008888 + 8800888888005555550055555500888888008888880088888800888888008888 + 8800888888008888880077777700555555005555550077777700333333002222 + 2200222222005555550000000000000000000000000000000000000000000000 + 0000666666004444440044444400111111001111110044444400444444004444 + 4400666666004444440044444400111111001111110000000000111111001111 + 1100111111001111110011111100111111001111110011111100222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400444444009999 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00888888005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099999900888888008888 + 8800888888008888880088888800888888008888880088888800888888005555 + 5500000000000000000044444400888888008888880088888800888888008888 + 8800888888008888880088888800888888007777770055555500555555005555 + 5500333333002222220000000000000000000000000000000000000000000000 + 0000666666004444440044444400111111001111110044444400444444004444 + 4400AAAAAA00AAAAAA00AAAAAA00444444004444440000000000000000000000 + 0000111111001111110011111100111111001111110011111100222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF008888880055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 8800888888008888880088888800888888008888880055555500000000000000 + 0000444444008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800777777005555 + 5500555555005555550000000000000000000000000000000000000000000000 + 0000666666004444440044444400111111001111110044444400AAAAAA00AAAA + AA00888888007777770077777700777777007777770066666600444444000000 + 0000000000000000000011111100111111001111110011111100222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000000000000000000000000000000000000888888000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0088888800555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880088888800888888008888880000000000000000000000 + 0000888888008888880088888800888888008888880088888800888888008888 + 8800888888008888880088888800888888008888880088888800888888008888 + 8800777777005555550055555500000000000000000000000000000000000000 + 000066666600444444004444440011111100AAAAAA00AAAAAA00888888007777 + 7700777777007777770066666600666666006666660066666600666666006666 + 6600444444000000000000000000000000001111110011111100444444001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000000000000000000008888880088888800000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00888888005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000888888008888880088888800555555000000 + 0000000000004444440088888800888888008888880088888800888888008888 + 8800555555005555550088888800888888008888880088888800888888008888 + 8800888888008888880055555500000000000000000000000000000000000000 + 00006666660044444400AAAAAA00AAAAAA008888880077777700777777007777 + 7700666666006666660066666600666666006666660066666600666666006666 + 6600666666006666660044444400000000000000000000000000111111001111 + 1100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000088888800888888000000000000000000000000000000 + 0000000000008888880000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF008888 + 8800555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800888888008888 + 8800555555000000000000000000444444008888880088888800555555000000 + 0000000000004444440088888800888888008888880088888800888888008888 + 8800888888008888880099999900000000000000000000000000000000007777 + 7700AAAAAA00AAAAAA0088888800777777007777770077777700666666006666 + 6600666666006666660066666600666666006666660066666600666666006666 + 6600666666006666660066666600666666004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000008888880000000000000000000000000000000000000000000000 + 0000000000008888880000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00888888005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 8800888888008888880055555500000000000000000000000000000000004444 + 4400888888008888880088888800888888008888880088888800888888008888 + 880099999900000000000000000000000000000000000000000000000000AAAA + AA00888888007777770077777700777777006666660066666600666666006666 + 6600666666006666660066666600666666006666660066666600666666006666 + 6600666666006666660055555500555555005555550055555500555555005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF008888880055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880088888800888888005555550044444400888888008888 + 8800888888008888880088888800888888008888880088888800999999000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00888888007777770066666600666666006666660066666600666666006666 + 6600666666006666660066666600666666006666660066666600666666006666 + 6600555555005555550055555500555555005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0088888800555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000888888008888880088888800888888008888 + 8800888888008888880088888800888888009999990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA009999990077777700666666006666660066666600666666006666 + 6600666666006666660066666600666666006666660066666600555555005555 + 5500555555005555550055555500555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444009999 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00888888005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800888888008888 + 8800888888008888880099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00999999007777770066666600666666006666 + 6600666666006666660066666600666666005555550055555500555555005555 + 5500555555005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400999999000000000000000000000000000000000000000000000000008888 + 8800888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009999 + 9900999999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000AAAAAA0099999900777777006666 + 6600666666006666660055555500555555005555550055555500555555005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400999999000000000000000000000000000000000088888800888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000AAAAAA009999 + 9900666666005555550055555500555555005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400999999000000000000000000888888008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA009999990088888800777777000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000444444009999990099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000444444004444440044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006699CC0033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC006699CC0033669900336699003366990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB00FFFF + FF00FFFFFF00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000077777700FFFFFF00EEEEEE00EEEEEE00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BBBBBB00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00BBBBBB00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000888888000000000088888800555555006666 + 6600666666006666660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00000000000000000088888800555555005555 + 5500FFFFFF004444440066666600888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00000000000000 + 000000000000000000000000000000000000000000000000000000000000BBBB + BB00FFFFFF00FFFFFF00BBBBBB00000000005555550088888800888888008888 + 8800888888008888880088888800888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00AAAA + AA0000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF0000000000555555005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF0000000000000000005555550055555500000000000000000000CCCC0000CC + CC0000CCCC0066FFFF0066FFFF0000CCCC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD0000000000000000000000000000000000FFFFFF00000000000000 + 00000000000000000000000000000000000000CCCC0000CCCC0000CCCC0066FF + FF0066FFFF0066FFFF0066FFFF0066FFFF0066FFFF0000CCCC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 990033669900336699003366990000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00BBBBBB000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CCCC0000CCCC0000CCCC0000CCCC0066FFFF0066FF + FF00444444001111110011111100111111001111110066FFFF0000CCCC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BBBBBB0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 00000000000000CCCC0000CCCC0000CCCC0066FFFF0000CCCC0066FFFF004444 + 44002222220088888800AAAAAA0000666600003333001111110066FFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00BBBBBB00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700FFFFFF00EEEEEE00EEEEEE00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 00000000000000CCCC0066FFFF0066FFFF0000CCCC0066FFFF0066FFFF001111 + 110088888800AAAAAA00AAAAAA000066660000333300003333001111110066FF + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BBBBBB000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA0077777700DDDDDD00FFFFFF00FFFFFF00EEEEEE00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000000CCCC0066FFFF0066FFFF0066FFFF0000CCCC0066FFFF00444444001111 + 1100AAAAAA009999990099999900AAAAAA0000333300003333001111110066FF + FF00000000000000000044444400444444000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB0000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA00AAAAAA009999990088888800DDDDDD00FFFFFF00AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000066FFFF0066FFFF0066FFFF0066FFFF0000CCCC0066FFFF00111111002222 + 2200888888009999990099999900999999000066660000333300111111004444 + 440000CCCC003333330044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC00336699006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00FFFFFF00DDDDDD00AAAA + AA00AAAAAA00AAAAAA00AAAAAA009999990088888800AAAAAA00DDDDDD00DDDD + DD00EEEEEE00FFFFFF00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000066FFFF0066FFFF0066FFFF0099FFFF0000CCCC0099FFFF00111111002222 + 220077777700AAAAAA00444444004444440077777700AAAAAA00006666001111 + 110000CCCC003333330044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC003366990066666600336699006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00CCCCCC00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00FFFFFF00CCCCCC00CCCCCC00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000066FFFF0099FFFF0099FFFF0099FFFF0000CCCC0099FFFF00111111002222 + 220055555500AAAAAA0044444400FFFFFF0044444400BBBBBB00AAAAAA001111 + 110066FFFF003333330044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC003366990066666600336699006699CC006699CC006699 + CC0099CCFF0099CCFF0099CCFF0099CCFF006699CC0033669900336699003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000066CC000066 + CC000066CC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00DDDDDD00BBBBBB00CCCCCC00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00DDDDDD00DDDDDD00DDDDDD00BBBBBB00AAAAAA00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000099FFFF0099FFFF0099FFFF00FFFFFF0000CCCC0066FFFF00444444002222 + 220022222200AAAAAA0044444400FFFFFF0044444400BBBBBB00BBBBBB001111 + 110066FFFF003333330044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC003366990066666600336699006699CC0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC003366 + 9900336699003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000066CC006699FF006699 + FF006699FF000066CC00FFFFFF00FFFFFF00FFFFFF00EEEEEE00000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00DDDDDD00CCCCCC00EEEEEE00EEEEEE00EEEEEE00EEEEEE00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000099FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000CCCC0066FFFF002222 + 220022222200AAAAAA00888888004444440044444400AAAAAA00AAAAAA001111 + 110066FFFF003333330044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC0033669900666666003366990099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF006699CC003366990033669900000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000066CC006699FF000000 + 0000888888000066CC00FFFFFF00FFFFFF00FFFFFF00EEEEEE00000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00CCCCCC00EEEEEE00EEEEEE00EEEEEE00EEEEEE00DDDDDD00DDDDDD000099 + CC00006699000066990000669900006699000066990000669900006699000066 + 99000099CC00DDDDDD00DDDDDD00EEEEEE00EEEEEE00EEEEEE00EEEEEE00BBBB + BB00DDDDDD000000000000000000000000000000000000000000000000000000 + 000099FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000CCCC0066FFFF001111 + 110022222200AAAAAA008888880099999900AAAAAA0000666600006666001111 + 110066FFFF003333330044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC006699CC006699CC0033669900666666006699CC006699CC00AAAAAA0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC00000000003366990033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000066CC000066 + CC000066CC0088888800FFFFFF00FFFFFF000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00EEEEEE00FFFFFF00EEEEEE00EEEEEE00DDDDDD000099CC00006699000066 + 9900999999008888880088888800888888008888880088888800888888009999 + 990000669900006699000099CC00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00CCCCCC000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF0099FFFF0099FFFF0099FFFF0000CCCC0099FF + FF0011111100AAAAAA0099999900AAAAAA0088888800006666001111110000CC + CC0066FFFF004444440044444400888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC006699 + CC0099CCFF0099CCFF006699CC006699CC0066666600666666006699CC006699 + CC00AAAAAA0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF007777770000000000000000006699CC0033669900336699003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0088888800000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00EEEEEE00DDDDDD000099CC0000669900AAAAAA009999 + 9900999999009999990099999900999999009999990099999900999999009999 + 990055555500AAAAAA00006699000099CC00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00CCCCCC000000000000000000000000000000000000000000000000000000 + 00000000000099FFFF0099FFFF0099FFFF0099FFFF0066FFFF0000CCCC00FFFF + FF00FFFFFF0011111100AAAAAA00AAAAAA0000666600006666001111110066FF + FF00333333004444440088888800888888000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699CC00666666006666 + 66006699CC006699CC00AAAAAA0099CCFF0099CCFF0099CCFF0099CCFF007777 + 770000000000000000007777770099CCFF0099CCFF0099CCFF006699CC003366 + 9900336699003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000888888000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00EEEEEE00DDDDDD0000669900BBBBBB00AAAAAA00AAAA + AA00AAAAAA009999990099999900999999009999990099999900999999005555 + 5500AAAAAA00AAAAAA00BBBBBB0000669900DDDDDD00EEEEEE00EEEEEE00EEEE + EE00EEEEEE000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FFFF0066FFFF0066FFFF0066FFFF0066FFFF0000CC + CC00FFFFFF00FFFFFF001111110011111100111111001111110066FFFF0066FF + FF00888888008888880000000000000000007777770000000000000000000000 + 00000000000000000000000000000000000000000000CCFFFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699 + CC0066666600666666006699CC006699CC00AAAAAA0077777700DDDDDD00EEEE + EE007777770099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF006699CC003366990033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00FFFFFF00FFFFFF00FFFFFF00DDDDDD0000669900BBBBBB00BBBBBB00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00777777007777770077777700AAAA + AA00AAAAAA00BBBBBB00BBBBBB0000669900DDDDDD00EEEEEE00EEEEEE00EEEE + EE00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CCCC0066FFFF0066FFFF0066FFFF0066FFFF0066FF + FF0000CCCC00FFFFFF00FFFFFF0066FFFF0066FFFF0066FFFF0066FFFF008888 + 8800888888000000000000000000AAAAAA008888880000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCFF + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF006699CC006699CC00666666006666660000000000000000007777770099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00FFFFFF00FFFFFF00FFFFFF00DDDDDD000099CC0000669900777777007777 + 770077777700777777007777770077777700AAAAAA00AAAAAA00AAAAAA00BBBB + BB00BBBBBB00BBBBBB00006699000099CC00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066FFFF0066FFFF0066FFFF0000CCCC0000CC + CC0000CCCC0000CCCC0000CCCC0066FFFF0066FFFF0088888800888888000000 + 00000000000000000000EEEEEE00DDDDDD00AAAAAA0088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0077777700000000000000000077777700666666006699CC006699 + CC00AAAAAA0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000099CC00006699000066 + 9900BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB0000669900006699000099CC00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000CCCC0000CCCC0000CC + CC0000CCCC0000CCCC0000000000000000000000000000000000000000000000 + 0000000000000000000077777700EEEEEE00DDDDDD00AAAAAA00888888008888 + 8800000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF007777 + 770000000000000000007777770099CCFF006699CC006699CC00666666006666 + 66006699CC006699CC00AAAAAA0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA00FFFFFF00EEEEEE00FFFFFF00EEEEEE00DDDDDD00DDDDDD000099 + CC00006699000066990000669900006699000066990000669900006699000066 + 99000099CC00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000077777700EEEEEE00DDDDDD00AAAAAA008888 + 8800777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700000000000000 + 00007777770099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699 + CC0066666600666666006699CC006699CC00AAAAAA0099CCFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000EEEEEE00FFFFFF00FFFFFF00FFFFFF00EEEEEE00EEEE + EE00EEEEEE00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000077777700EEEEEE00DDDDDD00AAAA + AA00888888008888880077777700000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCFF + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF006699CC006699CC0066666600666666006699CC0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 8800000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00EEEE + EE00EEEEEE00EEEEEE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700EEEEEE00DDDD + DD00AAAAAA008888880088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00EEEEEE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00EEEE + EE00EEEEEE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000077777700EEEE + EE00DDDDDD00AAAAAA00AAAAAA00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000AAAA + AA00EEEEEE00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCFFFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000088888800888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005555550000000000555555000000000000000000000000000000000000CC + FF00006699000099CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005555550000000000555555000000000000000000000000003399CC0000CC + FF00006699000099CC000099CC00006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006699CC0033669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500000000000099CC000099CC000000000000000000000000003399CC0000CC + FF00006699000099CC0000000000006699000099CC000099CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCCCCC00BBBBBB00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC003366990000336600336699003366990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000CC + FF0000CCFF0000669900006699000099CC000099CC00000000000000000000CC + FF00006699000099CC000099CC000066990000CCFF0000CCFF000099CC000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCCCC00CCCCCC00CCCCCC00BBBBBB00BBBBBB00BBBB + BB00BBBBBB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006699CC006699CC003366 + 9900336699006699CC00336699000033660000336600336699006699CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000CCFF000066 + 990000669900006699000099CC0000669900006699000099CC000099CC0000CC + FF00006699000099CC000099CC000066990000CCFF0000CCFF0000CCFF0000CC + FF000099CC000099CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500555555000000000088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCCCC00CCCCCC00CCCCCC006666330066663300CCCCCC00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000003366006699CC0033669900336699006699 + CC006699CC003366990000336600336699003366990000336600003366006699 + CC006699CC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF0000669900006666000099CC0000CCFF00006699000066990000CC + FF00006699000099CC000099CC0000666600000000000000000000CCFF0000CC + FF0000CCFF0000CCFF000099CC000099CC000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500555555008888 + 8800999999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCCCCC00CCCC + CC00CCCCCC0066663300666633000000FF0066663300FFFFFF00CCCCCC00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006699CC006699CC0033669900336699006699CC006699CC003366 + 9900336699006699CC00336699000033660000336600336699006699CC000033 + 6600003366006699CC006699CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF000066990000666600006666000066660000CCFF003399CC0000CC + FF00006699000099CC000099CC00006666000000000000000000000000000000 + 000000CCFF0000CCFF0000CCFF0000CCFF000099CC000099CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550088888800999999000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCCCCC00CCCCCC00CCCCCC006666 + 330066663300AAAAAA0099996600666633009999660066663300CCCCCC00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000006699 + CC006699CC003366990033669900003366006699CC0033669900336699006699 + CC006699CC003366990000336600336699003366990000336600003366006699 + CC006699CC0000336600003366006699CC006699CC0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF00006699000066660000CCFF003399CC0000CCFF003399CC0000CC + FF00006699000099CC000099CC00006666000000000000000000000000000000 + 0000000000000000000000CCFF0000CCFF0000CCFF0000CCFF000099CC000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500000000008888880000000000000000000000 + 0000000000000000000055555500555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCCCCC00CCCCCC00CCCCCC006666330066663300AAAA + AA0099996600999966006666330099996600AAAAAA0066663300FFFFFF00CCCC + CC00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00000000000000000000000000000000006699CC006699CC003366 + 9900336699006699CC006699CC0033669900336699006699CC006699CC003366 + 9900336699006699CC00336699000033660000336600336699006699CC000033 + 6600003366006699CC006699CC0000336600003366006699CC006699CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF00006699000066660000CCFF003399CC003399CC003399CC0000CC + FF00006699000099CC000099CC00006666000000000000000000000000000000 + 00000000000000000000000000000000000000CCFF0000CCFF0000CCFF0000CC + FF000099CC000099CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555005555550088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCCCC00CCCCCC00CCCCCC00666633006666330066663300666633009999 + 66006666330099996600AAAAAA0066663300FFFFFF00FFFFFF00444444004444 + 440044444400BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00000000000000000000336600336699006699 + CC006699CC003366990033669900003366006699CC0033669900336699006699 + CC006699CC003366990000336600336699003366990000336600003366006699 + CC006699CC0000336600003366006699CC006699CC0000336600003366006699 + CC00336699000000000000000000000000000000000000000000000000000000 + 000000CCFF00006699000066660000CCFF003399CC00555555003399CC000099 + CC000066990000CCFF000099CC00006666000000000000000000000000000000 + 000055555500000000000000000000000000000000000000000000CCFF000066 + 66000066660000CCFF000099CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555005555 + 5500888888009999990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCCCCC00CCCC + CC00CCCCCC0066663300666633006666330099CC6600FFFF9900666633006666 + 3300AAAAAA0066663300FFFFFF00FFFFFF004444440044444400888888008888 + 8800888888004444440044444400BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB0000000000000000006699CC006699CC003366 + 9900336699006699CC006699CC0033669900336699006699CC006699CC003366 + 9900336699006699CC00336699000033660000336600336699006699CC000033 + 6600003366006699CC006699CC0000336600003366006699CC006699CC000033 + 6600003366003366990033669900000000000000000000000000000000000000 + 000000CCFF003399CC000066660000CCFF0000CCFF005555550000CCFF000066 + 990000CCFF0000CCFF00006699000099CC000099CC000099CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CCFF0000CCFF0000CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550055555500888888009999 + 9900000000000000000000000000000000000000000055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCCCCC00CCCCCC006666 + 3300666633006666330099CC6600FFFF9900FFFF9900FFFF9900666633006666 + 3300FFFFFF00FFFFFF0044444400444444008888880088888800FFFFFF00DDDD + DD00DDDDDD0077777700777777004444440044444400BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00000000000000000000336600336699006699 + CC006699CC003366990033669900003366006699CC0033669900336699006699 + CC006699CC003366990000336600336699003366990000336600003366006699 + CC006699CC0000336600003366006699CC006699CC0000336600003366006699 + CC00336699000033660000336600000000000000000000000000000000000000 + 000000000000000000000099CC000066990000CCFF005555550000CCFF000066 + 990000CCFF0000CCFF000066990000CCFF0000CCFF0000CCFF000099CC000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555000000000000000000000000000000 + 0000000000000000000000000000000000008888880000000000000000000000 + 0000000000000000000000000000555555005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00666633006666 + 330099CC6600FFFF9900FFFF9900FFFF99006666330066663300FFFFFF00FFFF + FF0044444400444444008888880088888800FFFFFF00FFFFFF00AAAAAA00AAAA + AA00AAAAAA00DDDDDD00DDDDDD0077777700777777004444440044444400BBBB + BB00BBBBBB00BBBBBB00BBBBBB0000000000000000006699CC006699CC003366 + 9900336699006699CC006699CC0033669900336699006699CC006699CC003366 + 9900336699006699CC00336699000033660000336600336699006699CC000033 + 6600003366006699CC006699CC0000336600003366006699CC006699CC000033 + 6600003366003366990033669900000000000000000000000000000000000000 + 000055555500000000000099CC000066990000CCFF00555555000099CC000066 + 990000CCFF0000669900000000000000000000CCFF0000CCFF0000CCFF0000CC + FF000099CC000099CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550055555500888888008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF006666 + 330099CC6600FFFF99006666330066663300FFFFFF00FFFFFF00444444004444 + 44008888880088888800FFFFFF00FFFFFF00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00DDDDDD00DDDDDD0077777700777777004444 + 440044444400BBBBBB00BBBBBB00000000000000000000336600336699006699 + CC006699CC003366990033669900003366006699CC0033669900336699006699 + CC006699CC000033660000336600336699003366990000336600003366006699 + CC006699CC0000336600003366006699CC006699CC0000336600003366006699 + CC00336699000033660000336600000000000000000000000000000000000000 + 000055555500000000000099CC00006699000099CC00555555000066990000CC + FF0000CCFF00000000000000000000000000000000000000000000CCFF000066 + 66000066660000CCFF000099CC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500555555008888880099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF006666330066663300FFFFFF00FFFFFF004444440044444400888888008888 + 8800FFFFFF00FFFFFF00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00DDDDDD00DDDDDD007777 + 770077777700444444004444440000000000000000006699CC006699CC003366 + 9900336699006699CC006699CC0033669900336699006699CC006699CC000033 + 66000033660099CCFF006699CC000033660000336600336699006699CC000033 + 6600003366006699CC006699CC0000336600003366006699CC006699CC000033 + 6600003366003366990033669900000000000000000000000000000000000000 + 00005555550000000000000000000099CC000066990055555500006699000099 + CC0000CCFF000000000000000000000000000000000000000000000000000000 + 000000CCFF0000CCFF0000CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0044444400444444008888880088888800FFFFFF00FFFF + FF00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00DDDD + DD00DDDDDD007777770077777700000000000000000000336600336699006699 + CC006699CC003366990033669900003366006699CC00003366000033660099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF006699CC0000336600003366006699 + CC006699CC0000336600003366006699CC006699CC0000336600003366006699 + CC00336699000033660000336600000000000000000000000000000000000000 + 00005555550000000000000000000099CC00006699000066990000CCFF0000CC + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000444444008888880088888800FFFFFF00FFFFFF00BBBBBB00AAAA + AA00BBBBBB00AAAAAA00BBBBBB00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00AAAAAA00DDDDDD00DDDDDD0000000000000000006699CC006699CC003366 + 9900336699006699CC006699CC00003366000033660099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF006699CC006699CC0099CCFF006699CC000033 + 6600003366006699CC006699CC0000336600003366006699CC006699CC000033 + 6600003366003366990033669900000000000000000000000000000000000000 + 00005555550000000000000000000000000000CCFF0000CCFF0000CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555005555550000000000888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000088888800FFFFFF00FFFFFF00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00AAAAAA00BBBBBB00AAAAAA00BBBBBB00AAAAAA00BBBBBB00AAAAAA00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00AAAAAA009999990099999900000000000000000000336600336699006699 + CC006699CC0000336600003366006699CC0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF006699CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF006699CC0000336600003366006699CC006699CC0000336600003366006699 + CC00336699000033660000336600000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550055555500888888009999990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099999900AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00AAAAAA00BBBBBB00AAAAAA00BBBBBB00AAAA + AA00BBBBBB00AAAAAA00BBBBBB00AAAAAA00BBBBBB00AAAAAA00AAAAAA009999 + 990099999900000000000000000000000000000000006699CC006699CC000033 + 66000033660099CCFF0099CCFF0033669900336699006699CC0099CCFF006699 + CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC0000336600003366006699CC006699CC000033 + 6600003366003366990033669900000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099999900BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00AAAAAA00BBBBBB00AAAAAA00BBBB + BB00AAAAAA00BBBBBB00AAAAAA00BBBBBB00AAAAAA0099999900999999000000 + 00000000000000000000000000000000000000000000003366000033660099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0033669900336699006699 + CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF006699CC0000336600003366006699 + CC00336699000033660000336600000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555008888880088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099999900AAAA + AA00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00AAAA + AA00BBBBBB00AAAAAA00BBBBBB00999999009999990000000000000000000000 + 00000000000000000000000000000000000000000000CCFFFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF006699CC006699CC0099CCFF0099CCFF003366 + 9900336699006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC000033 + 6600003366003366990033669900000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500555555000000 + 0000888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099999900BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00AAAAAA009999990099999900000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCFF + FF0099CCFF006699CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0033669900336699006699CC0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699CC0099CC + FF006699CC000033660000336600000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555005555550088888800999999000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099999900AAAAAA00BBBBBB00BBBBBB00BBBBBB009999 + 9900999999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0033669900336699006699CC0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF006699CC006699CC0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF006699CC00000000000000000000000000000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008888880000000000000000000000 + 0000000000000000000055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009999990099999900999999000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0033669900336699006699 + CC0099CCFF006699CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000008888 + 8800000000000000000088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000555555000000000088888800999999000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCFFFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF003366 + 9900336699006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005555550000000000FFFFFF00888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCFF + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC006699CC0099CC + FF0099CCFF0033669900336699006699CC0099CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 88005555550000000000FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888009999 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCFFFF0099CCFF006699CC006699CC0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00555555000000000000000000FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000088888800FFFF + FF005555550000000000FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CCFFFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF005555550000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000777777000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC00336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC006699CC006699CC00336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00FFFFFF00FFFFFF00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00FFFFFF00FFFFFF00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00FFFFFF00FFFFFF0055555500FFFFFF00FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00FFFFFF00FFFFFF00FFFFFF00555555008888880055555500FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF00FFFFFF00555555005555550055555500555555008888880055555500FFFF + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007777770000000000FFFFFF00FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000DDDDDD00FFFFFF00FFFFFF008888 + 8800555555008888880055555500555555008888880055555500FFFFFF00FFFF + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000DDDDDD00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF007777770000000000000000000000000088888800FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DDDDDD00FFFFFF00FFFFFF00FFFFFF00555555008888 + 8800555555005555550055555500FFFFFF00FFFFFF0055555500FFFFFF00FFFF + FF00FFFFFF00FFFFFF00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0077777700000000000000000000000000000000000000000077777700FFFF + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000DDDDDD00FFFFFF00FFFFFF0055555500FFFFFF0055555500555555005555 + 550055555500FFFFFF0088888800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00DDDDDD00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00777777000000 + 00000000000000000000000000000000000077777700FFFFFF00FFFFFF00FFFF + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00888888005555550055555500FFFFFF008888 + 8800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007777770000000000000000000000 + 0000000000000000000077777700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00555555005555550055555500FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0077777700000000000000000000000000000000000000 + 000077777700FFFFFF00FFFFFF00FFFFFF009999FF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00DDDDDD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF005555550088888800FFFFFF00FFFF + FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF008888880000000000000000000000000077777700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006666FF000000FF009999FF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB00BBBBBB00AAAAAA00AAAA + AA00AAAAAA00AAAAAA00AAAAAA00BBBBBB00BBBBBB00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC0033669900336699000033660099CCFF0099CCFF006699CC00336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF000000000077777700FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00CCCCCC00CCCCCC00AAAAAA00AAAAAA00AAAAAA00999999009999 + 99009999990099999900AAAAAA00AAAAAA00AAAAAA00BBBBBB00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC00336699003366 + 990000336600003366000033660099CCFF0099CCFF0099CCFF0099CCFF006699 + CC00336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + FF000000FF00FFFFFF00FFFFFF000000FF000000FF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009999FF000000 + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006666FF000000FF009999 + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00CCCC + CC00CCCCCC00BBBBBB00BBBBBB00336699003366990033669900336699003366 + 99003366990099999900999999009999990099999900AAAAAA00000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC003366990033669900003366000033 + 6600003366000033660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF006666FF000000 + FF009999FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000 + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00CCCCCC00CCCCCC00BBBB + BB00BBBBBB00BBBBBB00336699006699CC003366990099CCFF0099CCFF0099CC + FF0099CCFF003366990033669900999999009999990099999900000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC0033669900336699000033660000336600003366000033 + 6600003366000033660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF006699CC003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000FF000000 + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006666FF000000 + FF009999FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00DDDDDD00DDDDDD00CCCCCC00CCCCCC00BBBBBB00BBBBBB00BBBB + BB00EEEEEE0033669900336699006699CC00336699006699CC003366990099CC + FF0099CCFF0099CCFF0099CCFF00336699003366990099999900000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC00336699003366990000336600003366000033660000336600003366000033 + 66000033660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC00336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000FF000000FF000000 + FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF006666 + FF000000FF009999FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + FF000000FF00FFFFFF00FFFFFF000000FF00FFFFFF00DDDDDD00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DDDDDD00CCCCCC00CCCCCC00BBBBBB00BBBBBB00BBBBBB00EEEEEE00EEEE + EE003366990033669900336699006699CC00336699006699CC006699CC006699 + CC003366990099CCFF0099CCFF0099CCFF0099CCFF0033669900000000000000 + 0000000000000000000000000000000000000000000000000000336699003366 + 9900003366000033660000336600003366000033660000336600003366000033 + 66000033660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699 + CC00336699003366990000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000FF000000FF000000 + FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006666 + FF000000FF000000FF000000FF000000FF00FFFFFF00FFFFFF00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCCCCC00BBBBBB00BBBBBB00BBBBBB00EEEEEE00EEEEEE00336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC006699 + CC006699CC006699CC003366990099CCFF0099CCFF0099CCFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000003366000033 + 6600003366000033660000336600003366000033660000336600003366000033 + 660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF006699CC0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF006666FF000000FF009999FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000FF000000FF000000FF000000FF00FFFFFF00FFFFFF00DDDDDD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB00BBBBBB00EEEEEE00EEEEEE003366990033669900336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC003366990099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF000000 + 00000000000099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000 + FF000000FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000FF000000FF00FFFFFF00FFFFFF000000FF009999FF000000 + FF000000FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD00000000000000000000000000000000000000000000000000000000000000 + 0000EEEEEE00EEEEEE0033669900336699003366990033669900336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC00336699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF00000000000000000099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF00FFFFFF000000 + FF000000FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00DDDDDD000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF006666FF000000FF000000FF000000FF000000FF00FFFFFF00FFFF + FF009999FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD0000000000000000000000000000000000000000000000000000000000EEEE + EE00336699003366990033669900336699003366990033669900336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC0099CCFF00336699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF00000000000000000099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFF + FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000000FF000000FF000000FF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF009999FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00DDDDDD000000000000000000000000000000000000000000336699003366 + 990099CCFF0099CCFF0033669900336699003366990033669900336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC006699 + CC006699CC006699CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCFFFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00000000000000000099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF00FFFFFF00FFFF + FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF009999FF000000FF000000FF000000FF000000FF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00DDDDDD0000000000000000000000000000000000336699003366990099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF003366990033669900336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC006699 + CC006699CC0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00336699000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF000000 + 00000000000099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF009999FF000000FF000000FF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 000000000000000000000000000000000000000000000000000099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00336699003366 + 99003366990033669900336699006699CC00336699006699CC006699CC0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF00000000000000000099CCFF0099CCFF0099CCFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009999FF000000FF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF003366990033669900336699006699CC003366990099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF00000000000000000099CCFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF00000000000000000099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF000000000000000000000000000000000099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0000000000000000000000000000000000000000000000000099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099CCFF0099CCFF000000 + 00000000000000000000000000000000000000000000000000000000000099CC + FF0099CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003333FF003333FF000000BB00000000000000000000000000000000000000 + 0000000000000000000000000000444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000044444400444444000000 + 0000000000005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003333FF003333 + FF000000EE000000EE000000EE000000BB000000BB0000000000000000000000 + 0000000000000000000000000000000000004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + AA000000AA000000AA000000AA000000AA000000000044444400000000000000 + 8800000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000AAAAAA00AAAAAA00AAAAAA00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003333FF003333FF000000EE000000 + EE000000EE000000EE000000EE000000EE000000EE000000BB000000BB000000 + 0000000000000000000077777700444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000006666FF006666FF003333 + FF003333FF003333FF003333FF00000000000000000044444400000000000000 + DD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000DDDDDD00DDDDDD00BBBB + BB00BBBBBB00BBBBBB0044444400AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003333FF003333FF000000EE000000EE000000EE000000 + EE000000EE000000EE000000EE000000EE000000EE000000EE000000EE000000 + BB00000000000000000077777700444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000006666FF006666FF003333FF003333FF003333 + FF003333FF000000000000000000000000000000000044444400444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000AAAAAA00AAAAAA00BBBBBB00DDDDDD00DDDD + DD00DDDDDD00BBBBBB0044444400BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003333FF003333FF000000EE000000EE000000EE000000 + EE000000EE000000EE000000EE000000EE000000EE000000EE000000EE000000 + 00000000BB000000000044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000006666FF006666FF003333FF003333FF003333FF000000BB000000 + 0000000000000000000000000000000000000000000000000000777777004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA000000000000000000AAAAAA00AAAAAA00BBBB + BB00DDDDDD00DDDDDD0044444400BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF0000CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003333FF003333FF000000EE000000 + EE000000EE000000EE000000EE000000EE000000EE0000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000006666 + FF006666FF003333FF003333FF003333FF003333FF000000BB00000000000000 + 00000000000000000000000000000000000000000000000000000000AA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD0000000000AAAAAA00AAAA + AA00AAAAAA000000000044444400BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF0000CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003333FF003333 + FF000000EE000000EE000000EE00000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000AA002222 + 2200000000000000000000000000000000000000000000000000000000000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF0000CCFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003333FF000000EE0000000000444444000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000222222000000EE002222 + 2200000000000000000000000000000000000000000000000000000000000000 + EE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFF0000FFFF0000FFFF0000999900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550022222200222222000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000AA000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFF00009999000000000000000000000000000000 + 000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000CCFF00000000000000 + 00000000000033CCFF0000CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + EE00000000000000000000000000000000000000000000000000000000000000 + 00000000EE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099FFFF0000FFFF0000FFFF00009999000000000000FFFF0000FF + FF0000FFFF0000999900888888008888880000FFFF0000CCFF00000000000000 + 00000000000033CCFF0000CCFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000AA000000000000000000000000000000000000000000000000000000 + 0000000000000000AA0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000222222000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FFFF0000FFFF0000FFFF0000FFFF0000FFFF000099 + 99008888880000000000000000008888880000FFFF0000CCFF00006666000000 + 000033CCFF0033CCFF0000999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400000000003333FF0000000000000000000000000000000000000000000000 + EE000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000EE000000000000000000000000000000000000000000000000000000 + 0000000000000000EE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000222222000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099FFFF0000FFFF0000999900888888000000 + 00000000000000000000000000008888880000FFFF0000CCFF000066660000CC + FF0033CCFF0033CCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF000000000000000000000000000000BB000000EE000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000AA0000000000000000000000000000000000000000000000 + 0000000000000000EE000000AA00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000222222000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000099FFFF0000FFFF0000FFFF00009999008888 + 8800444444004444440000000000888888000099990000FFFF00006666000099 + 990033CCFF0000CCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF00000000000000BB000000EE0000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000EE0000000000000000000000000000000000000000000000 + AA000000EE00000000000000EE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000222222004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099FFFF0000FFFF00009999008888 + 880033CCFF0033CCFF0044444400888888000099990000FFFF0000CCFF000099 + 990000CCFF000099990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF000000EE00000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000AA0000000000000000000000EE000000EE000000 + 00000000000000000000000000000000AA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000005555550022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099FFFF0000FFFF000099 + 99008888880033CCFF0033CCFF0033CCFF000066660000FFFF0000CCFF000099 + 990000CCFF000099990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000EE000000EE000000EE0000000000000000000000 + 00000000000000000000000000000000EE000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000004444440022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099FFFF0000FFFF0000FF + FF00009999008888880033CCFF0033CCFF008888880000FFFF0000CCFF000066 + 660000CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000AA000000000000000000000000000000 + 0000000000000000000000000000000000000000AA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000022222200444444000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099FFFF0000FF + FF00009999008888880033CCFF00888888008888880000FFFF0000CCFF000066 + 660000CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000EE000000000000000000000000000000 + 0000000000000000000000000000000000000000AA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000555555002222220000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099FF + FF0000FFFF0000999900888888000099990000FFFF0000FFFF0000CCFF000066 + 6600009999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000AA0000000000000000000000 + 0000000000000000000000000000000000000000EE000000AA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000444444002222220000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0099FFFF000099 + 9900009999000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + EE000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000EE0000000000000000000000 + 000000000000000000000000AA000000EE00000000000000EE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000002222220044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099FFFF0000FFFF0000FFFF0000FFFF0099FFFF0099FFFF00006666000066 + 6600006666000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF000000000000000000000000000000BB000000EE000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000AA00000000000000 + 00000000EE000000EE00000000000000000000000000000000000000AA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000002222220000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099FFFF0099FFFF0099FFFF0000666600006666000066660000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF00000000000000BB000000EE0000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000EE000000EE000000 + AA000000000000000000000000000000000000000000000000000000EE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00BBBBBB00AAAAAA00AAAA + AA009999990088888800AAAAAA00BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000099FFFF00006666000066660000000000000000000066660000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF000000EE00000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000AA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00EEEEEE00BBBBBB00AAAAAA00999999009999 + 9900999999008888880088888800BBBBBB00DDDDDD00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFF0000999900006666000099990000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000EE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00AAAAAA00AAAAAA00FFFFFF00FFFFFF00EEEE + EE00EEEEEE00EEEEEE00FFFFFF009999990099999900FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF0000FFFF0000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + AA00000000000000000000000000000000000000000000000000000000000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEE + EE00BBBBBB00BBBBBB00BBBBBB00EEEEEE00FFFFFF00AAAAAA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + 00000000BB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + EE00000000000000000000000000000000000000000000000000000000000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 00000000000000000000BBBBBB00BBBBBB00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + EE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000AA0000000000000000000000000000000000000000000000AA000000 + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000888888000000 + 0000000000008888880000000000BBBBBB00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF0000000000000000000000000000000000000000000000 + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000EE000000AA00000000000000000000000000000077000000EE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00444444004444 + 44004444440000000000BBBBBB00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003333FF000000BB0000000000000000000000EE000000EE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000EE000000EE000000EE000000EE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00444444008888 + 88004444440000000000FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003333FF003333FF003333FF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008888 + 8800888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000055555500555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000555555005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099FF990099FF990066CC660066CC + 660066CC66000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000022222200222222002222 + 2200000000000000000000000000000000004444440044444400111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000000000000000000000005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500555555005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FF990099FF990099FF990099FF990066CC660066CC + 660066CC660066CC660066CC6600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000222222002222220011111100111111001111 + 1100111111000000000000000000000000000000000022222200111111001111 + 1100111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00DDDDDD000000 + 0000FFFFFF00CCCCCC00CCCCCC0000000000FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500555555005555550000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099FF990099FF990099FF990099FF990099FF9900FFFFFF0066CC660066CC + 660066CC660066CC660066CC660066CC660066CC660000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200222222002222220022222200222222001111 + 1100111111000000000000000000000000000000000000000000111111001111 + 1100111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF0000000000000000000099 + FF00FFFFFF00CCCCCC00CCCCCC0000000000BBBBBB0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000005555550055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000099FF990099FF + 990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC660066CC660066CC + 660066CC660066CC660066CC660066CC660066CC660066CC660066CC66000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000004444440044444400FFFFFF0000000000444444001111 + 1100111111000000000000000000000000000000000000000000000000002222 + 2200111111000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF000000000000000000AAAAAA00BBBBBB00DDDD + DD00FFFFFF00CCCCCC00CCCCCC00CCCCCC000000000044444400CCCCCC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500555555005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000099CC0000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000099FF990099FF990099FF990099FF + 990099FF9900FFFFFF00FFFFFF0066CC660066CC660099FF990066CC660066CC + 660066CC660066CC660066CC660066CC660066CC660066CC660066CC660066CC + 660066CC66000000000000000000000000000000000000000000000000000000 + 0000000000004444440044444400AAAAAA00AAAAAA0044444400222222001111 + 1100000000000000000011111100111111000000000000000000000000002222 + 2200222222001111110000000000000000002222220000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF000000000000000000AAAAAA00AAAAAA00DDDDDD00BBBBBB00DDDD + DD00FFFFFF0088888800CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC + CC00CCCCCC000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005555 + 5500555555005555550000000000000000000000000000000000000000000000 + 0000000000005555550077777700000000000099CC0000FFFF000099CC000099 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099FF990099FF990099FF990099FF990099FF9900FFFF + FF00FFFFFF0066CC660066CC660099FF990099FF990099FF9900006633000099 + 330066CC660066CC660066CC660066CC660066CC660066CC660066CC660066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 0000000000000000000000000000888888004444440022222200111111002222 + 2200000000002222220044444400222222000000000000000000000000000000 + 0000222222001111110000000000000000002222220022222200000000000000 + 00000000000000000000000000000000000000000000FFFFFF00DDDDDD000000 + 000000000000AAAAAA00AAAAAA00DDDDDD00DDDDDD00DDDDDD00BBBBBB00DDDD + DD00FFFFFF00CCCCCC008888880088888800CCCCCC00CCCCCC00CCCCCC00CCCC + CC00CCCCCC00CCCCCC00CCCCCC00000000000000000000000000555555005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000005555550055555500555555000000000077777700000000005555 + 5500006699000099CC0077777700000000000099CC0000FFFF000099CC000099 + CC000099CC000099CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000099FF990099FF990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC + 660066CC660099FF990099FF990099FF990099FF9900FFFFFF000066330066CC + 6600009933000099330066CC660066CC660066CC660066CC660066CC660066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00FFFFFF004444440022222200222222002222 + 2200222222004444440000000000111111001111110011111100000000000000 + 0000111111001111110000000000000000002222220022222200000000000000 + 00000000000000000000000000000000000000000000000000000099FF008888 + 8800AAAAAA00DDDDDD00DDDDDD00DDDDDD00FFFFFF00AAAAAA00BBBBBB00DDDD + DD00FFFFFF00FFFFFF00FFFFFF00CCCCCC008888880088888800CCCCCC00CCCC + CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00BBBBBB0000000000555555000000 + 0000555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000077777700000000000099 + CC00006699000099CC0077777700000000000099CC0000FFFF0000CCFF0000CC + FF000099CC000099CC000099CC000099CC000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000099FF + 990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC660066CC660099FF + 990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC66000066330066CC + 660066CC660066CC6600009933000099330066CC660066CC660066CC660066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00444444004444440000000000222222002222 + 2200444444002222220011111100111111001111110000000000000000000000 + 0000111111001111110000000000000000002222220022222200000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800DDDDDD00DDDDDD00FFFFFF00AAAAAA00AAAAAA00DDDDDD00BBBBBB00DDDD + DD00FFFFFF00FF669900CCCCCC00FFFFFF00FFFFFF00CCCCCC00888888008888 + 8800CCCCCC00CCCCCC00CCCCCC00CCCCCC00BBBBBB0077777700444444000000 + 0000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000099CC0077777700000000000099 + CC00006699000099CC00777777000000000000000000000000000099CC000099 + CC0000CCFF0000CCFF000099CC000099CC000099CC000099CC00000000000000 + 00000000000000000000000000000000000000000000000000000000000099FF + 990099FF9900FFFFFF00FFFFFF0066CC660066CC660099FF990099FF990099FF + 990099FF9900FFFFFF00FFFFFF0066CC660066CC660099FF99000066330066CC + 660066CC660066CC660066CC660066CC6600009933000099330066CC660066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00444444008888880000000000222222002222 + 2200444444002222220011111100111111002222220000000000000000000000 + 0000111111000000000000000000000000000000000022222200000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800FFFFFF00AAAAAA00AAAAAA00DDDDDD00DDDDDD00DDDDDD00BBBBBB00DDDD + DD00FFFFFF0099336600CCCCCC00CCCCCC00FF669900FFFFFF00FFFFFF00CCCC + CC008888880088888800CCCCCC00CCCCCC00BBBBBB0077777700777777000000 + 0000BBBBBB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000099CC0077777700000000000099 + CC00006699000000000000000000000000000099CC0000FFFF00000000000099 + CC000099CC000099CC0000CCFF0000CCFF000099CC000099CC000099CC000099 + CC0000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF0066CC660066CC660099FF990099FF990099FF990099FF9900FFFF + FF00FFFFFF0066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990066CC660066CC660066CC660066CC660066CC660066CC6600009933000099 + 330066CC660066CC660000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF0044444400AAAAAA0044444400888888004444 + 4400444444002222220044444400222222002222220000000000000000000000 + 0000000000001111110011111100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800AAAAAA00DDDDDD00DDDDDD00DDDDDD00FFFFFF00AAAAAA00BBBBBB00DDDD + DD00FFFFFF0099336600CCCCCC00FF6699009933660099336600FF669900FFFF + FF00FFFFFF00CCCCCC008888880088888800BBBBBB0077777700777777004444 + 44000000000044444400CCCCCC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000099CC0077777700000000000000 + 0000000000000099CC0077777700000000000099CC0000FFFF00000000000099 + CC000099CC000099CC000099CC000099CC0000CCFF0000CCFF000099CC000099 + CC000099CC000099CC00000000000000000000000000000000000000000066CC + 660066CC660099FF990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC + 660066CC660099FF990099FF990099FF990099FF990099FF990066CC660066CC + 660099FF990099FF990066CC660066CC660066CC660066CC660066CC660066CC + 6600009933000099330000000000000000000000000000000000000000000000 + 00000000000000000000AAAAAA00888888004444440044444400000000004444 + 4400222222004444440044444400222222000000000000000000000000000000 + 0000000000001111110022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800DDDDDD00DDDDDD00FFFFFF00AAAAAA00AAAAAA00DDDDDD00BBBBBB000099 + FF00FFFFFF0099336600993366009933660099336600FF669900993366009933 + 6600CCCCCC00FFFFFF00FFFFFF00CCCCCC008888880077777700AAAAAA008888 + 8800CCCCCC00CCCCCC00CCCCCC00000000000000000000000000000000000000 + 0000000000000000000000000000000000000099CC0000000000000000000099 + CC000099CC000099CC00777777000000000000FFFF0000CCFF00000000000099 + CC000099CC000099CC000099CC000099CC000099CC000099CC0000CCFF0000CC + FF000099CC000099CC000099CC000000000000000000000000000000000099FF + 990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC660066CC660099FF + 990099FF990099FF990099FF990099FF990099FF990000993300009933000099 + 330066CC660066CC660099FF990099FF990066CC660066CC660066CC660066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 00000000000000000000BBBBBB00FFFFFF004444440022222200000000004444 + 440088888800FFFFFF0044444400444444000000000022222200000000001111 + 1100111111001111110000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800FFFFFF00AAAAAA00AAAAAA00DDDDDD00DDDDDD00DDDDDD00BBBBBB00DDDD + DD00FFFFFF0099336600CCCCCC00CCCCCC009933660099336600CCCCCC009933 + 66000099FF0000CCFF0000CCFF00FFFFFF00BBBBBB00AAAAAA00AAAAAA008888 + 8800CCCCCC00CCCCCC00CCCCCC00000000000000000000000000000000000000 + 0000000000000000000000000000444444004444440077777700000000000099 + CC004444440011111100777777000000000000CCFF0000CCFF00000000000099 + CC000099CC000099CC000099CC000099CC000099CC000099CC000099CC000099 + CC0000CCFF0000CCFF000099CC000000000000000000000000000000000099FF + 990099FF9900FFFFFF00FFFFFF0066CC660066CC660099FF990099FF990099FF + 990099FF990099FF990099FF9900009933000099330099FF990066CC660066CC + 66000099330066CC660066CC660066CC660099FF990099FF990066CC660066CC + 660066CC660066CC660066CC6600000000000000000000000000000000000000 + 00000000000000000000BBBBBB00FFFFFF008888880022222200000000004444 + 4400BBBBBB00FFFFFF0000000000444444002222220000000000222222001111 + 1100000000002222220000000000111111001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800AAAAAA00DDDDDD00DDDDDD00DDDDDD00DDDDDD00AAAAAA00BBBBBB000000 + DD00FFFFFF009933660099336600FF669900CCCCCC00FF669900993366009933 + 66000099FF000099FF000099FF00CCCCCC000099FF00AAAAAA00AAAAAA008888 + 8800CCCCCC00CCCCCC00CCCCCC00000000000000000000000000000000000000 + 0000000000000000000044444400000000000099CC0077777700000000001111 + 11005555550055555500777777000000000000CCFF0000CCFF00000000000099 + CC000099CC000099CC000099CC000099CC000099CC000099CC000099CC000099 + CC000099CC000099CC0000CCFF0000000000000000000000000000663300FFFF + FF00FFFFFF0066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF9900009933000099330099FF990099FF990099FF990066CC660066CC + 660066CC6600009933000099330066CC660066CC660066CC660099FF990099FF + 990066CC660066CC660066CC6600000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF008888880022222200000000004444 + 4400FFFFFF008888880044444400222222000000000022222200222222002222 + 2200000000000000000000000000111111001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800DDDDDD00DDDDDD00DDDDDD00AAAAAA00AAAAAA00DDDDDD00DDDDDD00DDDD + DD00FFFFFF00CCCCCC00FF66990099336600CCCCCC00CCCCCC00CCCCCC009933 + 66000099FF0000CCFF00CCCCCC000099FF00BBBBBB00AAAAAA00AAAAAA008888 + 8800CCCCCC000000CC00CCCCCC00000000000000000000000000000000000000 + 0000000000000000000044444400000000000099CC0077777700000000005555 + 55007777770000669900777777000000000000CCFF0000CCFF000000000000FF + FF000099CC000099CC000099CC000099CC000099CC000099CC000099CC000099 + CC000099CC000099CC000099CC000000000000000000000000000066330066CC + 660066CC660099FF990099FF990099FF990099FF990099FF990099FF99000099 + 33000099330099FF990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC + 660066CC660066CC660066CC66000099330066CC660066CC660066CC660066CC + 660099FF990099FF990066CC6600000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00AAAAAA004444440000000000BBBB + BB00FFFFFF004444440044444400222222000000000022222200444444004444 + 4400000000000000000000000000111111001111110000000000000000000000 + 00000000000000000000000000000000000000000000000000000099FF008888 + 8800DDDDDD00AAAAAA00AAAAAA00DDDDDD00DDDDDD00DDDDDD00DDDDDD00CCCC + CC00FFFFFF00BBBBBB00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC009933 + 66000099FF000099FF000099FF000099FF0000CCFF00AAAAAA00AAAAAA008888 + 8800CCCCCC00CCCCCC00CCCCCC00000000000000000000000000000000000000 + 0000000000000000000044444400000000000000000077777700000000000099 + CC0000CCFF0000669900777777000000000000CCFF0000CCFF000000000000CC + FF000099CC000099CC000099CC000099CC000099CC000099CC000099CC000099 + CC000099CC000099CC000099CC000000000000000000000000000066330099FF + 990099FF990099FF990099FF990099FF990099FF9900009933000099330099FF + 990099FF990099FF990099FF9900FFFFFF00FFFFFF0099FF990099FF9900FFFF + FF00FFFFFF0066CC660066CC660066CC6600009933000099330066CC660066CC + 660066CC660066CC660099FF9900000000000000000000000000000000000000 + 000000000000000000000000000088888800AAAAAA0088888800AAAAAA00FFFF + FF00444444004444440022222200000000004444440022222200000000004444 + 4400222222000000000000000000111111001111110000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD008888 + 8800AAAAAA00DDDDDD00DDDDDD00DDDDDD00DDDDDD00CCCCCC00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00CCCCCC00CCCCCC00CCCCCC00CCCC + CC000099FF00CCCCCC0000CCFF00CCCCCC000099FF00AAAAAA00FFFFFF008888 + 8800AAAAAA00CCCCCC0000000000000000000000000000000000000000000000 + 0000000000000000000044444400FFFFFF0000000000777777000000000000CC + FF000099CC0000CCFF00777777000000000000CCFF0000CCFF000000000000CC + FF0000FFFF000099CC000099CC000099CC000099CC000099CC000099CC000099 + CC0000666600006666000099CC000000000000000000000000000066330099FF + 990099FF990099FF990099FF9900009933000099330099FF990099FF990099FF + 990099FF9900FFFFFF00FFFFFF0099FF990099FF990099FF990099FF990099FF + 990099FF9900FFFFFF0066CC660066CC660066CC660066CC66000099330066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 000000000000000000000000000044444400FFFFFF00AAAAAA00FFFFFF00FFFF + FF00444444004444440000000000222222002222220022222200BBBBBB004444 + 4400222222000000000000000000111111000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000DD00DDDD + DD00DDDDDD00DDDDDD00DDDDDD00CCCCCC00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00CCCCCC00CCCC + CC0000CCFF000099FF0000CCFF00CCCCCC00BBBBBB00FFFFFF00FFFFFF008888 + 8800FFFFFF00AAAAAA0000000000555555000000000000000000000000000000 + 0000000000000000000044444400FFFFFF0000000000777777000000000000CC + FF000099CC0000CCFF00777777000000000000CCFF000000000000CCFF0000CC + FF0000CCFF000099CC000099CC000099CC000099CC000099CC000099CC000099 + CC000066660000CCFF00000000000000000000000000000000000000000099FF + 990099FF9900009933000099330099FF990099FF990099FF990099FF9900FFFF + FF00FFFFFF0066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF9900FFFFFF00FFFFFF0066CC660066CC660066CC66000099 + 33000099330066CC660000000000000000000000000000000000000000000000 + 000000000000000000000000000022222200FFFFFF00FFFFFF00FFFFFF00FFFF + FF00BBBBBB004444440022222200222222002222220044444400BBBBBB00AAAA + AA00444444000000000000000000111111000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00DDDD + DD00DDDDDD00CCCCCC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBB + BB00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00AAAAAA00AAAAAA008888 + 8800FFFFFF000000000000000000555555000000000000000000000000000000 + 0000000000000000000044444400FFFFFF00FFFFFF00777777000000000000CC + FF0000CCFF000099CC0077777700000000000000000000CCFF0000CCFF0000CC + FF0000CCFF0000FFFF000099CC000099CC000099CC000099CC000099CC000099 + CC00006666000000000000000000000000000000000000000000000000000099 + 33000099330099FF990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF990099FF990099FF9900FFFFFF0066CC660066CC660066CC + 660066CC66000099330000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000022222200FFFFFF0000000000FFFF + FF00444444000000000022222200FFFFFF002222220044444400BBBBBB00FFFF + FF00444444002222220000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00CCCC + CC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BBBBBB00CCCCCC00CCCCCC00CCCCCC00CCCCCC00BBBBBB00BBBB + BB00FFFFFF000000000000000000555555000000000000000000000000000000 + 0000000000000000000044444400FFFFFF00FFFFFF00777777000000000000CC + FF0000CCFF000000000000000000000000000066990000CCFF0000CCFF0099FF + FF0099FFFF0000FFFF0000FFFF000099CC000099CC000099CC000099CC000099 + CC00000000000000000000000000000000000000000000000000FFFFFF0099FF + 990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC660066CC660066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF990099FF990099FF990099FF9900FFFFFF00FFFFFF0066CC + 660066CC660066CC660000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000222222002222220044444400FFFF + FF00FFFFFF000000000000000000FFFFFF004444440000000000BBBBBB00FFFF + FF00AAAAAA002222220000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00CCCCCC00CCCCCC00CCCCCC00CCCC + CC00FFFFFF000000000055555500555555000000000000000000000000000000 + 0000000000000000000044444400FFFFFF00FFFFFF0077777700000000000000 + 00000000000000CCFF00777777000000000000CCFF0099FFFF0099FFFF0000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000099CC000099CC000099 + CC00000000000000000000000000000000000000000000000000FFFFFF0099FF + 990099FF9900FFFFFF00FFFFFF0066CC660066CC660066CC660066CC660066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF990099FF990099FF990099FF990099FF990099FF9900FFFF + FF0066CC660066CC660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444004444 + 4400FFFFFF002222220000000000AAAAAA00FFFFFF0000000000BBBBBB00FFFF + FF00444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00CCCCCC00CCCC + CC00CCCCCC000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400FFFFFF00FFFFFF00000000000000000000CC + FF0000CCFF0000CCFF00777777000000000099FFFF0000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000099 + CC0000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF0066CC660066CC660066CC660066CC660066CC660066CC660066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF990099FF990099FF990099FF990099FF990099FF990099FF + 9900FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400BBBBBB00FFFFFF002222220000000000FFFFFF0044444400FFFFFF004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444004444440000000000000000000000 + 000000CCFF0099FFFF00777777000000000000FFFF0000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0066CC660066CC660066CC660066CC660066CC660066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF990099FF990099FF990099FF990099FF9900FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB00FFFFFF00444444000000000044444400444444004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 000099FFFF0000CCFF00777777000000000000FFFF0000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF0066CC660066CC660066CC660066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF990099FF990099FF9900FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200222222000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 00000000000000000000777777000000000000FFFF0000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF000066990000669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0066CC660066CC660066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 990099FF990099FF9900FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200FFFFFF004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 00000000000000000000555555000000000000FFFF0000FFFF0000FFFF0000FF + FF0000FFFF0000FFFF00006699000066990000FFFF000099CC000099CC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF0066CC + 660066CC660066CC660066CC660099FF990099FF990099FF990099FF990099FF + 9900FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200FFFFFF004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 000000000000000000005555550000000000000000000000000000FFFF0000FF + FF00000000000000000000000000000000000000000000FFFF0000FFFF000099 + CC000099CC000000000077777700000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0066CC660066CC660066CC660099FF990099FF990099FF9900FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF004444440044444400BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF0066CC660099FF9900FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB0044444400444444000000000044444400444444000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BBBBBB004444440044444400000000000000000000000000222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BBBBBB00FFFFFF00888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00EEEEEE00BBBBBB00FFFFFF0088888800BBBBBB00BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00EEEE + EE00EEEEEE00BBBBBB00FFFFFF0088888800BBBBBB0055555500888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000999999009999990099999900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF005555 + 550000000000BBBBBB00FFFFFF0088888800BBBBBB00FFFFFF00555555000000 + 0000888888009999990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000999999009999 + 9900999999008888880077777700555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF000000 + 000055555500BBBBBB00FFFFFF0088888800BBBBBB00BBBBBB00BBBBBB002222 + 22009999990099999900AAAAAA00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009999990099999900999999008888 + 8800777777005555550055555500666666000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00EEEE + EE00EEEEEE00BBBBBB00FFFFFF0088888800BBBBBB00FFFFFF00000000004444 + 440099999900AAAAAA00AAAAAA00999999009999990088888800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000099999900999999009999990088888800777777006666 + 6600555555006666660066666600666666000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF002222 + 220055555500BBBBBB00FFFFFF0088888800FFFFFF0000000000444444009999 + 9900AAAAAA00DDDDDD00DDDDDD0099999900999999008888880099999900AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000088888800BBBBBB00BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000099999900BBBBBB00BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000888888008888880088888800888888007777770055555500666666005555 + 5500666666006666660066666600666666000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF0022222200BBBBBB00FFFFFF008888880022222200AAAAAA0000000000AAAA + AA00777777007777770077777700DDDDDD00DDDDDD0088888800AAAAAA00AAAA + AA00BBBBBB00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888007777 + 7700BBBBBB00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000999999007777 + 7700BBBBBB00BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000777777007777 + 7700777777007777770077777700555555005555550055555500555555006666 + 6600555555006666660066666600555555006666660000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF0022222200BBBBBB00FFFFFF008888880022222200AAAAAA00000000008888 + 88002222220022222200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00AAAAAA000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000888888007777 + 77007777770088888800BBBBBB00000000000000000033996600006633000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000999999007777 + 77007777770099999900BBBBBB00000000000000000022222200222222000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007777770077777700777777007777 + 7700777777005555550055555500555555005555550055555500666666005555 + 5500666666005555550066666600666666006666660000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF0022222200BBBBBB00FFFFFF0088888800BBBBBB0000000000000000008888 + 880022222200000000002222220022222200FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BBBBBB00AAAAAA00AAAAAA008888880088888800000000000000 + 0000000000000000000000000000000000000000000000000000888888007777 + 7700777777000000000000000000339966003399660033996600339966003399 + 6600006633000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000999999007777 + 7700777777000000000000000000222222002222220022222200777777007777 + 7700555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000077777700777777007777770077777700777777005555 + 5500555555005555550055555500555555005555550066666600555555006666 + 6600555555006666660066666600666666006666660000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF0022222200BBBBBB00FFFFFF0088888800BBBBBB0055555500000000005555 + 5500222222000000000000000000000000002222220022222200FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00888888008888880088888800888888005555 + 5500000000000000000000000000000000000000000000000000000000000000 + 0000000000003399660033996600339966003399660033996600339966003399 + 6600339966003399660000663300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002222220022222200222222007777770077777700777777007777 + 7700777777007777770055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000777777007777770077777700777777007777770055555500555555005555 + 5500555555005555550055555500555555005555550055555500666666005555 + 5500666666006666660066666600666666006666660000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF0022222200BBBBBB00FFFFFF0088888800BBBBBB00FFFFFF00555555002222 + 2200AAAAAA005555550055555500000000000000000000000000222222002222 + 2200FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD00AAAAAA00888888008888 + 8800555555000000000000000000000000000000000000000000000000003399 + 660033CC66003399660033996600339966003399660033996600339966003399 + 6600339966003399660033996600339966000066330000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400444444002222220077777700777777007777770077777700777777007777 + 7700777777007777770077777700777777005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007777 + 7700777777007777770077777700555555005555550055555500555555005555 + 5500555555005555550055555500555555006666660055555500555555006666 + 6600555555006666660066666600666666006666660066666600000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF0022222200BBBBBB00FFFFFF00AAAAAA00AAAAAA00BBBBBB00BBBBBB002222 + 2200AAAAAA00FFFFFF00FFFFFF00555555005555550000000000000000000000 + 00002222220022222200FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAAAAA008888 + 880000000000AAAAAA000000000000000000000000000000000033CC660033CC + 66003399660033CC660033996600339966003399660033996600339966003399 + 6600339966003399660033996600339966003399660033996600006633000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444006666 + 6600777777009999990077777700777777007777770077777700777777007777 + 7700777777007777770077777700777777007777770077777700555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001111 + 1100111111006666660055555500555555005555550055555500555555005555 + 5500555555005555550055555500555555005555550055555500666666005555 + 5500666666005555550066666600666666006666660077777700000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF0022222200FFFFFF00FFFFFF0088888800FFFFFF00FFFFFF00000000002222 + 2200AAAAAA00CCCCCC00DDDDDD00DDDDDD00FFFFFF0055555500555555000000 + 000000000000000000002222220022222200FFFFFF00AAAAAA00FFFFFF008888 + 880000000000FFFFFF00000000000000000000000000000000000000000033CC + 660033CC66003399660033CC6600339966003399660033996600339966003399 + 6600339966003399660033996600339966003399660000663300444444003399 + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400555555007777770099999900777777007777770077777700777777007777 + 7700777777007777770077777700777777007777770055555500000000007777 + 7700555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000111111001111110066666600666666005555550055555500555555005555 + 5500555555005555550055555500555555005555550066666600555555006666 + 6600555555006666660066666600777777007777770044444400000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF00FFFFFF004444440088888800000000004444440088888800222222005555 + 5500AAAAAA00BBBBBB00CCCCCC00FFFFFF00FFFFFF00FFFFFF00DDDDDD005555 + 55005555550000000000000000000000000022222200AAAAAA00FFFFFF008888 + 880000000000FFFFFF0000000000000000000000000000000000000000000000 + 00003399660033CC660033CC660033CC660033CC660033996600339966003399 + 66003399660033996600339966003399660000663300FFFFFF00777777004444 + 4400339966000066330000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440066666600999999009999990077777700777777007777 + 77007777770077777700777777007777770055555500FFFFFF00444444000000 + 0000777777007777770055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000001111110011111100111111006666660055555500555555005555 + 5500555555005555550055555500555555005555550055555500666666005555 + 5500666666007777770077777700444444004444440044444400444444000000 + 0000000000000000000000000000000000000000000000000000FFFFFF004444 + 440044444400BBBBBB00FFFFFF00555555004444440022222200222222004444 + 440088888800BBBBBB00FFFFFF00FFFFFF00FFFFFF00DDDDDD00BBBBBB00BBBB + BB00BBBBBB0022222200222222000000000022222200AAAAAA00FFFFFF008888 + 8800AAAAAA00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000033CC660033CC66007777770033CC6600009966003399 + 6600339966003399660033996600339966000066330088888800FFFFFF004444 + 4400339966003399660033996600006633000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000044444400666666000000000099999900888888007777 + 7700777777007777770077777700777777005555550099999900FFFFFF000000 + 0000777777007777770077777700777777005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000011111100111111001111110066666600666666005555 + 5500555555005555550055555500555555005555550055555500555555007777 + 7700777777004444440044444400444444004444440044444400444444000000 + 000000000000000000000000000000000000000000000000000044444400BBBB + BB00BBBBBB00BBBBBB00FFFFFF00555555007777770088888800888888004444 + 44002222220044444400FFFFFF00FFFFFF00DDDDDD00BBBBBB00AAAAAA008888 + 8800AAAAAA00BBBBBB00BBBBBB002222220022222200FFFFFF00888888008888 + 8800AAAAAA000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000033CC6600FFFFFF00555555007777770033CC + 6600339966003399660033996600339966003399660000663300444444003399 + 6600339966003399660033996600339966003399660000663300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444004444440000000000000000009999 + 9900777777007777770077777700777777007777770055555500444444007777 + 7700777777007777770077777700777777007777770077777700555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000111111001111110011111100111111006666 + 6600555555005555550055555500555555005555550077777700777777004444 + 4400444444004444440044444400444444004444440000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00BBBB + BB00BBBBBB00BBBBBB00FFFFFF00555555008888880088888800AAAAAA00BBBB + BB00AAAAAA002222220088888800888888008888880088888800888888008888 + 8800888888005555550055555500555555005555550055555500888888008888 + 8800AAAAAA000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000088888800FFFFFF00BBBBBB005555 + 55003399660033CC660033CC6600339966003399660033996600339966003399 + 6600339966003399660033996600339966003399660033996600339966003399 + 6600006633000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440044444400444444000000 + 0000777777009999990099999900777777007777770077777700777777007777 + 7700777777007777770077777700777777007777770077777700777777007777 + 7700555555000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000001111110011111100111111001111 + 1100666666006666660055555500777777007777770044444400444444004444 + 4400444444004444440044444400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00BBBB + BB00EEEEEE00FFFFFF00FFFFFF005555550077777700AAAAAA00BBBBBB00AAAA + AA008888880022222200FFFFFF00FFFFFF00FFFFFF00DDDDDD00DDDDDD00DDDD + DD00DDDDDD00DDDDDD00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAAAA00AAAA + AA00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000033CC + 660033CC6600339966003399660033CC660033CC660033996600339966003399 + 6600339966003399660033996600339966003399660033996600339966003399 + 6600339966003399660000663300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400444444007777770077777700999999008888880077777700777777007777 + 7700777777007777770077777700777777007777770077777700777777007777 + 7700777777007777770055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000011111100111111001111 + 1100111111007777770077777700444444004444440044444400444444004444 + 4400444444000000000055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BBBBBB00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00AAAAAA00BBBBBB00AAAAAA008888 + 88007777770022222200DDDDDD00DDDDDD00DDDDDD00DDDDDD00DDDDDD00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000033CC660033CC6600339966003399660033CC660033CC660033CC + 6600339966003399660033996600339966003399660033996600339966003399 + 6600339966000066330033996600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440066666600777777008888880099999900999999008888 + 8800777777007777770077777700777777007777770077777700777777007777 + 7700777777004444440077777700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000111111001111 + 1100111111000000000044444400444444004444440044444400444444000000 + 0000222222001111110055555500000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + CC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB00888888007777 + 7700555555002222220022222200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000033CC660033CC6600339966003399660033CC + 660033CC660033CC660033CC6600339966003399660033996600339966003399 + 6600339966003399660000663300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000444444005555550077777700888888009999 + 9900999999009999990088888800888888007777770077777700777777007777 + 7700777777007777770055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001111 + 1100111111000000000044444400444444004444440000000000000000000000 + 0000000000002222220011111100555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCCCC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBB + BB00888888008888880055555500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000033CC660033CC + 660033CC660033CC660033CC660033CC660033CC660033CC660033CC660033CC + 6600339966003399660000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000444444005555 + 5500666666009999990099999900999999009999990099999900999999008888 + 8800777777007777770000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000111111000000000044444400000000000000000000000000000000000000 + 0000000000002222220011111100555555000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000CCCCCC00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BBBBBB0088888800888888005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000033CC660033CC660033CC660033CC660033CC660033CC660033CC + 6600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004444440055555500666666007777770088888800888888008888 + 8800000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200111111005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCCCCC00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBBBB0088888800888888000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000022222200111111005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CCCCCC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BBBB + BB00888888000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000222222001111110055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCCCCC00FFFFFF00FFFFFF00FFFF + FF00FFFFFF008888880088888800000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000222222001111110055555500000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CCCC + CC00FFFFFF00FFFFFF00BBBBBB00888888000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002222220011111100555555000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000DDDDDD00FFFFFF00BBBBBB005555550000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002222220000000000111111000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00DDDDDD008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000011111100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF008888880000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00009966CC00CC99FF00CC99FF00FFCCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00AAAAAA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CC99 + FF009966CC00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99 + FF00CC99FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400444444000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFCCFF00CC99FF00CC99 + FF009966CC00CC99FF00CC99FF00CC99FF00CC99FF00FFCCFF00CC99FF00FFCC + FF00CC99FF00CC99FF00FFCCFF00CC99FF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440000000000000000004444 + 4400000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00AAAAAA000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC00336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CC99FF00FFCCFF00EEEEEE00FFCCFF00FFCCFF00CC99 + FF009966CC00CC99FF00CC66FF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99 + FF00FFCCFF00FFCCFF00CC99FF00CC99FF00FFCCFF00CC99FF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000044444400000000000000000044444400444444000000000066CC + FF0066CCFF000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00AAAAAA00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC006699CC006699CC00336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CC99FF00CC99FF00FFCCFF00FFCCFF00FFFFFF00FFCCFF00CC99FF00CC99 + FF009966CC00CC66FF00CC99FF00CC66FF00CC99FF00FF99FF00FF99FF00CC99 + FF00CC99FF00CC99FF00FF99FF00FFCCFF00CC99FF00CC99FF00FFCCFF00CC99 + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 4400000000004444440044444400000000000000000066CCFF0066CCFF003399 + CC003399CC003399CC0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00AAAAAA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFCC + FF00CC99FF00CC99FF00FFCCFF00FFCCFF00EEEEEE00FFCCFF00FFCCFF00CC99 + FF00FFFFFF009966CC00CC66FF00CC99FF00CC99FF00CC99FF00FFCCFF00FFCC + FF00CC99FF00CC99FF00FFCCFF00CC99FF00CC99FF00CC99FF00FFCCFF00CC99 + FF00FFCCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004444 + 440000000000000000000000000066CCFF0066CCFF003399CC003399CC003399 + CC00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00AAAAAA000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFCCFF00CC99 + FF00FFFFFF00CC99FF00FFCCFF00FFCCFF00FFFFFF00FFCCFF00CC99FF00CC99 + FF00FFFFFF009966CC009966CC00CC66FF00CC99FF00CC99FF00CC99FF00CC99 + FF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00CC99 + FF00CC99FF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004444440000000000000000000000 + 00000000000066CCFF0066CCFF003399CC003399CC003399CC00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFCCFF00FFCC + FF00CC99FF00FFCCFF00FFCCFF00FFFFFF00EEEEEE00FFCCFF00FFCCFF00CC99 + FF00FFFFFF00FFCCFF009966CC00CC66FF00CC66FF00CC99FF00CC99FF00FFCC + FF00FFCCFF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00CC99FF00FFCC + FF00FFCCFF00CC99FF0000000000000000000000000000000000000000000000 + 0000000000004444440000000000000000004444440044444400000000004444 + 440066CCFF003399CC003399CC003399CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900000000000000 + 0000000000000000000000000000000000000000000000000000FFCCFF00CC99 + FF00FFCCFF00CC99FF00FFFFFF00FFCCFF00FFFFFF00FFCCFF00CC99FF00CC99 + FF00FFFFFF00FFCCFF00FFCCFF00FFCCFF009999FF00CC66FF00FF99FF00CC99 + FF00FFCCFF00CC99FF00CC99FF00FFCCFF00FF99FF00CC99FF00CC99FF00CC99 + FF00CC99FF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000004444440000000000000000000000000077777700FFFFFF007777 + 7700000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900000000000000000000000000000000000000000000000000FFFFFF00FFCC + FF00CC99FF00FFCCFF00CC99FF00FFCCFF00EEEEEE00FFCCFF00FFCCFF00CC99 + FF00CC99FF00FFFFFF00FFCCFF00FFCCFF009999FF00CC99FF00CC66FF00CC99 + FF00CC99FF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99 + FF00FFCCFF00FFFFFF0000000000000000000000000000000000444444004444 + 440000000000000000000000000066CCFF0066CCFF000000000088888800FFFF + FF0066CCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00CC99 + FF00FFCCFF00CC99FF00FFCCFF00FFCCFF00FFFFFF00FFCCFF00CC99FF00CC99 + FF00CC99FF00FFFFFF00FFCCFF00FFCCFF009999FF00CC99FF00FF99FF00CC99 + FF00FFCCFF00CC99FF00FFCCFF00CC99FF00CC99FF00CC99FF00CC99FF00FFCC + FF00CC99FF00FFCCFF0000000000000000000000000000000000444444000000 + 00000000000066CCFF0066CCFF003399CC003399CC003399CC00000000000000 + 000066CCFF000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00FFFF + FF00CC99FF00FFCCFF00CC99FF00FFFFFF00EEEEEE00FFCCFF00FFCCFF00CC99 + FF00CC99FF00CC99FF00FFFFFF00FFCCFF009999FF00FF66FF00CC99FF00CC66 + FF00FFCCFF00CC99FF00CC99FF00FFCCFF00FFCCFF00CC99FF00FFCCFF00CC99 + FF00FFCCFF00FFCCFF00000000000000000000000000000000000000000066CC + FF0066CCFF003399CC003399CC003399CC000000000000000000000000000000 + 00000000000066CCFF0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC006699CC00336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00CC99 + FF00FFCCFF00CC99FF00FFCCFF00FFCCFF00FFFFFF00FFCCFF00CC99FF00FFCC + FF00CC99FF00CC99FF00CC99FF00FFFFFF00FFCCFF009999FF00CC66FF00CC99 + FF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00FF99FF00CC99FF00FFCC + FF00FFCCFF00FFCCFF00000000000000000000000000000000000000000066CC + FF003399CC003399CC0000000000000000000000000000000000000000000000 + 0000000000000000000066CCFF00006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC006699CC006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00FFCC + FF00CC99FF00CC99FF00CC99FF00FFCCFF00EEEEEE00FFCCFF00FFCCFF00CC99 + FF00FFCCFF00CC99FF00CC99FF00CC99FF00FFFFFF00FFFFFF009966CC00CC66 + FF00CC99FF00CC99FF00FF99FF00FFCCFF00CC99FF00FFCCFF00FFCCFF00CC99 + FF00FFCCFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066CCFF000066990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE00EEEEEE00EEEEEE0088888800AAAAAA00BBBBBB00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC006699CC006699 + CC00336699003366990099CCFF0099CCFF0099CCFF006699CC00336699003366 + 9900336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000CC99FF00FFCC + FF00FFCCFF00CC99FF00FFFFFF00FFCCFF00FFFFFF00FFCCFF00CC99FF00FFCC + FF00CC99FF00FFCCFF00CC99FF00CC99FF00CC99FF00CC99FF00FFFFFF00FFFF + FF00CC99FF00CC99FF00CC99FF00CC99FF00FFCCFF00CC99FF00CC99FF00FFCC + FF00CC99FF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000066CCFF0000669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEE + EE00EEEEEE008888880088888800FFFFFF00FFFFFF00DDDDDD00BBBBBB00BBBB + BB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC006699CC006699CC00336699003366 + 990099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699 + CC00336699003366990033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00FFCC + FF00CC99FF00CC99FF00CC99FF00FFCCFF00EEEEEE00FFCCFF00FFCCFF00FFFF + FF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEE + EE00FFFFFF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99FF00FFCCFF00CC99 + FF00FFCCFF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066CCFF00006699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE00EEEEEE008888 + 880088888800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDD + DD00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC006699CC006699CC00336699003366990099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF006699CC0033669900336699003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFFFFF00CC99 + FF00FFCCFF00CC99FF00CC99FF00EEEEEE00FFFFFF00FFFFFF00EEEEEE00FFCC + FF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00DDDD + DD00FFCCFF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFCCFF00CC99FF00FFCC + FF00CC99FF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000066CCFF000066 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE00EEEEEE00EEEEEE008888880088888800FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00DDDDDD00BBBBBB00BBBBBB00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC006699CC006699CC0033669900336699000033660099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF006699CC003366990033669900336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00FFCC + FF00CC99FF00FFFFFF00FFFFFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00FFFF + FF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEE + EE00FFFFFF00FFCCFF00DDDDDD00DDDDDD00FFCCFF00EEEEEE00FFFFFF00CC99 + FF00FFCCFF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000066CC + FF00006699000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EEEEEE00EEEEEE008888880088888800FFFFFF00FFFFFF008888 + 880088888800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00DDDDDD00BBBBBB00BBBBBB00BBBBBB000000 + 00000000000000000000000000000000000000000000000000006699CC006699 + CC00336699003366990099CCFF0099CCFF0099CCFF00003366000033660099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699CC00336699003366 + 9900336699003366990000000000000000000000000000000000FFCCFF00CC99 + FF00FFFFFF00FFCCFF00DDDDDD00EEEEEE00FFFFFF00EEEEEE00FFFFFF00FFCC + FF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFCC + FF00FFCCFF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFCCFF00FFCCFF00FFFF + FF00CC99FF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066CCFF000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008888880088888800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF008888880088888800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDDDDD00BBBBBB000000 + 0000000000000000000000000000000000000000000000000000336699003366 + 990099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF000033 + 66000033660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF006699 + CC00336699003366990000000000000000000000000000000000FFCCFF00FFFF + FF00FFCCFF00FFFFFF00FFFFFF00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFFF + FF00EEEEEE00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEE + EE00FFFFFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00EEEEEE00FFFFFF00FFCC + FF00FFFFFF00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066CCFF0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF008888880088888800FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000CCFFFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF00003366000033660099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF006699CC0000000000000000000000000000000000EEEEEE00FFCC + FF00FFFFFF00DDDDDD00FFCCFF00EEEEEE00FFFFFF00FFFFFF00DDDDDD00FFCC + FF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFCC + FF00DDDDDD00FFCCFF00FFFFFF00EEEEEE00FFFFFF00FFCCFF00FFCCFF00EEEE + EE00FFCCFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000066CCFF00006699000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008888880088888800FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF00003366000033660099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0000000000000000000000000000000000FFFFFF00FFCC + FF00FFFFFF00FFCCFF00FFFFFF00FFCCFF00FFCCFF00DDDDDD00FFCCFF00FFFF + FF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEE + EE00FFFFFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00FFFFFF00FFCCFF00FFFF + FF00FFCCFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000066CCFF000066990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008888 + 880088888800FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00003366000033660099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00000000000000000000000000000000000000000000000000FFCCFF00FFFF + FF00FFCCFF00FFFFFF00DDDDDD00FFFFFF00FFCCFF00DDDDDD00FFCCFF00DDDD + DD00FFCCFF00DDDDDD006699CC006699CC006699CC006699CC00FFCCFF00DDDD + DD00FFCCFF00FFCCFF00DDDDDD00FFCCFF00FFFFFF00FFCCFF00FFFFFF00FFCC + FF00EEEEEE00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000066CCFF0000669900000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCFFFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF000033 + 66000033660099CCFF0099CCFF0099CCFF0099CCFF0099CCFF00000000000000 + 0000000000000000000000000000000000000000000000000000FFCCFF00EEEE + EE00DDDDDD00FFFFFF00FFCCFF00FFCCFF00EEEEEE00FFFFFF00FFCCFF00DDDD + DD00FFCCFF006699CC00336699000033660000336600003366006699CC00FFCC + FF00DDDDDD00FFCCFF00FFFFFF00FFFFFF00FFCCFF00FFCCFF00EEEEEE00FFCC + FF00FFFFFF00DDDDDD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000066CCFF00006699000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CCFFFF0099CC + FF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF00003366000033660099CCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DDDDDD00FFFF + FF00FFCCFF00FFCCFF00FFFFFF00DDDDDD00FFCCFF00FFCCFF00FFCCFF00FFFF + FF00FFFFFF006699CC00336699003366990033669900336699006699CC00FFFF + FF00FFFFFF00FFCCFF00DDDDDD00FFCCFF00FFCCFF00DDDDDD00FFCCFF00FFCC + FF00EEEEEE00FFCCFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000066CCFF000066 + 9900000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF0099CCFF0099CCFF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFCC + FF00FFFFFF00DDDDDD00FFCCFF00FFFFFF00EEEEEE00EEEEEE00FFFFFF00FFCC + FF00FFCCFF00FFCCFF006699CC006699CC006699CC006699CC00FFCCFF00FFCC + FF00FFCCFF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFCCFF00DDDDDD00FFFF + FF00FFCCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000066CC + FF00006699000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CCFFFF0099CCFF0099CCFF0099CCFF0099CCFF0099CC + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFCCFF00FFFFFF00FFFFFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00FFFF + FF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00FFFFFF00EEEEEE00FFFFFF00EEEE + EE00FFFFFF00FFCCFF00FFCCFF00DDDDDD00FFCCFF00FFFFFF00FFFFFF00FFCC + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000066CCFF000066990000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CCFFFF0099CCFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFCCFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCC + FF00DDDDDD00FFCCFF00FFCCFF00DDDDDD00FFCCFF00FFCCFF00DDDDDD00FFCC + FF00FFCCFF00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFCCFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000066CCFF0000669900000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFCCFF00DDDDDD00FFCCFF00EEEE + EE00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEEEE00FFFFFF00EEEE + EE00FFFFFF00FFCCFF00DDDDDD00FFCCFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DDDD + DD00FFCCFF00DDDDDD00FFCCFF00DDDDDD00FFCCFF00FFCCFF00DDDDDD00FFCC + FF00FFCCFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000400100000100010000000000001400000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFFFFF1FFFF0000000000000000 + FFFFFFFFF800FFFF0000000000000000FFE47FFFE0007FFF0000000000000000 + FF803FFFC0001FFF0000000000000000FE003FFFC00007FF0000000000000000 + F8001FFF800001FF0000000000000000C00007FF800000470000000000000000 + 800001FF80000003000000000000000080000047800000030000000000000000 + 8000000380000001000000000000000080000003800000000000000000000000 + 8000000180000000000000000000000080000000C00000000000000000000000 + 80000000C0000000000000000000000080000000E00000000000000000000000 + 80000000C0000000000000000000000080000000800000000000000000000000 + 8000000080000000000000000000000080000001800000000000000000000000 + 80000000F0000000000000000000000080000000F00000000000000000000000 + 80000000F8000000000000000000000080000000F80000000000000000000000 + C0000003FC0000000000000000000000F0000007FF0000000000000000000000 + FC000007FFC000000000000000000000FF00000FFFF000010000000000000000 + FFC0001FFFFC00070000000000000000FFF0007FFFFF001F0000000000000000 + FFFC01FFFFFFC07F0000000000000000FFFF8FFFFFFFF1FF0000000000000000 + FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFE7FFFFFFFE3FFFFFFFFFFF + FFFFFFFFFF81FFFFFFF80FFFFFF8FFFFC3FFFFFFFE007FFFFFE003FFFFF07FFF + 80FFFFFFF8001FFFFF8000FFFFC07FFF007FFFFFE00007FFFE00003FFF001FFF + 001FFFFF800001FFF800001FE40007FF0007FFFF8000007FF000001FC000019F + 8001FFFF8000001FF000001FC000000FC0007FFF80000007F000001F8000000F + E0601FFF80000001F000001F80000007F03807FF80000001F000001F80000003 + F83E01FF80000001F000001FE0000003FC1F807F80000001F000001FF8000003 + FE0FE01F80000001F000001FFE000003FF07F80780000001F000001FFF800003 + FF83FE0180000001E000000FFFE00063FFC1FF8080000001E000000FFFF801E3 + FFE0FFE000000001E000000FFFFE07E3FFF07FF900000001E000000FFFFF87E3 + FFF83FFF00000001E000000FFFFFC7C3FFFC1FFF80000001E000000FFFFFC703 + FFFE0FFFE0000000E0000007FFFFC403FFFF07FFF8000000E0000007FFFFC031 + FFFF83FFFE000000C0000007FFFFC0F1FFFFC1FFFF800001C0000007FFFFC3F1 + FFFFE0FFFFE00007C000000FFFFFC7F8FFFFF07FFFF8001FE000003FFFFFC7E0 + FFFFF83FFFFE007FF00000FFFFFFE381FFFFFC3FFFFF81FFFC0003FFFFFFE207 + FFFFFE7FFFFFE7FFFF000FFFFFFFE01FFFFFFFFFFFFFFFFFFFC03FFFFFFFF07F + FFFFFFFFFFFFFFFFFFF0FFFFFFFFF1FFFFF9FFFFFFF7FFFFFFF1FFFFFFFFFFFF + FFE07FFFFFC3FFFFFFF07FFFFF1FFFFFFF801FFFFF01FFFFFFE007FFFE03FFFF + FE0007FFFC00FFFFFF0000FFF800FFFFF80001FFF0007FFFFC00003FE0007FFF + E000007FC0003FFFF000000FC0007FFF8000001F00001FFFE0000007C000FFFF + 0000000700000FFFE000000780003FFF00000001800007FFC00000030C001FFF + 00000000C00003FFC000000338000FFF00000000E00001FFC0000003F0000FFF + 00000000F00000FFC0000003F00004FF00000000F800007FC0000003E000007F + 00000000FC00003FC0000003E000007F00000000FE00001FC0000003E000007F + 00000000FF00001FC0000003E000007F00000000FF80001FC0000003E000007F + 00000000FFC0001FC0000003E000007F00000000FFE0101FC0000003E000007F + 00000000FFF0003FC0000003F000007F00000000FFF800FFC0000003F000007F + 00000000FFFC02FFC0000003F800003F00000000FFFF8F7FC0000003F800003F + 80000000FFFFFF7FC0000003FC00000FE0000000FFFFFFBFE0000007FE001807 + F8000001FFFFFFDFE0000007FF83FC01FE000007FFFFFFDFF000000FFFFFFE00 + FF80001FFFFFFFEFFC00003FFFFFFF00FFE0007FFFFFFFF7FF0000FFFFFFFF80 + FFF801FFFFFFFFFBFFE007FFFFFFFFC1FFFE07FFFFFFFFFCFFFFFFFFFFFFFFE3 + FFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFF9C3FFFFFFFDFFFFFFFFFFFFFFFFFFFF + E0C0FFFFFFF1FFFFFFFFFFFFFFF9FFFFC0803FFFFFC4FFFFFFFF1FFFFFE07FFF + C0000FFFFF353FFFFFFC07FFFF801FFF800003FFF4F8CFFFFFF001FFFE0007FF + 800000FFF1E0F3FFFFC0007FF80001FF80000027F5857CBFFF00001FE000007F + E000C007FA1D7F3FFC0000078000001FE000F003F87C3FBFF000000100000007 + E000FC01FD70BF3FC000000080000001E0002700FD435CBF0000000000000000 + E00007C0FE0F13BF0000000080000001F00003F0FE3E0F3F0000000000000000 + F00001FFFF582CBF8000000080000001F00300FFFF4153BFC000000000000000 + F003C0FFFF8747BFE000000080000001F007F0FFFFAF03BFF000000000000000 + F207FFFFFFD60BBFF000000080000001F31FFFFFFFD055BFF800000100000000 + F3FFFFFFFFE951BFFC00000780000001F3FFFFFFFFC360BFFF00001F00000000 + F3FFFFFFFFB506BFFFC0007F80000001F3FFFFFFFFB4173FFFF001FFE0000000 + F1FFFFFFFFDA743FFFFC07FFF8000001E0FFFFFFFFDA70BFFFFF1FFFFE000007 + E07FFFFFFFED43BFFFFFFFFFFF80001FC07FFFFFFFED0D3FFFFFFFFFFFE0007F + C07FFFFFFFF638BFFFFFFFFFFFF801FF807FFFFFFFF7667FFFFFFFFFFFFE07FF + 80FFFFFFFFFB1FFFFFFFFFFFFFFF9FFF81FFFFFFFFFB7FFFFFFFFFFFFFFFFFFF + C7FFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFCFFFF + FFFFCFFFFFFF9FFFFFF03FFFFFF03FFFFFFF07FFFFFE0FFFFFC00FFFFFC00FFF + FFFC07FFFFF80FFFFF0003FFFF0003FFFFF003FFFFE007FFFC0000FFFC0000FF + FFC003FFFF8007FFF000003FF000003FFF0001FFFE0003FFE000001FC000000F + FC0001FFF80003FFE000001F80000003F00000FFE00001FFE000001F80000001 + E00000FFC00001FFE000001F80000001E000007FC00000FFE000001F80000001 + F000007FE00000FFE000001F80000001F000003FE000007FE000001F80000001 + F800003FF000007FE000001F80000001F800001FF000003FE000001F80000001 + FC00001FF800003FE000001F80000001FC00000FF800001FE000001F80000001 + FE00000FFC00001FE000001F80000001FE000007FC00000FE000000780000001 + FF000007FE00000FE0000001C0000001FF000003FE000007E0000000F0000003 + FF800003FF000007C000000FFC000003FF800001FF00000380000007FF000007 + FFC00001FF80000300000003FFC00007FFC00003FF80000780000001FFF0000F + FFE0000FFFC0001F00000001FFFC000FFFE0003FFFC0007F80000007FFFF019F + FFF000FFFFE001FFE003001FFFFFFFFFFFF003FFFFE007FFF807807FFFFFFFFF + FFF80FFFFFF01FFFFE0FC1FFFFFFFFFFFFF83FFFFFF07FFFFF9FE7FFFFFFFFFF + FFFCFFFFFFF9FFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFF87FFFFFFFFFFFFFFFFFF + FFC078FFFFE003FFFFFFF0FFFFFFFFFFFF00107FFF8003FFFFFF807FFFFFFFFF + FC00007FFE0003FFFFFC007FFFFF3FFFF800007FF80103FFFF80007FFFFC3FFF + F800007FE00787FFFE00007FFFFC3FFFFC00007FC00F8FFFFC00007FFFFC3FFF + FF0060FFE007C7FFF800047FFFFC3FFFFFC0E3FFFF07C7FFF8000C7FFCF018FF + FFC0E3FFFF07E3FFF8001C7FF04010FFFFC0E3FFFF87E3FFF8001C7FF00010FF + FFE0E3FFFFE3F1FFF8001C7FF80600FFFFE183FFFFE3F1FFF8001C7FFC1E01FF + FFF003FFFFF1E0FFF8001C7FFC0201FFFFF003FFFFF180FFF8001C7FFE0001FF + FFF063FFFFF8047FF80018FFFF0001FFFFF1E3FFFFF81E7FF80018FFFF0003FF + FFF1E3FFFFFC7E3FF80018FFFF8003FFFFF1E3FFFFFC7E3FF80011FFFFC003FF + FFF1E3FFFFFE3C1FF80011FFFFC003FFFFF183FFFFFE301FF80011FFFFE003FF + FFF003FFFFFF008FF80013FFFFF007FFFFF003FFFFFF03CFF80013FFFFF0C7FF + FFF063FFFFFF8FC7F8001FFFFFF807FFFFF1E3FFFFFF8FC7F8001FFFFFFC0FFF + FFF1E3FFFFFFC7C7F8001FFFFFFC3FFFFFF1E3FFFFFFC7C7F8001FFFFFFEFFFF + FFF1C7FFFFFFE387F8001FFFFFFFFFFFFFF187FFFFFFE00FFC003FFFFFFFFFFF + FFF00FFFFFFFF01FFE007FFFFFFFFFFFFFF81FFFFFFFFC3FFF81FFFFFFFFFFFF + FFFC7FFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFF3FFFFFC007FF + FFFFFFFFFC3FFFFFFFFF07FFFF0000FFFFE47FFFFE0FFFFFFFFC01FFF800007F + FF803FFFFF83FFFFFFF0007FF000001FFE003FFF3FE0FFFFFFC00007F000000F + F8001FFF0FF807FFFF000007F000000FE00007FF83E003FFF0000001F000000F + 800001FFE08003FFE0000001F000000F00000047F80000FFC0000001F000000F + 80000003FE000023C0000001F800000F80000003FE000001C0000001F800000F + 80000001FE000001C0000001F800000F80000000FE000000C0000001F800000F + 80000000FE000000C0000000F800000F80000000FE000000C0000000F800001F + 80000000FC00000080000000F800001F80000000FC00000080000000FC00001F + 80000000FC00000080000000FC00001F80000001FC00000080000001FC00001F + 80000000FC000000C0000001FC00001F80000002FC000003C0000001FE00003F + 80000002FC00000780000001FE00003F80000000FC00000780000001FF00007F + C0000003FC00000780000001FF8000FFF0000007FE000007E0000003FFE001FF + FC000007FF80000FF800000FFFF007FFFF00000FFF90001FFC00003FFFFC3FFF + FFC0001FFF9C0007FF0000FFFFF81FFFFFF0007FFF9D0200FF8003FFFFF80FFF + FFFC01FFFF9FCF81FFE00FFFFFF007FFFFFF8FFFFFBFFFC7FFF03FFFFFE007FF + FFFFFFFFFFFFFF9FFFFCFFFFFFF00FFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + E01FFFFFFFFFFFFFFFFFFFFFFFFFFCFF800FFFFFFFFFFFFFFFFFFFFFFFFFF0FF + 8003FFFFFFFFFFFFFFFFFFFFFFFFC07F8000FFFFFFFFFFFFFFFFFFFFFFFF007F + 80003FFF3FFFFFFF3FFFFFFFFFFC007F80000FFF0FFFFFFF0FFFFFFFFFF0003F + 800003FF03FFFFFF03FFFFFFFFC0003F800000FF809FFFFF809FFFFFFF00003F + 8000003F8007FFFF8007FFFFFC00001F8004000F8001FFFF8001FFFFF000001F + 80070003C0007FFFC0007FFFC000000F8001C00380001FFF80001FFF8000000F + 8000700180000FFF800007FFC000000F80001C01C00003FFC00001FFE000000F + 80000701E00000FFE000007FF000000F80000101F000003FF800001FF800000F + 80000003FC000007FC000007FC00001F80000003FE000001FE000001FE00007F + 80000007FF000000FF000000FF0000FF8000000FFFE00000FFE00000FF8000FF + C000003FFFF80000FFF80000FFC0007FE0007FFFFFFE0001FFFE0001FFE0707F + F8001FFFFFFFC003FFFFC003FFF1F83FFE0007FFFFFFF80FFFFFF80FFFFFF83F + FFC001FFFFFFFFFFFFFFFFFFFFFFFC1FFFF800FFFFFFFFFFFFFFFFFFFFFFFC1F + FFFF007FFFFFFFFFFFFFFFFFFFFFFE0FFFFFE03FFFFFFFFFFFFFFFFFFFFFFE0F + FFFFF83FFFFFFFFFFFFFFFFFFFFFFF2FFFFFFC3FFFFFFFFFFFFFFFFFFFFFFF7F + FFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFE3FFFFFE7FFFFFFFFFFF + FFE007FFFFFF01FFFFF81FFFFFFFFFFFFF0000FFFFFC01FFFFE007FFFFFCFFFF + FC00003FFFF001FFFF8001FFFFF03FFFF000000FFFC001FFFE00007FFFC00FFF + E0000007FF0001FFF800001FFF0003FFC0000003FC0003FFF000000FFC0000FF + 80000001F0000FFFF000000FF000003F80000001C0003FFFF000000FC000000F + 800000010000FFFFF000000F80000003800000010003FFFFF000000F80000001 + 800000018001FFFFF000000F80000001800000018030FFFFF000000F80000001 + 80000001C0F87FFFF000000F8000000180000001E3FC3FFFF000000F80000001 + 80000001FFFE1FFFF000000F8000000180000001FFFF0FFFF000000F80000001 + 80000001FFFF87FFF000000F8000000180000001FFFFC3FFF000000F80000001 + 80000001FFFFE1FFF000000F8000000180000001FFFFF0FFF000000F80000001 + 80000001FFFFF87FF800001FC000000180000001FFFFFC3FFE00007FF0000003 + 80000001FFFFFE1FFF8001FFFC00000F80000001FFFFFF0FFFE007FFFF00003F + 80000001FFFFFF87FFF81FFFFFC000FFC0000003FFFFFFC3FFFE7FFFFFF003FF + E0000007FFFFFFE1FFFFFFFFFFFC0FFFF000000FFFFFFFF0FFFFFFFFFFFF3FFF + FC00003FFFFFFFF9FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF + FFE007FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object PopupMenuItem: TPopupMenu + Left = 128 + Top = 64 + object ItemSelectetd1: TMenuItem + Caption = 'Item Selectetd' + end + end + object PopupMenuGroup: TPopupMenu + Left = 160 + Top = 64 + object GroupSelected1: TMenuItem + Caption = 'Group Selected' + end + end + object PopupMenuColumn: TPopupMenu + Left = 192 + Top = 64 + object ColumnSelected1: TMenuItem + Caption = 'Column Selected' + end + end + object PopupMenuGeneric: TPopupMenu + Left = 48 + Top = 64 + object GenericPopup1: TMenuItem + Caption = 'Default Control Popup' + end + end + object PopupMenuHeaderBackground: TPopupMenu + Left = 224 + Top = 64 + object HeaderBackgroundMenu1: TMenuItem + Caption = 'Header Background Menu' + end + end + object PopupMenuHeader: TPopupMenu + Left = 48 + Top = 104 + object DefaultHeaderMenu1: TMenuItem + Caption = 'Default Header Menu' + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Context Menus/Unit1.pas b/official/1.7.0/EasyListview/Demos/Context Menus/Unit1.pas new file mode 100644 index 0000000..6a7f25d --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Context Menus/Unit1.pas @@ -0,0 +1,151 @@ +unit Unit1; + +interface + +{$I ..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + ImgList, + EasyListview, + StdCtrls, + ExtCtrls, + Menus, MPCommonObjects; + +type + TForm1 = class(TForm) + ELV: TEasyListview; + ImageListSmall: TImageList; + ImageListLarge: TImageList; + ImageListGroup: TImageList; + Panel1: TPanel; + cbViews: TComboBox; + PopupMenuItem: TPopupMenu; + PopupMenuGroup: TPopupMenu; + PopupMenuColumn: TPopupMenu; + ItemSelectetd1: TMenuItem; + GroupSelected1: TMenuItem; + ColumnSelected1: TMenuItem; + PopupMenuGeneric: TPopupMenu; + GenericPopup1: TMenuItem; + CheckBoxSpecialItem: TCheckBox; + CheckBoxSpecialGroup: TCheckBox; + CheckBoxSpecialColumn: TCheckBox; + PopupMenuHeaderBackground: TPopupMenu; + HeaderBackgroundMenu1: TMenuItem; + PopupMenuHeader: TPopupMenu; + DefaultHeaderMenu1: TMenuItem; + procedure FormShow(Sender: TObject); + procedure cbViewsChange(Sender: TObject); + procedure ELVColumnContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; + var Menu: TPopupMenu); + procedure ELVGroupContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoGroup; WindowPoint: TPoint; + var Menu: TPopupMenu; var Handled: Boolean); + procedure ELVItemContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; + var Handled: Boolean); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.FormShow(Sender: TObject); +var + i, j: Integer; + Group: TEasyGroup; + Column: TEasyColumn; + Item: TEasyItem; +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(ELV.View); + + ELV.BeginUpdate(); + try + for i := 0 to 2 do + begin + Column := ELV.Header.Columns.Add(); + Column.Caption := 'Column: ' + IntToStr(i); + Column.Width := 100; + end; + + ELV.PaintInfoItem.TileDetailCount := 3; + for i := 0 to 9 do + begin + Group := ELV.Groups.Add(); + Group.Caption := 'Group: ' + IntToStr(i); + Group.ImageIndex := i mod ImageListGroup.Count; + for j := 0 to Random(10) + 10 do + begin + Item := Group.Items.Add(); + Item.Caption := 'Item: ' + IntToStr(j); + Item.ImageIndex := j mod ImageListSmall.Count; + Item.Captions[1] := 'Detail 1'; + Item.Captions[2] := 'Detail 2'; + // Select which Column will supply the Detail in Tile view + Item.Details[1] := 1; + Item.Details[2] := 2; + end + end; + finally + ELV.ShowGroupMargins := True; + ELV.EndUpdate(); + end +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + ELV.View := TEasyListStyle( cbViews.ItemIndex); +end; + +procedure TForm1.ELVColumnContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; var Menu: TPopupMenu); +begin + if CheckBoxSpecialColumn.Checked then + begin + if Assigned(HitInfo.Column) then + Menu := PopupMenuColumn + else + Menu := PopupMenuHeaderBackground + end +end; + +procedure TForm1.ELVGroupContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoGroup; WindowPoint: TPoint; var Menu: TPopupMenu; + var Handled: Boolean); +begin + if CheckBoxSpecialGroup.Checked and (HitInfo.HitInfo <> []) then + Menu := PopupMenuGroup +end; + +procedure TForm1.ELVItemContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; + var Handled: Boolean); +begin + // Only show the Item menu if it is on the Icon or the Text + if CheckBoxSpecialItem.Checked and (HitInfo.HitInfo * [ehtOnIcon, ehtOnText] <> []) then + Menu := PopupMenuItem +end; + +end. + + diff --git a/official/1.7.0/EasyListview/Demos/DemoBuildProjectGroup.bpg b/official/1.7.0/EasyListview/Demos/DemoBuildProjectGroup.bpg new file mode 100644 index 0000000..6a059e8 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DemoBuildProjectGroup.bpg @@ -0,0 +1,86 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = UserInterfaceDataProject.exe SimpleProject.exe VirtualProject.exe \ + FullDemoProject.exe HintProject.exe ContextMenuProject.exe \ + OLEDragDropProject.exe VCLDragDropProject.exe InterfacedPartOneProject.exe \ + InterfacedPartTwoProject.exe ImageCustomDrawProject.exe GridProject.exe \ + TaskbandProject.exe OLEDragDropExplorerProject.exe ThumbScrollerProject.exe \ + ScrollButtonProject.exe CustomProject.exe ItemCustomDrawProject.exe \ + ItemCustomDrawProjectAdv.exe SortingProject.exe TaskPanelProject.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +SimpleProject.exe: Basic\Simple\SimpleProject.dpr + $(DCC) + +VirtualProject.exe: Basic\Virtual\VirtualProject.dpr + $(DCC) + +FullDemoProject.exe: Fulldemo\FullDemoProject.dpr + $(DCC) + +HintProject.exe: Hints\HintProject.dpr + $(DCC) + +ContextMenuProject.exe: Context Menus\ContextMenuProject.dpr + $(DCC) + +OLEDragDropProject.exe: DragDrop\OLE DragDrop\OLEDragDropProject.dpr + $(DCC) + +VCLDragDropProject.exe: DragDrop\VCL DragDrop\VCLDragDropProject.dpr + $(DCC) + +UserInterfaceDataProject.exe: Basic\Interfaced (Jim)\UserInterfaceDataProject.dpr + $(DCC) + +InterfacedPartOneProject.exe: Basic\Interfaced Part One\InterfacedPartOneProject.dpr + $(DCC) + +InterfacedPartTwoProject.exe: Basic\Interfaced Part Two\InterfacedPartTwoProject.dpr + $(DCC) + +ImageCustomDrawProject.exe: Image CustomDraw\ImageCustomDrawProject.dpr + $(DCC) + +GridProject.exe: Grid\GridProject.dpr + $(DCC) + +TaskbandProject.exe: Taskband\TaskbandProject.dpr + $(DCC) + +OLEDragDropExplorerProject.exe: DragDrop\OLE DragDrop Explorer\OLEDragDropExplorerProject.dpr + $(DCC) + +ThumbScrollerProject.exe: ThumbScroller\ThumbScrollerProject.dpr + $(DCC) + +ScrollButtonProject.exe: ScrollButton\ScrollButtonProject.dpr + $(DCC) + +CustomProject.exe: Basic\Custom Items\CustomProject.dpr + $(DCC) + +ItemCustomDrawProject.exe: Item CustomDraw\ItemCustomDrawProject.dpr + $(DCC) + +ItemCustomDrawProjectAdv.exe: Item CustomDraw Advanced\ItemCustomDrawProjectAdv.dpr + $(DCC) + +SortingProject.exe: Sorting\SortingProject.dpr + $(DCC) + +TaskPanelProject.exe: TaskPanel\TaskPanelProject.dpr + $(DCC) + + diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.dpr b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.dpr new file mode 100644 index 0000000..713cb2a --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.dpr @@ -0,0 +1,13 @@ +program OLEDragDropExplorerProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.dfm b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.dfm new file mode 100644 index 0000000..a1bd949 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.dfm @@ -0,0 +1,1981 @@ +object Form1: TForm1 + Left = 192 + Top = 114 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object EasyListview1: TEasyListview + Left = 0 + Top = 41 + Width = 688 + Height = 405 + Align = alClient + CacheDoubleBufferBits = False + UseDockManager = False + DragManager.DragMode = dmAutomatic + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + ImagesSmall = ImageListSmall + ImagesLarge = ImageListLarge + ImagesExLarge = ImageListExLarge + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsIcon + OnOLEDragEnd = EasyListview1OLEDragEnd + OnOLEDragStart = EasyListview1OLEDragStart + OnOLEDragEnter = EasyListview1OLEDragEnter + OnOLEDragOver = EasyListview1OLEDragOver + OnOLEDragLeave = EasyListview1OLEDragLeave + OnOLEDragDrop = EasyListview1OLEDragDrop + OnOLEGetCustomFormats = EasyListview1OLEGetCustomFormats + OnOLEGetData = EasyListview1OLEGetData + OnOLEQueryData = EasyListview1OLEQueryData + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 688 + Height = 41 + Align = alTop + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 313 + Height = 13 + Caption = + 'Drag a file from Explorer and drop it on the EasyListview window' + + '.' + end + object Label2: TLabel + Left = 8 + Top = 24 + Width = 366 + Height = 13 + Caption = + 'Drag the file from the EasyListview window and drop it in Explor' + + 'er to move it' + end + object cbViews: TComboBox + Left = 488 + Top = 16 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + end + object ImageListSmall: TImageList + Left = 144 + Top = 72 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080606000F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000D3D3D300979797008484 + 8400898989008787870080808000848484008181810084848400848484008484 + 84008484840084848400B2B2B200000000000000000000000000C0806000F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC005AA4C9001E82B400187E + B000167CAE001379AB001076A8000D73A5000B71A300086EA000066C9E00046A + 9C0002689A00016799005E5E5E00AFAFAF000000000000000000C0806000F0FB + FF00F0FBFF00F0FBFF00C0DCC00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA0067CCFF002085B80099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D30099FFFF00016799006A6A6A000000000000000000C08080000000 + 0000F0FBFF00C0A0E0004040E0000040E0008080E000F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD0067CCFF00278CBF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0099FFFF0002689A00656565000000000000000000C08080000000 + 00008080E0000040E0000040E0004040E0000040E000C0C0C000F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC00067CCFF002D92C50099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E60099FFFF00046A9C006D6D6D000000000000000000C08080000000 + 0000C0A0E0008080E000F0FBFF00C0C0C0000040E0004060E000F0CAA600F0CA + A600F0CAA6008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC20067CCFF003398CB0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0099FFFF00066C9E006D6D6D000000000000000000C0A080000000 + 0000000000000000000000000000F0FBFF008080E0000040E000C0A0E000F0CA + A600F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5006FD4FF003499CC0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80099FFFF00086EA000696969000000000000000000C0A080000000 + 000000000000000000000000000000000000F0FBFF000040E0004040E000C0DC + C000F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7007BE0FF002D92C5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF00000000000B71A3007C7C7C000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000080A0E0004060E000C0DC + C000F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C90085EBFF0081E6FF002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC0002489BC002085 + B8001C81B4001B81B30089BED800FBFBFB000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB0091F7FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF00000000000000000000000000000000000000 + 0000167CAE009797970000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0CA + A600F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC000000000099FFFF0099FF + FF0099FFFF0099FFFF000000000060AACF007AB7D60079B5D40077B4D3006AAC + CD003F94BD00FEFEFE0000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000069B3D900000000000000 + 0000000000000000000069B0D400F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000F0CA + A600C0C0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003499CC003398 + CB003196C9002F94C700FDFDFD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0808000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFFFC00300000000FFFFC00300000000 + 8001C003000000000000C003000000000000D003000000000000D00300000000 + 0000D003000000000000DE03000000000000DF03000000001FF4DF8300000000 + 0000DFC30000000001F3DFC3000000004203DFC300000000BCFFDFC700000000 + C1FFC00F00000000FFFFFFFF0000000000000000000000000000000000000000 + 000000000000} + end + object ImageListLarge: TImageList + Height = 32 + Width = 32 + Left = 184 + Top = 72 + Bitmap = { + 494C010102000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000002000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A0065656500656565000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A0065656500656565000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA00069696900696969000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA00069696900696969000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 9700000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 9700000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE00000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE00000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000200000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF00C0000003F000000F0000000000000000 + C0000003F000000F000000000000000000000000F000000F0000000000000000 + 00000000F000000F000000000000000000000000F000000F0000000000000000 + 00000000F000000F000000000000000000000000F000000F0000000000000000 + 00000000F000000F000000000000000000000000F300000F0000000000000000 + 00000000F300000F000000000000000000000000F300000F0000000000000000 + 00000000F300000F000000000000000000000000F300000F0000000000000000 + 00000000F300000F000000000000000000000000F3FC000F0000000000000000 + 00000000F3FC000F000000000000000003FFFF30F3FF000F0000000000000000 + 03FFFF30F3FF000F000000000000000000000000F3FFC00F0000000000000000 + 00000000F3FFC00F000000000000000000000000F3FFF00F0000000000000000 + 0003FF0FF3FFF00F00000000000000000003FF0FF3FFF00F0000000000000000 + 300C000FF3FFF00F0000000000000000300C000FF3FFF00F0000000000000000 + CFF0FFFFF3FFF00F0000000000000000CFF0FFFFF3FFF03F0000000000000000 + F003FFFFF3FFF03F0000000000000000F003FFFFF00000FF0000000000000000 + F003FFFFF00000FF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 + 000000000000} + end + object ImageListExLarge: TImageList + Height = 48 + Width = 48 + Left = 224 + Top = 72 + Bitmap = { + 494C010102000400040030003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000C00000003000000001002000000000000090 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA0006969690069696900696969000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA0006969690069696900696969000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA0006969690069696900696969000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000C0000000300000000100010000000000800400000000000000000000 + 000000000000000000000000FFFFFF00E00000000007FC000000003F00000000 + 0000000000000000E00000000007FC000000003F000000000000000000000000 + E00000000007FC000000003F000000000000000000000000000000000000FC00 + 0000003F000000000000000000000000000000000000FC000000003F00000000 + 0000000000000000000000000000FC000000003F000000000000000000000000 + 000000000000FC000000003F000000000000000000000000000000000000FC00 + 0000003F000000000000000000000000000000000000FC000000003F00000000 + 0000000000000000000000000000FC000000003F000000000000000000000000 + 000000000000FC000000003F000000000000000000000000000000000000FC00 + 0000003F000000000000000000000000000000000000FC700000003F00000000 + 0000000000000000000000000000FC700000003F000000000000000000000000 + 000000000000FC700000003F000000000000000000000000000000000000FC70 + 0000003F000000000000000000000000000000000000FC700000003F00000000 + 0000000000000000000000000000FC700000003F000000000000000000000000 + 000000000000FC700000003F000000000000000000000000000000000000FC70 + 0000003F000000000000000000000000000000000000FC700000003F00000000 + 0000000000000000000000000000FC7FF800003F000000000000000000000000 + 000000000000FC7FF800003F000000000000000000000000000000000000FC7F + F800003F000000000000000000000000007FFFFFF1C0FC7FFF00003F00000000 + 0000000000000000007FFFFFF1C0FC7FFF00003F000000000000000000000000 + 007FFFFFF1C0FC7FFF00003F000000000000000000000000000000000000FC7F + FFE0003F000000000000000000000000000000000000FC7FFFE0003F00000000 + 0000000000000000000000000000FC7FFFE0003F000000000000000000000000 + 000000000000FC7FFFFC003F000000000000000000000000000007FFF03FFC7F + FFFC003F000000000000000000000000000007FFF03FFC7FFFFC003F00000000 + 0000000000000000000007FFF03FFC7FFFFC003F000000000000000000000000 + 1C003800003FFC7FFFFC003F0000000000000000000000001C003800003FFC7F + FFFC003F0000000000000000000000001C003800003FFC7FFFFC003F00000000 + 00000000000000001C003800003FFC7FFFFC003F000000000000000000000000 + E3FFC0FFFFFFFC7FFFFC003F000000000000000000000000E3FFC0FFFFFFFC7F + FFFC01FF000000000000000000000000E3FFC0FFFFFFFC7FFFFC01FF00000000 + 0000000000000000FC0007FFFFFFFC7FFFFC01FF000000000000000000000000 + FC0007FFFFFFFC0000000FFF000000000000000000000000FC0007FFFFFFFC00 + 00000FFF000000000000000000000000FC0007FFFFFFFC0000000FFF00000000 + 0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 + FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF + FFFFFFFF00000000000000000000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.pas b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.pas new file mode 100644 index 0000000..038b588 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop Explorer/Unit1.pas @@ -0,0 +1,223 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, EasyListview, + ActiveX, ShlObj, MPCommonUtilities, MPDataObject, ImgList, + MPCommonObjects; + +type + TForm1 = class(TForm) + EasyListview1: TEasyListview; + Panel1: TPanel; + Label1: TLabel; + Label2: TLabel; + cbViews: TComboBox; + ImageListSmall: TImageList; + ImageListLarge: TImageList; + ImageListExLarge: TImageList; + procedure EasyListview1OLEDragEnter(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure EasyListview1OLEDragOver(Sender: TCustomEasyListview; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure EasyListview1OLEDragLeave(Sender: TCustomEasyListview); + procedure EasyListview1OLEDragDrop(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure cbViewsChange(Sender: TObject); + procedure EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); + procedure EasyListview1OLEGetData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var Medium: tagSTGMEDIUM; + var Handled: Boolean); + procedure EasyListview1OLEQueryData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var FormatAvailable, + Handled: Boolean); + procedure FormShow(Sender: TObject); + procedure EasyListview1OLEGetCustomFormats(Sender: TCustomEasyListview; + var Formats: TFormatEtcArray); + procedure EasyListview1OLEDragEnd(Sender: TCustomEasyListview; + ADataObject: IDataObject; DragResult: TCommonOLEDragResult; + ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); + private + { Private declarations } + public + { Public declarations } + DataObj: IDataObject; + + function GetHDropFormat: TFormatEtc; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +function TForm1.GetHDropFormat: TFormatEtc; +begin +Result.cfFormat := CF_HDROP; // This guy is always registered for all applications + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +// ********************************************** +// Events to make the EasyListview a Drag TARGET +// ********************************************** + +procedure TForm1.EasyListview1OLEDragEnter(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +begin + DataObj := DataObject; + // See if the DataObject contains something we can deal with + if Succeeded(DataObj.QueryGetData(GetHDropFormat)) then + DesiredDropEffect := cdeCopy + else + DesiredDropEffect := cdeNone +end; + +procedure TForm1.EasyListview1OLEDragOver(Sender: TCustomEasyListview; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +begin + // See if the DataObject contains something we can deal with + if Succeeded(DataObj.QueryGetData(GetHDropFormat)) then + DesiredDropEffect := cdeCopy + else + DesiredDropEffect := cdeNone +end; + +procedure TForm1.EasyListview1OLEDragLeave(Sender: TCustomEasyListview); +begin + DataObj := nil; +end; + +procedure TForm1.EasyListview1OLEDragDrop(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +var + HDrop: TCommonHDrop; + Item: TEasyItem; + Column: TEasyColumn; + i: Integer; +begin + DesiredDropEffect := cdeNone; + // See if the DataObject contains something we can deal with + if Succeeded(DataObj.QueryGetData(GetHDropFormat)) then + begin + HDrop := TCommonHDrop.Create; + try + if HDrop.LoadFromDataObject(DataObject) then + begin + EasyListview1.Items.Clear; + Column := EasyListview1.Header.Columns.Add; + Column.Width := 300; + Column.Caption := 'Filename'; + for i := 0 to HDrop.FileCount - 1 do + begin + Item := EasyListview1.Items.Add; + Item.Caption := HDrop.FileName(i); + if DirectoryExists(Item.Caption) then + Item.ImageIndex := 0 + else + Item.ImageIndex := 1 + end; + DesiredDropEffect := cdeCopy; + end + finally + HDrop.Free + end + end +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + EAsyListview1.View := TEasyListStyle(cbViews.ItemIndex) +end; + +procedure TForm1.EasyListview1OLEGetData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var Medium: tagSTGMEDIUM; + var Handled: Boolean); +var + HDrop: TCommonHDrop; + i: Integer; + List: TSTringList; +begin + if FormatEtcIn.cfFormat = CF_HDROP then + begin + HDrop := TCommonHDrop.Create; + List := TStringList.Create; + try + for i := 0 to EasyListview1.Items.Count - 1 do + List.Add(EasyListview1.Items[i].Caption); + HDrop.AssignFiles(List); + Medium.tymed := TYMED_HGLOBAL; + Medium.stm := nil; + Medium.stg := nil; + Medium.hGlobal := HDrop.HDropStruct; + Handled := True; + finally + List.Free; + HDrop.Free + end + end +end; + +// ********************************************** +// Events to make the EasyListview a Drag SOURCE +// ********************************************** + +procedure TForm1.EasyListview1OLEQueryData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var FormatAvailable, Handled: Boolean); +begin + if FormatEtcIn.cfFormat = CF_HDROP then + begin + FormatAvailable := True; + Handled := True; + end +end; + +procedure TForm1.EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); +begin + AllowDrag := True; + AvailableEffects := [cdeCopy, cdeMove, cdeLink] +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(EasyListview1.View); +end; + +procedure TForm1.EasyListview1OLEGetCustomFormats( + Sender: TCustomEasyListview; var Formats: TFormatEtcArray); +begin + SetLength(Formats, Length(Formats) + 1); + Formats[Length(Formats)-1] := GetHDropFormat; +end; + +procedure TForm1.EasyListview1OLEDragEnd(Sender: TCustomEasyListview; + ADataObject: IDataObject; DragResult: TCommonOLEDragResult; + ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); +begin + DataObj := nil; +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/OLEDragDropProject.dpr b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/OLEDragDropProject.dpr new file mode 100644 index 0000000..ca44f12 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/OLEDragDropProject.dpr @@ -0,0 +1,13 @@ +program OLEDragDropProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.dfm b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.dfm new file mode 100644 index 0000000..d68a2ee --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.dfm @@ -0,0 +1,1983 @@ +object Form1: TForm1 + Left = 192 + Top = 114 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object EasyListview1: TEasyListview + Left = 0 + Top = 41 + Width = 688 + Height = 405 + Align = alClient + CacheDoubleBufferBits = False + UseDockManager = False + DragManager.DragMode = dmAutomatic + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + ImagesSmall = ImageListSmall + ImagesLarge = ImageListLarge + ImagesExLarge = ImageListExLarge + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsIcon + OnOLEDragEnd = EasyListview1OLEDragEnd + OnOLEDragStart = EasyListview1OLEDragStart + OnOLEDragEnter = EasyListview1OLEDragEnter + OnOLEDragOver = EasyListview1OLEDragOver + OnOLEDragLeave = EasyListview1OLEDragLeave + OnOLEDragDrop = EasyListview1OLEDragDrop + OnOLEGetCustomFormats = EasyListview1OLEGetCustomFormats + OnOLEGetData = EasyListview1OLEGetData + OnOLEQueryData = EasyListview1OLEQueryData + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 688 + Height = 41 + Align = alTop + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 313 + Height = 13 + Caption = + 'Drag a file from Explorer and drop it on the EasyListview window' + + '.' + end + object Label2: TLabel + Left = 8 + Top = 24 + Width = 366 + Height = 13 + Caption = + 'Drag the file from the EasyListview window and drop it in Explor' + + 'er to move it' + end + object cbViews: TComboBox + Left = 488 + Top = 16 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + Items.Strings = ( + '') + end + end + object ImageListSmall: TImageList + Left = 144 + Top = 72 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080606000F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000D3D3D300979797008484 + 8400898989008787870080808000848484008181810084848400848484008484 + 84008484840084848400B2B2B200000000000000000000000000C0806000F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC005AA4C9001E82B400187E + B000167CAE001379AB001076A8000D73A5000B71A300086EA000066C9E00046A + 9C0002689A00016799005E5E5E00AFAFAF000000000000000000C0806000F0FB + FF00F0FBFF00F0FBFF00C0DCC00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA0067CCFF002085B80099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D30099FFFF00016799006A6A6A000000000000000000C08080000000 + 0000F0FBFF00C0A0E0004040E0000040E0008080E000F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD0067CCFF00278CBF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0099FFFF0002689A00656565000000000000000000C08080000000 + 00008080E0000040E0000040E0004040E0000040E000C0C0C000F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC00067CCFF002D92C50099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E60099FFFF00046A9C006D6D6D000000000000000000C08080000000 + 0000C0A0E0008080E000F0FBFF00C0C0C0000040E0004060E000F0CAA600F0CA + A600F0CAA6008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC20067CCFF003398CB0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0099FFFF00066C9E006D6D6D000000000000000000C0A080000000 + 0000000000000000000000000000F0FBFF008080E0000040E000C0A0E000F0CA + A600F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5006FD4FF003499CC0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80099FFFF00086EA000696969000000000000000000C0A080000000 + 000000000000000000000000000000000000F0FBFF000040E0004040E000C0DC + C000F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7007BE0FF002D92C5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF00000000000B71A3007C7C7C000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000080A0E0004060E000C0DC + C000F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C90085EBFF0081E6FF002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC0002489BC002085 + B8001C81B4001B81B30089BED800FBFBFB000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB0091F7FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF00000000000000000000000000000000000000 + 0000167CAE009797970000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0CA + A600F0CAA600C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC000000000099FFFF0099FF + FF0099FFFF0099FFFF000000000060AACF007AB7D60079B5D40077B4D3006AAC + CD003F94BD00FEFEFE0000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000069B3D900000000000000 + 0000000000000000000069B0D400F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000F0CA + A600C0C0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003499CC003398 + CB003196C9002F94C700FDFDFD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0808000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFFFC00300000000FFFFC00300000000 + 8001C003000000000000C003000000000000D003000000000000D00300000000 + 0000D003000000000000DE03000000000000DF03000000001FF4DF8300000000 + 0000DFC30000000001F3DFC3000000004203DFC300000000BCFFDFC700000000 + C1FFC00F00000000FFFFFFFF0000000000000000000000000000000000000000 + 000000000000} + end + object ImageListLarge: TImageList + Height = 32 + Width = 32 + Left = 184 + Top = 72 + Bitmap = { + 494C010102000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000002000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A0065656500656565000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A0065656500656565000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA00069696900696969000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA00069696900696969000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 9700000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 9700000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE00000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE00000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000200000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF00C0000003F000000F0000000000000000 + C0000003F000000F000000000000000000000000F000000F0000000000000000 + 00000000F000000F000000000000000000000000F000000F0000000000000000 + 00000000F000000F000000000000000000000000F000000F0000000000000000 + 00000000F000000F000000000000000000000000F300000F0000000000000000 + 00000000F300000F000000000000000000000000F300000F0000000000000000 + 00000000F300000F000000000000000000000000F300000F0000000000000000 + 00000000F300000F000000000000000000000000F3FC000F0000000000000000 + 00000000F3FC000F000000000000000003FFFF30F3FF000F0000000000000000 + 03FFFF30F3FF000F000000000000000000000000F3FFC00F0000000000000000 + 00000000F3FFC00F000000000000000000000000F3FFF00F0000000000000000 + 0003FF0FF3FFF00F00000000000000000003FF0FF3FFF00F0000000000000000 + 300C000FF3FFF00F0000000000000000300C000FF3FFF00F0000000000000000 + CFF0FFFFF3FFF00F0000000000000000CFF0FFFFF3FFF03F0000000000000000 + F003FFFFF3FFF03F0000000000000000F003FFFFF00000FF0000000000000000 + F003FFFFF00000FF0000000000000000FFFFFFFFFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 + 000000000000} + end + object ImageListExLarge: TImageList + Height = 48 + Width = 48 + Left = 224 + Top = 72 + Bitmap = { + 494C010102000400040030003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000C00000003000000001002000000000000090 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA0006969690069696900696969000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA0006969690069696900696969000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA0006969690069696900696969000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000C0000000300000000100010000000000800400000000000000000000 + 000000000000000000000000FFFFFF00E00000000007FC000000003F00000000 + 0000000000000000E00000000007FC000000003F000000000000000000000000 + E00000000007FC000000003F000000000000000000000000000000000000FC00 + 0000003F000000000000000000000000000000000000FC000000003F00000000 + 0000000000000000000000000000FC000000003F000000000000000000000000 + 000000000000FC000000003F000000000000000000000000000000000000FC00 + 0000003F000000000000000000000000000000000000FC000000003F00000000 + 0000000000000000000000000000FC000000003F000000000000000000000000 + 000000000000FC000000003F000000000000000000000000000000000000FC00 + 0000003F000000000000000000000000000000000000FC700000003F00000000 + 0000000000000000000000000000FC700000003F000000000000000000000000 + 000000000000FC700000003F000000000000000000000000000000000000FC70 + 0000003F000000000000000000000000000000000000FC700000003F00000000 + 0000000000000000000000000000FC700000003F000000000000000000000000 + 000000000000FC700000003F000000000000000000000000000000000000FC70 + 0000003F000000000000000000000000000000000000FC700000003F00000000 + 0000000000000000000000000000FC7FF800003F000000000000000000000000 + 000000000000FC7FF800003F000000000000000000000000000000000000FC7F + F800003F000000000000000000000000007FFFFFF1C0FC7FFF00003F00000000 + 0000000000000000007FFFFFF1C0FC7FFF00003F000000000000000000000000 + 007FFFFFF1C0FC7FFF00003F000000000000000000000000000000000000FC7F + FFE0003F000000000000000000000000000000000000FC7FFFE0003F00000000 + 0000000000000000000000000000FC7FFFE0003F000000000000000000000000 + 000000000000FC7FFFFC003F000000000000000000000000000007FFF03FFC7F + FFFC003F000000000000000000000000000007FFF03FFC7FFFFC003F00000000 + 0000000000000000000007FFF03FFC7FFFFC003F000000000000000000000000 + 1C003800003FFC7FFFFC003F0000000000000000000000001C003800003FFC7F + FFFC003F0000000000000000000000001C003800003FFC7FFFFC003F00000000 + 00000000000000001C003800003FFC7FFFFC003F000000000000000000000000 + E3FFC0FFFFFFFC7FFFFC003F000000000000000000000000E3FFC0FFFFFFFC7F + FFFC01FF000000000000000000000000E3FFC0FFFFFFFC7FFFFC01FF00000000 + 0000000000000000FC0007FFFFFFFC7FFFFC01FF000000000000000000000000 + FC0007FFFFFFFC0000000FFF000000000000000000000000FC0007FFFFFFFC00 + 00000FFF000000000000000000000000FC0007FFFFFFFC0000000FFF00000000 + 0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 + FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF + FFFFFFFF00000000000000000000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.pas b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.pas new file mode 100644 index 0000000..b16b28e --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/OLE DragDrop/Unit1.pas @@ -0,0 +1,222 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, EasyListview, ActiveX, ShlObj, MPCommonUtilities, + MPDataObject, ImgList, MPCommonObjects; + +type + TForm1 = class(TForm) + EasyListview1: TEasyListview; + Panel1: TPanel; + Label1: TLabel; + Label2: TLabel; + cbViews: TComboBox; + ImageListSmall: TImageList; + ImageListLarge: TImageList; + ImageListExLarge: TImageList; + procedure EasyListview1OLEDragEnter(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure EasyListview1OLEDragOver(Sender: TCustomEasyListview; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure EasyListview1OLEDragLeave(Sender: TCustomEasyListview); + procedure EasyListview1OLEDragDrop(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure cbViewsChange(Sender: TObject); + procedure EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); + procedure EasyListview1OLEGetData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var Medium: tagSTGMEDIUM; + var Handled: Boolean); + procedure EasyListview1OLEQueryData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var FormatAvailable, + Handled: Boolean); + procedure FormShow(Sender: TObject); + procedure EasyListview1OLEDragEnd(Sender: TCustomEasyListview; + ADataObject: IDataObject; DragResult: TCommonOLEDragResult; + ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); + procedure EasyListview1OLEGetCustomFormats(Sender: TCustomEasyListview; + var Formats: TFormatEtcArray); + private + { Private declarations } + public + { Public declarations } + DataObj: IDataObject; + + function GetHDropFormat: TFormatEtc; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +function TForm1.GetHDropFormat: TFormatEtc; +begin +Result.cfFormat := CF_HDROP; // This guy is always registered for all applications + Result.ptd := nil; + Result.dwAspect := DVASPECT_CONTENT; + Result.lindex := -1; + Result.tymed := TYMED_HGLOBAL +end; + +// ********************************************** +// Events to make the EasyListview a Drag TARGET +// ********************************************** + +procedure TForm1.EasyListview1OLEDragEnter(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +begin + DataObj := DataObject; + // See if the DataObject contains something we can deal with + if Succeeded(DataObj.QueryGetData(GetHDropFormat)) then + DesiredDropEffect := cdeCopy + else + DesiredDropEffect := cdeNone +end; + +procedure TForm1.EasyListview1OLEDragOver(Sender: TCustomEasyListview; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +begin + // See if the DataObject contains something we can deal with + if Succeeded(DataObj.QueryGetData(GetHDropFormat)) then + DesiredDropEffect := cdeCopy + else + DesiredDropEffect := cdeNone +end; + +procedure TForm1.EasyListview1OLEDragLeave(Sender: TCustomEasyListview); +begin + DataObj := nil; +end; + +procedure TForm1.EasyListview1OLEDragDrop(Sender: TCustomEasyListview; + DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +var + HDrop: TCommonHDrop; + Item: TEasyItem; + Column: TEasyColumn; + i: Integer; +begin + DesiredDropEffect := cdeNone; + // See if the DataObject contains something we can deal with + if Succeeded(DataObj.QueryGetData(GetHDropFormat)) then + begin + HDrop := TCommonHDrop.Create; + try + if HDrop.LoadFromDataObject(DataObject) then + begin + EasyListview1.Items.Clear; + Column := EasyListview1.Header.Columns.Add; + Column.Width := 300; + Column.Caption := 'Filename'; + for i := 0 to HDrop.FileCount - 1 do + begin + Item := EasyListview1.Items.Add; + Item.Caption := HDrop.FileName(i); + if DirectoryExists(Item.Caption) then + Item.ImageIndex := 0 + else + Item.ImageIndex := 1 + end; + DesiredDropEffect := cdeCopy; + end + finally + HDrop.Free + end + end +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + EAsyListview1.View := TEasyListStyle(cbViews.ItemIndex) +end; + +procedure TForm1.EasyListview1OLEGetData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var Medium: tagSTGMEDIUM; + var Handled: Boolean); +var + HDrop: TCommonHDrop; + i: Integer; + List: TSTringList; +begin + if FormatEtcIn.cfFormat = CF_HDROP then + begin + HDrop := TCommonHDrop.Create; + List := TStringList.Create; + try + for i := 0 to EasyListview1.Items.Count - 1 do + List.Add(EasyListview1.Items[i].Caption); + HDrop.AssignFiles(List); + Medium.tymed := TYMED_HGLOBAL; + Medium.stm := nil; + Medium.stg := nil; + Medium.hGlobal := HDrop.HDropStruct; + Handled := True; + finally + List.Free; + HDrop.Free + end + end +end; + +// ********************************************** +// Events to make the EasyListview a Drag SOURCE +// ********************************************** + +procedure TForm1.EasyListview1OLEQueryData(Sender: TCustomEasyListview; + const FormatEtcIn: tagFORMATETC; var FormatAvailable, Handled: Boolean); +begin + if FormatEtcIn.cfFormat = CF_HDROP then + begin + FormatAvailable := True; + Handled := True; + end +end; + +procedure TForm1.EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); +begin + AllowDrag := True; + AvailableEffects := [cdeCopy, cdeMove, cdeLink] +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(EasyListview1.View); +end; + +procedure TForm1.EasyListview1OLEDragEnd(Sender: TCustomEasyListview; + ADataObject: IDataObject; DragResult: TCommonOLEDragResult; + ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); +begin + DataObj := nil; +end; + +procedure TForm1.EasyListview1OLEGetCustomFormats( + Sender: TCustomEasyListview; var Formats: TFormatEtcArray); +begin + SetLength(Formats, Length(Formats) + 1); + Formats[Length(Formats)-1] := GetHDropFormat; +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.dfm b/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.dfm new file mode 100644 index 0000000..c747407 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.dfm @@ -0,0 +1,544 @@ +object Form1: TForm1 + Left = 221 + Top = 194 + BorderStyle = bsSingle + Caption = 'Form1' + ClientHeight = 446 + ClientWidth = 688 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 202 + Top = 39 + Width = 6 + Height = 407 + end + object Label5: TLabel + Left = 0 + Top = 0 + Width = 688 + Height = 13 + Align = alTop + end + object Label6: TLabel + Left = 0 + Top = 13 + Width = 688 + Height = 26 + Align = alTop + Caption = + ' The VCL Drag and Drop is not forgotten in CoolControl. It i' + + 's fully supported through easy to use events that are separated ' + + 'from the OLE events to keep the distinction between the two clea' + + 'r.' + WordWrap = True + end + object Splitter2: TSplitter + Left = 425 + Top = 39 + Width = 6 + Height = 407 + ResizeStyle = rsUpdate + end + object Panel1: TPanel + Left = 0 + Top = 39 + Width = 202 + Height = 407 + Align = alLeft + TabOrder = 0 + object Label1: TLabel + Left = 16 + Top = 32 + Width = 72 + Height = 13 + Caption = 'Dragging Item:' + end + object Label2: TLabel + Left = 16 + Top = 48 + Width = 99 + Height = 13 + Caption = 'Dragging Over Item:' + end + object LabelDragItem: TLabel + Left = 136 + Top = 32 + Width = 10 + Height = 13 + Caption = '-1' + end + object LabelDraggingOverItem: TLabel + Left = 136 + Top = 48 + Width = 10 + Height = 13 + Caption = '-1' + end + object LabelDragDropItem: TLabel + Left = 16 + Top = 64 + Width = 113 + Height = 13 + Caption = 'Drag Dropped On Item:' + end + object LabelDragDroppedItem: TLabel + Left = 136 + Top = 64 + Width = 10 + Height = 13 + Caption = '-1' + end + object Label3: TLabel + Left = 16 + Top = 80 + Width = 92 + Height = 13 + Caption = 'Over EasyListview:' + end + object LabelTargetCC: TLabel + Left = 136 + Top = 80 + Width = 33 + Height = 13 + Caption = '[None]' + end + object Label4: TLabel + Left = 16 + Top = 96 + Width = 71 + Height = 13 + Caption = 'Mouse Position' + end + object LabelMousePosX: TLabel + Left = 116 + Top = 96 + Width = 30 + Height = 13 + Caption = 'X = -1' + end + object LabelMousePosY: TLabel + Left = 116 + Top = 112 + Width = 30 + Height = 13 + Caption = 'Y = -1' + end + object cbViews: TComboBox + Left = 24 + Top = 224 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + Items.Strings = ( + '') + end + object CheckBoxMultiSelect: TCheckBox + Left = 32 + Top = 288 + Width = 97 + Height = 17 + Caption = 'Multi Select' + TabOrder = 1 + OnClick = CheckBoxMultiSelectClick + end + object CheckBoxHeader: TCheckBox + Left = 32 + Top = 304 + Width = 97 + Height = 17 + Caption = 'Show Header' + TabOrder = 2 + OnClick = CheckBoxHeaderClick + end + end + object ELV1: TEasyListview + Left = 208 + Top = 39 + Width = 217 + Height = 407 + Align = alLeft + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + DragManager.DragMode = dmAutomatic + DragManager.DragType = edtVCL + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Groups.Items = { + 0400000001000000FFFECE000400000080080400000019000000FFFECE000400 + 00008008010000000C000000560043004C002000440072006100670044007200 + 6F007000000000000100000000000000000000000000000000000000FFFECE00 + 040000008008010000000C000000560043004C00200044007200610067004400 + 72006F007000000000000100000000000000000000000000000000000000FFFE + CE00040000008008010000000C000000560043004C0020004400720061006700 + 440072006F007000000000000100000000000000000000000000000000000000 + FFFECE00040000008008010000000C000000560043004C002000440072006100 + 6700440072006F00700000000000010000000000000000000000000000000000 + 0000FFFECE00040000008008010000000C000000560043004C00200044007200 + 61006700440072006F0070000000000001000000000000000000000000000000 + 00000000FFFECE00040000008008010000000C000000560043004C0020004400 + 720061006700440072006F007000000000000100000000000000000000000000 + 000000000000FFFECE00040000008008010000000C000000560043004C002000 + 4400720061006700440072006F00700000000000010000000000000000000000 + 0000000000000000FFFECE00040000008008010000000C000000560043004C00 + 20004400720061006700440072006F0070000000000001000000000000000000 + 00000000000000000000FFFECE00040000008008010000000C00000056004300 + 4C0020004400720061006700440072006F007000000000000100000000000000 + 000000000000000000000000FFFECE00040000008008010000000C0000005600 + 43004C0020004400720061006700440072006F00700000000000010000000000 + 0000000000000000000000000000FFFECE00040000008008010000000C000000 + 560043004C0020004400720061006700440072006F0070000000000001000000 + 00000000000000000000000000000000FFFECE00040000008008010000000C00 + 0000560043004C0020004400720061006700440072006F007000000000000100 + 000000000000000000000000000000000000FFFECE0004000000800801000000 + 0C000000560043004C0020004400720061006700440072006F00700000000000 + 0100000000000000000000000000000000000000FFFECE000400000080080100 + 00000C000000560043004C0020004400720061006700440072006F0070000000 + 00000100000000000000000000000000000000000000FFFECE00040000008008 + 010000000C000000560043004C0020004400720061006700440072006F007000 + 000000000100000000000000000000000000000000000000FFFECE0004000000 + 8008010000000C000000560043004C0020004400720061006700440072006F00 + 7000000000000100000000000000000000000000000000000000FFFECE000400 + 00008008010000000C000000560043004C002000440072006100670044007200 + 6F007000000000000100000000000000000000000000000000000000FFFECE00 + 040000008008010000000C000000560043004C00200044007200610067004400 + 72006F007000000000000100000000000000000000000000000000000000FFFE + CE00040000008008010000000C000000560043004C0020004400720061006700 + 440072006F007000000000000100000000000000000000000000000000000000 + FFFECE00040000008008010000000C000000560043004C002000440072006100 + 6700440072006F00700000000000010000000000000000000000000000000000 + 0000FFFECE00040000008008010000000C000000560043004C00200044007200 + 61006700440072006F0070000000000001000000000000000000000000000000 + 00000000FFFECE00040000008008010000000C000000560043004C0020004400 + 720061006700440072006F007000000000000100000000000000000000000000 + 000000000000FFFECE00040000008008010000000C000000560043004C002000 + 4400720061006700440072006F00700000000000010000000000000000000000 + 0000000000000000FFFECE00040000008008010000000C000000560043004C00 + 20004400720061006700440072006F0070000000000001000000000000000000 + 00000000000000000000FFFECE00040000008008010000000C00000056004300 + 4C0020004400720061006700440072006F007000000000000100000000000000 + 00000000000000000000000000000000000000000000000000000000} + Header.Columns.Items = { + 0400000001000000FFFECE000400000000000000000000000000000000010000 + 000000000000000000000000000000000000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + ImagesGroup = ImageList1 + ImagesSmall = ImageList1 + ImagesLarge = ImageList1 + ImagesExLarge = ImageList1 + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 1 + View = elsIcon + OnDragDrop = ELV1DragDrop + OnDragOver = ELV1DragOver + OnStartDrag = ELV1StartDrag + end + object ELV2: TEasyListview + Left = 431 + Top = 39 + Width = 257 + Height = 407 + Align = alClient + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + DragManager.DragMode = dmAutomatic + DragManager.DragType = edtVCL + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Groups.Items = { + 0400000001000000FFFECE000400000080080400000020000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000FFFECE000400 + 00008008010000000F000000560043004C002000440072006100670020004400 + 72006F0070002000320000000000010000000100000000000000000000000000 + 0000FFFECE00040000008008010000000F000000560043004C00200044007200 + 610067002000440072006F007000200032000000000001000000010000000000 + 00000000000000000000FFFECE00040000008008010000000F00000056004300 + 4C00200044007200610067002000440072006F00700020003200000000000100 + 000001000000000000000000000000000000FFFECE0004000000800801000000 + 0F000000560043004C00200044007200610067002000440072006F0070002000 + 3200000000000100000001000000000000000000000000000000000000000000 + 00000000000000000000} + Header.Columns.Items = { + 0400000001000000FFFECE000400000000000000000000000000000000010000 + 000000000000000000000000000000000000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + ImagesGroup = ImageList1 + ImagesSmall = ImageList1 + ImagesLarge = ImageList1 + ImagesExLarge = ImageList1 + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 2 + View = elsIcon + OnDragDrop = ELV2DragDrop + OnDragOver = ELV2DragOver + OnStartDrag = ELV2StartDrag + end + object CheckBoxEnable: TCheckBox + Left = 8 + Top = 48 + Width = 97 + Height = 17 + Caption = 'Enable' + TabOrder = 3 + OnClick = CheckBoxEnableClick + end + object ImageList1: TImageList + Left = 16 + Top = 352 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000008DAF50008DA + F50032E1F00025E3F00004A6AF00FEFEFE0000000000FEFFFE00EBE7E900E19C + B000EDD0D900F0DAE000F0DCE400F9FFFF00FEFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004BC8CD0008DAF50008DA + F50002E0F80008E3F00004A6AF000000000000000000FDFFFF00D4739100E390 + A800E9A0B700F9E5ED00EEB1C200DC688E00E399B100FEFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009EC6C7000DE2F80005DEF40000DF + F20000DFF20000E0F30001A6AF000000000000000000FDFFFE00D68EA600EAA4 + BA00E06F9100DF759700E1789A00DC6E9200DB5E880000000000FEFFFF00FFFE + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004EC3CB0008E1F80003E0F40000DF + F20000DFF2000ADFF200089CA400000000000000000000000000F9FAFB00D56C + 8B00D35F8400C4557900D7638800D86386007D354C00997B8600AE989F00C5AE + B500000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000023D2E30002E1F30001DFF50000DF + F20000DFF20014E3F10065BFBF00000000000000000000000000FEFFFF00B868 + 8300B7527300B44F6F00C155770079354C005B2B3A008D3E5600B04D6B00D75F + 8500ECC9D8000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000002E2F50001DFF20000DFF00005DF + F5000AEAFA0043BDC60000000000000000000000000000000000FEFEFE00D1AA + B600A3476200A5496600893B540057283700893C5600A94C6A00C7577900D962 + 8800DC6F8E00FDFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000001E9FC0000DFF20009DEF30004DF + F2000599AD00C2D2D4000000000000000000000000000000000000000000E8D2 + D900883C54008D3E57005C283A0075354A0092405A00AA4B6900C7567800DB64 + 8A00E16A8F0000000000FDFEFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000005EEFB0001DFF30000E0F30000DFF0000A9C + B6008CC1C100000000000000000000000000000000000000000000000000E4D4 + D9007331460070334800ED8EAC00A24864009F486300B34E6E00D35A7F00DC69 + 8D00D9759600CD889E00FAFFFE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F5F6F70011ECFC0002E2F50000E0F20000E0F30005E1F60043BD + C60000000000000000000000000000000000000000000000000000000000CBAC + B6006C314400B953720077324800A6476400A84B6800BF537400DC668C00DE71 + 9300F7D6E100F9F1F400FFFFFE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000023D2DD0006E0F60001DFF10003E1F30000DFF20000DFF20001E3F800B3CA + CC0000000000000000000000000000000000000000000000000000000000A36F + 810072314700CB698800ECA2BA008691CB00818CD000BE577700D25E8300BE55 + 7800CF6D89000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007FBD + C30001DDF20002DFF00000DFF10000DFF10000DFF20000DFF20006E3F800D0DB + DC00000000000000000000000000000000000000000000000000000000008841 + 58007F3A5000B04966008098D80085A2E4007E9EE0006684D600D7618300DC6A + 8E00BD5575000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003BCA + D30005E3EE0008E4F50007DBF20008DEEE0001E2F30002DFF10007E0F6009AC2 + C400000000000000000000000000000000000000000000000000000000008A37 + 530098425F00AD4662006A95E6007D9BE000D9E2F600FBFDFE00E0729600EA9B + B300E47696000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080C0C30034CFD8000000 + 000094D4D3000F95A2000ADCED0009DBF40003E1F30000DEF00000DCF300A9C6 + C900000000000000000000000000000000000000000000000000FCFFFF00AA53 + 7000C15A7900C75576006A6DAA008CAAE600FBFEFE00FAF0F300EAA5BB00EFBA + CC00E190AB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000084BEC3000CE0E600DBEFF100EEF3 + F40072DADE000000000000000000BED2D2002AC0CD0003EDFD0004E0EB000000 + 0000000000000000000000000000000000000000000000000000FCFDFF00E4BE + CC00E896B200E17B9B00E26E8F00BA779A00E6ADBE00E69DB200F9FFFF00F4DA + E600F5EFF300FDFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000033D3 + D100DAE5E500A8E6EC003CBDC9000AC8DD00AAC7C9006CBEB500000000000000 + 000000000000000000000000000000000000000000000000000000000000FEFF + FF00ECB0C600E99CB400E287A400E17F9F00E387A500EAA9BC00F0BDCF00F2DB + E100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F3F5F5000000000063FDFF000000000009F5FF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F4EFF100ECBCCC00E4A0B500ECADC100F3D9E300FCFEFC000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFC0807F00000000FF81803F00000000 + FF01804F00000000FF01C00F00000000FF01C00700000000FF03C00300000000 + FF03E00500000000FE07E00100000000F80FE00100000000F00FE00700000000 + E00FE00700000000E00FE00700000000900FC00700000000061FC00300000000 + E03FE00F00000000FABFF81F0000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.pas b/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.pas new file mode 100644 index 0000000..dec62f9 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.pas @@ -0,0 +1,228 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + ExtCtrls, StdCtrls, ActiveX, ImgList, MPCommonObjects, EasyListview; + +type + TForm1 = class(TForm) + Panel1: TPanel; + Label1: TLabel; + Label2: TLabel; + LabelDragItem: TLabel; + LabelDraggingOverItem: TLabel; + LabelDragDropItem: TLabel; + LabelDragDroppedItem: TLabel; + Splitter1: TSplitter; + ImageList1: TImageList; + Label3: TLabel; + LabelTargetCC: TLabel; + Label4: TLabel; + LabelMousePosX: TLabel; + LabelMousePosY: TLabel; + Label5: TLabel; + Label6: TLabel; + ELV1: TEasyListview; + ELV2: TEasyListview; + Splitter2: TSplitter; + cbViews: TComboBox; + CheckBoxMultiSelect: TCheckBox; + CheckBoxHeader: TCheckBox; + CheckBoxEnable: TCheckBox; + procedure FormCreate(Sender: TObject); + procedure ELV1DragDrop(Sender, Source: TObject; X, Y: Integer); + procedure ELV1DragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure ELV2DragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure ELV2StartDrag(Sender: TObject; var DragObject: TDragObject); + procedure ELV1StartDrag(Sender: TObject; var DragObject: TDragObject); + procedure ELV2DragDrop(Sender, Source: TObject; X, Y: Integer); + procedure cbViewsChange(Sender: TObject); + procedure CheckBoxMultiSelectClick(Sender: TObject); + procedure CheckBoxHeaderClick(Sender: TObject); + procedure CheckBoxEnableClick(Sender: TObject); + procedure FormShow(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +var + i: Integer; + Item: TEasyCollectionItem; + Group: TEasyCollectionItem; +begin + cbViews.ItemIndex := 0; + ELV1.BeginUpdate(); + ELV2.BeginUpdate(); + Group := ELV1.Groups.Add; + Group.Caption := 'Group 1'; + for i := 0 to 99 do + begin + Item := ELV1.Groups[0].Items.Add; + Item.Caption := 'Item: ' + IntToStr(Item.Index); + Item.ImageIndex := 0; + end; + Group := ELV2.Groups.Add; + Group.Caption := 'Group 2'; + for i := 0 to 99 do + begin + Item := ELV2.Groups[0].Items.Add;; + Item.Caption := 'Item: ' + IntToStr(Item.Index); + Item.ImageIndex := 1; + end; + ELV1.EndUpdate(); + ELV2.EndUpdate(); + Mouse.DragImmediate := False; +end; + +procedure TForm1.ELV1DragDrop(Sender, Source: TObject; X, Y: Integer); +begin + // Update the UI + if Assigned(ELV1.DragManager.DropTarget) then + LabelDragDroppedItem.Caption := IntToStr(ELV1.DragManager.DropTarget.Index) + else + LabelDragDroppedItem.Caption := '[Background]'; + LabelTargetCC.Caption := '[None]'; +end; + +procedure TForm1.ELV1DragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); +begin + case State of + dsDragMove: + begin + // Update the UI + if Assigned(ELV1.DragManager.DropTarget) then + LabelDraggingOverItem.Caption := IntToStr(ELV1.DragManager.DropTarget.Index) + else + LabelDraggingOverItem.Caption := '-1'; + LabelDragDroppedItem.Caption := '-1'; + LabelTargetCC.Caption := '1'; + LabelMousePosX.Caption := IntToStr(X); + LabelMousePosY.Caption := IntToStr(Y); + LabelDraggingOverItem.Update; + end; + dsDragLeave: + begin + LabelTargetCC.Caption := '[None]'; + LabelMousePosX.Caption := '-1'; + LabelMousePosY.Caption := '-1'; + end; + dsDragEnter: + begin + end + end; +end; + +procedure TForm1.ELV2DragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); +begin + case State of + dsDragMove: + begin + // Update the UI + if Assigned(ELV2.DragManager.DropTarget) then + LabelDraggingOverItem.Caption := IntToStr(ELV2.DragManager.DropTarget.Index) + else + LabelDraggingOverItem.Caption := '-1'; + LabelDragDroppedItem.Caption := '-1'; + LabelTargetCC.Caption := '2'; + LabelMousePosX.Caption := IntToStr(X); + LabelMousePosY.Caption := IntToStr(Y); + LabelDraggingOverItem.Update; + end; + dsDragLeave: + begin + LabelTargetCC.Caption := '[None]'; + LabelMousePosX.Caption := '-1'; + LabelMousePosY.Caption := '-1'; + end; + dsDragEnter: + begin + end + end; +end; + +procedure TForm1.ELV2StartDrag(Sender: TObject; + var DragObject: TDragObject); +begin + // Update the UI + if Assigned(ELV2.DragManager.DragItem) then + LabelDragItem.Caption := IntToStr(ELV2.DragManager.DragItem.Index) + else + LabelDraggingOverItem.Caption := '-1'; + LabelDragDroppedItem.Caption := IntToStr(-1); + LabelDragItem.Update; + LabelDragDroppedItem.Update; +end; + +procedure TForm1.ELV1StartDrag(Sender: TObject; + var DragObject: TDragObject); +begin + // Update the UI + if Assigned(ELV1.DragManager.DragItem) then + LabelDragItem.Caption := IntToStr(ELV1.DragManager.DragItem.Index) + else + LabelDraggingOverItem.Caption := '-1'; + LabelDragDroppedItem.Caption := IntToStr(-1); + LabelDragItem.Update; + LabelDragDroppedItem.Update; +end; + +procedure TForm1.ELV2DragDrop(Sender, Source: TObject; X, Y: Integer); +begin + // Update the UI + if Assigned(ELV2.DragManager.DropTarget) then + LabelDragDroppedItem.Caption := IntToStr(ELV2.DragManager.DropTarget.Index) + else + LabelDragDroppedItem.Caption := '[Background]'; + + LabelTargetCC.Caption := '[None]'; +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + ELV1.View := TEasyListStyle(cbViews.ItemIndex); + ELV2.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.CheckBoxMultiSelectClick(Sender: TObject); +begin + ELV1.Selection.MultiSelect := CheckBoxMultiSelect.Checked; + ELV1.Selection.EnableDragSelect := CheckBoxMultiSelect.Checked; + ELV2.Selection.MultiSelect := CheckBoxMultiSelect.Checked; + ELV2.Selection.EnableDragSelect := CheckBoxMultiSelect.Checked; +end; + +procedure TForm1.CheckBoxHeaderClick(Sender: TObject); +begin + ELV1.Header.Visible := CheckBoxHeader.Checked; + ELV2.Header.Visible := CheckBoxHeader.Checked; +end; + +procedure TForm1.CheckBoxEnableClick(Sender: TObject); +begin + ELV1.DragManager.Enabled := CheckBoxEnable.Checked; + ELV2.DragManager.Enabled := CheckBoxEnable.Checked +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(ELV1.View); +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/VCLDragDropProject.dpr b/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/VCLDragDropProject.dpr new file mode 100644 index 0000000..20a2301 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/VCLDragDropProject.dpr @@ -0,0 +1,13 @@ +program VCLDragDropProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Fulldemo/FullDemoProject.dpr b/official/1.7.0/EasyListview/Demos/Fulldemo/FullDemoProject.dpr new file mode 100644 index 0000000..87e798e --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Fulldemo/FullDemoProject.dpr @@ -0,0 +1,15 @@ +program FullDemoProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + DatamoduleImagelists in '..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TImagelists, Imagelists); + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.dfm new file mode 100644 index 0000000..e253be0 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.dfm @@ -0,0 +1,2830 @@ +object Form1: TForm1 + Left = 206 + Top = 99 + Width = 806 + Height = 640 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 357 + Top = 33 + Width = 6 + Height = 552 + ResizeStyle = rsUpdate + end + object Label32: TLabel + Left = 248 + Top = 208 + Width = 6 + Height = 13 + Caption = '0' + end + object Label33: TLabel + Left = 248 + Top = 224 + Width = 6 + Height = 13 + Caption = '0' + end + object Label36: TLabel + Left = 256 + Top = 216 + Width = 6 + Height = 13 + Caption = '0' + end + object Label37: TLabel + Left = 256 + Top = 232 + Width = 6 + Height = 13 + Caption = '0' + end + object StatusBar1: TStatusBar + Left = 0 + Top = 585 + Width = 790 + Height = 19 + Panels = < + item + Text = 'Elaspsed Time' + Width = 150 + end + item + Text = 'Visibility' + Width = 180 + end + item + Text = 'Selection' + Width = 150 + end> + end + object Panel2: TPanel + Left = 0 + Top = 33 + Width = 357 + Height = 552 + Align = alLeft + Caption = 'Panel2' + TabOrder = 1 + object PageControl1: TPageControl + Left = 1 + Top = 1 + Width = 355 + Height = 550 + ActivePage = TabSheet6 + Align = alClient + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'General' + object Label4: TLabel + Left = 15 + Top = 12 + Width = 34 + Height = 13 + Caption = 'Groups' + end + object Label3: TLabel + Left = 11 + Top = 36 + Width = 54 + Height = 13 + Caption = 'Item Count' + end + object Label5: TLabel + Left = 2 + Top = 58 + Width = 67 + Height = 13 + Caption = 'Column Count' + end + object Label18: TLabel + Left = 8 + Top = 80 + Width = 22 + Height = 13 + Caption = 'View' + end + object Bevel5: TBevel + Left = 8 + Top = 216 + Width = 273 + Height = 305 + end + object Label26: TLabel + Left = 8 + Top = 216 + Width = 44 + Height = 13 + Caption = 'Cell Sizes' + FocusControl = Button2 + end + object Label27: TLabel + Left = 16 + Top = 240 + Width = 21 + Height = 13 + Caption = 'Icon' + end + object Label28: TLabel + Left = 12 + Top = 296 + Width = 48 + Height = 13 + Caption = 'Small Icon' + end + object Label29: TLabel + Left = 16 + Top = 340 + Width = 16 + Height = 13 + Caption = 'List' + end + object Label30: TLabel + Left = 16 + Top = 436 + Width = 37 + Height = 13 + Caption = 'Thumbs' + end + object Label31: TLabel + Left = 16 + Top = 484 + Width = 21 + Height = 13 + Caption = 'Tiles' + end + object LabelIconSizeWidth: TLabel + Left = 248 + Top = 232 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelIconSizeHeight: TLabel + Left = 248 + Top = 248 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelSmallIconSizeWidth: TLabel + Left = 248 + Top = 280 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelSmallIconSizeHeight: TLabel + Left = 248 + Top = 296 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelListSizeWidth: TLabel + Left = 248 + Top = 328 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelListSizeHeight: TLabel + Left = 248 + Top = 344 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelThumbSizeWidth: TLabel + Left = 248 + Top = 426 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelThumbSizeHeight: TLabel + Left = 248 + Top = 444 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelTileSizeWidth: TLabel + Left = 248 + Top = 476 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelTileSizeHeight: TLabel + Left = 248 + Top = 492 + Width = 6 + Height = 13 + Caption = '0' + end + object Label34: TLabel + Left = 16 + Top = 384 + Width = 33 + Height = 13 + Caption = 'Report' + end + object LabelReportSizeWidth: TLabel + Left = 248 + Top = 376 + Width = 6 + Height = 13 + Caption = '0' + end + object LabelReportSizeHeight: TLabel + Left = 248 + Top = 394 + Width = 6 + Height = 13 + Caption = '0' + end + object Label39: TLabel + Left = 8 + Top = 128 + Width = 78 + Height = 13 + Caption = 'Tile Detail Count' + end + object TrackBarSizeReportHeight: TTrackBar + Left = 67 + Top = 396 + Width = 181 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 12 + ThumbLength = 10 + OnChange = TrackBarSizeReportHeightChange + end + object EditGroupCount: TEdit + Left = 72 + Top = 8 + Width = 57 + Height = 21 + TabOrder = 0 + Text = '10' + end + object EditItemCount: TEdit + Left = 72 + Top = 32 + Width = 57 + Height = 21 + TabOrder = 1 + Text = '10' + end + object EditColumnCount: TEdit + Left = 72 + Top = 56 + Width = 57 + Height = 21 + TabOrder = 2 + Text = '10' + end + object Button2: TButton + Left = 142 + Top = 32 + Width = 75 + Height = 25 + Caption = 'Add Items' + TabOrder = 3 + OnClick = Button2Click + end + object Button3: TButton + Left = 142 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Clear' + TabOrder = 4 + OnClick = Button3Click + end + object CheckBoxThemed: TCheckBox + Left = 8 + Top = 152 + Width = 97 + Height = 17 + Caption = 'Themed' + TabOrder = 5 + OnClick = CheckBoxThemedClick + end + object cbViews: TComboBox + Left = 14 + Top = 96 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 6 + OnChange = cbViewsChange + end + object CheckBoxTrackSelections: TCheckBox + Left = 168 + Top = 152 + Width = 169 + Height = 17 + Caption = 'Track Selections in Status Bar' + TabOrder = 7 + end + object CheckBoxRandomizeItemCount: TCheckBox + Left = 134 + Top = 64 + Width = 153 + Height = 17 + Caption = 'Randomize Item Count' + TabOrder = 8 + end + object TrackBarSizeIconWidth: TTrackBar + Left = 66 + Top = 232 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 9 + ThumbLength = 10 + OnChange = TrackBarSizeIconWidthChange + end + object TrackBarSizeIconHeight: TTrackBar + Left = 66 + Top = 250 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 10 + ThumbLength = 10 + OnChange = TrackBarSizeIconHeightChange + end + object ButtonSizeReset: TButton + Left = 245 + Top = 212 + Width = 43 + Height = 17 + Caption = 'Reset' + TabOrder = 11 + OnClick = ButtonSizeResetClick + end + object TrackBarSizeReportWidth: TTrackBar + Left = 67 + Top = 376 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 13 + ThumbLength = 10 + OnChange = TrackBarSizeReportWidthChange + end + object TrackBarSizeIconSmallHeight: TTrackBar + Left = 66 + Top = 298 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 14 + ThumbLength = 10 + OnChange = TrackBarSizeIconSmallHeightChange + end + object TrackBarSizeIconSmallWidth: TTrackBar + Left = 66 + Top = 280 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 15 + ThumbLength = 10 + OnChange = TrackBarSizeIconSmallWidthChange + end + object TrackBarSizeThumbsHeight: TTrackBar + Left = 66 + Top = 446 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 16 + ThumbLength = 10 + OnChange = TrackBarSizeThumbsHeightChange + end + object TrackBarSizeThumbsWidth: TTrackBar + Left = 67 + Top = 426 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 17 + ThumbLength = 10 + OnChange = TrackBarSizeThumbsWidthChange + end + object TrackBarSizeTilesHeight: TTrackBar + Left = 67 + Top = 493 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 18 + ThumbLength = 10 + OnChange = TrackBarSizeTilesHeightChange + end + object TrackBarSizeTilesWidth: TTrackBar + Left = 66 + Top = 474 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 19 + ThumbLength = 10 + OnChange = TrackBarSizeTilesWidthChange + end + object TrackBarSizeListHeight: TTrackBar + Left = 66 + Top = 346 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 20 + ThumbLength = 10 + OnChange = TrackBarSizeListHeightChange + end + object TrackBarSizeListWidth: TTrackBar + Left = 66 + Top = 328 + Width = 180 + Height = 20 + Max = 300 + Frequency = 10 + TabOrder = 21 + ThumbLength = 10 + OnChange = TrackBarSizeListWidthChange + end + object EditTileDetailCount: TEdit + Left = 96 + Top = 124 + Width = 57 + Height = 21 + TabOrder = 22 + Text = '3' + OnExit = EditTileDetailCountExit + OnKeyPress = EditTileDetailCountKeyPress + end + object CheckBoxHideCaptions: TCheckBox + Left = 8 + Top = 168 + Width = 185 + Height = 17 + Caption = 'Hide Thumbnail Captions' + TabOrder = 23 + OnClick = CheckBoxHideCaptionsClick + end + object Button5: TButton + Left = 216 + Top = 8 + Width = 89 + Height = 25 + Caption = 'Delete Selected' + TabOrder = 24 + OnClick = Button5Click + end + object CheckBoxStateImages: TCheckBox + Left = 8 + Top = 184 + Width = 169 + Height = 17 + Caption = 'State Images in Details mode' + TabOrder = 25 + OnClick = CheckBoxStateImagesClick + end + object CheckBoxSnapHorzScroll: TCheckBox + Left = 168 + Top = 168 + Width = 169 + Height = 17 + Caption = 'Snap Horz Scroll (List Mode)' + Checked = True + State = cbChecked + TabOrder = 26 + OnClick = CheckBoxSnapHorzScrollClick + end + end + object TabSheet6: TTabSheet + Caption = 'Groups' + ImageIndex = 5 + object Label1: TLabel + Left = 24 + Top = 72 + Width = 79 + Height = 13 + Caption = 'Band Start Color' + end + object Label14: TLabel + Left = 112 + Top = 72 + Width = 73 + Height = 13 + Caption = 'Band End Color' + end + object Label23: TLabel + Left = 16 + Top = 118 + Width = 73 + Height = 13 + Caption = 'Band Thickness' + end + object Bevel3: TBevel + Left = 16 + Top = 320 + Width = 177 + Height = 57 + end + object Label24: TLabel + Left = 16 + Top = 320 + Width = 37 + Height = 13 + Caption = 'Margins' + end + object Label25: TLabel + Left = 16 + Top = 142 + Width = 60 + Height = 13 + Caption = 'Band Length' + FocusControl = Button2 + end + object Label59: TLabel + Left = 16 + Top = 165 + Width = 59 + Height = 13 + Caption = 'Band Margin' + end + object Label60: TLabel + Left = 16 + Top = 189 + Width = 59 + Height = 13 + Caption = 'Band Indent' + end + object Label61: TLabel + Left = 24 + Top = 386 + Width = 18 + Height = 13 + Caption = 'Top' + end + object Label62: TLabel + Left = 24 + Top = 410 + Width = 34 + Height = 13 + Caption = 'Bottom' + end + object Label63: TLabel + Left = 152 + Top = 387 + Width = 19 + Height = 13 + Caption = 'Left' + end + object Label64: TLabel + Left = 152 + Top = 412 + Width = 25 + Height = 13 + Caption = 'Right' + end + object CheckBoxGroupExpandable: TCheckBox + Left = 16 + Top = 32 + Width = 89 + Height = 17 + Caption = 'Expandable' + TabOrder = 0 + OnClick = CheckBoxGroupExpandableClick + end + object CheckBoxBlendedBand: TCheckBox + Left = 16 + Top = 48 + Width = 97 + Height = 17 + Caption = 'Blended Band' + TabOrder = 1 + OnClick = CheckBoxBlendedBandClick + end + object PanelBandStartColor: TPanel + Left = 32 + Top = 88 + Width = 57 + Height = 17 + TabOrder = 2 + OnClick = PanelBandStartColorClick + end + object PanelBandFadeColor: TPanel + Left = 120 + Top = 88 + Width = 57 + Height = 17 + TabOrder = 3 + OnClick = PanelBandFadeColorClick + end + object EditBandWidth: TEdit + Left = 96 + Top = 112 + Width = 57 + Height = 21 + TabOrder = 4 + Text = 'EditBandWidth' + OnExit = EditBandWidthExit + OnKeyPress = EditBandWidthKeyPress + end + object CheckBoxMarginTop: TCheckBox + Left = 32 + Top = 336 + Width = 57 + Height = 17 + Caption = 'Top' + Checked = True + State = cbChecked + TabOrder = 5 + OnClick = CheckBoxMarginTopClick + end + object CheckBoxMarginLeft: TCheckBox + Left = 32 + Top = 352 + Width = 57 + Height = 17 + Caption = 'Left' + TabOrder = 6 + OnClick = CheckBoxMarginLeftClick + end + object CheckBoxMarginRight: TCheckBox + Left = 104 + Top = 352 + Width = 57 + Height = 17 + Caption = 'Right' + TabOrder = 7 + OnClick = CheckBoxMarginRightClick + end + object CheckBoxMarginBottom: TCheckBox + Left = 104 + Top = 336 + Width = 57 + Height = 17 + Caption = 'Bottom' + TabOrder = 8 + OnClick = CheckBoxMarginBottomClick + end + object EditBandLength: TEdit + Left = 96 + Top = 136 + Width = 57 + Height = 21 + TabOrder = 9 + Text = 'EditBandLength' + OnExit = EditBandLengthExit + OnKeyPress = EditBandLengthKeyPress + end + object CheckBoxBandTracksWindow: TCheckBox + Left = 16 + Top = 224 + Width = 169 + Height = 17 + Caption = 'Band Length Tracks Window' + TabOrder = 10 + OnClick = CheckBoxBandTracksWindowClick + end + object ButtonExpandAll: TButton + Left = 16 + Top = 456 + Width = 75 + Height = 25 + Caption = 'Expand All' + TabOrder = 11 + OnClick = ButtonExpandAllClick + end + object ButtonCollapseAll: TButton + Left = 104 + Top = 456 + Width = 75 + Height = 25 + Caption = 'Collapse All' + TabOrder = 12 + OnClick = ButtonCollapseAllClick + end + object CheckBoxShowGroupMargins: TCheckBox + Left = 8 + Top = 8 + Width = 161 + Height = 17 + Caption = 'Show Group Margins' + TabOrder = 13 + OnClick = CheckBoxShowGroupMarginsClick + end + object EditBandMargin: TEdit + Left = 96 + Top = 160 + Width = 57 + Height = 21 + TabOrder = 14 + Text = 'EditBandMargin' + OnExit = EditBandMarginExit + OnKeyPress = EditBandMarginKeyPress + end + object RadioGroupGroupVAlign: TRadioGroup + Left = 152 + Top = 248 + Width = 161 + Height = 65 + Caption = 'Vertical Alignment' + Columns = 2 + Items.Strings = ( + 'Top' + 'Bottom' + 'Center') + TabOrder = 15 + OnClick = RadioGroupGroupVAlignClick + end + object RadioGroupGroupHAlign: TRadioGroup + Left = 16 + Top = 248 + Width = 129 + Height = 65 + Caption = 'Horz Alignment' + Columns = 2 + Items.Strings = ( + 'Left' + 'Right' + 'Center') + TabOrder = 16 + OnClick = RadioGroupGroupHAlignClick + end + object EditBandIndent: TEdit + Left = 96 + Top = 184 + Width = 57 + Height = 21 + TabOrder = 17 + Text = 'EditBandIndent' + OnExit = EditBandIndentExit + OnKeyPress = EditBandIndentKeyPress + end + object EditGroupMarginTop: TEdit + Left = 64 + Top = 384 + Width = 73 + Height = 21 + TabOrder = 18 + Text = 'EditGroupMarginTop' + OnExit = EditGroupMarginTopExit + OnKeyPress = EditGroupMarginTopKeyPress + end + object EditGroupMarginBottom: TEdit + Left = 64 + Top = 408 + Width = 73 + Height = 21 + TabOrder = 19 + Text = 'EditGroupMarginBottom' + OnExit = EditGroupMarginTopExit + OnKeyPress = EditGroupMarginTopKeyPress + end + object EditGroupMarginLeft: TEdit + Left = 184 + Top = 384 + Width = 73 + Height = 21 + TabOrder = 20 + Text = 'EditGroupMarginLeft' + OnExit = EditGroupMarginTopExit + OnKeyPress = EditGroupMarginTopKeyPress + end + object EditGroupMarginRight: TEdit + Left = 184 + Top = 408 + Width = 73 + Height = 21 + TabOrder = 21 + Text = 'EditGroupMarginRight' + OnExit = EditGroupMarginTopExit + OnKeyPress = EditGroupMarginTopKeyPress + end + end + object TabSheet2: TTabSheet + Caption = 'Visibility' + ImageIndex = 1 + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 347 + Height = 105 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Panel4: TPanel + Left = 0 + Top = 0 + Width = 347 + Height = 105 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object CheckBoxVisHideItems: TCheckBox + Left = 8 + Top = 8 + Width = 129 + Height = 17 + Caption = 'Hide Every Other Item' + TabOrder = 0 + OnClick = CheckBoxVisHideItemsClick + end + object CheckBoxVisHideGroups: TCheckBox + Left = 8 + Top = 24 + Width = 137 + Height = 17 + Caption = 'Hide Every Other Group' + TabOrder = 1 + OnClick = CheckBoxVisHideGroupsClick + end + end + end + end + object TabSheet3: TTabSheet + Caption = 'Selection' + ImageIndex = 2 + object Bevel4: TBevel + Left = 8 + Top = 0 + Width = 297 + Height = 265 + end + object Bevel1: TBevel + Left = 8 + Top = 400 + Width = 297 + Height = 57 + end + object Bevel2: TBevel + Left = 8 + Top = 280 + Width = 297 + Height = 105 + end + object LabelSelBlendAlpha: TLabel + Left = 160 + Top = 336 + Width = 6 + Height = 13 + Caption = '0' + end + object Label6: TLabel + Left = 16 + Top = 320 + Width = 56 + Height = 13 + Caption = 'Blend Alpha' + end + object Label7: TLabel + Left = 52 + Top = 362 + Width = 96 + Height = 13 + Caption = 'Sel Rect Blend Color' + end + object Label8: TLabel + Left = 56 + Top = 106 + Width = 60 + Height = 13 + Caption = 'Border Color' + end + object LabelSelColor: TLabel + Left = 56 + Top = 122 + Width = 25 + Height = 13 + Caption = 'Color' + end + object LabelSelInactiveColor: TLabel + Left = 160 + Top = 106 + Width = 67 + Height = 13 + Caption = 'Inactive Color' + end + object LabelSelInactiveBorderColor: TLabel + Left = 160 + Top = 122 + Width = 102 + Height = 13 + Caption = 'Inactive Border Color' + end + object LabelSelInactiveTextColor: TLabel + Left = 160 + Top = 138 + Width = 92 + Height = 13 + Caption = 'Inactive Text Color' + end + object Label1SelTextColor: TLabel + Left = 56 + Top = 138 + Width = 50 + Height = 13 + Caption = 'Text Color' + end + object Label9: TLabel + Left = 104 + Top = 162 + Width = 32 + Height = 13 + Caption = 'Radius' + end + object Label10: TLabel + Left = 24 + Top = 410 + Width = 76 + Height = 13 + Caption = 'Delay Time (ms)' + end + object Label11: TLabel + Left = 24 + Top = 436 + Width = 74 + Height = 13 + Caption = 'Scroll Time (ms)' + end + object Label12: TLabel + Left = 152 + Top = 436 + Width = 55 + Height = 13 + Caption = 'Accelerator' + end + object Label13: TLabel + Left = 144 + Top = 410 + Width = 97 + Height = 13 + Caption = 'Edge Margin (pixels)' + end + object Label15: TLabel + Left = 192 + Top = 360 + Width = 102 + Height = 13 + Caption = 'Sel Rect Border Color' + end + object Label16: TLabel + Left = 8 + Top = 280 + Width = 94 + Height = 13 + Caption = 'Selection Rectangle' + end + object Label19: TLabel + Left = 224 + Top = 480 + Width = 60 + Height = 13 + Caption = 'Group Index' + end + object Label20: TLabel + Left = 8 + Top = 504 + Width = 55 + Height = 13 + Caption = 'Selection...' + end + object Label44: TLabel + Left = 16 + Top = 184 + Width = 56 + Height = 13 + Caption = 'Blend Alpha' + end + object LabelBlendAlphaTextRect: TLabel + Left = 216 + Top = 184 + Width = 6 + Height = 13 + Caption = '0' + end + object CheckBoxSelMulti: TCheckBox + Left = 16 + Top = 64 + Width = 81 + Height = 17 + Caption = 'Multi-Select' + TabOrder = 0 + OnClick = CheckBoxSelMultiClick + end + object CheckBoxSelEnabled: TCheckBox + Left = 8 + Top = 0 + Width = 73 + Height = 17 + Caption = 'Enabled' + TabOrder = 1 + OnClick = CheckBoxSelEnabledClick + end + object CheckBoxSelAlphaRect: TCheckBox + Left = 24 + Top = 296 + Width = 161 + Height = 17 + Caption = 'Alpha-Blend Selection Rect' + TabOrder = 2 + OnClick = CheckBoxSelAlphaRectClick + end + object TrackBarSelBlendAlpha: TTrackBar + Left = 16 + Top = 336 + Width = 129 + Height = 25 + Max = 255 + Frequency = 8 + TabOrder = 3 + ThumbLength = 10 + OnChange = TrackBarSelBlendAlphaChange + end + object PanelSelRectBlendColor: TPanel + Left = 12 + Top = 360 + Width = 33 + Height = 16 + TabOrder = 4 + OnClick = PanelSelRectBlendColorClick + end + object PanelSelBorderColor: TPanel + Left = 16 + Top = 101 + Width = 33 + Height = 16 + TabOrder = 5 + OnClick = PanelSelBorderColorClick + end + object PanelSelColor: TPanel + Left = 16 + Top = 117 + Width = 33 + Height = 16 + TabOrder = 6 + OnClick = PanelSelColorClick + end + object PanelSelTextColor: TPanel + Left = 16 + Top = 133 + Width = 33 + Height = 16 + TabOrder = 7 + OnClick = PanelSelTextColorClick + end + object PanelSelInactiveColor: TPanel + Left = 120 + Top = 101 + Width = 33 + Height = 16 + TabOrder = 8 + OnClick = PanelSelInactiveColorClick + end + object PanelSelInactiveBorderColor: TPanel + Left = 120 + Top = 117 + Width = 33 + Height = 16 + TabOrder = 9 + OnClick = PanelSelInactiveBorderColorClick + end + object PanelSelInactiveTextColor: TPanel + Left = 120 + Top = 133 + Width = 33 + Height = 16 + TabOrder = 10 + OnClick = PanelSelInactiveTextColorClick + end + object CheckBoxSelFullRow: TCheckBox + Left = 16 + Top = 32 + Width = 81 + Height = 17 + Caption = 'Row Select' + TabOrder = 11 + OnClick = CheckBoxSelFullRowClick + end + object CheckBoxSelRound: TCheckBox + Left = 16 + Top = 168 + Width = 77 + Height = 17 + Caption = 'Round Rect' + TabOrder = 12 + OnClick = CheckBoxSelRoundClick + end + object EditSelRoundRadius: TEdit + Left = 144 + Top = 160 + Width = 33 + Height = 21 + TabOrder = 13 + Text = '4' + OnExit = EditSelRoundRadiusExit + OnKeyPress = EditSelRoundRadiusKeyPress + end + object CheckBoxShowFocusRect: TCheckBox + Left = 16 + Top = 16 + Width = 105 + Height = 17 + Caption = 'Show Focus Rect' + TabOrder = 14 + OnClick = CheckBoxShowFocusRectClick + end + object CheckBoxSelDragRect: TCheckBox + Left = 120 + Top = 16 + Width = 113 + Height = 17 + Caption = 'Enable Drag Rect' + TabOrder = 15 + OnClick = CheckBoxSelDragRectClick + end + object CheckBoxSelAutoScroll: TCheckBox + Left = 8 + Top = 392 + Width = 97 + Height = 17 + Caption = 'AutoScroll' + TabOrder = 16 + OnClick = CheckBoxSelAutoScrollClick + end + object EditSelScrollDelay: TEdit + Left = 112 + Top = 408 + Width = 25 + Height = 21 + TabOrder = 17 + Text = '500' + OnExit = EditSelExit + OnKeyPress = EditSelScrollDelayKeyPress + end + object EditSelScrollTime: TEdit + Left = 112 + Top = 432 + Width = 25 + Height = 21 + TabOrder = 18 + Text = '50' + OnExit = EditSelExit + OnKeyPress = EditSelScrollDelayKeyPress + end + object EditSelAccel: TEdit + Left = 248 + Top = 432 + Width = 25 + Height = 21 + TabOrder = 19 + Text = '2' + OnExit = EditSelExit + OnKeyPress = EditSelScrollDelayKeyPress + end + object EditSelEdgeMargin: TEdit + Left = 248 + Top = 408 + Width = 25 + Height = 21 + TabOrder = 20 + Text = '15' + OnExit = EditSelExit + OnKeyPress = EditSelScrollDelayKeyPress + end + object PanelSelRectBorderColor: TPanel + Left = 152 + Top = 360 + Width = 33 + Height = 16 + TabOrder = 21 + OnClick = PanelSelRectBorderColorClick + end + object CheckBoxSelAlphaBlend: TCheckBox + Left = 16 + Top = 152 + Width = 78 + Height = 17 + Caption = 'Alpha Blend' + TabOrder = 22 + OnClick = CheckBoxSelAlphaBlendClick + end + object ButtonSelFirst: TButton + Left = 8 + Top = 464 + Width = 75 + Height = 17 + Caption = 'First' + TabOrder = 23 + OnClick = ButtonSelFirstClick + end + object ButtonSelNext: TButton + Left = 88 + Top = 464 + Width = 75 + Height = 17 + Caption = 'Next' + TabOrder = 24 + OnClick = ButtonSelNextClick + end + object ButtonSelFirstInGroup: TButton + Left = 8 + Top = 480 + Width = 75 + Height = 17 + Caption = 'First in Group' + TabOrder = 25 + OnClick = ButtonSelFirstInGoupClick + end + object ButtonSelNextInGroup: TButton + Left = 88 + Top = 480 + Width = 75 + Height = 17 + Caption = 'Next in Group' + TabOrder = 26 + OnClick = ButtonSelNextInGroupClick + end + object EditSelGroup: TEdit + Left = 168 + Top = 478 + Width = 49 + Height = 21 + TabOrder = 27 + Text = '0' + end + object ButtonSelAll: TButton + Left = 72 + Top = 504 + Width = 33 + Height = 17 + Caption = 'All' + TabOrder = 28 + OnClick = ButtonSelAllClick + end + object ButtonSelClear: TButton + Left = 104 + Top = 504 + Width = 41 + Height = 17 + Caption = 'Clear' + TabOrder = 29 + OnClick = ButtonSelClearClick + end + object ButtonSelInvert: TButton + Left = 144 + Top = 504 + Width = 49 + Height = 17 + Caption = 'Invert' + TabOrder = 30 + OnClick = ButtonSelInvertClick + end + object CheckBoxSelLinearSelect: TCheckBox + Left = 16 + Top = 48 + Width = 105 + Height = 17 + Caption = 'Box Select' + TabOrder = 31 + OnClick = CheckBoxSelLinearSelectClick + end + object GroupBox2: TGroupBox + Left = 24 + Top = 224 + Width = 249 + Height = 33 + Caption = 'Mouse Button' + TabOrder = 32 + object CheckBoxSelMouseButtonL: TCheckBox + Left = 8 + Top = 14 + Width = 49 + Height = 17 + Caption = 'Left' + TabOrder = 0 + OnClick = CheckBoxSelMouseButtonLClick + end + object CheckBoxSelMouseButtonR: TCheckBox + Left = 96 + Top = 14 + Width = 57 + Height = 17 + Caption = 'Right' + TabOrder = 1 + OnClick = CheckBoxSelMouseButtonRClick + end + object CheckBoxSelMouseButtonM: TCheckBox + Left = 184 + Top = 14 + Width = 57 + Height = 17 + Caption = 'Middle' + TabOrder = 2 + OnClick = CheckBoxSelMouseButtonMClick + end + end + object GroupBox1: TGroupBox + Left = 192 + Top = 288 + Width = 73 + Height = 67 + Caption = 'Mouse Button' + TabOrder = 33 + object CheckBoxSelRectMouseButtonL: TCheckBox + Left = 8 + Top = 16 + Width = 49 + Height = 17 + Caption = 'Left' + TabOrder = 0 + OnClick = CheckBoxSelRectMouseButtonLClick + end + object CheckBoxSelRectMouseButtonR: TCheckBox + Left = 8 + Top = 32 + Width = 57 + Height = 17 + Caption = 'Right' + TabOrder = 1 + OnClick = CheckBoxSelRectMouseButtonRClick + end + object CheckBoxSelRectMouseButtonM: TCheckBox + Left = 8 + Top = 47 + Width = 57 + Height = 17 + Caption = 'Middle' + TabOrder = 2 + OnClick = CheckBoxSelRectMouseButtonMClick + end + end + object CheckBoxFullItemSelect: TCheckBox + Left = 120 + Top = 32 + Width = 145 + Height = 17 + Caption = 'Full Item Select Painting' + TabOrder = 34 + OnClick = CheckBoxFullItemSelectClick + end + object CheckBoxFullCellSelect: TCheckBox + Left = 120 + Top = 48 + Width = 145 + Height = 17 + Caption = 'Full Cell Select Painting' + TabOrder = 35 + OnClick = CheckBoxFullCellSelectClick + end + object CheckBoxGroupSelection: TCheckBox + Left = 120 + Top = 64 + Width = 169 + Height = 17 + Caption = 'Group Selection (Report Only)' + TabOrder = 36 + OnClick = CheckBoxGroupSelectionClick + end + object CheckBoxResizeGroup: TCheckBox + Left = 120 + Top = 80 + Width = 153 + Height = 17 + Caption = 'Resize Group On Focus' + TabOrder = 37 + OnClick = CheckBoxResizeGroupClick + end + object CheckBoxBlendIcon: TCheckBox + Left = 16 + Top = 80 + Width = 81 + Height = 17 + Caption = 'Blend Icon' + TabOrder = 38 + OnClick = CheckBoxBlendIconClick + end + object CheckBoxDragDrop: TCheckBox + Left = 192 + Top = 160 + Width = 97 + Height = 17 + Caption = 'Drag and Drop' + TabOrder = 39 + OnClick = CheckBoxDragDropClick + end + object TrackBarSelTextBlendAlpha: TTrackBar + Left = 80 + Top = 184 + Width = 129 + Height = 25 + Max = 255 + Frequency = 8 + TabOrder = 40 + ThumbLength = 10 + OnChange = TrackBarSelTextBlendAlphaChange + end + object CheckBoxSelectionGradient: TCheckBox + Left = 16 + Top = 204 + Width = 97 + Height = 17 + BiDiMode = bdLeftToRight + Caption = 'Gradient Effect' + ParentBiDiMode = False + TabOrder = 41 + OnClick = CheckBoxSelectionGradientClick + end + object PanelGradientTop: TPanel + Left = 120 + Top = 205 + Width = 33 + Height = 16 + TabOrder = 42 + OnClick = PanelGradientTopClick + end + object PanelGradientBottom: TPanel + Left = 160 + Top = 205 + Width = 33 + Height = 16 + TabOrder = 43 + OnClick = PanelGradientBottomClick + end + object CheckBoxSelectionBlurBkGnd: TCheckBox + Left = 208 + Top = 204 + Width = 81 + Height = 17 + Caption = 'Blur BkGnd' + TabOrder = 44 + OnClick = CheckBoxSelectionBlurBkGndClick + end + end + object TabSheet4: TTabSheet + Caption = 'Header' + ImageIndex = 3 + object Label58: TLabel + Left = 168 + Top = 8 + Width = 31 + Height = 13 + Caption = 'Height' + end + object CheckBoxShowHeader: TCheckBox + Left = 24 + Top = 8 + Width = 89 + Height = 17 + Caption = 'Show Header' + Checked = True + State = cbChecked + TabOrder = 0 + OnClick = CheckBoxShowHeaderClick + end + object EditMaxSizeWidth: TEdit + Left = 40 + Top = 64 + Width = 89 + Height = 21 + Enabled = False + TabOrder = 1 + Text = '250' + end + object CheckBoxMaxSizeWidth: TCheckBox + Left = 24 + Top = 40 + Width = 121 + Height = 17 + Caption = 'Max Sizing Width' + TabOrder = 2 + OnClick = CheckBoxMaxSizeWidthClick + end + object CheckBoxHilightColumn: TCheckBox + Left = 24 + Top = 96 + Width = 145 + Height = 17 + Caption = 'Hilight Column on Select' + TabOrder = 3 + OnClick = CheckBoxHilightColumnClick + end + object ButtonHilightColor: TButton + Left = 168 + Top = 96 + Width = 105 + Height = 25 + Caption = 'Hilight Color...' + TabOrder = 4 + OnClick = ButtonHilightColorClick + end + object CheckBoxGridLines: TCheckBox + Left = 24 + Top = 128 + Width = 97 + Height = 17 + Caption = 'Grid Lines' + TabOrder = 5 + OnClick = CheckBoxGridLinesClick + end + object ButtonGridLineColor: TButton + Left = 168 + Top = 120 + Width = 105 + Height = 25 + Caption = 'Grid Lines Color...' + TabOrder = 6 + OnClick = ButtonGridLineColorClick + end + object CheckBoxHeaderAlwaysVisible: TCheckBox + Left = 24 + Top = 24 + Width = 137 + Height = 17 + Caption = 'Show in All Views' + TabOrder = 7 + OnClick = CheckBoxHeaderAlwaysVisibleClick + end + object EditHeight: TEdit + Left = 176 + Top = 24 + Width = 97 + Height = 21 + TabOrder = 8 + Text = '17' + OnExit = EditHeightExit + OnKeyPress = EditHeightKeyPress + end + object GroupBox3: TGroupBox + Left = 168 + Top = 152 + Width = 169 + Height = 113 + Caption = 'DropDown Arrows' + TabOrder = 9 + object CheckBoxHeaderDropDownArrow: TCheckBox + Left = 8 + Top = 24 + Width = 113 + Height = 17 + Caption = 'Visible' + TabOrder = 0 + OnClick = CheckBoxHeaderDropDownArrowClick + end + object CheckBoxDropDownArrowAlwaysShow: TCheckBox + Left = 8 + Top = 40 + Width = 97 + Height = 17 + Caption = 'Always Show' + TabOrder = 1 + OnClick = CheckBoxDropDownArrowAlwaysShowClick + end + object CheckBoxDropDownButtonEnabled: TCheckBox + Left = 8 + Top = 56 + Width = 97 + Height = 17 + Caption = 'Enabled' + Checked = True + State = cbChecked + TabOrder = 2 + OnClick = CheckBoxDropDownButtonEnabledClick + end + object CheckBoxDropDownButtonCustomAction: TCheckBox + Left = 8 + Top = 72 + Width = 153 + Height = 17 + Caption = 'Do Custom Action On Click' + TabOrder = 3 + end + end + object GroupBox5: TGroupBox + Left = 8 + Top = 152 + Width = 153 + Height = 113 + Caption = 'Individual Column Attributes' + TabOrder = 10 + object CheckBoxHeaderHotTrack: TCheckBox + Left = 8 + Top = 24 + Width = 97 + Height = 17 + Caption = 'HotTrack' + TabOrder = 0 + OnClick = CheckBoxHeaderHotTrackClick + end + object CheckBoxHeaderSizeable: TCheckBox + Left = 8 + Top = 40 + Width = 97 + Height = 17 + Caption = 'Sizeable' + TabOrder = 1 + OnClick = CheckBoxHeaderSizeableClick + end + object CheckBoxHeaderClickable: TCheckBox + Left = 8 + Top = 56 + Width = 97 + Height = 17 + Caption = 'Clickable' + Checked = True + State = cbChecked + TabOrder = 2 + OnClick = CheckBoxHeaderClickableClick + end + object CheckBoxHeaderDraggable: TCheckBox + Left = 8 + Top = 72 + Width = 97 + Height = 17 + Caption = 'Draggable' + TabOrder = 3 + OnClick = CheckBoxHeaderDraggableClick + end + object CheckBoxAutoToggleSort: TCheckBox + Left = 8 + Top = 88 + Width = 121 + Height = 17 + Caption = 'Auto Toggle Sort' + Checked = True + State = cbChecked + TabOrder = 4 + OnClick = CheckBoxAutoToggleSortClick + end + end + end + object TabSheet5: TTabSheet + Caption = 'Checks' + ImageIndex = 4 + object Label2: TLabel + Left = 84 + Top = 32 + Width = 59 + Height = 13 + Caption = 'Item Checks' + end + object Label17: TLabel + Left = 16 + Top = 8 + Width = 81 + Height = 13 + Caption = 'Item Check Type' + end + object Label21: TLabel + Left = 16 + Top = 48 + Width = 88 + Height = 13 + Caption = 'Group Check Type' + end + object Label22: TLabel + Left = 16 + Top = 88 + Width = 94 + Height = 13 + Caption = 'Column Check Type' + end + object ComboBoxItemItemCheckType: TComboBox + Left = 22 + Top = 24 + Width = 121 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = Chnge + Items.Strings = ( + 'None' + 'None with Space' + 'Box' + 'Radio') + end + object ComboBoxItemGroupCheckType: TComboBox + Left = 22 + Top = 64 + Width = 121 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 1 + OnChange = ComboBoxItemGroupCheckTypeChange + Items.Strings = ( + 'None' + 'None with Space' + 'Box' + 'Radio') + end + object ComboBoxItemColumnCheckType: TComboBox + Left = 22 + Top = 104 + Width = 121 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + OnChange = ComboBoxItemColumnCheckTypeChange + Items.Strings = ( + 'None' + 'None with Space' + 'Box' + 'Radio') + end + end + object TabSheet7: TTabSheet + Caption = 'Streams' + ImageIndex = 6 + object Label35: TLabel + Left = 16 + Top = 24 + Width = 122 + Height = 13 + Caption = 'Save EasyListview To File' + end + object Label38: TLabel + Left = 16 + Top = 80 + Width = 133 + Height = 13 + Caption = 'Load EasyListview From File' + end + object Button1: TButton + Left = 176 + Top = 24 + Width = 75 + Height = 25 + Caption = 'Save...' + TabOrder = 0 + OnClick = Button1Click + end + object Button4: TButton + Left = 176 + Top = 72 + Width = 75 + Height = 25 + Caption = 'Load...' + TabOrder = 1 + OnClick = Button4Click + end + end + object TabSheet8: TTabSheet + Caption = 'Colors' + ImageIndex = 7 + object CheckBoxRandomItemCaptionColor: TCheckBox + Left = 16 + Top = 24 + Width = 177 + Height = 17 + Caption = 'Color Item Captions' + TabOrder = 0 + OnClick = CheckBoxRandomItemCaptionColorClick + end + object CheckBoxRandomGroupCaptionColor: TCheckBox + Left = 16 + Top = 40 + Width = 177 + Height = 17 + Caption = 'Random Group Caption Colors' + TabOrder = 1 + OnClick = CheckBoxRandomGroupCaptionColorClick + end + object CheckBoxRandomHeaderCaptionColors: TCheckBox + Left = 16 + Top = 56 + Width = 185 + Height = 17 + Caption = 'Random Header Caption Colors' + TabOrder = 2 + OnClick = CheckBoxRandomHeaderCaptionColorsClick + end + object CheckBoxRedDetails: TCheckBox + Left = 16 + Top = 88 + Width = 169 + Height = 17 + Caption = 'Paint Details Red' + TabOrder = 3 + OnClick = CheckBoxRedDetailsClick + end + end + object TabSheet9: TTabSheet + Caption = 'Incremental Search' + ImageIndex = 8 + object Label40: TLabel + Left = 16 + Top = 112 + Width = 60 + Height = 13 + Caption = 'Search Type' + end + object Label41: TLabel + Left = 16 + Top = 160 + Width = 51 + Height = 13 + Caption = 'Start Type' + end + object Label42: TLabel + Left = 16 + Top = 208 + Width = 77 + Height = 13 + Caption = 'Reset Time (ms)' + end + object Label43: TLabel + Left = 8 + Top = 264 + Width = 34 + Height = 13 + Caption = 'Query:' + end + object LabelQuery: TLabel + Left = 48 + Top = 264 + Width = 55 + Height = 13 + Caption = 'LabelQuery' + end + object Label45: TLabel + Left = 8 + Top = 304 + Width = 57 + Height = 13 + Caption = 'Item Index:' + end + object LabelItemIndex: TLabel + Left = 72 + Top = 304 + Width = 75 + Height = 13 + Caption = 'LabelItemIndex' + end + object CheckBoxIncrementalSearchEnable: TCheckBox + Left = 8 + Top = 16 + Width = 81 + Height = 17 + Caption = 'Enabled' + TabOrder = 0 + OnClick = CheckBoxIncrementalSearchEnableClick + end + object ComboBoxIncrementalSearchType: TComboBox + Left = 24 + Top = 128 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + ItemIndex = 0 + TabOrder = 1 + Text = 'eisiAll' + OnChange = ComboBoxIncrementalSearchTypeChange + Items.Strings = ( + 'eisiAll' + 'eisiInitializedOnly' + 'eisiVisible') + end + object ComboBoxIncrementalSearchStartType: TComboBox + Left = 24 + Top = 176 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + ItemIndex = 0 + TabOrder = 2 + Text = 'eissStartOver' + OnChange = ComboBoxIncrementalSearchStartTypeChange + Items.Strings = ( + 'eissStartOver' + 'eissLastHit' + 'eissFocusedNode') + end + object RadioGroupIncrementalSearchDir: TRadioGroup + Left = 16 + Top = 40 + Width = 137 + Height = 57 + Caption = 'Direction' + Items.Strings = ( + 'Forward' + 'Backward') + TabOrder = 3 + OnClick = RadioGroupIncrementalSearchDirClick + end + object EditIncrementalSearchResetTime: TEdit + Left = 24 + Top = 224 + Width = 121 + Height = 21 + TabOrder = 4 + Text = '1000' + OnExit = EditIncrementalSearchResetTimeExit + OnKeyPress = EditIncrementalSearchResetTimeKeyPress + end + end + object TabSheet10: TTabSheet + Caption = 'DragDrop' + ImageIndex = 9 + object CheckBoxDragDropEnabled: TCheckBox + Left = 16 + Top = 32 + Width = 97 + Height = 17 + Caption = 'Enabled' + TabOrder = 0 + OnClick = CheckBoxDragDropEnabledClick + end + end + object TabSheet11: TTabSheet + Caption = 'HotTracking' + ImageIndex = 10 + object Label46: TLabel + Left = 16 + Top = 376 + Width = 111 + Height = 13 + Caption = 'Group not Hot Tracking' + end + object Label48: TLabel + Left = 16 + Top = 416 + Width = 104 + Height = 13 + Caption = 'Item not Hot Tracking' + end + object Label50: TLabel + Left = 8 + Top = 400 + Width = 27 + Height = 13 + Caption = 'Items' + FocusControl = Button1 + end + object Label51: TLabel + Left = 8 + Top = 360 + Width = 34 + Height = 13 + Caption = 'Groups' + end + object Label47: TLabel + Left = 8 + Top = 8 + Width = 253 + Height = 26 + Caption = + 'Events are fired for hottracking of items and Groups. The contr' + + 'ol must have the focus.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object CheckBoxHotTrackEnable: TCheckBox + Left = 16 + Top = 56 + Width = 97 + Height = 17 + Caption = 'Enabled' + TabOrder = 0 + OnClick = CheckBoxHotTrackEnableClick + end + object GroupBoxGroupHotTrack: TGroupBox + Left = 24 + Top = 96 + Width = 225 + Height = 89 + Caption = 'Group Hot Track Area' + TabOrder = 1 + object CheckBoxGroupHitIcon: TCheckBox + Left = 8 + Top = 16 + Width = 97 + Height = 17 + Caption = 'Icon' + TabOrder = 0 + OnClick = CheckBoxGroupHitIconClick + end + object CheckBoxGroupHitText: TCheckBox + Left = 8 + Top = 32 + Width = 97 + Height = 17 + Caption = 'Text' + TabOrder = 1 + OnClick = CheckBoxGroupHitTextClick + end + object CheckBoxGroupHitTop: TCheckBox + Left = 8 + Top = 48 + Width = 97 + Height = 17 + Caption = 'Top Margin' + TabOrder = 2 + OnClick = CheckBoxGroupHitTopClick + end + object CheckBoxGroupHitBottom: TCheckBox + Left = 8 + Top = 64 + Width = 97 + Height = 17 + Caption = 'Bottom Margin' + TabOrder = 3 + OnClick = CheckBoxGroupHitBottomClick + end + object CheckBoxGroupHitLeft: TCheckBox + Left = 128 + Top = 16 + Width = 89 + Height = 17 + Caption = 'Left Margin' + TabOrder = 4 + OnClick = CheckBoxGroupHitLeftClick + end + object CheckBoxGroupHitRight: TCheckBox + Left = 128 + Top = 32 + Width = 89 + Height = 17 + Caption = 'Right Margin' + TabOrder = 5 + OnClick = CheckBoxGroupHitRightClick + end + object CheckBoxGroupHitAnywhere: TCheckBox + Left = 128 + Top = 48 + Width = 89 + Height = 17 + Caption = 'AnyWhere' + TabOrder = 6 + OnClick = CheckBoxGroupHitAnywhereClick + end + end + object GroupBox4: TGroupBox + Left = 24 + Top = 192 + Width = 225 + Height = 73 + Caption = 'Item Hot Track Area' + TabOrder = 2 + object CheckBoxItemHitIcon: TCheckBox + Left = 8 + Top = 16 + Width = 97 + Height = 17 + Caption = 'Icon' + TabOrder = 0 + OnClick = CheckBoxItemHitIconClick + end + object CheckBoxItemHitText: TCheckBox + Left = 8 + Top = 32 + Width = 97 + Height = 17 + Caption = 'Text' + TabOrder = 1 + OnClick = CheckBoxItemHitTextClick + end + object CheckBoxItemHitAnyWhere: TCheckBox + Left = 8 + Top = 48 + Width = 97 + Height = 17 + Caption = 'AnyWhere' + TabOrder = 2 + OnClick = CheckBoxItemHitAnyWhereClick + end + end + object CheckBoxUnderLineText: TCheckBox + Left = 24 + Top = 272 + Width = 97 + Height = 17 + Caption = 'UnderLine Text' + TabOrder = 3 + OnClick = CheckBoxUnderLineTextClick + end + object CheckBoxHotTrackFocusOnly: TCheckBox + Left = 24 + Top = 288 + Width = 209 + Height = 17 + Caption = 'Track when Control has Focus Only' + TabOrder = 4 + OnClick = CheckBoxHotTrackFocusOnlyClick + end + end + object TabSheet12: TTabSheet + Caption = 'Background' + ImageIndex = 11 + object Bevel6: TBevel + Left = 8 + Top = 216 + Width = 257 + Height = 161 + end + object Label49: TLabel + Left = 8 + Top = 208 + Width = 106 + Height = 13 + Caption = 'Fixed Backgound Text' + end + object Bevel7: TBevel + Left = 8 + Top = 8 + Width = 257 + Height = 185 + end + object Label52: TLabel + Left = 8 + Top = 0 + Width = 91 + Height = 13 + Caption = 'Background Bitmap' + end + object Label53: TLabel + Left = 16 + Top = 128 + Width = 37 + Height = 13 + Caption = 'XOffset' + end + object Label55: TLabel + Left = 16 + Top = 152 + Width = 37 + Height = 13 + Caption = 'YOffset' + end + object Label54: TLabel + Left = 16 + Top = 48 + Width = 30 + Height = 13 + Caption = 'Image' + end + object Bevel8: TBevel + Left = 8 + Top = 384 + Width = 257 + Height = 105 + end + object Label56: TLabel + Left = 8 + Top = 384 + Width = 126 + Height = 13 + Caption = 'CustomDrawn Background' + end + object Label57: TLabel + Left = 40 + Top = 440 + Width = 27 + Height = 13 + Caption = 'Alpha' + end + object EditBkGndCaption: TEdit + Left = 96 + Top = 232 + Width = 121 + Height = 21 + TabOrder = 0 + Text = 'Background Text' + OnChange = EditBkGndCaptionChange + end + object CheckBoxBkGndText: TCheckBox + Left = 16 + Top = 232 + Width = 81 + Height = 17 + Caption = 'Show Text' + TabOrder = 1 + OnClick = CheckBoxBkGndTextClick + end + object CheckBoxBkGnd: TCheckBox + Left = 16 + Top = 24 + Width = 97 + Height = 17 + Caption = 'Show Image' + TabOrder = 2 + OnClick = CheckBoxBkGndClick + end + object CheckBoxBkGndCaptionOnlyWhenEmpty: TCheckBox + Left = 16 + Top = 336 + Width = 225 + Height = 17 + Caption = 'Show Only when Control is Empty' + TabOrder = 3 + OnClick = CheckBoxBkGndCaptionOnlyWhenEmptyClick + end + object RadioGroupBkGndCaptionAlignment: TRadioGroup + Left = 16 + Top = 256 + Width = 113 + Height = 73 + Caption = 'Alignment' + Items.Strings = ( + 'Left' + 'Right' + 'Center') + TabOrder = 4 + OnClick = RadioGroupBkGndCaptionAlignmentClick + end + object RadioGroupBkGndCaptionVAlignment: TRadioGroup + Left = 136 + Top = 256 + Width = 113 + Height = 73 + Caption = 'Vertical Alignment' + Items.Strings = ( + 'Top' + 'Bottom' + 'Center') + TabOrder = 5 + OnClick = RadioGroupBkGndCaptionVAlignmentClick + end + object CheckBoxBkGndCaptionSingleLine: TCheckBox + Left = 16 + Top = 352 + Width = 97 + Height = 17 + Caption = 'Single Line' + TabOrder = 6 + OnClick = CheckBoxBkGndCaptionSingleLineClick + end + object CheckBoxBkGndTile: TCheckBox + Left = 16 + Top = 72 + Width = 97 + Height = 17 + Caption = 'Tile' + TabOrder = 7 + OnClick = CheckBoxBkGndTileClick + end + object CheckBoxBkGndTransparent: TCheckBox + Left = 16 + Top = 88 + Width = 97 + Height = 17 + Caption = 'Transparent' + TabOrder = 8 + OnClick = CheckBoxBkGndTransparentClick + end + object TrackBarBkGndXOffset: TTrackBar + Left = 64 + Top = 128 + Width = 150 + Height = 25 + Max = 100 + Frequency = 10 + TabOrder = 9 + ThumbLength = 10 + OnChange = TrackBarBkGndXOffsetChange + end + object TrackBarBkGndYOffset: TTrackBar + Left = 64 + Top = 152 + Width = 150 + Height = 25 + Max = 100 + Frequency = 10 + TabOrder = 10 + ThumbLength = 10 + OnChange = TrackBarBkGndYOffsetChange + end + object CheckBoxTrackOffsets: TCheckBox + Left = 16 + Top = 104 + Width = 97 + Height = 17 + Caption = 'Track Offsets' + TabOrder = 11 + OnClick = CheckBoxTrackOffsetsClick + end + object EditBkGndImage: TEdit + Left = 56 + Top = 48 + Width = 177 + Height = 21 + TabOrder = 12 + end + object ButtonBkGndLoadImage: TButton + Left = 232 + Top = 47 + Width = 27 + Height = 22 + Caption = '...' + TabOrder = 13 + OnClick = ButtonBkGndLoadImageClick + end + object CheckBoxBkGndCustomDraw: TCheckBox + Left = 16 + Top = 400 + Width = 97 + Height = 17 + Caption = 'CustomDraw' + TabOrder = 14 + OnClick = CheckBoxBkGndCustomDrawClick + end + object CheckBoxCustomBkGndAlphaBlend: TCheckBox + Left = 32 + Top = 420 + Width = 97 + Height = 17 + Caption = 'AlphaBlend' + TabOrder = 15 + OnClick = CheckBoxCustomBkGndAlphaBlendClick + end + object TrackBarCustomDrawBkGnd: TTrackBar + Left = 72 + Top = 440 + Width = 150 + Height = 25 + Max = 255 + Frequency = 8 + TabOrder = 16 + ThumbLength = 10 + OnChange = TrackBarCustomDrawBkGndChange + end + end + end + end + object EasyListview1: TEasyListview + Left = 363 + Top = 33 + Width = 427 + Height = 552 + Align = alClient + BackGround.AlphaBlend = True + BackGround.BlendAlpha = 192 + BackGround.Caption = 'This text is shown in the background of the control' + BackGround.Image.Data = { + 36180000424D3618000000000000360800002800000020000000200000000100 + 2000000000000010000000000000000000000001000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA + A6000020400000206000002080000020A0000020C0000020E000004000000040 + 20000040400000406000004080000040A0000040C0000040E000006000000060 + 20000060400000606000006080000060A0000060C0000060E000008000000080 + 20000080400000806000008080000080A0000080C0000080E00000A0000000A0 + 200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0 + 200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0 + 200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000 + 20004000400040006000400080004000A0004000C0004000E000402000004020 + 20004020400040206000402080004020A0004020C0004020E000404000004040 + 20004040400040406000404080004040A0004040C0004040E000406000004060 + 20004060400040606000406080004060A0004060C0004060E000408000004080 + 20004080400040806000408080004080A0004080C0004080E00040A0000040A0 + 200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0 + 200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0 + 200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000 + 20008000400080006000800080008000A0008000C0008000E000802000008020 + 20008020400080206000802080008020A0008020C0008020E000804000008040 + 20008040400080406000804080008040A0008040C0008040E000806000008060 + 20008060400080606000806080008060A0008060C0008060E000808000008080 + 20008080400080806000808080008080A0008080C0008080E00080A0000080A0 + 200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0 + 200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0 + 200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000 + 2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020 + 2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040 + 2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060 + 2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080 + 2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0 + 2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0 + 2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0C0C000A4A0A00080808000C0A0A000FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00A4A0A000808080004060A0008080A000C0A0 + A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF0080A0C00040A0E0004080E0004060A0008080 + A000C0A0A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF0080C0E00040C0E00040A0E0004080E0004060 + A0008080A000C0A0A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF0080C0E00040C0E00040A0E0004080 + E0004060A0008080A000C0A0A000FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080C0E00040C0E00040A0 + E0004080E0004060A0008080A000C0A0A000FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080C0E00040C0 + E00040A0E0004080E0004060A0008080A000C0A0C000FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080C0 + E00040C0E00040A0E0004080E0004060A000A4A0A000FF00FF00FF00FF00FF00 + FF00C0C0C000C0C0C000C0DCC000C0DCC000C0DCC000FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF0080C0E00040C0E00040A0E0004080C0008080A000C0C0C000C0C0C000C0A0 + A000C0A08000C0A08000C0A0A000C0C0A000C0A0A000C0A0A000C0C0C000FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF0080E0E00080C0E000C0C0C000A4A0A000C0808000C0A08000F0CA + A600F0CAA600FFFFFF00FFFFFF00FFFFFF00F0CAA600F0CAA600C0A0A000C0A0 + A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0DCC000C0A0A000C0A08000F0CAA600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0FBFF00C0A0 + A000C0A0A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0C0C000C0A08000F0CAA600FFFFFF00F0CA + A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0FB + FF00C0A08000C0DCC000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0C0C000F0CAA600F0CAA600F0CAA600F0CA + A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F0CAA600C0808000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C0DCC000C0A0A000F0CAA600F0CAA600F0CAA600F0CA + A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F0CAA600C0808000C0DCC000FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C0DCC000C0A0A000F0CAA600F0CAA600F0CAA600F0CA + A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C0A08000C0DCC000FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C0DCC000C0A0A000FFFFFF00F0CAA600F0CAA600F0CA + A600F0CAA600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C0A08000C0DCC000FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C0DCC000C0A0A000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F0CAA600C0808000C0DCC000FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0A0A000F0CAA600FFFFFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600FFFFFF00FFFFFF00F0CAA600FFFF + FF00F0CAA600C0808000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0C0C000F0CAA600FFFFFF00FFFFFF00FFFF + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0A08000C0A0A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C0DCC000C0A0A000F0CAA600FFFFFF00FFFF + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0A0A000F0FBFF00FFFF + FF00FFFFFF00FFFFFF00F0CAA600F0CAA600FFFFFF00F0CAA600F0CAA600C080 + 8000C0DCC000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0DCC000C0808000C0A0 + A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0A000C0A0A000C0DC + C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0 + C000C0808000C0808000C0808000C0A0A000C0A0A000C0C0C000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + BackGround.OffsetTrack = True + BackGround.OffsetX = -44 + BackGround.OffsetY = -2 + BackGround.Transparent = True + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Enabled = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = ANSI_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -13 + GroupFont.Name = 'Comic Sans MS' + GroupFont.Style = [fsBold] + HintAlignment = taLeftJustify + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + IncrementalSearch.Enabled = True + ImagesGroup = Imagelists.ImageListGroups + ImagesSmall = Imagelists.ImageListSmall + ImagesLarge = Imagelists.ImageListLarge + ImagesExLarge = Imagelists.ImageListExLarge + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoItem.ShowBorder = False + ParentFont = False + ShowGroupMargins = True + TabOrder = 2 + Themed = False + View = elsIcon + OnColumnClick = EasyListview1ColumnClick + OnColumnDropDownButtonClick = EasyListview1ColumnDropDownButtonClick + OnColumnGetCaption = EasyListview1ColumnGetCaption + OnColumnGetImageIndex = EasyListview1ColumnGetImageIndex + OnColumnInitialize = EasyListview1ColumnInitialize + OnColumnPaintText = EasyListview1ColumnPaintText + OnColumnSizeChanging = EasyListview1ColumnSizeChanging + OnGroupFreeing = EasyListview1GroupFreeing + OnGroupGetCaption = EasyListview1GroupGetCaption + OnGroupGetImageIndex = EasyListview1GroupGetImageIndex + OnGroupInitialize = EasyListview1GroupInitialize + OnGroupPaintText = EasyListview1GroupPaintText + OnGroupHotTrack = EasyListview1GroupHotTrack + OnIncrementalSearch = EasyListview1IncrementalSearch + OnItemFreeing = EasyListview1ItemFreeing + OnItemGetCaption = EasyListview1ItemGetCaption + OnItemGetImageIndex = EasyListview1ItemGetImageIndex + OnItemGetTileDetail = EasyListview1ItemGetTileDetail + OnItemGetTileDetailCount = EasyListview1ItemGetTileDetailCount + OnItemHotTrack = EasyListview1ItemHotTrack + OnItemPaintText = EasyListview1ItemPaintText + OnItemSelectionChanged = EasyListview1ItemSelectionChanged + OnItemVisibilityChanged = EasyListview1ItemVisibilityChanged + OnOLEDragStart = EasyListview1OLEDragStart + OnOLEDragOver = EasyListview1OLEDragOver + OnPaintBkGnd = EasyListview1PaintBkGnd + end + object StaticText1: TStaticText + Left = 0 + Top = 0 + Width = 790 + Height = 33 + Align = alTop + AutoSize = False + BevelKind = bkFlat + BorderStyle = sbsSingle + Caption = + 'NOTE: Running the demo through the IDE and creating large numbe' + + 'rs of items may be slow closing. This is apparently do to the W' + + 'indows Unicode string deletion to be effected by the IDE. Runni' + + 'ng the demo outside the IDE greatly increases the speed of the a' + + 'pplication.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + ParentFont = False + TabOrder = 3 + end + object ColorDialog1: TColorDialog + Left = 320 + Top = 478 + end + object OpenDialogStream: TOpenDialog + Left = 320 + Top = 450 + end + object SaveDialogStream: TSaveDialog + Left = 320 + Top = 424 + end + object ImageListState: TImageList + Left = 320 + Top = 398 + Bitmap = { + 494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 000000000000000000000000000000000000000000FF000000FF000000FF0000 + 00FFF0DFE7FFC987A8FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FFDCCAD1FF9C727FFF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FFB8BCAFFF3A7530FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FF0000 + 00FFBD6293FFFE88D3FFDE75B7FFD09BB6FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF927178FFC4BBBBFFB3A3A3FFA57D8BFF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF158521FF13DD77FF11BD53FF517744FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FFF9F2 + F6FFF995DAFFF282C4FFF385C7FFFE9CE0FFEE99D7FFC06C99FFE1BFD0FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FFF1E9 + EDFFCFC4C4FFA49C9CFFA39B9BFFBEB7B7FFC3B6B6FF95757BFFC1A1ADFF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FFE2E1 + DEFF1EDC7BFF18C85FFF1BC961FF26E07FFF2AD578FF258A2CFF849176FF0000 + 00FF000000FF000000FF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FFBC63 + 93FFF898D9FFF492D1FFF596D5FFF69ADAFFF69EDDFFF9A7E5FFFEDBF9FFE1A5 + CEFFC46FA2FFC379A0FFCD96B2FF000000FF000000FF000000FF000000FF9171 + 77FFBCB5B5FFACA4A4FFABA3A3FFAAA2A2FFA7A0A0FFADA5A5FFDEDADAFFBCAF + AFFF997F82FF946D78FFA27C89FF000000FF000000FF000000FF000000FF1784 + 1FFF26D775FF23CF6AFF26D16CFF28D470FF2BD671FF33DC7BFF9CF4C6FF5FCA + 81FF1D9B36FF2B7A28FF4B7A40FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FFDCB5C8FFFFC0 + FCFFF49EDBFFF6A3E0FFF7A8E4FFF8A8E7FFF8A9E8FFFAACEBFFFCCAF3FFFEF0 + FBFFFFC4FFFFFFEDFFFFFF8ED8FF000000FF000000FF000000FFB794A0FFECE3 + E3FFB1AAAAFFB2ABABFFB3ACACFFB1A9A9FFAEA7A7FFAFA7A7FFCAC5C5FFEFED + EDFFD5CBCBFFF1EDEDFFC0B8B8FF000000FF000000FF000000FF748665FF3DF1 + 9EFF2BD16FFF2ED673FF32D978FF30DA78FF33DD7BFF3AE180FF80EDAEFFDCFA + E8FF54F6ACFFC0FFE6FF34DB79FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FFF9F2F6FFF2B4EBFFF4A4 + DFFFF6A7E3FFF7A9E5FFF8A7E6FFFFF0FFFFFFEFFFFFFEE3FAFFFFF9FFFFFFFF + FFFFFFC4FFFFFFEEF6FFE59BD4FF000000FF000000FFF0E9EDFFE4D7D7FFB9B1 + B1FFBAB3B3FFB9B2B2FFB5ACACFFFDFAFAFFF7F5F5FFE7E4E4FFFAF9F9FFFFFF + FFFFDED3D3FFF6F5F5FFBFB1B1FF000000FF000000FFE1E1DEFF3EDF8CFF33D5 + 75FF37D97AFF3ADC7EFF35DD7BFFCCFEEAFFD1FCE9FFBBF7D6FFF0FEF7FFFFFF + FFFF63FAB8FFE7F7EAFF42D17CFF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FAF5F7FFDB92C6FFFCBAF4FFF7AA + E6FFF7A8E5FFF8AAE8FFF9AAEAFFFFFAFFFFFFE7FFFFFFD6FFFFFFDDFFFFFFCB + FFFFFFF1FFFFFF88CEFFC06F9CFF000000FFF3EDEFFFC8B8B8FFE4DBDBFFC5BD + BDFFBEB6B6FFBEB6B6FFBDB4B4FFFFFFFFFFF8F3F3FFF2EAEAFFF4EEEEFFEAE1 + E1FFF9F6F6FFB9B1B1FF97797FFF000000FFE7E7E3FF3AC168FF4AEB99FF3DDF + 83FF41DF82FF44E286FF41E486FFEEFFF9FFBFFEE2FF96FDCFFFACFEDBFF81FE + C8FFDBFFF1FF34CE68FF288E31FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FFD8A7BFFFD59DBEFFFFF6 + FFFFFFDCFFFFFFDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4FFFFFFC7FFFFFFC5 + FFFFFFFFFFFFFF97E4FFD9AEC4FF000000FF000000FFAD8593FFC8BDBDFFFFFF + FFFFFFFAFAFFFFF8F8FFFFFFFFFFFFFFFFFFFFFFFFFFF4EAEAFFF2E8E8FFEFE5 + E5FFFFFFFFFFC5BBBBFFB18D9AFF000000FF000000FF627C53FF6EBF7CFFDAFF + F3FF9FFED6FFA0FED5FFFEFFFFFFFEFFFFFFFFFFFFFF76FFC5FF7CFFC7FF76FF + C5FFFFFFFFFF35E382FF69815BFF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FFD3CBCFFFF856B0FFFF62 + BAFFFFE6F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFC7FFFFFFD5 + FFFFFFDDF1FFFFBDF9FFF6EDF1FF000000FF000000FFB2AAADFFA29696FFA99F + 9FFFF1F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF0F0FFF9EFEFFFF9F1 + F1FFE8E6E6FFE5DBDBFFEADFE2FF000000FF000000FF91948CFF0AC045FF17C9 + 54FFDAF7E4FFFFFFFFFFFEFFFFFFFEFFFFFFFFFFFFFF79FFC7FF7CFFC7FF9DFF + D5FFC4F1D4FF6DF9B8FFD6D5CFFF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000ECDAE3FFF258AEFFFF63BBFFFF64 + BDFFFFBCE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5FFFFFFC6FFFFFFF9 + FFFFFF93D4FFF3B9EFFF000000FF000000FFD6C3CAFFA79A9AFFB0A5A5FFAFA5 + A5FFDCD7D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5FFFFF5F5FFFFFF + FFFFB9B1B1FFE8DCDCFF000000FF000000FFAEB4A4FF12BF49FF1BCD5CFF1ACE + 5CFF9AE9B8FFFFFFFFFFFEFFFFFFFEFFFFFFFFFFFFFF76FFC5FF7AFFC6FFEFFF + F9FF44D679FF70EFB1FF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000EFDEE7FFD084B8FFFF92DCFFFF6B + C1FFFF6DC4FFFFC7E8FFFFFFFFFFFFFFFFFFFFD8FFFFFFC4FFFFFFC4FFFFFFFF + FFFFFF82D2FFDE96CCFF000000FF000000FFDCC9D0FFC0ADADFFD7CFCFFFB9AF + AFFFB9AFAFFFE4E0E0FFFFFFFFFFFFFFFFFFFFF8F8FFFFF4F4FFFFF4F4FFFFFF + FFFFB7ADADFFCEBEBEFF000000FF000000FFB7BAADFF33B55AFF44E78FFF24D2 + 67FF21D366FFA9EEC4FFFFFFFFFFFFFFFFFFA4FFD8FF74FFC4FF74FFC4FFFFFF + FFFF22D469FF50CD7FFF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FFBE6C97FFFDBD + F6FFFF7DCEFFFF79CAFFFF7DCEFFFFD4EFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFE + FFFFFF93DEFFCF7EB3FF000000FF000000FF000000FF000000FF947078FFF6EE + EEFFCAC0C0FFC4BABAFFC5BABAFFECE9E9FFFFFFFFFFFFFFFFFFFFFCFCFFFFFF + FFFFCBC1C1FFB9A4A4FF000000FF000000FF000000FF000000FF257F27FF71F7 + BBFF37DD7BFF30D974FF32DA76FFB9F3D1FFFFFFFFFFFFFFFFFFDAFFF0FFFDFF + FEFF3AE082FF39B45AFF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FFF1E1 + E9FFC26EA2FFFFC5FDFFFF90DBFFFF86D4FFFF85D5FFFFAAE2FFFFE7F7FFFFE3 + F6FFFFACEEFFC46EA1FF000000FF000000FF000000FF000000FF000000FFDECD + D3FFA69091FFFCF5F5FFD8CECEFFCEC4C4FFCDC3C3FFDCD4D4FFF5F3F3FFF3F0 + F0FFE5DBDBFFA58C8FFF000000FF000000FF000000FF000000FF000000FFBDBE + B4FF2C9F42FF79FEC7FF49E68FFF3CDF81FF34DF7EFF6FE8A4FFD5F9E5FFCCF7 + DFFF5AF0A3FF2B9D3DFF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FF0000 + 00FF000000FFEAD3DEFFC0679DFFFFD1FFFFFFAEEFFFFF95DDFFFF99E0FFFF9A + E2FFFFBAF7FFC2729FFF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FFD0B8C0FFA48F8FFFFFFFFFFFEEE4E4FFD9CFCFFFDAD0D0FFDAD0 + D0FFF4EAEAFF9C7A82FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FFA2A896FF269F3DFF85FFD5FF64F4AEFF4AE690FF49E691FF48E7 + 90FF6CF8B7FF2B8B32FF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FFE6C9D7FFC16B9CFFF4BAEFFFFFCDFFFFFFB6 + F4FFFFC2FCFFC2789FFF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FFC8ABB5FF9F8387FFF1E7E7FFFFFCFCFFF2E8 + E8FFFCF2F2FF96727CFF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF939A85FF289539FF71F0B3FF81FFD0FF6AF7 + B4FF76FDC1FF2D7D2BFF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FFD9AFC4FFC172 + 9EFFDD96C9FFC57DA2FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FFB18D9AFF9B7C + 83FFCDBFBFFF97707BFF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF6A815CFF2B8B + 34FF50C97FFF32792BFF000000FF000000FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00F3FFF3FFF3FF0000F0FFF0FFF0FF0000 + E01FE01FE01F0000E001E001E0010000C001C001C00100008001800180010000 + 0001000100010000800180018001000080018001800100000003000300030000 + 0003000300030000C003C003C0030000E003E003E0030000F803F803F8030000 + FE03FE03FE030000FFC3FFC3FFC3000000000000000000000000000000000000 + 000000000000} + end + object PopupMenuColumnDropDownButtonMenu: TPopupMenu + Images = ImageListState + Left = 320 + Top = 506 + object ColumnDropDownButtonMenuItem11: TMenuItem + Caption = 'Column DropDownButton Menu Item 1' + ImageIndex = 0 + end + object ColumnDropDownButtonMenuItem21: TMenuItem + Caption = 'Column DropDownButton Menu Item 2' + ImageIndex = 1 + end + object ColumnDropDownButtonMenuItem31: TMenuItem + Caption = 'Column DropDownButton Menu Item 3' + ImageIndex = 2 + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.pas b/official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.pas new file mode 100644 index 0000000..2689cdd --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Fulldemo/Unit1.pas @@ -0,0 +1,2164 @@ +unit Unit1; + +interface + +// DRAG UNSELECT MISSES SOME ITEMS AND DOES NOT UNSELECT THEM +// DRAG/SELECTDRAG SCROLL DOES NOT ACCOUNT FOR HEADER + +{$I ..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + Classes, + Graphics, + Controls, + Forms, + Dialogs, + StdCtrls, + ComCtrls, + ImgList, + ExtCtrls, + CheckLst, + ActiveX, + EasyListview, + MPCommonUtilities, + MPCommonObjects, Menus; + +type + TForm1 = class(TForm) + StatusBar1: TStatusBar; + Panel2: TPanel; + EasyListview1: TEasyListview; + StaticText1: TStaticText; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + TabSheet2: TTabSheet; + TabSheet3: TTabSheet; + CheckBoxSelMulti: TCheckBox; + CheckBoxSelEnabled: TCheckBox; + CheckBoxSelAlphaRect: TCheckBox; + TrackBarSelBlendAlpha: TTrackBar; + LabelSelBlendAlpha: TLabel; + Label6: TLabel; + Label7: TLabel; + Label8: TLabel; + LabelSelColor: TLabel; + LabelSelInactiveColor: TLabel; + LabelSelInactiveBorderColor: TLabel; + LabelSelInactiveTextColor: TLabel; + Label1SelTextColor: TLabel; + PanelSelRectBlendColor: TPanel; + PanelSelBorderColor: TPanel; + PanelSelColor: TPanel; + PanelSelTextColor: TPanel; + PanelSelInactiveColor: TPanel; + PanelSelInactiveBorderColor: TPanel; + PanelSelInactiveTextColor: TPanel; + CheckBoxSelFullRow: TCheckBox; + CheckBoxSelRound: TCheckBox; + Label9: TLabel; + EditSelRoundRadius: TEdit; + CheckBoxShowFocusRect: TCheckBox; + CheckBoxSelDragRect: TCheckBox; + Splitter1: TSplitter; + CheckBoxSelAutoScroll: TCheckBox; + EditSelScrollDelay: TEdit; + Label10: TLabel; + Label11: TLabel; + EditSelScrollTime: TEdit; + EditSelAccel: TEdit; + Label12: TLabel; + EditSelEdgeMargin: TEdit; + Label13: TLabel; + ColorDialog1: TColorDialog; + PanelSelRectBorderColor: TPanel; + Label15: TLabel; + Bevel1: TBevel; + Bevel2: TBevel; + Label16: TLabel; + CheckBoxSelAlphaBlend: TCheckBox; + Label4: TLabel; + EditGroupCount: TEdit; + EditItemCount: TEdit; + Label3: TLabel; + Label5: TLabel; + EditColumnCount: TEdit; + Button2: TButton; + Button3: TButton; + TabSheet4: TTabSheet; + CheckBoxShowHeader: TCheckBox; + CheckBoxThemed: TCheckBox; + TabSheet5: TTabSheet; + ComboBoxItemItemCheckType: TComboBox; + Label2: TLabel; + Label17: TLabel; + cbViews: TComboBox; + Label18: TLabel; + Panel3: TPanel; + Panel4: TPanel; + ButtonSelFirst: TButton; + ButtonSelNext: TButton; + ButtonSelFirstInGroup: TButton; + ButtonSelNextInGroup: TButton; + EditSelGroup: TEdit; + Label19: TLabel; + ButtonSelAll: TButton; + ButtonSelClear: TButton; + Label20: TLabel; + ButtonSelInvert: TButton; + CheckBoxVisHideItems: TCheckBox; + CheckBoxVisHideGroups: TCheckBox; + CheckBoxTrackSelections: TCheckBox; + CheckBoxSelLinearSelect: TCheckBox; + CheckBoxRandomizeItemCount: TCheckBox; + TabSheet6: TTabSheet; + Label21: TLabel; + ComboBoxItemGroupCheckType: TComboBox; + Label22: TLabel; + ComboBoxItemColumnCheckType: TComboBox; + EditMaxSizeWidth: TEdit; + CheckBoxMaxSizeWidth: TCheckBox; + CheckBoxGroupExpandable: TCheckBox; + CheckBoxBlendedBand: TCheckBox; + PanelBandStartColor: TPanel; + PanelBandFadeColor: TPanel; + Label1: TLabel; + Label14: TLabel; + Label23: TLabel; + EditBandWidth: TEdit; + Bevel3: TBevel; + Label24: TLabel; + CheckBoxMarginTop: TCheckBox; + CheckBoxMarginLeft: TCheckBox; + CheckBoxMarginRight: TCheckBox; + CheckBoxMarginBottom: TCheckBox; + Label25: TLabel; + EditBandLength: TEdit; + CheckBoxBandTracksWindow: TCheckBox; + GroupBox2: TGroupBox; + CheckBoxSelMouseButtonL: TCheckBox; + CheckBoxSelMouseButtonR: TCheckBox; + CheckBoxSelMouseButtonM: TCheckBox; + GroupBox1: TGroupBox; + CheckBoxSelRectMouseButtonL: TCheckBox; + CheckBoxSelRectMouseButtonR: TCheckBox; + CheckBoxSelRectMouseButtonM: TCheckBox; + Bevel4: TBevel; + CheckBoxFullItemSelect: TCheckBox; + CheckBoxFullCellSelect: TCheckBox; + CheckBoxGroupSelection: TCheckBox; + Bevel5: TBevel; + Label26: TLabel; + Label27: TLabel; + TrackBarSizeIconWidth: TTrackBar; + TrackBarSizeIconHeight: TTrackBar; + ButtonSizeReset: TButton; + Label28: TLabel; + Label29: TLabel; + Label30: TLabel; + Label31: TLabel; + LabelIconSizeWidth: TLabel; + LabelIconSizeHeight: TLabel; + Label32: TLabel; + Label33: TLabel; + LabelSmallIconSizeWidth: TLabel; + LabelSmallIconSizeHeight: TLabel; + Label36: TLabel; + Label37: TLabel; + LabelListSizeWidth: TLabel; + LabelListSizeHeight: TLabel; + LabelThumbSizeWidth: TLabel; + LabelThumbSizeHeight: TLabel; + LabelTileSizeWidth: TLabel; + LabelTileSizeHeight: TLabel; + Label34: TLabel; + LabelReportSizeWidth: TLabel; + LabelReportSizeHeight: TLabel; + TrackBarSizeReportHeight: TTrackBar; + TrackBarSizeReportWidth: TTrackBar; + TrackBarSizeIconSmallHeight: TTrackBar; + TrackBarSizeIconSmallWidth: TTrackBar; + TrackBarSizeThumbsHeight: TTrackBar; + TrackBarSizeThumbsWidth: TTrackBar; + TrackBarSizeTilesHeight: TTrackBar; + TrackBarSizeTilesWidth: TTrackBar; + TrackBarSizeListHeight: TTrackBar; + TrackBarSizeListWidth: TTrackBar; + TabSheet7: TTabSheet; + Label35: TLabel; + Label38: TLabel; + Button1: TButton; + Button4: TButton; + OpenDialogStream: TOpenDialog; + SaveDialogStream: TSaveDialog; + ButtonExpandAll: TButton; + ButtonCollapseAll: TButton; + CheckBoxResizeGroup: TCheckBox; + CheckBoxBlendIcon: TCheckBox; + CheckBoxShowGroupMargins: TCheckBox; + EditTileDetailCount: TEdit; + Label39: TLabel; + CheckBoxDragDrop: TCheckBox; + TabSheet8: TTabSheet; + CheckBoxRandomItemCaptionColor: TCheckBox; + CheckBoxRandomGroupCaptionColor: TCheckBox; + CheckBoxRandomHeaderCaptionColors: TCheckBox; + TabSheet9: TTabSheet; + CheckBoxIncrementalSearchEnable: TCheckBox; + ComboBoxIncrementalSearchType: TComboBox; + ComboBoxIncrementalSearchStartType: TComboBox; + Label40: TLabel; + Label41: TLabel; + RadioGroupIncrementalSearchDir: TRadioGroup; + EditIncrementalSearchResetTime: TEdit; + Label42: TLabel; + Label43: TLabel; + LabelQuery: TLabel; + Label45: TLabel; + LabelItemIndex: TLabel; + TabSheet10: TTabSheet; + CheckBoxDragDropEnabled: TCheckBox; + TrackBarSelTextBlendAlpha: TTrackBar; + Label44: TLabel; + LabelBlendAlphaTextRect: TLabel; + TabSheet11: TTabSheet; + Label46: TLabel; + Label48: TLabel; + Label50: TLabel; + Label51: TLabel; + Label47: TLabel; + CheckBoxHotTrackEnable: TCheckBox; + GroupBoxGroupHotTrack: TGroupBox; + GroupBox4: TGroupBox; + CheckBoxGroupHitIcon: TCheckBox; + CheckBoxGroupHitText: TCheckBox; + CheckBoxGroupHitTop: TCheckBox; + CheckBoxGroupHitBottom: TCheckBox; + CheckBoxGroupHitLeft: TCheckBox; + CheckBoxGroupHitRight: TCheckBox; + CheckBoxGroupHitAnywhere: TCheckBox; + CheckBoxItemHitIcon: TCheckBox; + CheckBoxItemHitText: TCheckBox; + CheckBoxItemHitAnyWhere: TCheckBox; + CheckBoxUnderLineText: TCheckBox; + CheckBoxHotTrackFocusOnly: TCheckBox; + CheckBoxRedDetails: TCheckBox; + CheckBoxHilightColumn: TCheckBox; + ButtonHilightColor: TButton; + CheckBoxGridLines: TCheckBox; + ButtonGridLineColor: TButton; + CheckBoxSelectionGradient: TCheckBox; + PanelGradientTop: TPanel; + PanelGradientBottom: TPanel; + CheckBoxSelectionBlurBkGnd: TCheckBox; + TabSheet12: TTabSheet; + EditBkGndCaption: TEdit; + CheckBoxBkGndText: TCheckBox; + CheckBoxBkGnd: TCheckBox; + CheckBoxBkGndCaptionOnlyWhenEmpty: TCheckBox; + RadioGroupBkGndCaptionAlignment: TRadioGroup; + RadioGroupBkGndCaptionVAlignment: TRadioGroup; + CheckBoxBkGndCaptionSingleLine: TCheckBox; + Bevel6: TBevel; + Label49: TLabel; + Bevel7: TBevel; + Label52: TLabel; + CheckBoxBkGndTile: TCheckBox; + CheckBoxBkGndTransparent: TCheckBox; + TrackBarBkGndXOffset: TTrackBar; + TrackBarBkGndYOffset: TTrackBar; + Label53: TLabel; + Label55: TLabel; + CheckBoxTrackOffsets: TCheckBox; + Label54: TLabel; + EditBkGndImage: TEdit; + ButtonBkGndLoadImage: TButton; + Bevel8: TBevel; + Label56: TLabel; + CheckBoxBkGndCustomDraw: TCheckBox; + CheckBoxCustomBkGndAlphaBlend: TCheckBox; + TrackBarCustomDrawBkGnd: TTrackBar; + Label57: TLabel; + CheckBoxHideCaptions: TCheckBox; + Button5: TButton; + CheckBoxStateImages: TCheckBox; + ImageListState: TImageList; + CheckBoxHeaderAlwaysVisible: TCheckBox; + CheckBoxSnapHorzScroll: TCheckBox; + Label58: TLabel; + EditHeight: TEdit; + GroupBox3: TGroupBox; + CheckBoxHeaderDropDownArrow: TCheckBox; + CheckBoxDropDownArrowAlwaysShow: TCheckBox; + CheckBoxDropDownButtonEnabled: TCheckBox; + PopupMenuColumnDropDownButtonMenu: TPopupMenu; + ColumnDropDownButtonMenuItem11: TMenuItem; + ColumnDropDownButtonMenuItem21: TMenuItem; + ColumnDropDownButtonMenuItem31: TMenuItem; + CheckBoxDropDownButtonCustomAction: TCheckBox; + GroupBox5: TGroupBox; + CheckBoxHeaderHotTrack: TCheckBox; + CheckBoxHeaderSizeable: TCheckBox; + CheckBoxHeaderClickable: TCheckBox; + CheckBoxHeaderDraggable: TCheckBox; + CheckBoxAutoToggleSort: TCheckBox; + Label59: TLabel; + EditBandMargin: TEdit; + RadioGroupGroupVAlign: TRadioGroup; + RadioGroupGroupHAlign: TRadioGroup; + Label60: TLabel; + EditBandIndent: TEdit; + EditGroupMarginTop: TEdit; + EditGroupMarginBottom: TEdit; + EditGroupMarginLeft: TEdit; + EditGroupMarginRight: TEdit; + Label61: TLabel; + Label62: TLabel; + Label63: TLabel; + Label64: TLabel; + + procedure Button2Click(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure CheckBoxThemedClick(Sender: TObject); + procedure CheckBoxHideItemsClick(Sender: TObject); + procedure EasyListview1ItemVisibilityChanged( + Sender: TCustomEasyListview; Item: TEasyItem); + procedure cbViewsChange(Sender: TObject); + procedure Chnge(Sender: TObject); + procedure CheckBoxShowHeaderClick(Sender: TObject); + procedure TrackBarSelBlendAlphaChange(Sender: TObject); + procedure CheckBoxSelEnabledClick(Sender: TObject); + procedure CheckBoxShowFocusRectClick(Sender: TObject); + procedure CheckBoxSelFullRowClick(Sender: TObject); + procedure CheckBoxSelMultiClick(Sender: TObject); + procedure CheckBoxSelAlphaRectClick(Sender: TObject); + procedure CheckBoxSelRoundClick(Sender: TObject); + procedure CheckBoxSelAutoScrollClick(Sender: TObject); + procedure CheckBoxSelDragRectClick(Sender: TObject); + procedure EditSelExit(Sender: TObject); + procedure EditSelScrollDelayKeyPress(Sender: TObject; var Key: Char); + procedure PanelSelBorderColorClick(Sender: TObject); + procedure PanelSelInactiveColorClick(Sender: TObject); + procedure PanelSelColorClick(Sender: TObject); + procedure PanelSelInactiveBorderColorClick(Sender: TObject); + procedure PanelSelTextColorClick(Sender: TObject); + procedure PanelSelInactiveTextColorClick(Sender: TObject); + procedure PanelSelRectBlendColorClick(Sender: TObject); + procedure PanelSelRectBorderColorClick(Sender: TObject); + procedure CheckBoxSelAlphaBlendClick(Sender: TObject); + procedure ButtonSelFirstClick(Sender: TObject); + procedure ButtonSelNextClick(Sender: TObject); + procedure ButtonSelFirstInGoupClick(Sender: TObject); + procedure ButtonSelNextInGroupClick(Sender: TObject); + procedure EasyListview1ItemFreeing(Sender: TCustomEasyListview; Item: TEasyItem); + procedure EasyListview1GroupFreeing(Sender: TCustomEasyListview; Group: TEasyGroup); + procedure ButtonSelAllClick(Sender: TObject); + procedure ButtonSelClearClick(Sender: TObject); + procedure ButtonSelInvertClick(Sender: TObject); + procedure CheckBoxVisHideItemsClick(Sender: TObject); + procedure CheckBoxVisHideGroupsClick(Sender: TObject); + procedure EasyListview1ItemSelectionChanged( + Sender: TCustomEasyListview; Item: TEasyItem); + procedure CheckBoxSelLinearSelectClick(Sender: TObject); + procedure EasyListview1GroupInitialize(Sender: TCustomEasyListview; + Group: TEasyGroup); + procedure ComboBoxItemGroupCheckTypeChange(Sender: TObject); + procedure ComboBoxItemColumnCheckTypeChange(Sender: TObject); + procedure EasyListview1ColumnInitialize(Sender: TCustomEasyListview; + Column: TEasyColumn); + procedure EasyListview1ColumnClick(Sender: TCustomEasyListview; + Button: TCommonMouseButton; Column: TEasyColumn); + procedure EasyListview1ColumnSizeChanging(Sender: TCustomEasyListview; + Column: TEasyColumn; Width, NewWidth: Integer; + var Allow: Boolean); + procedure CheckBoxMaxSizeWidthClick(Sender: TObject); + procedure EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); + procedure CheckBoxGroupExpandableClick(Sender: TObject); + procedure CheckBoxBlendedBandClick(Sender: TObject); + procedure PanelBandStartColorClick(Sender: TObject); + procedure PanelBandFadeColorClick(Sender: TObject); + procedure EditBandWidthKeyPress(Sender: TObject; var Key: Char); + procedure EditBandWidthExit(Sender: TObject); + procedure EditBandLengthExit(Sender: TObject); + procedure EditBandLengthKeyPress(Sender: TObject; var Key: Char); + procedure CheckBoxBandTracksWindowClick(Sender: TObject); + procedure CheckBoxMarginTopClick(Sender: TObject); + procedure CheckBoxMarginBottomClick(Sender: TObject); + procedure CheckBoxMarginLeftClick(Sender: TObject); + procedure CheckBoxMarginRightClick(Sender: TObject); + procedure CheckBoxSelMouseButtonLClick(Sender: TObject); + procedure CheckBoxSelMouseButtonRClick(Sender: TObject); + procedure CheckBoxSelMouseButtonMClick(Sender: TObject); + procedure CheckBoxSelRectMouseButtonLClick(Sender: TObject); + procedure CheckBoxSelRectMouseButtonRClick(Sender: TObject); + procedure CheckBoxSelRectMouseButtonMClick(Sender: TObject); + procedure CheckBoxHeaderHotTrackClick(Sender: TObject); + procedure CheckBoxHeaderSizeableClick(Sender: TObject); + procedure CheckBoxHeaderClickableClick(Sender: TObject); + procedure CheckBoxFullItemSelectClick(Sender: TObject); + procedure CheckBoxFullCellSelectClick(Sender: TObject); + procedure CheckBoxGroupSelectionClick(Sender: TObject); + procedure Button3Click(Sender: TObject); + procedure EditSelRoundRadiusKeyPress(Sender: TObject; var Key: Char); + procedure EditSelRoundRadiusExit(Sender: TObject); + procedure ButtonSizeResetClick(Sender: TObject); + procedure TrackBarSizeIconWidthChange(Sender: TObject); + procedure TrackBarSizeIconHeightChange(Sender: TObject); + procedure TrackBarSizeIconSmallWidthChange(Sender: TObject); + procedure TrackBarSizeIconSmallHeightChange(Sender: TObject); + procedure TrackBarSizeListWidthChange(Sender: TObject); + procedure TrackBarSizeListHeightChange(Sender: TObject); + procedure TrackBarSizeThumbsWidthChange(Sender: TObject); + procedure TrackBarSizeTilesWidthChange(Sender: TObject); + procedure TrackBarSizeThumbsHeightChange(Sender: TObject); + procedure TrackBarSizeTilesHeightChange(Sender: TObject); + procedure TrackBarSizeReportWidthChange(Sender: TObject); + procedure TrackBarSizeReportHeightChange(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure Button4Click(Sender: TObject); + procedure ButtonExpandAllClick(Sender: TObject); + procedure ButtonCollapseAllClick(Sender: TObject); + procedure EasyListview1ItemGetImageIndex(Sender: TCustomEasyListview; + const Item: TEasyItem; Column: Integer; + ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); + procedure EasyListview1GroupGetCaption(Sender: TCustomEasyListview; + const Group: TEasyGroup; var Caption: WideString); + procedure EasyListview1GroupGetImageIndex(Sender: TCustomEasyListview; + const Group: TEasyGroup; ImageKind: TEasyImageKind; + var ImageIndex: TCommonImageIndexInteger); + procedure EasyListview1ColumnGetImageIndex(Sender: TCustomEasyListview; + const Column: TEasyColumn; ImageKind: TEasyImageKind; + var ImageIndex: TCommonImageIndexInteger); + procedure CheckBoxResizeGroupClick(Sender: TObject); + procedure CheckBoxBlendIconClick(Sender: TObject); + procedure CheckBoxShowGroupMarginsClick(Sender: TObject); + procedure EasyListview1ItemGetTileDetailCount( + Sender: TCustomEasyListview; const Item: TEasyItem; + var Count: Integer); + procedure EasyListview1ItemGetTileDetail(Sender: TCustomEasyListview; + const Item: TEasyItem; Line: Integer; var Detail: Integer); + procedure EditTileDetailCountExit(Sender: TObject); + procedure EditTileDetailCountKeyPress(Sender: TObject; var Key: Char); + procedure CheckBoxHeaderDraggableClick(Sender: TObject); + procedure CheckBoxDragDropClick(Sender: TObject); + procedure EasyListview1OLEDragOver(Sender: TCustomEasyListview; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); + procedure CheckBoxAutoToggleSortClick(Sender: TObject); + procedure EasyListview1ColumnPaintText(Sender: TCustomEasyListview; + Column: TEasyColumn; ACanvas: TCanvas); + procedure EasyListview1GroupPaintText(Sender: TCustomEasyListview; + Group: TEasyGroup; ACanvas: TCanvas); + procedure CheckBoxRandomItemCaptionColorClick(Sender: TObject); + procedure CheckBoxRandomGroupCaptionColorClick(Sender: TObject); + procedure CheckBoxRandomHeaderCaptionColorsClick(Sender: TObject); + procedure RadioGroupIncrementalSearchDirClick(Sender: TObject); + procedure ComboBoxIncrementalSearchTypeChange(Sender: TObject); + procedure ComboBoxIncrementalSearchStartTypeChange(Sender: TObject); + procedure EditIncrementalSearchResetTimeKeyPress(Sender: TObject; + var Key: Char); + procedure EditIncrementalSearchResetTimeExit(Sender: TObject); + procedure CheckBoxIncrementalSearchEnableClick(Sender: TObject); + procedure EasyListview1IncrementalSearch(Item: TEasyCollectionItem; + const SearchBuffer: WideString; var Handled: Boolean; var CompareResult: Integer); + procedure CheckBoxDragDropEnabledClick(Sender: TObject); + procedure TrackBarSelTextBlendAlphaChange(Sender: TObject); + procedure EasyListview1GroupHotTrack(Sender: TCustomEasyListview; + Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); + procedure EasyListview1ItemHotTrack(Sender: TCustomEasyListview; + Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); + procedure CheckBoxHotTrackEnableClick(Sender: TObject); + procedure CheckBoxGroupHitIconClick(Sender: TObject); + procedure CheckBoxGroupHitTextClick(Sender: TObject); + procedure CheckBoxGroupHitTopClick(Sender: TObject); + procedure CheckBoxGroupHitBottomClick(Sender: TObject); + procedure CheckBoxGroupHitLeftClick(Sender: TObject); + procedure CheckBoxGroupHitRightClick(Sender: TObject); + procedure CheckBoxGroupHitAnywhereClick(Sender: TObject); + procedure CheckBoxItemHitIconClick(Sender: TObject); + procedure CheckBoxItemHitTextClick(Sender: TObject); + procedure CheckBoxItemHitAnyWhereClick(Sender: TObject); + procedure CheckBoxUnderLineTextClick(Sender: TObject); + procedure CheckBoxHotTrackFocusOnlyClick(Sender: TObject); + procedure EasyListview1ItemPaintText(Sender: TCustomEasyListview; + Item: TEasyItem; Position: Integer; ACanvas: TCanvas); + procedure CheckBoxRedDetailsClick(Sender: TObject); + procedure CheckBoxBkGndClick(Sender: TObject); + procedure CheckBoxHilightColumnClick(Sender: TObject); + procedure ButtonHilightColorClick(Sender: TObject); + procedure CheckBoxGridLinesClick(Sender: TObject); + procedure ButtonGridLineColorClick(Sender: TObject); + procedure EasyListview1ItemGetCaption(Sender: TCustomEasyListview; + Item: TEasyItem; Column: Integer; var Caption: WideString); + procedure CheckBoxSelectionGradientClick(Sender: TObject); + procedure PanelGradientTopClick(Sender: TObject); + procedure PanelGradientBottomClick(Sender: TObject); + procedure CheckBoxSelectionBlurBkGndClick(Sender: TObject); + procedure CheckBoxBkGndTextClick(Sender: TObject); + procedure EditBkGndCaptionChange(Sender: TObject); + procedure RadioGroupBkGndCaptionAlignmentClick(Sender: TObject); + procedure RadioGroupBkGndCaptionVAlignmentClick(Sender: TObject); + procedure CheckBoxBkGndCaptionOnlyWhenEmptyClick(Sender: TObject); + procedure CheckBoxBkGndCaptionSingleLineClick(Sender: TObject); + procedure CheckBoxBkGndTileClick(Sender: TObject); + procedure CheckBoxBkGndTransparentClick(Sender: TObject); + procedure TrackBarBkGndXOffsetChange(Sender: TObject); + procedure TrackBarBkGndYOffsetChange(Sender: TObject); + procedure CheckBoxTrackOffsetsClick(Sender: TObject); + procedure ButtonBkGndLoadImageClick(Sender: TObject); + procedure EasyListview1PaintBkGnd(Sender: TCustomEasyListview; + ACanvas: TCanvas; AWindowRect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); + procedure CheckBoxBkGndCustomDrawClick(Sender: TObject); + procedure CheckBoxCustomDrawCirclesClick(Sender: TObject); + procedure TrackBarCustomDrawBkGndChange(Sender: TObject); + procedure CheckBoxCustomBkGndAlphaBlendClick(Sender: TObject); + procedure CheckBoxHideCaptionsClick(Sender: TObject); + procedure Button5Click(Sender: TObject); + procedure CheckBoxStateImagesClick(Sender: TObject); + procedure CheckBoxHeaderAlwaysVisibleClick(Sender: TObject); + procedure CheckBoxSnapHorzScrollClick(Sender: TObject); + procedure EditHeightExit(Sender: TObject); + procedure EditHeightKeyPress(Sender: TObject; var Key: Char); + procedure CheckBoxHeaderDropDownArrowClick(Sender: TObject); + procedure EasyListview1ColumnGetCaption(Sender: TCustomEasyListview; + Column: TEasyColumn; Line: Integer; var Caption: WideString); + procedure CheckBoxDropDownArrowAlwaysShowClick(Sender: TObject); + procedure CheckBoxDropDownButtonEnabledClick(Sender: TObject); + procedure EasyListview1ColumnDropDownButtonClick( + Sender: TCustomEasyListview; Column: TEasyColumn; + Button: TCommonMouseButton; ShiftState: TShiftState; + WindowPt: TPoint; var DoDefault: Boolean); + procedure EditBandMarginExit(Sender: TObject); + procedure EditBandMarginKeyPress(Sender: TObject; var Key: Char); + procedure RadioGroupGroupHAlignClick(Sender: TObject); + procedure RadioGroupGroupVAlignClick(Sender: TObject); + procedure EditBandIndentExit(Sender: TObject); + procedure EditBandIndentKeyPress(Sender: TObject; var Key: Char); + procedure EditGroupMarginTopExit(Sender: TObject); + procedure EditGroupMarginTopKeyPress(Sender: TObject; var Key: Char); + private + FSelectionItem: TEasyItem; + FSelectionGroup: TEasyGroup; + FRebuildOnce: Boolean; + { Private declarations } + public + { Public declarations } + procedure SyncForm; + function ChangeColor(Panel: TPanel): TColor; + procedure InvalidateLV; + procedure SyncGroupsTab; + + property SelectionItem: TEasyItem read FSelectionItem write FSelectionItem; + property SelectionGroup: TEasyGroup read FSelectionGroup write FSelectionGroup; + end; + +var + Form1: TForm1; + +implementation + +uses DatamoduleImagelists; + +{$R *.dfm} + +procedure TForm1.SyncForm; +begin + CheckBoxThemed.Checked := EasyListview1.Themed; + CheckBoxSelLinearSelect.Checked := EasyListview1.Selection.RectSelect; + CheckBoxSelDragRect.Checked := EasyListview1.Selection.EnableDragSelect; + CheckBoxShowHeader.Checked := EasyListview1.Header.Visible; + TrackBarSelBlendAlpha.Position := EasyListview1.Selection.BlendAlphaSelRect; + LabelSelBlendAlpha.Caption := IntToStr(TrackBarSelBlendAlpha.Position); + CheckBoxSelEnabled.Checked := EasyListview1.Selection.Enabled; + CheckBoxShowFocusRect.Checked := EasyListview1.Selection.UseFocusRect; + CheckBoxSelFullRow.Checked := EasyListview1.Selection.FullRowSelect; + CheckBoxSelMulti.Checked := EasyListview1.Selection.MultiSelect; + CheckBoxSelAlphaBlend.Checked := EasyListview1.Selection.AlphaBlend; + CheckBoxSelAlphaRect.Checked := EasyListview1.Selection.AlphaBlendSelRect; + CheckBoxSelRound.Checked := EasyListview1.Selection.RoundRect; + CheckBoxSelAutoScroll.Checked := EasyListview1.Selection.AutoScroll; + CheckBoxSelMouseButtonL.Checked := cmbLeft in EasyListview1.Selection.MouseButton; + CheckBoxSelMouseButtonR.Checked := cmbRight in EasyListview1.Selection.MouseButton; + CheckBoxSelRectMouseButtonM.Checked := cmbMiddle in EasyListview1.Selection.MouseButtonSelRect; + CheckBoxSelRectMouseButtonL.Checked := cmbLeft in EasyListview1.Selection.MouseButtonSelRect; + CheckBoxSelRectMouseButtonR.Checked := cmbRight in EasyListview1.Selection.MouseButtonSelRect; + CheckBoxSelMouseButtonM.Checked := cmbMiddle in EasyListview1.Selection.MouseButton; + EditSelAccel.Text := IntToStr( EasyListview1.Selection.AutoScrollAccelerator); + EditSelScrollDelay.Text := IntToStr(EasyListview1.Selection.AutoScrollDelay); + EditSelEdgeMargin.Text := IntToStr(EasyListview1.Selection.AutoScrollMargin); + EditSelScrollTime.Text := IntToStr( EasyListview1.Selection.AutoScrollTime); + PanelSelBorderColor.Color := EasyListview1.Selection.BorderColor; + PanelSelInactiveColor.Color := EasyListview1.Selection.InactiveColor; + PanelSelColor.Color := EasyListview1.Selection.Color; + PanelSelInactiveBorderColor.Color := EasyListview1.Selection.InactiveBorderColor; + PanelSelTextColor.Color := EasyListview1.Selection.TextColor; + PanelSelInactiveTextColor.Color := EasyListview1.Selection.InactiveTextColor; + PanelSelRectBlendColor.Color := EasyListview1.Selection.BlendColorSelRect; + PanelSelRectBorderColor.Color := EasyListview1.Selection.BorderColorSelRect; + CheckBoxHeaderHotTrack.Checked := EasyListview1.PaintInfoColumn.HotTrack; + CheckBoxHeaderSizeable.Checked := EasyListview1.Header.Sizeable; + TrackBarSizeIconWidth.Position := EasyListview1.CellSizes.Icon.Width; + TrackBarSizeIconHeight.Position := EasyListview1.CellSizes.Icon.Height; + TrackBarSizeIconSmallWidth.Position := EasyListview1.CellSizes.SmallIcon.Width; + TrackBarSizeIconSmallHeight.Position := EasyListview1.CellSizes.SmallIcon.Height; + TrackBarSizeListWidth.Position := EasyListview1.CellSizes.List.Width; + TrackBarSizeListHeight.Position := EasyListview1.CellSizes.List.Height; + TrackBarSizeThumbsWidth.Position := EasyListview1.CellSizes.Thumbnail.Width; + TrackBarSizeThumbsHeight.Position := EasyListview1.CellSizes.Thumbnail.Height; + TrackBarSizeTilesWidth.Position := EasyListview1.CellSizes.Tile.Width; + TrackBarSizeTilesHeight.Position := EasyListview1.CellSizes.Tile.Height; + TrackBarSizeReportWidth.Position := EasyListview1.CellSizes.Report.Width; + TrackBarSizeReportHeight.Position := EasyListview1.CellSizes.Report.Height; + EasyListview1.Selection.AutoScrollAccelerator := StrToInt(EditSelAccel.Text); + EasyListview1.Selection.AutoScrollDelay := StrToInt(EditSelScrollDelay.Text); + EasyListview1.Selection.AutoScrollMargin := StrToInt(EditSelEdgeMargin.Text); + EasyListview1.Selection.AutoScrollTime := StrToInt(EditSelScrollTime.Text); + CheckBoxResizeGroup.Checked := EasyListview1.Selection.ResizeGroupOnFocus; + CheckBoxBlendIcon.Checked := EasyListview1.Selection.BlendIcon; + CheckBoxShowGroupMargins.Checked := EasyListview1.ShowGroupMargins; + CheckBoxHeaderDraggable.Checked := EasyListview1.Header.Draggable; + CheckBoxDragDrop.Checked := EasyListview1.DragManager.Enabled; + TrackBarSelTextBlendAlpha.Position := EasyListview1.Selection.BlendAlphaTextRect; + CheckBoxSelectionBlurBkGnd.Checked := EasyListview1.Selection.BlurAlphaBkGnd; + + TrackBarSelTextBlendAlpha.Enabled := CheckBoxSelAlphaBlend.Checked; + Label9.Enabled := CheckBoxSelAlphaBlend.Checked; + Label44.Enabled := CheckBoxSelAlphaBlend.Checked; + LabelBlendAlphaTextRect.Enabled := CheckBoxSelAlphaBlend.Checked; + GroupBox1.Enabled := CheckBoxSelAlphaRect.Checked; + Label6.Enabled := CheckBoxSelAlphaRect.Checked; + TrackBarSelBlendAlpha.Enabled := CheckBoxSelAlphaRect.Checked; + PanelSelRectBlendColor.Enabled := CheckBoxSelAlphaRect.Checked; + Label7.Enabled := CheckBoxSelAlphaRect.Checked; + PanelSelRectBorderColor.Enabled := CheckBoxSelAlphaRect.Checked; + Label15.Enabled := CheckBoxSelAlphaRect.Checked; + LabelSelBlendAlpha.Enabled := CheckBoxSelAlphaRect.Checked; + CheckBoxSelRectMouseButtonL.Enabled := CheckBoxSelAlphaRect.Checked; + CheckBoxSelRectMouseButtonM.Enabled := CheckBoxSelAlphaRect.Checked; + CheckBoxSelRectMouseButtonR.Enabled := CheckBoxSelAlphaRect.Checked; + +end; + +procedure TForm1.InvalidateLV; +begin + EasyListview1.Invalidate; +end; + +procedure TForm1.Button2Click(Sender: TObject); +var + Group: TEasyGroup; + Column: TEasyColumn; + i, j, ItemCount: Integer; + A: Int64; +begin + FRebuildOnce := True; + A := GetTickCount; + Screen.Cursor := crHourglass; + // Setting ReIndex to False will increase the speed items are added to EasyListview + // but renders the Index Property invalide until EndUpdate is called + EasyListview1.BeginUpdate(); + EasyListview1.Groups.ReIndexDisable := True; + try + EasyListview1.Groups.Clear; + EasyListview1.Header.Columns.Clear; + + for i := 0 to StrToInt(EditColumnCount.Text) - 1 do + begin + Column := EasyListview1.Header.Columns.AddVirtual; + Column.Width := 150; + Column.DropDownButton.Visible := CheckBoxHeaderDropDownArrow.Checked; + Column.DropDownButton.AlwaysShow := CheckBoxDropDownArrowAlwaysShow.Checked; + Column.DropDownButton.Menu := PopupMenuColumnDropDownButtonMenu; + end; + + // Image and Text info filled in on demand in OnItemInitialize, OnGroupInitialze + for j := 0 to StrToInt(EditGroupCount.Text) - 1 do + begin + Group := EasyListview1.Groups.AddVirtual; + if CheckBoxRandomizeItemCount.Checked then + ItemCount := Random(StrToInt(EditItemCount.Text) + 1) + else + ItemCount := StrToInt(EditItemCount.Text); + for i := 0 to ItemCount - 1 do + Group.Items.AddVirtual; + end; + finally + EasyListview1.Groups.ReIndexDisable := False; + EasyListview1.EndUpdate; + StatusBar1.Panels[0].Text := 'Elapsed Time: ' + IntToStr(GetTickCount - A); + Screen.Cursor := crDefault + end +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(EAsyListview1.View); + Imagelists.UseImagesForListview(EasyListview1); + SyncForm; + SyncGroupsTab; + cbViews.ItemIndex := 0; + ComboBoxItemItemCheckType.ItemIndex := 0; + ComboBoxItemGroupCheckType.ItemIndex := 0; + ComboBoxItemColumnCheckType.ItemIndex := 0; + EditIncrementalSearchResetTime.Text := IntToStr(EasyListview1.IncrementalSearch.ResetTime); + ComboBoxIncrementalSearchStartType.ItemIndex := Integer(EasyListview1.IncrementalSearch.StartType); + ComboBoxIncrementalSearchType.ItemIndex := Integer(EasyListview1.IncrementalSearch.ItemType); + RadioGroupIncrementalSearchDir.ItemIndex := Integer(EasyListview1.IncrementalSearch.Direction); + CheckBoxIncrementalSearchEnable.Checked := EasyListview1.IncrementalSearch.Enabled; + LabelQuery.Caption := ''; + LabelItemIndex.Caption := ''; + CheckBoxDragDropEnabled.Checked := EasyListview1.DragManager.Enabled; + CheckBoxHotTrackEnable.Checked := EasyListview1.HotTrack.Enabled; + CheckBoxGroupHitIcon.Checked := htgIcon in EasyListview1.HotTrack.GroupTrack; + CheckBoxGroupHitText.Checked := htgText in EasyListview1.HotTrack.GroupTrack; + CheckBoxGroupHitTop.Checked := htgTopMargin in EasyListview1.HotTrack.GroupTrack; + CheckBoxGroupHitBottom.Checked := htgBottomMargin in EasyListview1.HotTrack.GroupTrack; + CheckBoxGroupHitLeft.Checked := htgLeftMargin in EasyListview1.HotTrack.GroupTrack; + CheckBoxGroupHitRight.Checked := htgRightMargin in EasyListview1.HotTrack.GroupTrack; + CheckBoxGroupHitAnyWhere.Checked := htgAnyWhere in EasyListview1.HotTrack.GroupTrack; + CheckBoxItemHitIcon.Checked := htiIcon in EasyListview1.HotTrack.ItemTrack; + CheckBoxItemHitText.Checked := htiText in EasyListview1.HotTrack.ItemTrack; + CheckBoxItemHitAnyWhere.Checked := htiAnyWhere in EasyListview1.HotTrack.ItemTrack; + CheckBoxUnderLineText.Checked := EasyListview1.HotTrack.Underline; + CheckBoxHotTrackFocusOnly.Checked := EasyListview1.HotTrack.OnlyFocused; + PanelGradientTop.Color := EasyListview1.Selection.GradientColorTop; + PanelGradientBottom.Color := EasyListview1.Selection.GradientColorBottom; + CheckBoxBkGndCaptionSingleLine.Checked := EasyListview1.BackGround.CaptionSingleLine; + CheckBoxBkGndCaptionOnlyWhenEmpty.Checked := EasyListview1.BackGround.CaptionShowOnlyWhenEmpty; + RadioGroupBkGndCaptionVAlignment.ItemIndex := Integer(EasyListview1.BackGround.CaptionVAlignment); + RadioGroupBkGndCaptionAlignment.ItemIndex := Integer(EasyListview1.BackGround.CaptionAlignment); + EditBkGndCaption.Text := EasyListview1.BackGround.Caption; + CheckBoxBkGndTile.Checked := EasyListview1.BackGround.Tile; + CheckBoxBkGndTransparent.Checked := EasyListview1.BackGround.Transparent; + TrackBarBkGndYOffset.Position := EasyListview1.BackGround.OffsetY; + TrackBarBkGndXOffset.Position := EasyListview1.BackGround.OffsetX; + TrackBarBkGndYOffset.Max := Screen.Height; + TrackBarBkGndYOffset.Frequency := TrackBarBkGndYOffset.Max div 10; + TrackBarBkGndXOffset.Max := Screen.Width; + TrackBarBkGndXOffset.Frequency := TrackBarBkGndXOffset.Max div 10; + CheckBoxTrackOffsets.Checked := EasyListview1.BackGround.OffsetTrack; + TrackBarCustomDrawBkGnd.Position := 128; + EditHeight.Text := IntToStr(EasyListview1.Header.Height); + RadioGroupGroupHAlign.ItemIndex := Integer( EasyListview1.PaintInfoGroup.Alignment); + RadioGroupGroupVAlign.ItemIndex := Integer( EasyListview1.PaintInfoGroup.VAlignment); + EditBandIndent.Text := IntToStr(EasyListview1.PaintInfoGroup.BandIndent); + EditGroupMarginTop.Text := IntToStr(EasyListview1.PaintInfoGroup.MarginTop.Size); + EditGroupMarginBottom.Text := IntToStr(EasyListview1.PaintInfoGroup.MarginBottom.Size); + EditGroupMarginRight.Text := IntToStr(EasyListview1.PaintInfoGroup.MarginRight.Size); + EditGroupMarginLeft.Text := IntToStr(EasyListview1.PaintInfoGroup.MarginLeft.Size); +end; + +procedure TForm1.CheckBoxThemedClick(Sender: TObject); +begin + EasyListview1.Themed := CheckBoxThemed.Checked +end; + +procedure TForm1.CheckBoxHideItemsClick(Sender: TObject); +var + i, j : Integer; +begin + EasyListview1.Groups.BeginUpdate(False); + try + for i := 0 to EasyListview1.Groups.Count - 1 do + for j := 0 to EasyListview1.Groups[i].Items.Count - 1 do + EasyListview1.Groups[i].Items[j].Visible := not CheckBoxVisHideItems.Checked + finally + EasyListview1.Groups.EndUpdate + end +end; + +procedure TForm1.EasyListview1ItemVisibilityChanged( + Sender: TCustomEasyListview; Item: TEasyItem); +begin Exit; + if EasyListview1.Groups.Count > 0 then + Statusbar1.Panels[1].Text := 'Visible Items in Group[0] = ' + IntToStr(EasyListview1.Groups[0].VisibleCount) + else + Statusbar1.Panels[1].Text := 'Visible Items in Group[0] = '; +end; + +procedure TForm1.EasyListview1ItemSelectionChanged( + Sender: TCustomEasyListview; Item: TEasyItem); +begin + if CheckBoxTrackSelections.Checked then + Statusbar1.Panels[2].Text := 'Checked Items = ' + IntToStr(EasyListview1.Selection.Count); +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + EasyListview1.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.Chnge(Sender: TObject); +begin + EasyListview1.Groups.BeginUpdate(False); + try + EasyListview1.PaintInfoItem.CheckType := TEasyCheckType(ComboBoxItemItemCheckType.ItemIndex); + finally + EasyListview1.Groups.EndUpdate + end +end; + +procedure TForm1.CheckBoxShowHeaderClick(Sender: TObject); +begin + EasyListview1.Header.Visible := CheckBoxShowHeader.Checked; + InvalidateLV +end; + +procedure TForm1.TrackBarSelBlendAlphaChange(Sender: TObject); +begin + LabelSelBlendAlpha.Caption := IntToStr(TrackBarSelBlendAlpha.Position); + EasyListview1.Selection.BlendAlphaSelRect := TrackBarSelBlendAlpha.Position; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelEnabledClick(Sender: TObject); +begin + EasyListview1.Selection.Enabled := CheckBoxSelEnabled.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxShowFocusRectClick(Sender: TObject); +begin + EasyListview1.Selection.UseFocusRect := CheckBoxShowFocusRect.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelFullRowClick(Sender: TObject); +begin + EasyListview1.Selection.FullRowSelect := CheckBoxSelFullRow.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelMultiClick(Sender: TObject); +begin + EasyListview1.Selection.MultiSelect := CheckBoxSelMulti.Checked; + SyncForm; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelDragRectClick(Sender: TObject); +begin + EasyListview1.Selection.EnableDragSelect := CheckBoxSelDragRect.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelAlphaBlendClick(Sender: TObject); +begin + EasyListview1.Selection.AlphaBlend := CheckBoxSelAlphaBlend.Checked; + TrackBarSelTextBlendAlpha.Enabled := CheckBoxSelAlphaBlend.Checked; + Label9.Enabled := CheckBoxSelAlphaBlend.Checked; + Label44.Enabled := CheckBoxSelAlphaBlend.Checked; + LabelBlendAlphaTextRect.Enabled := CheckBoxSelAlphaBlend.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelAlphaRectClick(Sender: TObject); +begin + EasyListview1.Selection.AlphaBlendSelRect := CheckBoxSelAlphaRect.Checked; + GroupBox1.Enabled := CheckBoxSelAlphaRect.Checked; + Label6.Enabled := CheckBoxSelAlphaRect.Checked; + TrackBarSelBlendAlpha.Enabled := CheckBoxSelAlphaRect.Checked; + PanelSelRectBlendColor.Enabled := CheckBoxSelAlphaRect.Checked; + Label7.Enabled := CheckBoxSelAlphaRect.Checked; + PanelSelRectBorderColor.Enabled := CheckBoxSelAlphaRect.Checked; + Label15.Enabled := CheckBoxSelAlphaRect.Checked; + LabelSelBlendAlpha.Enabled := CheckBoxSelAlphaRect.Checked; + CheckBoxSelRectMouseButtonL.Enabled := CheckBoxSelAlphaRect.Checked; + CheckBoxSelRectMouseButtonM.Enabled := CheckBoxSelAlphaRect.Checked; + CheckBoxSelRectMouseButtonR.Enabled := CheckBoxSelAlphaRect.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelRoundClick(Sender: TObject); +begin + EasyListview1.Selection.RoundRect := CheckBoxSelRound.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSelAutoScrollClick(Sender: TObject); +begin + EasyListview1.Selection.AutoScroll := CheckBoxSelAutoScroll.Checked +end; + +procedure TForm1.EditSelExit(Sender: TObject); +begin + SyncForm +end; + +procedure TForm1.EditSelScrollDelayKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + SyncForm; + Key := #0 + end +end; + +function TForm1.ChangeColor(Panel: TPanel): TColor; +begin + Result := Panel.Color; + ColorDialog1.Color := Panel.Color; + if ColorDialog1.Execute then + begin + Panel.Color := ColorDialog1.Color; + Result := ColorDialog1.Color; + EasyListview1.Invalidate + end +end; + +procedure TForm1.PanelSelBorderColorClick(Sender: TObject); +begin + EasyListview1.Selection.BorderColor := ChangeColor(PanelSelBorderColor) +end; + +procedure TForm1.PanelSelInactiveColorClick(Sender: TObject); +begin + EasyListview1.Selection.InactiveColor := ChangeColor(PanelSelInactiveColor) +end; + +procedure TForm1.PanelSelColorClick(Sender: TObject); +begin + EasyListview1.Selection.Color := ChangeColor(PanelSelColor) +end; + +procedure TForm1.PanelSelInactiveBorderColorClick(Sender: TObject); +begin + EasyListview1.Selection.InactiveBorderColor := ChangeColor(PanelSelInactiveBorderColor) +end; + +procedure TForm1.PanelSelTextColorClick(Sender: TObject); +begin + EasyListview1.Selection.TextColor := ChangeColor(PanelSelTextColor) +end; + +procedure TForm1.PanelSelInactiveTextColorClick(Sender: TObject); +begin + EasyListview1.Selection.InactiveTextColor := ChangeColor(PanelSelInactiveTextColor) +end; + +procedure TForm1.PanelSelRectBlendColorClick(Sender: TObject); +begin + EasyListview1.Selection.BlendColorSelRect := ChangeColor(PanelSelRectBlendColor) +end; + +procedure TForm1.PanelSelRectBorderColorClick(Sender: TObject); +begin + EasyListview1.Selection.BorderColorSelRect := ChangeColor(PanelSelRectBorderColor) +end; + +procedure TForm1.ButtonSelFirstClick(Sender: TObject); +var + s: string; +begin + SelectionItem := EasyListview1.Selection.First; + if Assigned(SelectionItem) then + begin + s := 'Item Found. Caption: ' + SelectionItem.Captions[0]; + MessageBox(Handle, PChar(s), 'Found Item', MB_OK); + end else + MessageBox(Handle, 'No Items found Selected', 'Notice', MB_OK); +end; + +procedure TForm1.ButtonSelNextClick(Sender: TObject); +var + s: string; +begin + SelectionItem := EasyListview1.Selection.Next(SelectionItem); + if Assigned(SelectionItem) then + begin + s := 'Item Found. Caption: ' + SelectionItem.Captions[0]; + MessageBox(Handle, PChar(s), 'Found Item', MB_OK); + end else + MessageBox(Handle, 'No Items found Selected', 'Notice', MB_OK); +end; + +procedure TForm1.ButtonSelFirstInGoupClick(Sender: TObject); +var + s: string; + i: Integer; +begin + i := StrToInt(EditSelGroup.Text); + if i < EasyListview1.Groups.Count then + begin + SelectionGroup := EasyListview1.Groups[i]; + SelectionItem := EasyListview1.Selection.FirstInGroup(SelectionGroup); + if Assigned(SelectionItem) then + begin + s := 'Item Found. Caption: ' + SelectionItem.Captions[0]; + MessageBox(Handle, PChar(s), 'Found Item', MB_OK); + end else + MessageBox(Handle, 'No Items found Selected', 'Notice', MB_OK); + end else + MessageBox(Handle, 'Group Index out of Range', 'Notice', MB_OK); +end; + +procedure TForm1.ButtonSelNextInGroupClick(Sender: TObject); +var + s: string; +begin + if Assigned(SelectionGroup) then + begin + SelectionItem := EasyListview1.Selection.NextInGroup(SelectionGroup, SelectionItem); + if Assigned(SelectionItem) then + begin + s := 'Item Found. Caption: ' + SelectionItem.Captions[0]; + MessageBox(Handle, PChar(s), 'Found Item', MB_OK); + end else + MessageBox(Handle, 'No Items found Selected', 'Notice', MB_OK); + end else + MessageBox(Handle, 'Group Index out of Range', 'Notice', MB_OK); +end; + +procedure TForm1.EasyListview1ItemFreeing(Sender: TCustomEasyListview; + Item: TEasyItem); +begin + if Item = SelectionItem then + SelectionItem := nil; +end; + +procedure TForm1.EasyListview1GroupFreeing(Sender: TCustomEasyListview; + Group: TEasyGroup); +begin + if Group = SelectionGroup then + SelectionGroup := nil; +end; + +procedure TForm1.ButtonSelAllClick(Sender: TObject); +begin + EasyListview1.Selection.SelectAll; +end; + +procedure TForm1.ButtonSelClearClick(Sender: TObject); +begin + EasyListview1.Selection.ClearAll; +end; + +procedure TForm1.ButtonSelInvertClick(Sender: TObject); +begin + EasyListview1.Selection.Invert +end; + +procedure TForm1.CheckBoxVisHideItemsClick(Sender: TObject); +var + i, j: Integer; +begin + EasyListview1.BeginUpdate; + try + if CheckBoxVisHideItems.Checked then + begin + for i := 0 to EasyListview1.Groups.Count - 1 do + begin + for j := 0 to EasyListview1.Groups[i].Items.Count - 1 do + begin + if j mod 2 = 0 then + EasyListview1.Groups[i].Items[j].Visible := False + end; + end + end else + begin + for i := 0 to EasyListview1.Groups.Count - 1 do + begin + for j := 0 to EasyListview1.Groups[i].Items.Count - 1 do + EasyListview1.Groups[i].Items[j].Visible := True; + end + end + finally + EasyListview1.EndUpdate; + end +end; + +procedure TForm1.CheckBoxVisHideGroupsClick(Sender: TObject); +var + i, j: Integer; +begin + EasyListview1.BeginUpdate; + try + if CheckBoxVisHideGroups.Checked then + begin + for i := 0 to EasyListview1.Groups.Count - 1 do + begin + if i mod 2 = 0 then + EasyListview1.Groups[i].Visible := False + end; + end else + begin + for i := 0 to EasyListview1.Groups.Count - 1 do + begin + EasyListview1.Groups[i].Visible := True; + if CheckBoxVisHideItems.Checked then + begin + for j := 0 to EasyListview1.Groups[i].Items.Count - 1 do + if j mod 2 = 0 then + EasyListview1.Groups[i].Items[j].Visible := False + end + end + end + finally + EasyListview1.EndUpdate; + end +end; + +procedure TForm1.CheckBoxSelLinearSelectClick(Sender: TObject); +begin + EasyListview1.Selection.RectSelect := CheckBoxSelLinearSelect.Checked +end; + +procedure TForm1.EasyListview1GroupInitialize(Sender: TCustomEasyListview; + Group: TEasyGroup); +begin + Group.Caption := 'Group ' + IntToStr(Group.Index); + Group.ImageIndex := Random(Imagelists.ImageListGroups.Count); +end; + +procedure TForm1.ComboBoxItemGroupCheckTypeChange(Sender: TObject); +begin + EasyListview1.Groups.BeginUpdate(False); + try + EasyListview1.PaintInfoGroup.CheckType := TEasyCheckType(ComboBoxItemGroupCheckType.ItemIndex); + finally + EasyListview1.Groups.EndUpdate + end +end; + +procedure TForm1.ComboBoxItemColumnCheckTypeChange(Sender: TObject); +begin + EasyListview1.Groups.BeginUpdate(False); + try + EasyListview1.PaintInfoColumn.CheckType := TEasyCheckType(ComboBoxItemColumnCheckType.ItemIndex); + finally + EasyListview1.Groups.EndUpdate + end +end; + +procedure TForm1.EasyListview1ColumnInitialize(Sender: TCustomEasyListview; + Column: TEasyColumn); +begin + Column.Caption := 'Caption: ' + IntToStr(Column.Index) +end; + + +procedure TForm1.EasyListview1ColumnClick(Sender: TCustomEasyListview; + Button: TCommonMouseButton; Column: TEasyColumn); +begin +// MessageBox(Handle, PChar('Clicked Column: ' + IntToStr(Column.Index)), 'Notice', MB_OK); +end; + + +procedure TForm1.EasyListview1ColumnSizeChanging( + Sender: TCustomEasyListview; Column: TEasyColumn; Width, + NewWidth: Integer; var Allow: Boolean); +begin + if CheckBoxMaxSizeWidth.Checked then + Allow := NewWidth < StrToInt(EditMaxSizeWidth.Text) + else + Allow := True +end; + +procedure TForm1.CheckBoxMaxSizeWidthClick(Sender: TObject); +var + i, MaxWidth: Integer; +begin + EditMaxSizeWidth.Enabled := CheckBoxMaxSizeWidth.Checked; + if CheckBoxMaxSizeWidth.Checked then + begin + MaxWidth := StrToInt(EditMaxSizeWidth.Text); + for i := 0 to EasyListview1.Header.Columns.Count - 1 do + if EasyListview1.Header.Columns[i].Width > MaxWidth - 1 then + EasyListview1.Header.Columns[i].Width := MaxWidth - 1 + end +end; + +procedure TForm1.EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); +begin + AllowDrag := True; + AvailableEffects := [cdeCopy] +end; + +procedure TForm1.SyncGroupsTab; +begin + CheckBoxGroupExpandable.Checked := EasyListview1.PaintInfoGroup.Expandable; + CheckBoxBlendedBand.Checked := EasyListview1.PaintInfoGroup.BandBlended; + PanelBandStartColor.Color := EasyListview1.PaintInfoGroup.BandColor; + PanelBandFadeColor.Color := EasyListview1.PaintInfoGroup.BandColorFade; + EditBandWidth.Text := IntToStr(EasyListview1.PaintInfoGroup.BandThickness); + EditBandLength.Text := IntToStr(EasyListview1.PaintInfoGroup.BandLength); + EditBandMargin.Text := IntToStr(EasyListview1.PaintInfoGroup.BandMargin); + CheckBoxBandTracksWindow.Checked := EasyListview1.PaintInfoGroup.BandFullWidth; + CheckBoxMarginTop.Checked := EasyListview1.PaintInfoGroup.MarginTop.Visible; + CheckBoxMarginBottom.Checked := EasyListview1.PaintInfoGroup.MarginBottom.Visible; + CheckBoxMarginLeft.Checked := EasyListview1.PaintInfoGroup.MarginLeft.Visible; + CheckBoxMarginRight.Checked := EasyListview1.PaintInfoGroup.MarginRight.Visible; +end; + +procedure TForm1.CheckBoxGroupExpandableClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.Expandable := CheckBoxGroupExpandable.Checked +end; + +procedure TForm1.CheckBoxBlendedBandClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandBlended := CheckBoxBlendedBand.Checked +end; + +procedure TForm1.PanelBandStartColorClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandColor := ChangeColor(PanelBandStartColor) +end; + +procedure TForm1.PanelBandFadeColorClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandColorFade := ChangeColor(PanelBandFadeColor) +end; + +procedure TForm1.EditBandWidthKeyPress(Sender: TObject; var Key: Char); +begin + if Key = #13 then + begin + Key := #0; + EasyListview1.PaintInfoGroup.BandThickness := StrToInt(EditBandWidth.Text) + end; +end; + +procedure TForm1.EditBandWidthExit(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandThickness := StrToInt(EditBandWidth.Text) +end; + +procedure TForm1.EditBandLengthExit(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandLength := StrToInt(EditBandLength.Text) +end; + +procedure TForm1.EditBandLengthKeyPress(Sender: TObject; var Key: Char); +begin + if Key = #13 then + begin + Key := #0; + EasyListview1.PaintInfoGroup.BandLength := StrToInt(EditBandLength.Text) + end; +end; + +procedure TForm1.CheckBoxBandTracksWindowClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandFullWidth := CheckBoxBandTracksWindow.Checked +end; + +procedure TForm1.CheckBoxMarginTopClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.MarginTop.Visible := CheckBoxMarginTop.Checked +end; + +procedure TForm1.CheckBoxMarginBottomClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.MarginBottom.Visible := CheckBoxMarginBottom.Checked +end; + +procedure TForm1.CheckBoxMarginLeftClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.MarginLeft.Visible := CheckBoxMarginLeft.Checked +end; + +procedure TForm1.CheckBoxMarginRightClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.MarginRight.Visible := CheckBoxMarginRight.Checked +end; + +procedure TForm1.CheckBoxSelMouseButtonLClick(Sender: TObject); +begin + if CheckBoxSelMouseButtonL.Checked then + EasyListview1.Selection.MouseButton := EasyListview1.Selection.MouseButton + [cmbLeft] + else + EasyListview1.Selection.MouseButton := EasyListview1.Selection.MouseButton - [cmbLeft] +end; + +procedure TForm1.CheckBoxSelMouseButtonRClick(Sender: TObject); +begin + if CheckBoxSelMouseButtonR.Checked then + EasyListview1.Selection.MouseButton := EasyListview1.Selection.MouseButton + [cmbRight] + else + EasyListview1.Selection.MouseButton := EasyListview1.Selection.MouseButton - [cmbRight] +end; + +procedure TForm1.CheckBoxSelMouseButtonMClick(Sender: TObject); +begin + if CheckBoxSelMouseButtonM.Checked then + EasyListview1.Selection.MouseButton := EasyListview1.Selection.MouseButton + [cmbMiddle] + else + EasyListview1.Selection.MouseButton := EasyListview1.Selection.MouseButton - [cmbMiddle] +end; + +procedure TForm1.CheckBoxSelRectMouseButtonLClick(Sender: TObject); +begin + if CheckBoxSelRectMouseButtonL.Checked then + EasyListview1.Selection.MouseButtonSelRect := EasyListview1.Selection.MouseButtonSelRect + [cmbLeft] + else + EasyListview1.Selection.MouseButtonSelRect := EasyListview1.Selection.MouseButtonSelRect - [cmbLeft] +end; + +procedure TForm1.CheckBoxSelRectMouseButtonRClick(Sender: TObject); +begin + if CheckBoxSelRectMouseButtonR.Checked then + EasyListview1.Selection.MouseButtonSelRect := EasyListview1.Selection.MouseButtonSelRect + [cmbRight] + else + EasyListview1.Selection.MouseButtonSelRect := EasyListview1.Selection.MouseButtonSelRect - [cmbRight] +end; + +procedure TForm1.CheckBoxSelRectMouseButtonMClick(Sender: TObject); +begin + if CheckBoxSelRectMouseButtonM.Checked then + EasyListview1.Selection.MouseButtonSelRect := EasyListview1.Selection.MouseButtonSelRect + [cmbMiddle] + else + EasyListview1.Selection.MouseButtonSelRect := EasyListview1.Selection.MouseButtonSelRect - [cmbMiddle] +end; + +procedure TForm1.CheckBoxHeaderHotTrackClick(Sender: TObject); +begin + EasyListview1.PaintInfoColumn.HotTrack := CheckBoxHeaderHotTrack.Checked +end; + +procedure TForm1.CheckBoxHeaderSizeableClick(Sender: TObject); +begin + EasyListview1.Header.Sizeable := CheckBoxHeaderSizeable.Checked +end; + +procedure TForm1.CheckBoxHeaderClickableClick(Sender: TObject); +var + i: Integer; +begin + for i := 0 to EasyListview1.Header.Columns.Count - 1 do + EasyListview1.Header.Columns[i].Clickable := CheckBoxHeaderClickable.Checked; +end; + +procedure TForm1.CheckBoxFullItemSelectClick(Sender: TObject); +begin + EasyListview1.Selection.FullItemPaint := CheckBoxFullItemSelect.Checked +end; + +procedure TForm1.CheckBoxFullCellSelectClick(Sender: TObject); +begin + EasyListview1.Selection.FullCellPaint := CheckBoxFullCellSelect.Checked +end; + +procedure TForm1.CheckBoxGroupSelectionClick(Sender: TObject); +begin + EasyListview1.Selection.GroupSelections := CheckBoxGroupSelection.Checked +end; + +procedure TForm1.Button3Click(Sender: TObject); +begin + EasyListview1.Groups.ReIndexDisable := True; + EasyListview1.Groups.Clear; + EasyListview1.Groups.ReIndexDisable := False; + EasyListview1.Header.Columns.Clear; +end; + +procedure TForm1.EditSelRoundRadiusKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + EasyListview1.Selection.RoundRectRadius := StrToInt(EditSelRoundRadius.Text); + InvalidateLV; + Key := #0 + end +end; + +procedure TForm1.EditSelRoundRadiusExit(Sender: TObject); +begin + EasyListview1.Selection.RoundRectRadius := StrToInt(EditSelRoundRadius.Text); + InvalidateLV +end; + +procedure TForm1.ButtonSizeResetClick(Sender: TObject); +begin + TrackBarSizeIconWidth.Position := 75; + TrackBarSizeIconHeight.Position := 75; + TrackBarSizeIconSmallWidth.Position := 200; + TrackBarSizeIconSmallHeight.Position := 17; + TrackBarSizeListHeight.Position := 17; + TrackBarSizeListWidth.Position := 200; + TrackBarSizeThumbsWidth.Position := 125; + TrackBarSizethumbsHeight.Position := 143; + TrackBarSizeTilesWidth.Position := 218; + TrackBarSizeTilesHeight.Position := 58; + TrackBarSizeReportWidth.Position := 75; + TrackBarSizeReportHeight.Position := 17; +end; + +procedure TForm1.TrackBarSizeIconWidthChange(Sender: TObject); +begin + LabelIconSizeWidth.Caption := IntToStr(TrackBarSizeIconWidth.Position); + EasyListview1.CellSizes.Icon.Width := TrackBarSizeIconWidth.Position +end; + +procedure TForm1.TrackBarSizeIconHeightChange(Sender: TObject); +begin + LabelIconSizeHeight.Caption := IntToStr(TrackBarSizeIconHeight.Position); + EasyListview1.CellSizes.Icon.Height := TrackBarSizeIconHeight.Position +end; + +procedure TForm1.TrackBarSizeIconSmallWidthChange(Sender: TObject); +begin + LabelSmallIconSizeWidth.Caption := IntToStr(TrackBarSizeIconSmallWidth.Position); + EasyListview1.CellSizes.SmallIcon.Width := TrackBarSizeIconSmallWidth.Position +end; + +procedure TForm1.TrackBarSizeIconSmallHeightChange(Sender: TObject); +begin + LabelSmallIconSizeHeight.Caption := IntToStr(TrackBarSizeIconSmallHeight.Position); + EasyListview1.CellSizes.SmallIcon.Height := TrackBarSizeIconSmallHeight.Position +end; + +procedure TForm1.TrackBarSizeListWidthChange(Sender: TObject); +begin + LabelListSizeWidth.Caption := IntToStr(TrackBarSizeListWidth.Position); + EasyListview1.CellSizes.List.Width := TrackBarSizeListWidth.Position +end; + +procedure TForm1.TrackBarSizeListHeightChange(Sender: TObject); +begin + LabelListSizeHeight.Caption := IntToStr(TrackBarSizeListHeight.Position); + EasyListview1.CellSizes.List.Height := TrackBarSizeListHeight.Position +end; + +procedure TForm1.TrackBarSizeThumbsWidthChange(Sender: TObject); +begin + LabelThumbSizeWidth.Caption := IntToStr(TrackBarSizeThumbsWidth.Position); + EasyListview1.CellSizes.Thumbnail.Width := TrackBarSizeThumbsWidth.Position +end; + +procedure TForm1.TrackBarSizeThumbsHeightChange(Sender: TObject); +begin + LabelThumbSizeHeight.Caption := IntToStr(TrackBarSizeThumbsHeight.Position); + EasyListview1.CellSizes.Thumbnail.Height := TrackBarSizeThumbsHeight.Position +end; + +procedure TForm1.TrackBarSizeTilesWidthChange(Sender: TObject); +begin + LabelTileSizeWidth.Caption := IntToStr(TrackBarSizeTilesWidth.Position); + EasyListview1.CellSizes.Tile.Width := TrackBarSizeTilesWidth.Position +end; + +procedure TForm1.TrackBarSizeTilesHeightChange(Sender: TObject); +begin + LabelTileSizeHeight.Caption := IntToStr(TrackBarSizeTilesHeight.Position); + EasyListview1.CellSizes.Tile.Height := TrackBarSizeTilesHeight.Position +end; + +procedure TForm1.TrackBarSizeReportWidthChange(Sender: TObject); +begin + LabelReportSizeWidth.Caption := IntToStr(TrackBarSizeReportWidth.Position); + EasyListview1.CellSizes.Report.Width := TrackBarSizeReportWidth.Position +end; + +procedure TForm1.TrackBarSizeReportHeightChange(Sender: TObject); +begin + LabelReportSizeHeight.Caption := IntToStr(TrackBarSizeReportHeight.Position); + EasyListview1.CellSizes.Report.Height := TrackBarSizeReportHeight.Position +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + SaveDialogStream.Filter := 'Stream Data Files (*.dat)|*.DAT'; + SaveDialogStream.DefaultExt := '.dat'; + if SaveDialogStream.Execute then + EasyListview1.SaveToFile(SaveDialogStream.FileName, fmCreate or fmShareExclusive); +end; + +procedure TForm1.Button4Click(Sender: TObject); +begin + OpenDialogStream.Filter := 'Stream Data Files (*.dat)|*.DAT'; + OpenDialogStream.DefaultExt := '.dat'; + if OpenDialogStream.Execute then + begin + EasyListview1.LoadFromFile(OpenDialogStream.FileName, fmOpenRead or fmShareExclusive); + SyncForm + end +end; + +procedure TForm1.ButtonExpandAllClick(Sender: TObject); +begin + EasyListview1.Groups.ExpandAll +end; + +procedure TForm1.ButtonCollapseAllClick(Sender: TObject); +begin + EasyListview1.Groups.CollapseAll +end; + +procedure TForm1.EasyListview1ItemGetImageIndex( + Sender: TCustomEasyListview; const Item: TEasyItem; Column: Integer; + ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); +begin + if (ImageKind = eikNormal) and (Column < 1) then + ImageIndex := Item.Index mod ImageLists.ImageListSmall.Count + else + if (ImageKind = eikState) and CheckBoxStateImages.Checked and (Column < 1) then + ImageIndex := Item.Index mod ImageListState.Count +end; + +procedure TForm1.EasyListview1GroupGetCaption(Sender: TCustomEasyListview; + const Group: TEasyGroup; var Caption: WideString); +begin + Caption := 'Group: ' + IntToStr(Group.Index) +end; + +procedure TForm1.EasyListview1GroupGetImageIndex( + Sender: TCustomEasyListview; const Group: TEasyGroup; + ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); +begin + if ImageKind = eikNormal then + ImageIndex := Group.Index mod ImageLists.ImageListGroups.Count +end; + +procedure TForm1.EasyListview1ColumnGetImageIndex( + Sender: TCustomEasyListview; const Column: TEasyColumn; + ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); +begin + if ImageKind = eikNormal then + ImageIndex := Column.Index mod ImageLists.ImageListSmall.Count +end; + +procedure TForm1.CheckBoxResizeGroupClick(Sender: TObject); +begin + EasyListview1.Selection.ResizeGroupOnFocus := CheckBoxResizeGroup.Checked +end; + +procedure TForm1.CheckBoxBlendIconClick(Sender: TObject); +begin + EasyListview1.Selection.BlendIcon := CheckBoxBlendIcon.Checked +end; + +procedure TForm1.CheckBoxShowGroupMarginsClick(Sender: TObject); +begin + EasyListview1.ShowGroupMargins := CheckBoxShowGroupMargins.Checked +end; + +procedure TForm1.EasyListview1ItemGetTileDetailCount( + Sender: TCustomEasyListview; const Item: TEasyItem; var Count: Integer); +begin + Count := StrToInt(EditTileDetailCount.Text); +end; + +procedure TForm1.EasyListview1ItemGetTileDetail( + Sender: TCustomEasyListview; const Item: TEasyItem; Line: Integer; + var Detail: Integer); +begin + // Return the column to take the detail from + Detail := Line; + if Detail > EasyListview1.Header.Columns.Count - 1 then + Detail := 0; +end; + +procedure TForm1.EditTileDetailCountExit(Sender: TObject); +begin + EasyListview1.Invalidate; +end; + +procedure TForm1.EditTileDetailCountKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + EasyListview1.Invalidate; + Key := #0 + end +end; + +procedure TForm1.CheckBoxHeaderDraggableClick(Sender: TObject); +begin + EasyListview1.Header.Draggable := CheckBoxHeaderDraggable.Checked +end; + +procedure TForm1.CheckBoxDragDropClick(Sender: TObject); +begin + EasyListview1.DragManager.Enabled := CheckBoxDragDrop.Checked +end; + +procedure TForm1.EasyListview1OLEDragOver(Sender: TCustomEasyListview; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; + var DesiredDropEffect: TCommonDropEffect); +begin + DesiredDropEffect := cdeMove +end; + +procedure TForm1.CheckBoxAutoToggleSortClick(Sender: TObject); +var + i: Integer; +begin + for i := 0 to EasyListview1.Header.Columns.Count - 1 do + begin + if not CheckBoxAutoToggleSort.Checked then + EasyListview1.Header.Columns[i].SortDirection := esdNone; + EasyListview1.Header.Columns[i].AutoToggleSortGlyph := CheckBoxAutoToggleSort.Checked; + end +end; + +procedure TForm1.EasyListview1ColumnPaintText(Sender: TCustomEasyListview; + Column: TEasyColumn; ACanvas: TCanvas); +begin + if CheckBoxRandomHeaderCaptionColors.Checked then + ACanvas.Font.Color := Random(clWhite); +end; + +procedure TForm1.EasyListview1GroupPaintText(Sender: TCustomEasyListview; + Group: TEasyGroup; ACanvas: TCanvas); +begin + if CheckBoxRandomGroupCaptionColor.Checked then + ACanvas.Font.Color := Random(clWhite); +end; + +procedure TForm1.CheckBoxRandomItemCaptionColorClick(Sender: TObject); +begin + EasyListview1.Invalidate +end; + +procedure TForm1.CheckBoxRandomGroupCaptionColorClick(Sender: TObject); +begin + EasyListview1.Invalidate +end; + +procedure TForm1.CheckBoxRandomHeaderCaptionColorsClick(Sender: TObject); +begin + EasyListview1.Invalidate +end; + +procedure TForm1.RadioGroupIncrementalSearchDirClick(Sender: TObject); +begin + EasyListview1.IncrementalSearch.Direction := TEasyIncrementalSearchDir(RadioGroupIncrementalSearchDir.ItemIndex) +end; + +procedure TForm1.ComboBoxIncrementalSearchTypeChange(Sender: TObject); +begin + EasyListview1.IncrementalSearch.ItemType := TEasyIncrementalSearchItemType(ComboBoxIncrementalSearchType.ItemIndex) +end; + +procedure TForm1.ComboBoxIncrementalSearchStartTypeChange(Sender: TObject); +begin + EasyListview1.IncrementalSearch.StartType := TCoolIncrementalSearchStart(ComboBoxIncrementalSearchStartType.ItemIndex) +end; + +procedure TForm1.EditIncrementalSearchResetTimeKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + EasyListview1.IncrementalSearch.ResetTime := StrToInt(EditIncrementalSearchResetTime.Text); + Key := #0 + end +end; + +procedure TForm1.EditIncrementalSearchResetTimeExit(Sender: TObject); +begin + EasyListview1.IncrementalSearch.ResetTime := StrToInt(EditIncrementalSearchResetTime.Text) +end; + +procedure TForm1.CheckBoxIncrementalSearchEnableClick(Sender: TObject); +begin + EasyListview1.IncrementalSearch.Enabled := CheckBoxIncrementalSearchEnable.Checked +end; + +procedure TForm1.EasyListview1IncrementalSearch(Item: TEasyCollectionItem; + const SearchBuffer: WideString; var Handled: Boolean; var CompareResult: Integer); +begin + LabelQuery.Caption := SearchBuffer; + // Will automatically handle the search if we leave Handled to False +end; + +procedure TForm1.CheckBoxDragDropEnabledClick(Sender: TObject); +begin + EasyListview1.DragManager.Enabled := CheckBoxDragDropEnabled.Checked +end; + +procedure TForm1.TrackBarSelTextBlendAlphaChange(Sender: TObject); +begin + EasyListview1.Selection.BlendAlphaTextRect := TrackBarSelTextBlendAlpha.Position; + LabelBlendAlphaTextRect.Caption := IntToStr(TrackBarSelTextBlendAlpha.Position); + EasyListview1.Invalidate; +end; + +procedure TForm1.EasyListview1GroupHotTrack(Sender: TCustomEasyListview; + Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); +begin + if State = ehsEnable then + Label46.Caption := 'Group: ' + IntToStr(Group.Index) + ' Hot Tracking' + else + Label46.Caption := 'Group not Hot Tracking' +end; + +procedure TForm1.EasyListview1ItemHotTrack(Sender: TCustomEasyListview; + Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); +begin + if State = ehsEnable then + Label48.Caption := 'Item: ' + IntToStr(Item.Index) + ' Hot Tracking' + else + Label48.Caption := 'Item not Hot Tracking' +end; + +procedure TForm1.CheckBoxHotTrackEnableClick(Sender: TObject); +begin + EasyListview1.HotTrack.Enabled := CheckBoxHotTrackEnable.Checked +end; + +procedure TForm1.CheckBoxGroupHitIconClick(Sender: TObject); +begin + if CheckBoxGroupHitIcon.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgIcon] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgIcon] +end; + +procedure TForm1.CheckBoxGroupHitTextClick(Sender: TObject); +begin + if CheckBoxGroupHitText.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgText] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgText] +end; + +procedure TForm1.CheckBoxGroupHitTopClick(Sender: TObject); +begin + if CheckBoxGroupHitTop.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgTopMargin] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgTopMargin] +end; + +procedure TForm1.CheckBoxGroupHitBottomClick(Sender: TObject); +begin + if CheckBoxGroupHitBottom.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgBottomMargin] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgBottomMargin] +end; + +procedure TForm1.CheckBoxGroupHitLeftClick(Sender: TObject); +begin + if CheckBoxGroupHitLeft.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgLeftMargin] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgLeftMargin] +end; + +procedure TForm1.CheckBoxGroupHitRightClick(Sender: TObject); +begin + if CheckBoxGroupHitRight.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgRightMargin] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgRightMargin] +end; + +procedure TForm1.CheckBoxGroupHitAnywhereClick(Sender: TObject); +begin + if CheckBoxGroupHitAnywhere.Checked then + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack + [htgAnyWhere] + else + EasyListview1.HotTrack.GroupTrack := EasyListview1.HotTrack.GroupTrack - [htgAnyWhere] +end; + +procedure TForm1.CheckBoxItemHitIconClick(Sender: TObject); +begin + if CheckBoxItemHitIcon.Checked then + EasyListview1.HotTrack.ItemTrack := EasyListview1.HotTrack.ItemTrack + [htiIcon] + else + EasyListview1.HotTrack.ItemTrack := EasyListview1.HotTrack.ItemTrack - [htiIcon] +end; + +procedure TForm1.CheckBoxItemHitTextClick(Sender: TObject); +begin + if CheckBoxItemHitText.Checked then + EasyListview1.HotTrack.ItemTrack := EasyListview1.HotTrack.ItemTrack + [htiText] + else + EasyListview1.HotTrack.ItemTrack := EasyListview1.HotTrack.ItemTrack - [htiText] +end; + +procedure TForm1.CheckBoxItemHitAnyWhereClick(Sender: TObject); +begin + if CheckBoxItemHitAnyWhere.Checked then + EasyListview1.HotTrack.ItemTrack := EasyListview1.HotTrack.ItemTrack + [htiAnyWhere] + else + EasyListview1.HotTrack.ItemTrack := EasyListview1.HotTrack.ItemTrack - [htiAnyWhere] +end; + +procedure TForm1.CheckBoxUnderLineTextClick(Sender: TObject); +begin + EasyListview1.HotTrack.Underline := CheckBoxUnderLineText.Checked +end; + +procedure TForm1.CheckBoxHotTrackFocusOnlyClick(Sender: TObject); +begin + EasyListview1.HotTrack.OnlyFocused := CheckBoxHotTrackFocusOnly.Checked +end; + +procedure TForm1.EasyListview1ItemPaintText(Sender: TCustomEasyListview; + Item: TEasyItem; Position: Integer; ACanvas: TCanvas); +begin + if CheckBoxRandomItemCaptionColor.Checked and not Item.Selected then + begin + case Item.ImageIndex of + 0: ACanvas.Font.Color := (clGreen); + 1: ACanvas.Font.Color := (clRed); + 2: ACanvas.Font.Color := (clBlue); + end + end; + if (CheckBoxRedDetails.Checked) and (Position > 0) then + ACanvas.Font.Color := clRed; +end; + +procedure TForm1.CheckBoxRedDetailsClick(Sender: TObject); +begin + EasyListview1.Invalidate; +end; + +procedure TForm1.CheckBoxBkGndClick(Sender: TObject); +begin + EasyListview1.BackGround.Enabled := CheckBoxBkGnd.Checked +end; + +procedure TForm1.CheckBoxHilightColumnClick(Sender: TObject); +begin + EasyListview1.PaintInfoColumn.HilightFocused := CheckBoxHilightColumn.Checked +end; + +procedure TForm1.ButtonHilightColorClick(Sender: TObject); +begin + ColorDialog1.Color := EasyListview1.PaintInfoColumn.HilightFocusedColor; + if ColorDialog1.Execute then + EasyListview1.PaintInfoColumn.HilightFocusedColor := ColorDialog1.Color +end; + +procedure TForm1.CheckBoxGridLinesClick(Sender: TObject); +begin + EasyListview1.PaintInfoItem.GridLines := CheckBoxGridLines.Checked +end; + +procedure TForm1.ButtonGridLineColorClick(Sender: TObject); +begin + ColorDialog1.Color := EasyListview1.PaintInfoItem.GridLineColor; + if ColorDialog1.Execute then + EasyListview1.PaintInfoItem.GridLineColor := ColorDialog1.Color +end; + +procedure TForm1.EasyListview1ItemGetCaption(Sender: TCustomEasyListview; + Item: TEasyItem; Column: Integer; var Caption: WideString); +begin + // Caption := 'Item'; Exit; + case Column of + 0: Caption := 'Group: ' + IntToStr(Item.OwnerGroup.Index) + + ' Item: ' + IntToStr(Item.Index) + + ' Column: ' + IntToStr(Column) + + ' Visible Index: ' + IntToStr(Item.VisibleIndex); + else + Caption := ' Column: ' + IntToStr(Column); + end; +end; + +procedure TForm1.CheckBoxSelectionGradientClick(Sender: TObject); +begin + EasyListview1.Selection.Gradient := CheckBoxSelectionGradient.Checked +end; + +procedure TForm1.PanelGradientTopClick(Sender: TObject); +begin + ColorDialog1.Color := EasyListview1.Selection.GradientColorTop; + if ColorDialog1.Execute then + begin + EasyListview1.Selection.GradientColorTop := ColorDialog1.Color; + PanelGradientTop.Color := ColorDialog1.Color; + end +end; + +procedure TForm1.PanelGradientBottomClick(Sender: TObject); +begin + ColorDialog1.Color := EasyListview1.Selection.GradientColorBottom; + if ColorDialog1.Execute then + begin + EasyListview1.Selection.GradientColorBottom := ColorDialog1.Color; + PanelGradientBottom.Color := ColorDialog1.Color; + end +end; + +procedure TForm1.CheckBoxSelectionBlurBkGndClick(Sender: TObject); +begin + EasyListview1.Selection.BlurAlphaBkGnd := CheckBoxSelectionBlurBkGnd.Checked +end; + +procedure TForm1.CheckBoxBkGndTextClick(Sender: TObject); +begin + EasyListview1.BackGround.CaptionShow := CheckBoxBkGndText.Checked +end; + +procedure TForm1.EditBkGndCaptionChange(Sender: TObject); +begin + EasyListview1.BackGround.Caption := EditBkGndCaption.Text +end; + +procedure TForm1.RadioGroupBkGndCaptionAlignmentClick(Sender: TObject); +begin + EasyListview1.BackGround.CaptionAlignment := TAlignment(RadioGroupBkGndCaptionAlignment.ItemIndex) +end; + +procedure TForm1.RadioGroupBkGndCaptionVAlignmentClick(Sender: TObject); +begin + EasyListview1.BackGround.CaptionVAlignment := TCommonVAlignment(RadioGroupBkGndCaptionVAlignment.ItemIndex) +end; + +procedure TForm1.CheckBoxBkGndCaptionOnlyWhenEmptyClick(Sender: TObject); +begin + EasyListview1.BackGround.CaptionShowOnlyWhenEmpty := CheckBoxBkGndCaptionOnlyWhenEmpty.Checked +end; + +procedure TForm1.CheckBoxBkGndCaptionSingleLineClick(Sender: TObject); +begin + EasyListview1.BackGround.CaptionSingleLine := CheckBoxBkGndCaptionSingleLine.Checked +end; + +procedure TForm1.CheckBoxBkGndTileClick(Sender: TObject); +begin + EasyListview1.BackGround.Tile := CheckBoxBkGndTile.Checked +end; + +procedure TForm1.CheckBoxBkGndTransparentClick(Sender: TObject); +begin + EasyListview1.BackGround.Transparent := CheckBoxBkGndTransparent.Checked +end; + +procedure TForm1.TrackBarBkGndXOffsetChange(Sender: TObject); +begin + EasyListview1.BackGround.OffsetX := TrackBarBkGndXOffset.Position +end; + +procedure TForm1.TrackBarBkGndYOffsetChange(Sender: TObject); +begin + EasyListview1.BackGround.OffsetY := TrackBarBkGndYOffset.Position +end; + +procedure TForm1.CheckBoxTrackOffsetsClick(Sender: TObject); +begin + EasyListview1.BackGround.OffsetTrack := CheckBoxTrackOffsets.Checked +end; + +procedure TForm1.ButtonBkGndLoadImageClick(Sender: TObject); +begin + OpenDialogStream.Filter := 'Bitmap Files (*.bmp)|*.BMP'; + if OpenDialogStream.Execute then + begin + EasyListview1.BackGround.Image.LoadFromFile(OpenDialogStream.FileName); + EditBkGndImage.Text := OpenDialogStream.FileName; + end +end; + +procedure TForm1.EasyListview1PaintBkGnd(Sender: TCustomEasyListview; + ACanvas: TCanvas; AWindowRect: TRect; AlphaBlender: TEasyAlphaBlender; + var DoDefault: Boolean); +var + R: TRect; +begin + if CheckBoxBkGndCustomDraw.Checked then + begin + DoDefault := False; + R := Rect(0, 0, 90, 90); + OffsetRect(R, Sender.ClientWidth - 100, Sender.Height - 100); + // Draw some rectangles in the corner + ACanvas.Brush.Color := clGreen; + ACanvas.Rectangle(R); + OffsetRect(R, -10, -10); + ACanvas.Brush.Color := clBlue; + ACanvas.Rectangle(R); + OffsetRect(R, -10, -10); + ACanvas.Brush.Color := clGreen; + ACanvas.Rectangle(R); + OffsetRect(R, -10, -10); + ACanvas.Brush.Color := clRed; + ACanvas.Rectangle(R); + OffsetRect(R, -10, -10); + ACanvas.Brush.Color := clYellow; + ACanvas.Rectangle(R); + + if CheckBoxCustomBkGndAlphaBlend.Checked then + begin + R := Rect(0, 0, 130, 130); + OffsetRect(R, Sender.ClientWidth - 140, Sender.Height - 140); + AlphaBlender.BasicBlend(EasyListview1, ACanvas, R, EasyListview1.Color, TrackBarCustomDrawBkGnd.Position, False); + end + end +end; + +procedure TForm1.CheckBoxBkGndCustomDrawClick(Sender: TObject); +begin + EasyListview1.SafeInvalidateRect(nil, False); +end; + +procedure TForm1.CheckBoxCustomDrawCirclesClick(Sender: TObject); +begin + EasyListview1.SafeInvalidateRect(nil, False); +end; + +procedure TForm1.TrackBarCustomDrawBkGndChange(Sender: TObject); +begin + EasyListview1.SafeInvalidateRect(nil, False); +end; + +procedure TForm1.CheckBoxCustomBkGndAlphaBlendClick(Sender: TObject); +begin + EasyListview1.SafeInvalidateRect(nil, False); +end; + +procedure TForm1.CheckBoxHideCaptionsClick(Sender: TObject); +begin + EasyListview1.PaintInfoItem.HideCaption := CheckBoxHideCaptions.Checked +end; + +procedure TForm1.Button5Click(Sender: TObject); +begin + EasyListview1.Selection.DeleteSelected(True); +end; + +procedure TForm1.CheckBoxStateImagesClick(Sender: TObject); +begin + // Since we are using VirtualItems all we have to do is repaint the control + if CheckBoxStateImages.Checked then + EasyListview1.ImagesState := ImageListState + else + EasyListview1.ImagesState := nil; + EasyListview1.Invalidate; +end; + +procedure TForm1.CheckBoxHeaderAlwaysVisibleClick(Sender: TObject); +begin + EasyListview1.Header.ShowInAllViews := CheckBoxHeaderAlwaysVisible.Checked; + InvalidateLV +end; + +procedure TForm1.CheckBoxSnapHorzScrollClick(Sender: TObject); +begin + EasyListview1.Scrollbars.SnapHorzView := CheckBoxSnapHorzScroll.Checked +end; + +procedure TForm1.EditHeightExit(Sender: TObject); +begin + EasyListview1.Header.Height := StrToInt(EditHeight.Text) +end; + +procedure TForm1.EditHeightKeyPress(Sender: TObject; var Key: Char); +begin + if Key = #13 then + begin + Key := #0; + EasyListview1.Header.Height := StrToInt(EditHeight.Text) + end +end; + +procedure TForm1.CheckBoxHeaderDropDownArrowClick(Sender: TObject); +var + i: Integer; +begin + for i := 0 to EasyListview1.Header.Columns.Count - 1 do + EasyListview1.Header.Columns[i].DropDownButton.Visible := CheckBoxHeaderDropDownArrow.Checked +end; + +procedure TForm1.EasyListview1ColumnGetCaption(Sender: TCustomEasyListview; + Column: TEasyColumn; Line: Integer; var Caption: WideString); +begin + Caption := 'Column: ' + IntToStr(Column.Index) +end; + +procedure TForm1.CheckBoxDropDownArrowAlwaysShowClick(Sender: TObject); +var + i: Integer; +begin + for i := 0 to EasyListview1.Header.Columns.Count - 1 do + EasyListview1.Header.Columns[i].DropDownButton.AlwaysShow := CheckBoxDropDownArrowAlwaysShow.Checked +end; + +procedure TForm1.CheckBoxDropDownButtonEnabledClick(Sender: TObject); +var + i: Integer; +begin + for i := 0 to EasyListview1.Header.Columns.Count - 1 do + EasyListview1.Header.Columns[i].DropDownButton.Enabled := CheckBoxDropDownButtonEnabled.Checked +end; + +procedure TForm1.EasyListview1ColumnDropDownButtonClick( + Sender: TCustomEasyListview; Column: TEasyColumn; + Button: TCommonMouseButton; ShiftState: TShiftState; WindowPt: TPoint; var DoDefault: Boolean); +begin + if CheckBoxDropDownButtonCustomAction.Checked then + begin + DoDefault := False; + MessageBox(Handle, PChar('Pressed DropDownButton on Column: ' + IntToStr(Column.Index)), 'Custom Action OnColumnDropDownButtonClick', MB_OK); + end +end; + +procedure TForm1.EditBandMarginExit(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandMargin := StrToInt(EditBandMargin.Text) +end; + +procedure TForm1.EditBandMarginKeyPress(Sender: TObject; var Key: Char); +begin + if Key = #13 then + begin + Key := #0; + EasyListview1.PaintInfoGroup.BandMargin := StrToInt(EditBandMargin.Text) + end; +end; + +procedure TForm1.RadioGroupGroupHAlignClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.Alignment := TAlignment( RadioGroupGroupHAlign.ItemIndex) +end; + +procedure TForm1.RadioGroupGroupVAlignClick(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.VAlignment := TCommonVAlignment( RadioGroupGroupVAlign.ItemIndex) +end; + +procedure TForm1.EditBandIndentExit(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.BandIndent := StrToInt(EditBandIndent.Text) +end; + +procedure TForm1.EditBandIndentKeyPress(Sender: TObject; var Key: Char); +begin + if Key = #13 then + begin + Key := #0; + EasyListview1.PaintInfoGroup.BandIndent := StrToInt(EditBandIndent.Text) + end; +end; + +procedure TForm1.EditGroupMarginTopExit(Sender: TObject); +begin + EasyListview1.PaintInfoGroup.MarginTop.Size := StrToInt(EditGroupMarginTop.Text); + EasyListview1.PaintInfoGroup.MarginBottom.Size := StrToInt(EditGroupMarginBottom.Text); + EasyListview1.PaintInfoGroup.MarginRight.Size := StrToInt(EditGroupMarginRight.Text); + EasyListview1.PaintInfoGroup.MarginLeft.Size := StrToInt(EditGroupMarginLeft.Text); +end; + +procedure TForm1.EditGroupMarginTopKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + Key := #0; + EasyListview1.PaintInfoGroup.MarginTop.Size := StrToInt(EditGroupMarginTop.Text); + EasyListview1.PaintInfoGroup.MarginBottom.Size := StrToInt(EditGroupMarginBottom.Text); + EasyListview1.PaintInfoGroup.MarginRight.Size := StrToInt(EditGroupMarginRight.Text); + EasyListview1.PaintInfoGroup.MarginLeft.Size := StrToInt(EditGroupMarginLeft.Text); + end; +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Grid/GridProject.dpr b/official/1.7.0/EasyListview/Demos/Grid/GridProject.dpr new file mode 100644 index 0000000..8ff8ec6 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Grid/GridProject.dpr @@ -0,0 +1,13 @@ +program GridProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Grid/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Grid/Unit1.dfm new file mode 100644 index 0000000..df02f59 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Grid/Unit1.dfm @@ -0,0 +1,172 @@ +object Form1: TForm1 + Left = 192 + Top = 114 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object SG: TEasyListview + Left = 209 + Top = 0 + Width = 479 + Height = 446 + Align = alClient + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + Selection.EnableDragSelect = True + Selection.MouseButtonSelRect = [cmbLeft, cmbRight] + Selection.MultiSelect = True + TabOrder = 0 + View = elsGrid + OnItemEditBegin = SGItemEditBegin + OnItemImageDraw = SGItemImageDraw + OnItemImageGetSize = SGItemImageGetSize + OnItemImageDrawIsCustom = SGItemImageDrawIsCustom + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 209 + Height = 446 + Align = alLeft + TabOrder = 1 + object Label1: TLabel + Left = 16 + Top = 88 + Width = 40 + Height = 13 + Caption = 'Columns' + FocusControl = EditRows + end + object Label2: TLabel + Left = 16 + Top = 40 + Width = 26 + Height = 13 + Caption = 'Rows' + end + object EditRows: TEdit + Left = 24 + Top = 56 + Width = 121 + Height = 21 + TabOrder = 0 + Text = '100' + end + object EditColumns: TEdit + Left = 24 + Top = 104 + Width = 121 + Height = 21 + TabOrder = 1 + Text = '10' + end + object Button1: TButton + Left = 16 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Clear' + TabOrder = 2 + OnClick = Button1Click + end + object Button2: TButton + Left = 104 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Load' + TabOrder = 3 + OnClick = Button2Click + end + object CheckboxAllowOddEdits: TCheckBox + Left = 24 + Top = 240 + Width = 177 + Height = 17 + Caption = 'Allow edit every other cell only' + TabOrder = 4 + end + object CheckBoxEnableEdit: TCheckBox + Left = 8 + Top = 224 + Width = 97 + Height = 17 + Caption = 'Editable' + TabOrder = 5 + OnClick = CheckBoxEnableEditClick + end + object CheckBoxTabMoveFocus: TCheckBox + Left = 24 + Top = 256 + Width = 145 + Height = 17 + Caption = 'Tab move edit focus' + TabOrder = 6 + OnClick = CheckBoxTabMoveFocusClick + end + object CheckBoxCustomDraw: TCheckBox + Left = 8 + Top = 288 + Width = 97 + Height = 17 + Caption = 'Custom Draw' + TabOrder = 7 + OnClick = CheckBoxCustomDrawClick + end + object CheckBoxShowHeader: TCheckBox + Left = 8 + Top = 192 + Width = 97 + Height = 17 + Caption = 'Show Header' + TabOrder = 8 + OnClick = CheckBoxShowHeaderClick + end + object CheckBoxShowFocusRect: TCheckBox + Left = 8 + Top = 136 + Width = 129 + Height = 17 + Caption = 'Show Focus Rect' + Checked = True + State = cbChecked + TabOrder = 9 + OnClick = CheckBoxShowFocusRectClick + end + object CheckBoxFullCellSelect: TCheckBox + Left = 8 + Top = 152 + Width = 97 + Height = 17 + Caption = 'Full Cell Select' + TabOrder = 10 + OnClick = CheckBoxFullCellSelectClick + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Grid/Unit1.pas b/official/1.7.0/EasyListview/Demos/Grid/Unit1.pas new file mode 100644 index 0000000..9e7b83e --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Grid/Unit1.pas @@ -0,0 +1,186 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, EasyListview, Grids, + MPCommonObjects; + +type + TForm1 = class(TForm) + SG: TEasyListview; + Panel1: TPanel; + EditRows: TEdit; + Label1: TLabel; + EditColumns: TEdit; + Label2: TLabel; + Button1: TButton; + Button2: TButton; + CheckboxAllowOddEdits: TCheckBox; + CheckBoxEnableEdit: TCheckBox; + CheckBoxTabMoveFocus: TCheckBox; + CheckBoxCustomDraw: TCheckBox; + CheckBoxShowHeader: TCheckBox; + CheckBoxShowFocusRect: TCheckBox; + CheckBoxFullCellSelect: TCheckBox; + procedure FormShow(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure SGItemImageDrawIsCustom(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; var IsCustom: Boolean); + procedure SGItemImageGetSize(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; var ImageWidth, + ImageHeight: Integer); + procedure SGItemImageDraw(Sender: TCustomEasyListview; Item: TEasyItem; + Column: TEasyColumn; ACanvas: TCanvas; + const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); + procedure SGItemEditBegin(Sender: TCustomEasyListview; Item: TEasyItem; + var Column: Integer; var Allow: Boolean); + procedure CheckBoxEnableEditClick(Sender: TObject); + procedure CheckBoxTabMoveFocusClick(Sender: TObject); + procedure CheckBoxCustomDrawClick(Sender: TObject); + procedure CheckBoxShowHeaderClick(Sender: TObject); + procedure CheckBoxShowFocusRectClick(Sender: TObject); + procedure CheckBoxFullCellSelectClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + procedure LoadGrid; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.LoadGrid; +var + Item: TEasyItem; + Column: TEasyColumn; + i, ItemCount: Integer; +begin + // + // for better performance use VirtualItem by calling + // Item := SG.Items.AddVirtual + // then use the OnItemGetCaption event to return the caption on demand. + // + + SG.BeginUpdate(); + SG.Header.Columns.Clear(); + SG.Items.Clear; + try + for i := 0 to StrToInt(EditColumns.Text) - 1 do + begin + Column := SG.Header.Columns.Add(); + Column.Width := 120; + Column.Caption := 'Column: ' + IntToStr(i); + end; + ItemCount := StrToInt(EditColumns.Text) * StrToInt(EditRows.Text); + for i := 0 to ItemCount - 1 do + begin + Item := SG.Items.Add(); + Item.Caption := 'Column: ' + IntToStr(i mod SG.Header.Columns.Count) + ' Row: ' + IntToStr(i div SG.Header.Columns.Count); + end + finally + SG.EndUpdate(); + end +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + LoadGrid +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + SG.Items.Clear; +end; + +procedure TForm1.Button2Click(Sender: TObject); +begin + LoadGrid; +end; + +procedure TForm1.SGItemImageDrawIsCustom(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; var IsCustom: Boolean); +begin + IsCustom := CheckBoxCustomDraw.Checked; +end; + +procedure TForm1.SGItemImageGetSize(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; var ImageWidth, + ImageHeight: Integer); +begin + ImageWidth := 1; + ImageHeight := 1; + +end; + +procedure TForm1.SGItemImageDraw(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; + const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +var + R: TRect; +begin + if Item.Selected and Item.OwnerListview.Focused then + ACanvas.Brush.Color := clHighLight + else + ACanvas.Brush.Color := clBtnFace; + R := RectArray.BoundsRect; + ACanvas.FillRect(RectArray.BoundsRect); + DrawEdge(ACanvas.Handle, R, EDGE_RAISED, BF_RECT); + + ACanvas.Brush.Color := clBtnFace; + ACanvas.FillRect(RectArray.BoundsRect); + if Item.Selected then + DrawEdge(ACanvas.Handle, R, EDGE_SUNKEN, BF_RECT) + else + DrawEdge(ACanvas.Handle, R, EDGE_RAISED, BF_RECT); +end; + +procedure TForm1.SGItemEditBegin(Sender: TCustomEasyListview; + Item: TEasyItem; var Column: Integer; var Allow: Boolean); +begin + if CheckboxAllowOddEdits.Checked then + Allow := Item.Index mod 2 = 0; +end; + +procedure TForm1.CheckBoxEnableEditClick(Sender: TObject); +begin + SG.EditManager.Enabled := CheckBoxEnableEdit.Checked; +end; + +procedure TForm1.CheckBoxTabMoveFocusClick(Sender: TObject); +begin + SG.EditManager.TabMoveFocus := CheckBoxTabMoveFocus.Checked; +end; + +procedure TForm1.CheckBoxCustomDrawClick(Sender: TObject); +begin + if CheckBoxCustomDraw.Checked then + SG.Selection.TextColor := clBlack + else + SG.Selection.TextColor := clHighlight; + SG.Invalidate +end; + +procedure TForm1.CheckBoxShowHeaderClick(Sender: TObject); +begin + SG.Header.Visible := CheckBoxShowHeader.Checked +end; + +procedure TForm1.CheckBoxShowFocusRectClick(Sender: TObject); +begin + SG.Selection.UseFocusRect := CheckBoxShowFocusRect.Checked +end; + +procedure TForm1.CheckBoxFullCellSelectClick(Sender: TObject); +begin + SG.Selection.FullCellPaint := CheckBoxFullCellSelect.Checked +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/Hints/HintProject.dpr b/official/1.7.0/EasyListview/Demos/Hints/HintProject.dpr new file mode 100644 index 0000000..d6b371e --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Hints/HintProject.dpr @@ -0,0 +1,13 @@ +program HintProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Hints/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Hints/Unit1.dfm new file mode 100644 index 0000000..49496cf --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Hints/Unit1.dfm @@ -0,0 +1,3493 @@ +object Form1: TForm1 + Left = 203 + Top = 177 + Width = 703 + Height = 502 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 225 + Top = 0 + Width = 6 + Height = 466 + ResizeStyle = rsUpdate + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 225 + Height = 466 + Align = alLeft + TabOrder = 0 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 209 + Height = 65 + AutoSize = False + Caption = + 'This demo shows the Popup Hint Capabilites of CoolControl. The ' + + 'Hints support Unicode and custom draw.' + WordWrap = True + end + object Label2: TLabel + Left = 16 + Top = 272 + Width = 84 + Height = 13 + Caption = 'Pause Delay Time' + FocusControl = CheckBoxAllowOnItemsOnly + end + object Label3: TLabel + Left = 80 + Top = 296 + Width = 13 + Height = 13 + Caption = 'ms' + end + object RadioGroupHintType: TRadioGroup + Left = 8 + Top = 136 + Width = 153 + Height = 73 + Caption = 'Hint Type' + ItemIndex = 0 + Items.Strings = ( + 'Text' + 'ToolTip' + 'CustomDraw') + TabOrder = 0 + OnClick = RadioGroupHintTypeClick + end + object CheckBoxAllowOnItemsOnly: TCheckBox + Left = 8 + Top = 240 + Width = 153 + Height = 17 + Hint = 'Bob' + Caption = 'Only Allow Hints on Items' + Enabled = False + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object cbViews: TComboBox + Left = 8 + Top = 72 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + OnChange = cbViewsChange + end + object CheckBoxCustomizeText: TCheckBox + Left = 8 + Top = 224 + Width = 185 + Height = 17 + Caption = 'Customize Text based on Postion' + TabOrder = 3 + OnClick = CheckBoxCustomizeTextClick + end + object EditPauseDelayTime: TEdit + Left = 24 + Top = 288 + Width = 49 + Height = 21 + TabOrder = 4 + Text = '100' + end + object CheckBoxHeader: TCheckBox + Left = 32 + Top = 104 + Width = 89 + Height = 17 + Caption = 'Show Header' + TabOrder = 5 + OnClick = CheckBoxHeaderClick + end + end + object VCLv: TEasyListview + Left = 231 + Top = 0 + Width = 456 + Height = 466 + Hint = 'Default Window Hint' + Align = alClient + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + ImagesGroup = ImageList1 + ImagesSmall = ImageList1 + ImagesLarge = ImageList2 + ImagesExLarge = ImageList2 + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + ParentShowHint = False + ShowGroupMargins = True + ShowHint = True + TabOrder = 1 + View = elsIcon + OnHintCustomInfo = VCLvHintCustomInfo + OnHintCustomDraw = VCLvHintCustomDraw + OnHintPauseTime = VCLvHintPauseTime + OnHintPopup = VCLvHintPopup + end + object ImageList1: TImageList + Left = 264 + Top = 72 + Bitmap = { + 494C01010E001300040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000005000000001002000000000000050 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000063630000424242007373730073737300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FF9C630000000000CE63310052000000FF9C630000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00006363000042424200ADADAD00DEDEDE00ADADAD00BDBDBD00BDBDBD00BDBD + BD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FF9C63000000 + 0000CE633100424242009C310000CE6331005252520000000000FF9C63000000 + 0000000000000000000000000000000000000000000000000000636300004242 + 4200EFEFEF00EFEFEF009C9C0000DEDEDE00737373009C9C6300BDBDBD00EFEF + EF00BDBDBD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FF9C630000000000CE633100FF9C + 63005200000063FF630031CEFF00FF9C6300CE633100CE633100FF9C63005200 + 0000FF9C63000000000000000000000000000000000042424200EFEFEF00ADAD + AD00EFEFEF00EFEFEF00EFEFEF00ADADAD00ADADAD006363000063630000EFEF + EF009C9C0000EFEFEF0073737300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE6331009C31000052000000CE63 + 31009C310000FF9C6300CE313100FF9C630052525200CE9C6300CE6331009C31 + 0000FF9C630000000000FF9C6300000000000000000063630000EFEFEF00EFEF + EF00EFEFEF00000000009C9C630000000000ADADAD0063630000636300006363 + 0000DEDEDE00BDBDBD00ADADAD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE633100CE6331009C310000FF9C + 6300CE313100FF9C6300CE313100CE63310042424200CE633100CE313100CE63 + 3100CE63310000000000FF9C6300FF9C630000000000EFEFEF00EFEFEF000000 + 00009C9C63009CCE9C009CCE9C0000000000DEDEDE0063630000636300006363 + 0000636300009C9C6300BDBDBD00424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009C310000FFCE9C00CE313100FF9C + 630021212100424242002121210000000000FF9C6300CE633100CE313100CE63 + 3100CE31310000000000FF9C63000000000000000000737373009C9C63009CCE + 9C009CCE9C009CCE9C00737373009C636300EFEFEF0063630000636300006363 + 000063630000636300009C9C6300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CE633100FFCE + 9C00212121001010100042424200FF9C6300CE633100CE633100CE633100FF9C + 63008C8C8C0000000000CE3131009C31000042424200DEDEDE009CCE9C009CCE + 9C00737373007373730073737300CECEFF00DEDEDE0073737300636300006363 + 000063630000636300009C9C0000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CE633100FFCE9C00FF9C6300FF9C6300CE633100FF9C63009C310000FF9C + 63009C310000FF9C63009C3100000000000000000000EFEFEF009C6363009C63 + 63007373730063CEFF00FFFFCE0073737300ADADAD00ADADAD00636300006363 + 000063630000636300009C9C0000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CE633100FFCE9C009C310000FF9C63009C310000FF9C + 63009C31000000000000000000000000000000000000ADADAD0042424200CECE + FF00CECEFF0073737300ADADAD00EFEFEF00EFEFEF00DEDEDE008C8C8C009C9C + 00009C9C00009C9C000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE633100FF9C63009C3100000000 + 00000000000000000000000000000000000000000000ADADAD00424242007373 + 7300ADADAD00EFEFEF00EFEFEF00FFFFFF00DEDEDE00DEDEDE00DEDEDE009C9C + 00009C9C00000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DEDEDE00EFEF + EF00EFEFEF00FFFFFF009CCE630063630000DEDEDE00BDBDBD008C8C8C009C9C + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000009C9C0000FFFF + FF00DEDEDE00DEDEDE00DEDEDE00BDBDBD00ADADAD0063630000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000424242000000000000000000424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000737373002121210000000000000000009C9C9C00737373005252 + 5200000000000000000000000000000000000000000000000000000000000000 + 000000000000000010000000100052525200009C9C0000001000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000009C9C9C004242 + 4200EFEFEF000000000021212100000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EFEF + EF007373730000003100BDBDBD007373730000000000CECECE00737373007373 + 7300737373005252520000000000000000000000000000000000000010000000 + 1000000010000000100000001000212121005252520000001000006363000063 + 630000000000000000000000000000000000000000000000000000000000639C + CE00CEFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000042424200EFEFEF006331 + 31000073000063313100EFEFEF000000000021212100000000009C9C9C000000 + 00000000000000000000000000000000000000000000EFEFEF00737373000031 + 9C000063CE000063CE0000003100000000003131310031313100313131007373 + 730073737300737373005252520000000000000000005252520000CECE000000 + 1000009C9C0000CECE00525252000000100000636300009C9C00009C9C00009C + 9C00006363000000000000000000000000000000520000007300000000000031 + 9C00639CCE00639CCE009CCEFF00CEFFFF000000000000000000000000000000 + 000000000000000000000000000000000000EFEFEF0063313100FF9C6300FF31 + 000031CE310000730000007300006331310021212100CECECE009C9C9C007373 + 73005252520000000000000000000000000021212100EFEFEF00737373000063 + FF000063CE0010101000313131006363630063636300EFEFEF00EFEFEF009C9C + 9C00313131007373730052525200000000000000000000001000000010005252 + 52005252520031FFFF0000001000009C9C00000000000063630000CECE0000CE + CE00006363000000000000000000000000000000AD0000007300000052000031 + 9C0000319C000063CE000063CE00639CCE009CCEFF00CEFFFF00000000000000 + 0000000000000000000000000000000000000000000042424200EFEFEF00ADAD + AD00FF9C6300FF31000031CE31004242420021212100CECECE009C9C9C007373 + 730073737300737373005252520000000000000000009C9C9C00000000001010 + 1000313131006363630063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF009C9C9C009C9C9C0031313100000000007373730031FFFF00525252009CCE + 6300000010009CFFFF0000CECE0000001000000000000000000000CECE000063 + 630000636300000010000000100000000000000000000000AD00000073000031 + 630000639C0000319C0000319C000063CE00639CCE00639CCE009CCEFF00CEFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000EFEFEF004242420073737300ADADAD0042424200FFFFFF00EFEFEF005252 + 520073737300737373007373730000000000CECECE00CECECE00000000003131 + 310063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00101010009C9C9C00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00000000000000100052525200000010009CCE + 63000000100031FFFF00009C9C00009C9C000000000000000000000010000000 + 1000009C9C00000010005252520000000000000000000063CE00009CCE000031 + 9C0000FFFF00000052000063CE000063CE000063CE000063CE00639CCE00639C + CE00CEFFFF0000000000000000000000000000000000000000009C9C9C00CECE + CE00424242006363630042424200ADADAD006363630021212100EFEFEF00EFEF + EF00EFEFEF00525252007373730000000000CECECE002121210063636300EFEF + EF00EFEFEF00212121009C9C9C00101010002121210021212100313131000000 + 00009C9C9C000000000000000000000000000000100052525200000010000000 + 100000CECE0000CECE000000100000CECE000000000000000000000010000000 + 100000001000000010000000000000000000000000000000000000319C000063 + CE0000319C0000319C0000319C000000520000319C0000319C0000319C000063 + CE00639CCE009CCEFF0000000000000000000000000000000000CECECE00CECE + CE0042424200DEDEDE006363630042424200212121009C9C9C00212121002121 + 2100EFEFEF00EFEFEF00EFEFEF000000000031313100EFEFEF00EFEFEF00EFEF + EF00EFEFEF001010100021212100212121003131310000000000212121000000 + 00009C9C9C00212121000000000000000000737373009CFFFF0000CECE0031FF + FF0000001000006363005252520000001000000000000000000000001000009C + 9C00009C9C000063630000001000000000000000000000000000000000000063 + CE0000CEFF00009CFF000000AD0000319C000000730000319C0000319C000063 + CE000063CE000063CE009CCEFF00000000000000000000000000CECECE00FFFF + FF006363630042424200212121009C9C9C0021212100000000008C8C8C00EFEF + EF00EFEFEF00000000000000000000000000EFEFEF00EFEFEF00EFEFEF001010 + 10002121210021212100313131000000000021212100000000009C9C9C002121 + 2100313131002121210000000000000000000000000000CECE00000010005252 + 5200737373002121210052525200424242000000000000000000009C9C00009C + 9C00000010000031310000001000000000000000000000000000000000000000 + 000000000000009CFF00009CFF00009CFF0000FFFF0000FFFF000063CE000063 + CE0000319C0000319C000063CE00000000000000000000000000EFEFEF00EFEF + EF00EFEFEF002121210021212100000000008C8C8C00EFEFEF00EFEFEF000000 + 00009C9C9C0073737300525252000000000000000000424242009C9C9C00EFEF + EF00EFEFEF001010100021212100000000009C9C9C0021212100313131002121 + 2100BDBDBD00BDBDBD009C9C9C00000000000000000000000000000010000000 + 1000212121000000100052525200000010005252520000000000000010000063 + 6300009C9C000063630000000000000000000000000000000000000000000000 + 00000000000000FFFF0000CEFF0000CEFF00009CFF000063CE0000FFFF000000 + 7300000073000000520000005200000000000000000000000000000000004242 + 42009C9C9C00CECECE00EFEFEF009C9C9C00EFEFEF00000000008C8C8C007373 + 7300212121000000000000000000000000000000000000000000000000004242 + 4200EFEFEF0031313100EFEFEF00000000003131310021212100BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00000000000000000000000000000000000000 + 1000525252000000100031FFFF0000CECE00009C9C000000100000001000009C + 9C00003131000063630000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000319C003163 + 9C000000DE000000AD0000007300000000000000000000000000000000000000 + 00000000000042424200EFEFEF00000000000000000000000000212121000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000021212100BDBDBD00BDBDBD00BDBD + BD00BDBDBD000000000000000000000000000000000000000000000000000000 + 00000000000000CECE009CFFFF0000CECE00009C9C0031FFFF00000010000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00BDBDBD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000010000063630000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000021212100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008C8C8C005252520073737300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008C8C8C008C8C + 8C00BDBDBD00EFEFEF0052525200525252005252520000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CEFFFF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF009CCE + FF00000000000000000000000000000000008C8C8C008C8C8C00BDBDBD00EFEF + EF00BDBDBD00CECECE00424242008C8C8C003131310042424200525252000000 + 000000000000000000000000000000000000000000009CCEFF006363CE006363 + CE009CCEFF009CCEFF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000DEDE + DE00000000000000000000000000000000002121210010101000000000000000 + 0000000000000000000000000000000000000000000000000000CEFFFF000063 + 0000009C6300009C6300639C310000630000639CCE0000CE9C00639C3100009C + 63009CCEFF00000000000000000000000000BDBDBD00EFEFEF00ADADAD00CECE + CE00ADADAD00CECECE00636363008C8C8C004242420031313100636363005252 + 52006363630000000000000000000000000000CE9C000063000063319C000063 + 0000009C630000CE9C00006300009CCEFF000000000000000000000000000000 + 00000000000000000000000000000000000000000000DEDEDE00CEFFFF00CEFF + CE0063CE63003131310000000000000000003131310010101000313131001010 + 10000000000000000000000000000000000000000000000000003163310000CE + 9C000031630000CEFF00000042000000630063639C0063639C00003163000031 + 630000630000009C6300000000000000000000000000BDBDBD00ADADAD00CECE + CE009C9C9C00CECECE0063636300212121002121210031313100313131008C8C + 8C003131310042424200424242000000000000CE9C009CCEFF009CCEFF009CCE + FF009CCEFF000000000063319C006331CE000063CE00639CCE00000000000000 + 0000000000000000000000000000000000003131310031313100CEFFCE000000 + 0000CEFFCE00CEFFCE009C9C9C00313131006363630031313100313131001010 + 10001010100010101000000000000000000000000000009C63000031630000CE + FF00009CFF00009CFF00009CFF0000CEFF000000420000316300003163000031 + 63000000630000630000000000000000000000000000ADADAD00BDBDBD00CECE + CE00CECECE008C8C8C0052525200212121002121210031313100424242008C8C + 8C0042424200313131005252520000000000000000000063CE000063CE000063 + CE000063CE00639CCE009CCEFF0000319C0063CEFF009CFFFF00639CCE009CCE + FF0000000000000000000000000000000000000000000000000031313100639C + 3100639C3100313131008C8C8C00313131002121210031313100000000003131 + 31001010100010101000000000000000000000000000000000000063CE000000 + AD00000052009CCEFF009CCEFF00639CCE00639CCE009CCEFF00000073000000 + 52000000AD00009CFF00000000000000000000000000BDBDBD00BDBDBD008C8C + 8C0031313100BDBDBD008C8C8C00636363001010100031313100424242002121 + 210021212100313131000000000000000000000000000063CE000063CE000063 + CE000063CE000063CE000063CE00639CCE009CCEFF000031CE000000AD0000CE + 9C00639CCE000000000000000000000000000000000000000000101010003131 + 31009C9C9C003131310021212100313131001010100031313100101010003131 + 3100313131003131310000000000000000000000000000000000000052009CCE + FF00639CCE00639CCE000063CE000063CE000063CE000063CE00639CCE00639C + CE009CCEFF000000AD000000000000000000000000008C8C8C0021212100BDBD + BD00BDBDBD00FFFFFF00FFFFFF00BDBDBD008C8C8C0042424200525252002121 + 210021212100313131000000000000000000000000000000000000319C000031 + 9C0000319C0000319C0000319C000063CE000063CE00639CCE009CCEFF000000 + AD009CFFFF009CFFFF0000000000000000000000000000000000101010003131 + 3100212121003131310010101000313131001010100031313100101010003131 + 3100101010003131310031313100000000000000000000000000639CCE000063 + CE000063CE000063CE0000319C0000319C0000319C0000319C000063CE000063 + CE000063CE0000000000000000000000000010101000BDBDBD00BDBDBD00FFFF + FF00FFFFFF00EFEFEF00EFEFEF00DEDEDE00EFEFEF00BDBDBD008C8C8C004242 + 4200101010003131310000000000000000000000000000000000000000000031 + 9C000063CE000063CE0000319C0000319C000063CE000063CE000063CE00639C + CE0000319C0063CEFF006363CE00000000000000000000000000000000000000 + 0000101010003131310010101000313131001010100031313100101010003131 + 3100101010003131310000000000000000000000000000000000000000000031 + 9C0000319C0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C0000319C00000000000000000000000000BDBDBD00FFFFFF00EFEFEF00EFEF + EF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00DEDEDE00DEDEDE00DEDEDE00BDBD + BD008C8C8C005252520000000000000000000000000000000000000000000000 + 0000009CCE0000319C0000319C0000319C000063CE0000319C000063CE000063 + CE00639CCE009CCEFF00009C6300000000000000000000000000000000000000 + 0000000000000000000010101000313131001010100031313100101010003131 + 3100000000000000000000000000000000000000000000000000000000000031 + 9C0000319C0000319C009CCEFF0000319C0000319C0000319C0000319C000031 + 9C0000319C0000000000000000000000000042424200DEDEDE00FFFFFF00DEDE + DE00FFFFFF00EFEFEF00FFFFFF00EFEFEF00EFEFEF00FFFFFF00FFFFFF00EFEF + EF00EFEFEF00BDBDBD008C8C8C00212121000000000000000000000000000000 + 000000000000000000000063CE00009CCE0000319C0000319C0000319C000031 + 9C000063CE000063CE009CCEFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000001010100031313100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000319C0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C0000000000000000000000000000000000000000000000000042424200DEDE + DE00FFFFFF00EFEFEF00FFFFFF00EFEFEF00EFEFEF00EFEFEF00FFFFFF00FFFF + FF00DEDEDE00FFFFFF00DEDEDE00212121000000000000000000000000000000 + 00000000000000000000000000000000000000319C000063CE00009CCE000063 + CE0000319C000063CE00639CCE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000319C0000319C0000319C0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000042424200DEDEDE00EFEFEF00DEDEDE00CECECE00FFFFFF00EFEFEF00DEDE + DE00DEDEDE004242420000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000031 + 9C0000319C000063CE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000042424200DEDEDE00EFEFEF00FFFFFF00DEDEDE004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004242420042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000008C8C8C0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002121210021212100212121001010100000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008C8C8C008C8C8C00EFEFEF0042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002121 + 2100212121002121210021212100212121001010100010101000101010000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008C8C8C00EFEFEF00BDBDBD008C8C8C0042424200212121004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000212121006331000063310000000000000000 + 0000000000000000000000000000000000000000000000000000000000002121 + 2100212121002121210010101000212121002121210010101000101010001010 + 1000101010000000000000000000000000000000000000000000000000000000 + 000000000000BDBDBD008C8C8C008C8C8C008C8C8C0042424200424242004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000003163000031630010101000101010001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000063310000AD00000052000000212121000000 + 0000000000000000000000000000000000000000000000000000212121002121 + 2100101010002121210021212100212121002121210021212100212121001010 + 1000101010000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008C8C8C008C8C8C0042424200424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000003163000031630000639C002121210042424200212121001010 + 1000101010001010100000000000000000000000000000000000000000000000 + 0000000000000000000000000000633100006331000052000000424242002121 + 2100000000000000000000000000000000000000000000000000101010002121 + 2100000073001010100021212100424242002121210010101000212121002121 + 2100212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004242420042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000031 + 63000031630000639C0021212100424242002121210042424200212121004242 + 4200212121001010100010101000000000000000000021212100212121000000 + 0000000000000000000000000000000000000000000042424200424242004242 + 4200212121000000000000000000000000000000000000000000000000004242 + 4200000073004242420010101000525252001010100010101000212121002121 + 2100212121000000000000000000000000000000000042424200424242004242 + 4200424242004242420042424200212121002121210021212100000000000000 + 0000000000000000000000000000000000000000000000316300003163000063 + 9C00212121004242420021212100424242002121210042424200212121004242 + 4200101010001010100021212100000000002121210063310000FF6300000000 + 0000000000000000000000000000000000000000000000000000212121004242 + 4200424242002121210000000000000000000000000000000000000000000000 + 0000000000004242420021212100525252000000000021212100212121000000 + 000000000000000000000000000000000000EFEFEF00BDBDBD00BDBDBD00BDBD + BD008C8C8C008C8C8C0042424200424242004242420021212100000000000000 + 0000000000000000000000000000000000000031630000639C00212121004242 + 4200212121004242420021212100424242002121210042424200101010005252 + 52002121210021212100101010000000000021212100FF630000633100000000 + 0000101010000000000000000000000000000000000000000000525252004242 + 42000000000000CECE0021212100000000000000000000000000000000000000 + 0000000000000000000000000000525252000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00FFFFFF00424242004242420042424200212121000000 + 0000000000000000000000000000000000000000000042424200212121004242 + 4200212121004242420021212100424242001010100042424200ADADAD002121 + 2100003163002121210000000000000000000000000063310000520000004242 + 4200424242001010100010101000101010000000000000000000424242000000 + 0000424242004242420042424200000000000000000000000000000000000000 + 0000000000000000000000000000525252000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EFEF + EF00FFFFFF00FFFFFF00BDBDBD00BDBDBD008C8C8C0042424200424242002121 + 2100000000000000000000000000000000000000000000000000000000004242 + 4200212121004242420010101000525252000000000021212100003163002121 + 2100212121000000000000000000000000000000000000000000212121002121 + 2100424242004242420021212100212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD008C8C8C004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 00000000000000316300ADADAD00212121000031630021212100212121000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000052525200424242000000000042424200212121000000 + 0000000000004242420000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD008C8C8C004242420000000000000000000000000000000000000000000000 + 0000000000000000000000316300212121002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000424242004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00BDBDBD00BDBD + BD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000500000000100010000000000800200000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFF00000000FFFFFEFF00000000 + FFFFF81F00000000F07FE00700000000C01FC003000000000007800100000000 + 000100010000000000000000000000000000000000000000C000000000000000 + F001800100000000FC07800100000000FF1F800300000000FFFF800700000000 + FFFFC01F00000000FFFFF0FF00000000FFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFF + E7FFF007F83FFFFF81FFC001C00FC1FF000F00018007007F000300018087001F + 8000000100C1000FE000000100C18003C000000300C38001C000000100C1C001 + C001000180C1F001C0008001C043F801E003E000E003FF01F88FFF03F81FFFF9 + FFFFFF8FFE7FFFFFFFFFFFBFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFE0FFFFFF + FFFFF83F803FCFFFFFFFE007000F81FFC61FC0030003007F000780038000001F + 0001800180000007C000800180018003C000800380018001C000C0030001C001 + E001C0030001F000FC07E0070000F801FE1FE00FC000FE01FFFFF81FF003FFC3 + FFFFFFFFFC0FFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFC3FFE3FFFFFFFFF + F00FF80FFFFFFE3FC007F007FF1FFE1FC007F007FC07FC0FC003FC1FF001FC07 + C003E03FC0000E03C003003F00000781F00F001F00010381FC3F801F00010001 + FE7FC00FC0038023FE7FE007F00FF001FE7FF001F83FFC0FFE7FFC01FEFFFFDF + FE7FFF07FFFFFFFFFE7FFFDFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageList2: TImageList + Height = 32 + Width = 32 + Left = 296 + Top = 72 + Bitmap = { + 494C01010E001300040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 000000000000360000002800000080000000A000000001002000000000000040 + 0100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000031310000000000003131000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003131000000000000636300009C9C00000000000000000000000000000000 + 0000424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000313100000000 + 00009C9C00006363000042424200424242004242420073737300737373007373 + 7300737373000000000042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FF9C + 63005200000052000000FF9C6300FF9C63008C8C8C0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000031310000000000009C9C00006363 + 00000000000042424200DEDEDE00ADADAD00ADADAD00ADADAD00ADADAD00BDBD + BD00BDBDBD00BDBDBD0073737300000000004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF9C6300520000000000 + 0000FF9C6300CE6331000000000052000000FF9C6300FF9C63008C8C8C000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000031310000000000009C9C000063630000000000004242 + 4200DEDEDE00ADADAD009C9C0000DEDEDE00ADADAD00ADADAD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD007373730000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FF9C630052000000000000008C8C8C009C31 + 000000000000CE6331009C310000FF9C6300000000000000000000000000FF9C + 63008C8C8C000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000031310000000000009C9C0000636300000000000042424200EFEFEF00EFEF + EF009C9C00006363000063630000ADADAD00ADADAD0073737300ADADAD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00EFEFEF0073737300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FF9C6300520000000000000031319C00CE6331009C3100004242 + 4200525252009C3100009C310000CE633100FF9C630052525200000000000000 + 0000FF9C6300FF9C63008C8C8C00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000063630000636300000000000042424200EFEFEF00EFEFEF00EFEFEF00EFEF + EF00636300009C9C0000ADADAD00DEDEDE00ADADAD0073737300636300009C9C + 6300BDBDBD00BDBDBD00BDBDBD00EFEFEF00BDBDBD00BDBDBD00737373000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FF9C + 63005200000000000000CE633100CE633100CE6331009C3100009C3100009C31 + 00009C31000031CEFF009C310000CE633100CE6331000000000000000000FF9C + 63000000000052000000FF9C6300FF9C63008C8C8C0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000042424200EFEFEF00EFEFEF00EFEFEF00ADADAD00ADADAD00EFEF + EF009CCE6300DEDEDE00DEDEDE00DEDEDE00ADADAD00ADADAD00636300006363 + 000063630000BDBDBD00DEDEDE00BDBDBD009C9C000063630000DEDEDE007373 + 7300000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF9C6300520000000000 + 0000CE633100CE633100FFCE9C00FF9C63009C310000520000009C31000063FF + 63009C31000031CEFF009C310000FF9C6300CE633100CE633100CE633100CE63 + 3100FF9C6300FF9C63000000000052000000FF9C6300FF9C63008C8C8C000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 4200EFEFEF00EFEFEF00EFEFEF00ADADAD009C9C0000EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF0042424200ADADAD00DEDEDE00ADADAD00636300006363 + 000063630000636300009C9C6300EFEFEF00636300009C9C0000ADADAD00EFEF + EF00737373007373730000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000031319C00CE63 + 3100CE633100FF9C63009C31000052000000CE633100CE6331009C31000063FF + 6300FF9C6300FF9C6300CE313100CE313100FF9C630000000000CE633100CE63 + 31009C3100009C310000FF9C6300FF9C63000000000052000000FF9C6300FF9C + 63008C8C8C00000000000000000000000000000000004242420042424200DEDE + DE009C9C0000EFEFEF00ADADAD00ADADAD00DEDEDE0073737300EFEFEF00EFEF + EF0042424200000000009C9C630000000000EFEFEF00ADADAD00636300006363 + 00006363000063630000636300009C9C0000EFEFEF00ADADAD00EFEFEF00DEDE + DE00ADADAD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000052000000CE6331009C3100009C31 + 00005200000052000000CE633100CE6331009C3100009C310000FF9C6300FF9C + 6300CE313100CE313100FF9C6300FF9C6300000000005252520000000000CE9C + 6300CE633100CE6331009C3100009C310000FF9C6300FF9C6300000000000000 + 000000000000FF9C63008C8C8C00000000000000000000000000CECE63006363 + 00009C9C0000EFEFEF00EFEFEF00EFEFEF00ADADAD00EFEFEF00424242000000 + 00009C9C63009C9C63009C9C630000000000EFEFEF00ADADAD00737373006363 + 00006363000063630000636300006363000063630000DEDEDE00BDBDBD00BDBD + BD00DEDEDE00ADADAD0042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CE633100FF9C63005200 + 0000CE633100CE6331009C3100009C310000FF9C6300FF9C6300CE313100CE31 + 3100FF9C6300FF9C6300CE6331008C8C8C008C8C8C000000000000000000CE31 + 3100CE633100CE633100CE633100CE6331009C3100009C310000FF9C63005252 + 52000000000052000000FF9C6300FF9C63000000000000000000636300009C9C + 00009CCE6300EFEFEF00EFEFEF00EFEFEF0042424200000000009C9C63009CCE + 9C009CCE9C009CCE9C009C9C630000000000DEDEDE00DEDEDE00737373006363 + 0000636300006363000063630000636300006363000063630000BDBDBD00BDBD + BD00EFEFEF00ADADAD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CE6331009C310000CE63 + 31009C3100009C310000FF9C6300FF9C6300CE313100CE313100FF9C6300FF9C + 6300CE633100CE313100CE633100CE6331004242420042424200CE633100CE63 + 3100CE313100CE313100CE633100CE633100CE633100CE6331009C3100000000 + 000000000000FF9C630000000000FF9C630000000000000000009C9C0000EFEF + EF00EFEFEF00EFEFEF0042424200000000009C9C63009C9C63009CCE9C009CCE + 9C009CCE9C009CCE9C009CCE9C0000000000ADADAD00DEDEDE008C8C8C006363 + 0000636300006363000063630000636300006363000063630000636300009C9C + 6300EFEFEF00BDBDBD0073737300424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000009C310000CE6331009C3100009C31 + 0000FF9C6300FF9C6300CE313100CE313100FF9C6300FF9C6300CE6331001010 + 1000212121000000000000000000CE313100CE633100CE633100CE633100CE63 + 3100CE633100CE633100CE313100CE313100CE633100CE633100FF9C6300CE63 + 3100CE633100CE633100FF9C6300520000000000000000000000DEDEDE00EFEF + EF0042424200000000009C9C63009CCE9C009CCE9C009CCE9C009CCE9C009CCE + 9C009CCE9C009CCE9C00737373007373730073737300EFEFEF00ADADAD006363 + 0000636300006363000063630000636300006363000063630000636300006363 + 00009C9C6300BDBDBD00ADADAD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE6331009C310000FFCE9C00FFCE + 9C00CE313100CE313100FFCE9C00FF9C6300CE63310021212100212121004242 + 42002121210021212100212121000000000000000000FF9C6300CE633100CE63 + 3100CE313100CE313100CE633100CE633100CE313100CE313100CE6331000000 + 0000CE633100FF9C6300CE633100000000000000000000000000DEDEDE007373 + 7300424242009C9C63009CCE9C009CCE9C009CCE9C009CCE9C009CCE9C009CCE + 9C009CCE9C00737373009C6363009C63630000000000EFEFEF00ADADAD006363 + 0000636300006363000063630000636300006363000063630000636300006363 + 0000636300009C9C6300ADADAD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CE633100CE63 + 3100FFCE9C00FFCE9C00FF9C6300212121002121210052525200525252005252 + 520042424200424242002121210042424200FF9C6300CE633100CE633100CE63 + 3100CE633100CE633100CE313100CE313100CE633100CE633100000000005252 + 520000000000CE633100FF9C6300000000000000000042424200ADADAD00ADAD + AD00000000009CCE9C009CCE9C009CCE9C009CCE9C009CCE9C009CCE9C009CCE + 9C0073737300CE9C9C007373730063CEFF0000000000EFEFEF00ADADAD007373 + 7300636300006363000063630000636300006363000063630000636300006363 + 0000636300009C9C00009C9C6300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CE633100CE633100FFCE9C00FFCE9C00CE63310021212100212121001010 + 10004242420042424200FF9C6300FF9C6300CE633100CE633100CE633100CE63 + 3100CE633100CE633100FF9C6300FF9C6300CE3131008C8C8C008C8C8C000000 + 000000000000CE313100FF9C63009C3100000000000042424200ADADAD00DEDE + DE00000000009CCE9C009CCE9C009CCE9C009CCE9C0073737300737373007373 + 7300CE9C9C007373730063CEFF00CECEFF0000000000DEDEDE00ADADAD007373 + 7300636300006363000063630000636300006363000063630000636300006363 + 0000636300009C9C00009C9C6300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CE633100CE633100FFCE9C00FFCE9C00FF9C6300CE63 + 3100FF9C6300FF9C6300CE633100CE633100CE633100CE633100CE633100CE63 + 3100FF9C6300FF9C6300CE6331009C310000FFCE9C00FF9C6300424242004242 + 4200FF9C6300FF9C63009C310000CE6331000000000073737300ADADAD00EFEF + EF00000000009C9C6300737373007373730073737300CE9C9C00CE9C9C007373 + 73007373730063CEFF00CECEFF00FFFFCE0000000000ADADAD00EFEFEF008C8C + 8C00636300006363000063630000636300006363000063630000636300006363 + 0000636300009C9C000063630000424242000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE633100CE633100FFCE9C00FFCE + 9C00FF9C6300FF9C6300FF9C6300FF9C6300CE633100CE633100FF9C6300FF9C + 6300CE6331009C310000FF9C6300FF9C6300CE6331009C310000FF9C6300FF9C + 63009C3100009C3100000000000000000000000000000000000000000000EFEF + EF00424242009C636300CE9C9C009C636300CE9C9C00737373007373730063CE + FF00CECEFF00FFFFCE00FFFFCE007373730042424200ADADAD00EFEFEF00ADAD + AD00636300006363000063630000636300006363000063630000636300006363 + 00009C9C00009C9C000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CE633100CE63 + 3100FFCE9C00FFCE9C00FF9C6300FF9C6300FF9C6300FF9C6300CE6331009C31 + 0000FF9C6300FF9C6300CE6331009C310000FF9C6300FF9C63009C3100009C31 + 000000000000000000000000000000000000000000000000000000000000DEDE + DE00737373007373730063CEFF0063CEFF0063CEFF0063CEFF00CECEFF00CECE + FF00FFFFCE007373730042424200ADADAD00EFEFEF00EFEFEF00EFEFEF00ADAD + AD008C8C8C0063630000636300006363000063630000636300009C9C00009C9C + 00009C9C00006363000042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000CE633100CE633100FFCE9C00FFCE9C00CE6331009C310000FF9C6300FF9C + 6300CE6331009C310000FF9C6300FF9C63009C3100009C310000000000000000 + 000000000000000000000000000000000000000000000000000042424200ADAD + AD00ADADAD0042424200CECEFF00CECEFF00CECEFF00CECEFF00FFFFCE007373 + 730042424200ADADAD00EFEFEF00EFEFEF00EFEFEF00EFEFEF00FFFFFF00DEDE + DE00ADADAD008C8C8C00636300009C9C00009C9C00009C9C0000CECE63009C9C + 0000636300000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CE633100CE633100FFCE9C00FFCE9C00CE6331009C31 + 0000FF9C6300FF9C63009C3100009C3100000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000042424200ADAD + AD00DEDEDE0000000000CECEFF00FFFFCE00FFFFCE007373730042424200ADAD + AD00EFEFEF00EFEFEF00EFEFEF00EFEFEF00FFFFFF00FFFFFF00DEDEDE00DEDE + DE00DEDEDE00ADADAD008C8C8C009C9C0000CECE6300CECE63009C9C00006363 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CE633100CE633100FFCE9C00FF9C + 63009C3100009C31000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000073737300ADAD + AD00EFEFEF0042424200FFFFCE007373730042424200ADADAD00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00FFFFFF00FFFFFF00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE008C8C8C009C9C0000CECE63009C9C0000636300000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000CE633100CE63 + 3100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000EFEFEF007373730042424200ADADAD00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00FFFFFF00FFFFFF00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00BDBDBD00ADADAD008C8C8C009C9C00009C9C000063630000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DEDEDE00DEDEDE00EFEFEF00EFEFEF00EFEFEF00EFEFEF00FFFFFF00FFFF + FF00DEDEDE009CCE63006363000063630000DEDEDE00DEDEDE00BDBDBD00BDBD + BD00ADADAD008C8C8C00737373009C9C00006363000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 4200BDBDBD00DEDEDE00EFEFEF00EFEFEF00FFFFFF00FFFFFF00DEDEDE00DEDE + DE00DEDEDE009C9C0000CECE6300636300009C9C0000BDBDBD00ADADAD00ADAD + AD008C8C8C009C9C000063630000000000004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000424242009C9C0000FFFFFF00FFFFFF00DEDEDE00DEDEDE00DEDEDE00DEDE + DE00DEDEDE00DEDEDE00BDBDBD00BDBDBD00ADADAD00ADADAD008C8C8C006363 + 0000636300000000000042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000424242000000000000000000ADADAD00DEDEDE00DEDEDE00DEDE + DE00BDBDBD00BDBDBD00ADADAD008C8C8C006363000000000000000000004242 + 4200737373000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007373730042424200000000000000 + 0000000000000000000042424200424242007373730000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000010000000100052525200000010000000100000001000006363000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000212121007373 + 7300737373002121210000000000000000000000000000000000000000009C9C + 9C009C9C9C007373730073737300525252004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000010000000 + 100000001000000010000000100052525200009C9C00009C9C00009C9C000000 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000009C9C9C009C9C9C0042424200000000002121 + 2100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000021212100EFEFEF00EFEFEF00BDBD + BD00BDBDBD0073737300737373002121210000000000000000009C9C9C00CECE + CE009C9C9C007373730073737300737373007373730052525200424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000010000000100000001000000010000000 + 1000525252000000100052525200000010000000100000001000000010000063 + 6300000010000000100000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000009C9C9C009C9C9C004242420073737300EFEFEF00BDBDBD000000 + 0000000000002121210000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000021212100EFEFEF00EFEFEF0073737300000063000000 + 310073737300BDBDBD00BDBDBD00737373007373730000000000CECECE00CECE + CE009C9C9C007373730073737300737373007373730073737300737373005252 + 5200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000100000001000000010000000100000001000000010000000 + 1000000010000000100000001000212121004242420052525200000010000000 + 1000006363000063630000001000006363000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000639CCE009CCEFF00CEFFFF00CEFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009C9C + 9C009C9C9C004242420073737300EFEFEF00EFEFEF006331310063313100EFEF + EF00BDBDBD000000000000000000212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000021212100EFEFEF00EFEFEF00737373000000630000006300313163003131 + 6300000063000000310073737300424242004242420000000000CECECE00CECE + CE009C9C9C007373730073737300737373007373730073737300737373007373 + 7300737373005252520000000000000000000000000000000000000000000000 + 0000000010000000100000CECE0000CECE000000100000636300009C9C000063 + 6300212121000000100000001000525252002121210000001000006363000063 + 6300009C9C00009C9C0000636300006363000000100000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000319C000063CE00639CCE00639CCE009CCEFF009CCEFF00CEFF + FF00CEFFFF00CEFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000009C9C9C004242 + 420073737300EFEFEF00EFEFEF00633131006331310000730000004200006331 + 310063313100EFEFEF00BDBDBD00000000000000000021212100000000000000 + 0000000000009C9C9C0042424200000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000021212100EFEF + EF00EFEFEF007373730000319C0000319C000063FF000063CE0031319C000063 + CE00313163000000310000003100000000000000000031313100313131003131 + 3100313131003131310073737300737373007373730073737300737373007373 + 7300737373005252520000000000000000000000000000000000000000005252 + 52000000100000CECE00006363000000100000001000009C9C0000CECE0000CE + CE00006363005252520000001000000010000063630000636300009C9C00009C + 9C0000636300009C9C00009C9C00009C9C000063630000636300000000000000 + 0000000000000000000000000000000000000000000000005200000073000000 + 7300000052000000000000319C0000319C000063CE00639CCE00639CCE00639C + CE009CCEFF009CCEFF00CEFFFF00CEFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004242420073737300EFEF + EF00EFEFEF006331310063313100FF31000031CE310000420000007300000073 + 0000004200006331310063313100EFEFEF00BDBDBD0000000000000000009C9C + 9C009C9C9C009C9C9C0073737300525252004242420000000000000000000000 + 00000000000000000000000000000000000021212100EFEFEF00EFEFEF007373 + 73000063FF000063FF0000CEFF0000CEFF0000CEFF000063FF000063CE000031 + 6300003163001010100000000000313131003131310063636300636363007373 + 73009C9C9C009C9C9C0031313100313131007373730073737300737373007373 + 7300737373005252520000000000000000000000000000000000000000005252 + 5200000010000000100000001000000010005252520000CECE0031FFFF0031FF + FF0021212100525252000000100000001000000010000000100000001000009C + 9C00009C9C0000CECE0000CECE00009C9C00009C9C0000001000000000000000 + 000000000000000000000000000000000000000000000000AD00000073000000 + 7300000052000000520000319C000063CE0000319C000063CE000063CE00639C + CE00639CCE00639CCE009CCEFF009CCEFF00CEFFFF00CEFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000042424200EFEFEF00EFEFEF006331 + 310063313100FF9C6300FF310000FF310000FF31000031CE3100004200000073 + 00000073000000730000004200006331310063313100212121009C9C9C00CECE + CE00CECECE009C9C9C0073737300737373007373730052525200424242000000 + 000000000000000000000000000000000000000000002121210021212100EFEF + EF00BDBDBD00737373000063FF000063FF0000CEFF000063CE00003163001010 + 10000000000031313100313131006363630063636300636363009C9C9C00EFEF + EF00EFEFEF00EFEFEF009C9C9C009C9C9C003131310031313100737373007373 + 7300737373005252520000000000000000000000000000000000424242000000 + 100000001000000010005252520052525200000010005252520000CECE0031FF + FF00009C9C000000100052525200009C9C000000100000000000000000000063 + 630000CECE0000CECE000063630000CECE00009C9C0000636300000010000000 + 000000000000000000000000000000000000000000000000AD000000AD000000 + 730000007300000052000000520000319C0000319C0000319C0000319C000063 + CE000063CE000063CE00639CCE00639CCE009CCEFF009CCEFF00CEFFFF00CEFF + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004242420042424200EFEF + EF00BDBDBD00ADADAD00FF9C6300FF9C6300FF310000FF31000031CE31000073 + 0000007300000073000000730000004200000042000021212100CECECE00CECE + CE00CECECE009C9C9C0073737300737373007373730073737300737373005252 + 5200424242000000000000000000000000000000000000000000000000002121 + 210000000000636363009C9C9C00003163000031630010101000000000003131 + 3100313131006363630063636300636363009C9C9C00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF009C9C9C009C9C9C00313131003131 + 31007373730052525200000000000000000000000000000000000000100000CE + CE00525252005252520000001000525252009CCE630000001000525252009CFF + FF0031FFFF00000010005252520000CECE000000100000000000000000000000 + 00000000100000CECE0000CECE0000CECE0000CECE0000636300000010005252 + 520000001000525252000000000000000000000000000000DE000000AD000000 + AD00000073000000730000005200000052000063CE0000319C000063CE000031 + 9C0000319C000063CE000063CE00639CCE00639CCE00639CCE009CCEFF009CCE + FF00CEFFFF00CEFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 420042424200EFEFEF00BDBDBD00ADADAD00FF9C6300FF9C6300FF310000FF31 + 0000FF31000031CE310031CE3100424242004242420021212100CECECE00CECE + CE00CECECE009C9C9C0073737300737373007373730073737300737373007373 + 7300737373005252520042424200000000000000000000000000000000009C9C + 9C00101010000000000000000000101010000000000031313100313131006363 + 630063636300636363009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF009C9C9C009C9C9C009C9C9C009C9C + 9C00313131003131310000000000000000000000000073737300319C9C0031FF + FF0000001000525252009CCE63009CCE63009CCE630000001000525252009CFF + FF0031FFFF0000CECE0052525200000010000000100000000000000000000000 + 00000063630000CECE0000CECE000063630000CECE0000636300000010000000 + 10005252520000001000000000000000000000000000000000000000EF000000 + AD000000AD000000730000007300003163000000630000639C0000319C000031 + 9C000063CE0000319C000063CE000063CE000063CE00639CCE00639CCE00639C + CE009CCEFF009CCEFF00CEFFFF00CEFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200EFEFEF00BDBDBD00ADADAD00FF9C6300FF9C + 6300FF310000424242004242420073737300ADADAD0021212100CECECE00CECE + CE00CECECE007373730063636300737373007373730073737300737373007373 + 730073737300737373006363630000000000313131009C9C9C009C9C9C00CECE + CE00313131000000000000000000212121003131310063636300636363006363 + 63009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF009C9C9C009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEF + EF009C9C9C009C9C9C000000000000000000000000004242420000CECE005252 + 5200000010009CCE63006363CE006363CE009CCE6300000010005252520031FF + FF0031FFFF0000CECE0052525200009C9C000000100000000000000000000000 + 0000000000000000100000CECE00009C9C00009C9C00009C9C00006363000000 + 1000737373002121210000000000000000000000000000000000000000000063 + 9C00009CFF0000FFFF0000FFFF0000FFFF0000CEFF0000005200000063000063 + CE0000319C0000319C000063CE0000319C000063CE000063CE000063CE00639C + CE00639CCE00639CCE009CCEFF009CCEFF00CEFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00BDBDBD004242 + 42004242420073737300ADADAD00ADADAD00ADADAD0042424200CECECE00FFFF + FF00FFFFFF00EFEFEF00EFEFEF00525252006363630073737300737373007373 + 73007373730073737300636363000000000042424200CECECE00CECECE00CECE + CE002121210000000000313131003131310063636300636363009C9C9C00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF009C9C9C001010 + 1000000000009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF000000000000000000000000000000100031FFFF005252 + 520000001000000010006363CE009CCE63006363CE000000100000CECE0031FF + FF0031FFFF00009C9C0052525200009C9C000000100000000000000000000000 + 0000000000000000100000CECE000000100000636300009C9C00000010000000 + 1000000010005252520000000000000000000000000000000000000000000063 + CE0000319C00009CCE0000008C0000319C0000319C0000FFFF00003163000000 + 520000319C000063CE0000319C000063CE0000319C000063CE000063CE000063 + CE000063CE00639CCE00639CCE00639CCE009CCEFF00CEFFFF00CEFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000009C9C9C004242420063636300636363007373 + 7300ADADAD00ADADAD00ADADAD0042424200424242004242420042424200EFEF + EF00EFEFEF0063636300EFEFEF00EFEFEF00EFEFEF0052525200636363007373 + 73007373730073737300636363000000000042424200CECECE00CECECE006363 + 6300000000003131310063636300636363009C9C9C00EFEFEF009C9C9C003131 + 31002121210031313100EFEFEF00EFEFEF009C9C9C0010101000000000002121 + 21002121210000000000000000009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF0000000000000000000000000000000000000010009CFFFF005252 + 5200000010009CCE6300000010006363CE00000010005252520031FFFF0031FF + FF0031FFFF000000100052525200000010000063630000000000000000000000 + 00005252520000001000009C9C00525252000000100000001000006363000000 + 1000525252000000100000000000000000000000000000000000000000000031 + 9C000063CE0000319C000063CE00009CFF000000BD0000639C0000FFFF000000 + 7300000063000000420000319C0000319C0000319C0000319C000063CE000031 + 9C000063CE000063CE000063CE00639CCE00639CCE009CCEFF009CCEFF00CEFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000424242009C9C9C009C9C9C00CECECE004242420042424200424242006363 + 6300636363004242420042424200ADADAD00ADADAD0063636300636363002121 + 210063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF005252 + 52006363630073737300636363000000000042424200CECECE00636363002121 + 210031313100636363009C9C9C00EFEFEF00EFEFEF00EFEFEF00313131002121 + 2100313131009C9C9C009C9C9C00101010000000000021212100212121002121 + 210021212100313131003131310000000000000000009C9C9C00EFEFEF000000 + 000000000000000000000000000000000000000000000000100031FFFF005252 + 5200000010000000100000001000000010005252520000CECE0000CECE0000CE + CE0000CECE00000010005252520000CECE000000100000000000000000000000 + 0000000010000000100000001000000010000063630000001000000010000000 + 1000000010000000000000000000000000000000000000000000000000000000 + 000000319C0000319C0000319C000063CE00009CFF0000319C0000FFFF000031 + 9C000031630000319C0000003100000052000063CE0000319C0000319C000031 + 9C000063CE0000319C000063CE000063CE000063CE00639CCE00639CCE009CCE + FF00CEFFFF000000000000000000000000000000000000000000000000000000 + 000042424200CECECE00CECECE00CECECE004242420042424200424242004242 + 420042424200DEDEDE00DEDEDE00636363006363630042424200424242002121 + 2100212121002121210063636300EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF005252520063636300000000004242420063636300212121006363 + 63009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF009C9C9C001010100000000000212121002121210021212100212121003131 + 310031313100000000000000000021212100212121000000000042424200CECE + CE0000000000000000000000000000000000000000004242420000CECE0000CE + CE00525252000000100052525200009C9C0031FFFF00009C9C0000001000009C + 9C002121210052525200009C9C00009C9C000000100000000000000000000000 + 00000000100000001000006363000000100000001000009C9C00006363000063 + 6300006363000000100000000000000000000000000000000000000000000000 + 0000000000000063CE0000319C000063CE000063CE0000CEFF0000319C00009C + CE0000FFFF0000FFFF0000FFFF0000CEFF0000CECE0000639C000063CE000031 + 9C0000319C000063CE0000319C0000319C000063CE000063CE00639CCE00639C + CE009CCEFF00CEFFFF0000000000000000000000000000000000000000000000 + 000042424200CECECE00CECECE00CECECE00424242004242420042424200DEDE + DE00DEDEDE006363630063636300424242004242420021212100212121009C9C + 9C009C9C9C0021212100212121002121210063636300EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF000000000042424200313131009C9C9C00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF009C9C9C001010 + 1000000000002121210021212100212121002121210031313100313131000000 + 000000000000212121002121210000000000424242009C9C9C00CECECE002121 + 2100212121000000000000000000000000000000000073737300319C9C009CFF + FF0000CECE0000CECE0000CECE0031FFFF00009C9C0000001000000010000063 + 6300009C9C005252520000001000000010000000000000000000000000000000 + 0000000010000000100000001000009C9C00009C9C00009C9C00006363000063 + 6300006363000000100000000000000000000000000000000000000000000000 + 0000000000000000000000319C000063CE0000319C0000CEFF00009CFF00009C + FF000063CE000000AD000000AD0000319C0000FFFF0000007300000052000031 + 9C000063CE0000319C0000319C000063CE0000319C000063CE000063CE000063 + CE00639CCE009CCEFF0000000000000000000000000000000000000000000000 + 000042424200CECECE00CECECE00CECECE0042424200ADADAD00DEDEDE006363 + 630063636300424242004242420021212100212121009C9C9C009C9C9C002121 + 21002121210000000000000000008C8C8C00EFEFEF009C9C9C009C9C9C00EFEF + EF00EFEFEF0000000000000000000000000042424200EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF009C9C9C0010101000000000002121 + 2100212121002121210021212100313131003131310000000000000000002121 + 21002121210000000000424242009C9C9C00CECECE0021212100212121003131 + 31000000000000000000000000000000000000000000000000000063630031FF + FF00000010000063630000636300000010000000100052525200737373000000 + 1000000010000000100000001000000010000000000000000000000000000000 + 000000636300009C9C00009C9C00009C9C00009C9C00009C9C00009C9C00009C + 9C00006363000000100000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000319C0000319C0000CEFF00009C + FF00009CFF00009CFF000063CE000000AD0000FFFF0000319C00000073000000 + 52000000520000639C000063CE0000319C0000319C0000319C000063CE000031 + 9C000063CE00639CCE0000000000000000000000000000000000000000000000 + 000042424200CECECE00CECECE00FFFFFF002121210063636300636363004242 + 42004242420021212100212121009C9C9C009C9C9C0021212100212121000000 + 0000000000008C8C8C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000 + 00000000000000000000000000000000000042424200EFEFEF00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF00101010000000000021212100212121002121 + 2100212121003131310031313100000000000000000021212100212121000000 + 0000424242009C9C9C00CECECE00212121002121210031313100000000002121 + 21009C9C9C0000000000000000000000000000000000000000004242420000CE + CE00000010000000100000001000525252007373730073737300212121002121 + 2100000010005252520000001000424242000000100000000000000000000000 + 000000636300009C9C00009C9C00009C9C000000100000001000000010000031 + 3100009C9C000000100000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000CEFF00009C + FF00009CFF00009CFF00009CFF00009CFF000063CE0000FFFF0000FFFF0000FF + FF0000CEFF000063CE00000052000063CE0000319C0000319C0000319C000031 + 9C0000319C000063CE0000000000000000000000000000000000000000000000 + 000042424200FFFFFF00FFFFFF00EFEFEF008C8C8C0021212100212121002121 + 2100212121009C9C9C009C9C9C00212121002121210000000000000000008C8C + 8C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF0000000000000000005252 + 520052525200000000000000000000000000000000004242420042424200EFEF + EF00EFEFEF00EFEFEF009C9C9C009C9C9C009C9C9C0010101000101010003131 + 3100313131000000000000000000212121002121210000000000424242009C9C + 9C00CECECE002121210021212100313131000000000021212100BDBDBD00BDBD + BD00BDBDBD009C9C9C0000000000000000000000000000000000000000000000 + 10000063630052525200ADADAD00737373002121210021212100212121000000 + 1000000010000000100052525200424242000000100000001000000000000000 + 000000001000009C9C0000001000000010000063630000636300000010000063 + 6300000010000063630000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000CE + FF00009CFF00009CFF00009CFF00009CFF00009CFF00009CFF000000AD000000 + AD0000319C0000CEFF000000730000005200000052000063CE0000319C000031 + 9C0000319C000000000000000000000000000000000000000000000000000000 + 000042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF008C8C8C002121 + 210021212100212121002121210000000000000000008C8C8C00EFEFEF00EFEF + EF00EFEFEF00EFEFEF00EFEFEF0000000000000000009C9C9C009C9C9C007373 + 7300737373005252520021212100000000000000000000000000000000004242 + 4200424242009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF009C9C9C001010 + 100010101000212121002121210000000000424242009C9C9C00EFEFEF002121 + 210021212100313131000000000021212100BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD009C9C9C0000000000000000000000000000000000000000000000 + 0000424242000000100021212100000010002121210021212100000010000000 + 1000525252005252520000001000000010000000100052525200000010000000 + 00000000100000001000006363000063630000636300009C9C00000010000063 + 6300000010000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF000063 + CE000000AD0000FFFF0000319C00000073000000730000007300000073000000 + 5200000052000000520000000000000000000000000000000000000000000000 + 0000000000004242420042424200EFEFEF009C9C9C00CECECE00CECECE00EFEF + EF008C8C8C0021212100212121008C8C8C00EFEFEF00EFEFEF00EFEFEF00EFEF + EF00EFEFEF0000000000000000009C9C9C009C9C9C0073737300737373002121 + 2100212121000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF + EF009C9C9C0010101000424242009C9C9C00EFEFEF0021212100212121003131 + 31000000000021212100BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD009C9C9C00000000000000000000000000000000000000 + 0000000000000000000042424200000010000000100000001000525252005252 + 5200000010000000100031FFFF00009C9C00009C9C0000001000212121000000 + 000000001000006363000063630000636300009C9C0000636300003131000063 + 6300000010000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000319C0000319C000063CE000031 + 9C000063CE000063CE0000FFFF0000FFFF0000CEFF0000CEFF00009CFF000000 + 7300000052000000520000000000000000000000000000000000000000000000 + 000000000000000000000000000042424200424242009C9C9C009C9C9C00CECE + CE00CECECE00EFEFEF00EFEFEF009C9C9C009C9C9C00EFEFEF00EFEFEF000000 + 0000000000008C8C8C009C9C9C00737373007373730021212100212121000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000004242420042424200EFEFEF00EFEFEF003131 + 310031313100EFEFEF00EFEFEF00000000000000000031313100000000002121 + 2100BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00000000000000000000000000000000000000 + 0000000000000000000042424200000010005252520052525200000010000000 + 100031FFFF0031FFFF0000CECE0000CECE0031FFFF00009C9C00000010000000 + 1000000010000000100000636300009C9C000063630000313100003131000063 + 6300000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000319C000063CE0031639C0000009C000000DE000000AD000000 + AD00000073000000730000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000042424200424242009C9C + 9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF0000000000000000002121 + 2100525252005252520073737300212121002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000042424200424242000000 + 0000000000003131310031313100000000000000000021212100EFEFEF00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000042424200000010000000100000CECE0031FF + FF0000CECE0000CECE0031FFFF0031FFFF0000CECE0000CECE00009C9C00009C + 9C00009C9C00009C9C00009C9C00000010000063630000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000DE000000 + DE000000AD000000520000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 420042424200EFEFEF00EFEFEF00000000000000000000000000000000000000 + 0000000000002121210021212100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000021212100EFEFEF00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000100000CE + CE0031FFFF009CFFFF0000CECE0000CECE00009C9C00009C9C0031FFFF0031FF + FF0000CECE000000100000636300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000021212100EFEF + EF00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000063 + 63000000100000001000009C9C00009C9C0031FFFF0000CECE00000010000000 + 1000006363000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000021212100EFEF + EF00BDBDBD00BDBDBD00BDBDBD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000636300000010000000100000636300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002121 + 2100EFEFEF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002121 + 2100212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000005252 + 5200525252000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000008C8C8C008C8C8C005252 + 5200525252007373730073737300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008C8C8C008C8C8C008C8C8C008C8C8C004242 + 4200636363006363630052525200636363004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008C8C8C008C8C8C008C8C8C008C8C8C00BDBDBD00BDBDBD00EFEF + EF00525252005252520031313100525252005252520052525200525252000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CEFF + FF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFF + FF00CEFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008C8C + 8C008C8C8C008C8C8C008C8C8C00BDBDBD00BDBDBD00EFEFEF00EFEFEF00DEDE + DE00525252006363630010101000313131003131310052525200525252005252 + 5200525252000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000009CCEFF009CCEFF009CCEFF009CCEFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000CEFFFF00CEFFFF00CEFFFF009CCE + FF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF009CCE + FF009CCEFF009CCEFF009CCEFF009CCEFF000000000000000000000000000000 + 000000000000000000000000000000000000424242008C8C8C008C8C8C008C8C + 8C008C8C8C00BDBDBD00BDBDBD00EFEFEF00EFEFEF00BDBDBD00CECECE00CECE + CE006363630042424200101010008C8C8C008C8C8C0031313100313131004242 + 420052525200525252008C8C8C00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000009CCE + FF006363CE006363CE006363CE006363CE006363CE009CCEFF009CCEFF009CCE + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CEFFFF00CEFFFF009CCEFF0000630000009C63000063 + 0000639CCE0000630000009C630000630000639CCE00639CCE00639CCE00639C + CE00639CCE0000CE9C00009C63009CCEFF009CCEFF009CCEFF00000000000000 + 000000000000000000000000000000000000424242008C8C8C008C8C8C00BDBD + BD00BDBDBD00EFEFEF00EFEFEF00BDBDBD00CECECE00CECECE00ADADAD00ADAD + AD00525252006363630010101000BDBDBD00BDBDBD008C8C8C008C8C8C003131 + 3100424242004242420063636300525252005252520000000000000000000000 + 0000000000000000000000000000000000000000000000000000006300006331 + 9C006363CE006331CE0063319C0000CE9C00009C630000630000639CCE009CCE + FF009CCEFF009CCEFF009CCEFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000DEDEDE00DEDEDE001010100000000000000000000000 + 0000000000000000000000000000000000002121210021212100636363001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000CEFFFF009CCEFF000063000000630000009C630000CE9C00009C + 630000630000639C310000CE9C000063000000630000639CCE00639CCE0000CE + 9C00009C6300639C310000630000009C6300009C63009CCEFF009CCEFF000000 + 00000000000000000000000000000000000042424200BDBDBD00BDBDBD00EFEF + EF00EFEFEF00ADADAD00ADADAD00CECECE00CECECE00ADADAD00ADADAD00CECE + CE003131310063636300101010008C8C8C008C8C8C0042424200212121003131 + 3100525252006363630031313100525252005252520063636300424242000000 + 0000000000000000000000000000000000000000000000CE9C00009C63000063 + 000000CE9C0063319C00009C63000063000000CE9C00009C63000063000000CE + 9C00009C630000630000639CCE009CCEFF009CCEFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000DEDEDE00DEDEDE0031313100313131003131310031313100101010000000 + 0000000000000000000021212100212121003131310031313100636363001010 + 1000101010003131310000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000630000009C6300639C3100009C630000CE9C00009C63000031 + 6300003163000031630000316300003163000031630000316300003163000031 + 63000031630000CE9C00009C630000630000639C3100009C6300009C63000000 + 000000000000000000000000000000000000000000004242420042424200BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00DEDEDE00BDBDBD00BDBDBD00ADAD + AD00636363007373730010101000313131002121210021212100212121003131 + 3100313131005252520010101000313131003131310042424200424242005252 + 5200424242000000000000000000000000000000000000000000006300000000 + 000000000000000000000000000000000000000000000000000000CE9C006363 + CE006363CE006363CE006363CE006331CE00639CCE009CCEFF009CCEFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000DEDEDE00DEDE + DE0031313100CEFFFF00FFFFFF00CEFFCE0063CE630063CE6300636300003131 + 31001010100000000000313131000000000000FF630031313100636363001010 + 1000101010003131310000000000101010000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000063000031633100009C630000CE9C0000316300003163000031630000CE + FF0000CEFF000000420000004200000063000000420063639C00003163006363 + 9C000031630000316300003163000031630000CE9C0000630000639C3100009C + 630000000000000000000000000000000000000000000000000042424200BDBD + BD00BDBDBD00ADADAD00CECECE00CECECE00ADADAD009C9C9C00BDBDBD00CECE + CE00636363006363630010101000212121002121210021212100212121003131 + 31004242420031313100101010008C8C8C008C8C8C0031313100313131004242 + 4200636363004242420031313100000000000000000000CE9C00000000009CCE + FF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF009CCEFF00000000000000 + 000063319C0063319C006363CE006331CE006331CE000063CE000063CE00639C + CE009CCEFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000031313100DEDEDE00ADADAD003131 + 3100CEFFCE00CEFFCE00CEFFFF00639C3100639C3100639C310063CE630063CE + 6300313131006363630000000000313131003131310031313100636363001010 + 1000101010003131310000000000101010001010100010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000009C630000CE9C0000316300003163000031630000CEFF0000CEFF00009C + FF00009CFF0000CEFF0000CEFF0000004200003163000000630063639C000000 + 420063639C000000630063639C0000316300003163000031630000CE9C000063 + 0000009C6300000000000000000000000000000000000000000042424200BDBD + BD00BDBDBD00CECECE00ADADAD00CECECE009C9C9C00ADADAD00CECECE00BDBD + BD00525252004242420010101000212121002121210021212100212121003131 + 3100424242005252520010101000BDBDBD00BDBDBD008C8C8C008C8C8C003131 + 31007373730042424200636363000000000000000000000000009CCEFF00639C + CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE009CCEFF009CCE + FF009CCEFF0063319C0063319C0063CEFF0063CEFF009CFFFF009CFFFF009CFF + FF000063CE009CCEFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000003131310031313100ADADAD003131 + 3100CEFFCE00CEFFCE0063FF63000000000031313100CEFFCE00CEFFCE00CEFF + CE00313131009C9C9C0063636300313131006363630063636300313131003131 + 3100212121003131310000000000101010001010100010101000101010001010 + 100031313100000000000000000000000000000000000000000000000000009C + 6300316331000031630063639C0000CEFF0000CEFF00009CFF00009CFF00009C + FF00009CFF00009CFF00009CFF0000CEFF0000CEFF0000004200000042000031 + 6300003163000031630000316300003163000031630000006300003163000063 + 000000630000000000000000000000000000000000000000000042424200ADAD + AD00CECECE00BDBDBD009C9C9C00CECECE00BDBDBD00CECECE00CECECE008C8C + 8C00525252005252520010101000212121002121210021212100212121003131 + 31005252520042424200101010008C8C8C008C8C8C0042424200212121003131 + 310073737300525252008C8C8C00000000000000000000000000639CCE000063 + CE000063CE000063CE000063CE000063CE000063CE000063CE00639CCE00639C + CE00639CCE009CCEFF009CCEFF0000319C000063CE0063CEFF0063CEFF009CFF + FF00009C6300639CCE009CCEFF009CCEFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000313131003131 + 31006363630063FF630063FF630063FF6300CEFFCE00CEFFCE0063CE63006363 + 0000636363003131310063636300636363003131310031313100313131003131 + 3100313131003131310063636300101010001010100010101000101010001010 + 1000313131000000000000000000000000000000000000000000000000000063 + 000000316300000063000063CE000063CE000000AD000000AD000000AD000031 + CE000031CE000063CE000063CE000063CE000063CE00009CFF00009CFF000000 + 4200003163000000AD000000AD000031CE000063CE000063CE00009CFF0000CE + FF0000CEFF00000000000000000000000000000000000000000042424200CECE + CE009C9C9C00CECECE00CECECE00ADADAD00BDBDBD008C8C8C008C8C8C003131 + 3100525252003131310031313100101010001010100021212100212121003131 + 3100737373004242420010101000313131002121210021212100212121003131 + 31003131310000000000000000000000000000000000000000000063CE000063 + CE000063CE0000319C000063CE0000319C000063CE000063CE000063CE000063 + CE000063CE00639CCE00639CCE009CCEFF009CCEFF0000319C000063CE00009C + FF0000CE9C00009C630000630000009C63009CCEFF009CCEFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000313131003131310063636300639C3100639C3100639C3100636363003131 + 31008C8C8C008C8C8C0031313100313131002121210021212100313131003131 + 3100313131000000000031313100313131002121210010101000101010001010 + 1000313131000000000010101000000000000000000000000000000000000000 + 0000006300000063CE000000AD000000AD000000520000005200000073009CCE + FF009CCEFF009CCEFF009CCEFF00639CCE00639CCE00639CCE009CCEFF009CCE + FF009CCEFF000000730000007300000052000031CE000000AD000063CE00009C + FF0000CEFF00000000000000000000000000000000000000000042424200BDBD + BD00DEDEDE00BDBDBD00CECECE008C8C8C008C8C8C003131310031313100BDBD + BD008C8C8C008C8C8C0063636300636363004242420010101000101010003131 + 3100424242004242420010101000212121002121210021212100212121003131 + 3100636363000000000000000000000000000000000000000000000000000063 + CE0000319C000063CE0000319C000063CE0000319C000063CE0000319C000063 + CE000063CE000063CE000063CE00639CCE00639CCE009CCEFF009CCEFF000031 + CE000000AD000000AD000031CE0000CE9C0000630000639CCE009CCEFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000010101000000000000000000063636300313131009C9C9C008C8C + 8C00313131003131310021212100212121003131310031313100212121001010 + 1000313131003131310031313100313131003131310031313100212121001010 + 1000313131000000000010101000000000000000000000000000000000000000 + 00000063CE000000AD0000005200000052009CCEFF009CCEFF00639CCE009CCE + FF00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C + CE009CCEFF009CCEFF00639CCE009CCEFF0000005200000052000000AD000063 + CE00009CFF00000000000000000000000000000000000000000042424200ADAD + AD00CECECE008C8C8C008C8C8C003131310031313100BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD008C8C8C008C8C8C006363630042424200525252001010 + 1000525252004242420010101000212121002121210021212100212121003131 + 3100424242000000000000000000000000000000000000000000000000000031 + 9C0000319C0000319C0000319C0000319C0000319C0000319C000063CE000031 + 9C000063CE0000319C000063CE000063CE000063CE00639CCE00639CCE009CCE + FF0000007300000073000000AD000031CE000063CE00009C6300639CCE00639C + CE00000000000000000000000000000000000000000000000000000000000000 + 0000000000001010100010101000313131009C9C9C009C9C9C00313131003131 + 3100212121002121210031313100313131002121210010101000313131003131 + 3100212121001010100031313100313131003131310031313100313131003131 + 3100424242000000000010101000000000000000000000000000000000000000 + 00000000AD00000052009CCEFF009CCEFF00639CCE00639CCE00639CCE00639C + CE00639CCE000063CE00639CCE000063CE00639CCE000063CE00639CCE000063 + CE00639CCE00639CCE00639CCE00639CCE009CCEFF009CCEFF00000052000000 + AD00000000000000000000000000000000000000000000000000424242008C8C + 8C008C8C8C002121210021212100BDBDBD00BDBDBD00BDBDBD00BDBDBD00FFFF + FF00EFEFEF00FFFFFF00EFEFEF00BDBDBD008C8C8C008C8C8C00525252004242 + 4200525252005252520010101000212121002121210021212100212121003131 + 3100636363000000000000000000000000000000000000000000000000000000 + 000000319C0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C0000319C0000319C0000319C000063CE000063CE000063CE000063CE00639C + CE009CCEFF009CCEFF00000073000000AD000031CE009CFFFF009CFFFF009CFF + FF00639CCE000000000000000000000000000000000000000000000000000000 + 00000000000010101000424242009C9C9C003131310031313100212121002121 + 2100313131003131310021212100101010003131310031313100212121001010 + 1000313131003131310021212100101010003131310031313100313131003131 + 3100000000006363630010101000000000000000000000000000000000000000 + 000000000000639CCE00639CCE00639CCE000063CE00639CCE000063CE00639C + CE000063CE000063CE000063CE00639CCE000063CE000063CE000063CE00639C + CE000063CE00639CCE000063CE00639CCE00639CCE00639CCE009CCEFF000000 + 0000000000000000000000000000000000000000000000000000424242001010 + 100010101000BDBDBD00BDBDBD00BDBDBD00BDBDBD00FFFFFF00FFFFFF00FFFF + FF00EFEFEF00FFFFFF00EFEFEF00FFFFFF00EFEFEF00BDBDBD008C8C8C008C8C + 8C00525252005252520042424200101010001010100021212100212121003131 + 3100525252000000000000000000000000000000000000000000000000000000 + 00000000000000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C0000319C0000319C000063CE0000319C000063CE0000319C000063CE000063 + CE00639CCE00639CCE009CCEFF009CCEFF000063CE0063CEFF0063CEFF009CFF + FF006363CE00639CCE0000000000000000000000000000000000000000000000 + 0000000000001010100010101000313131002121210021212100313131003131 + 3100212121001010100031313100313131002121210010101000313131003131 + 3100212121001010100031313100313131002121210010101000313131003131 + 3100313131003131310031313100000000000000000000000000000000000000 + 000000000000639CCE00639CCE000063CE00639CCE000063CE00639CCE000063 + CE000063CE0000319C000063CE0000319C000063CE0000319C000063CE000031 + 9C000063CE000063CE00639CCE000063CE00639CCE000063CE00639CCE000000 + 000000000000000000000000000000000000000000001010100010101000BDBD + BD00BDBDBD00BDBDBD00BDBDBD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEF + EF00FFFFFF00EFEFEF00EFEFEF00DEDEDE00EFEFEF00EFEFEF00EFEFEF00BDBD + BD008C8C8C008C8C8C0052525200424242004242420010101000101010003131 + 3100525252000000000000000000000000000000000000000000000000000000 + 0000000000000000000000319C0000319C0000319C000063CE000063CE000063 + CE000063CE0000319C0000319C0000319C0000319C000063CE0000319C000063 + CE000063CE000063CE00639CCE00639CCE009CCEFF0000319C000063CE0063CE + FF0063319C006363CE0000000000000000000000000000000000000000000000 + 0000000000000000000010101000101010003131310031313100212121001010 + 1000313131003131310021212100101010003131310031313100212121001010 + 1000313131003131310021212100101010003131310031313100212121001010 + 1000313131003131310000000000000000000000000000000000000000000000 + 000000000000639CCE000063CE000063CE000063CE000063CE0000319C000063 + CE0000319C000063CE0000319C000063CE0000319C000063CE0000319C000063 + CE0000319C000063CE0000319C000063CE000063CE00639CCE000063CE000000 + 00000000000000000000000000000000000042424200BDBDBD00BDBDBD00BDBD + BD00BDBDBD00DEDEDE00EFEFEF00FFFFFF00FFFFFF00EFEFEF00DEDEDE00EFEF + EF00EFEFEF00FFFFFF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFFFF00DEDE + DE00FFFFFF00BDBDBD008C8C8C008C8C8C005252520052525200313131001010 + 1000525252000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000063CE000063CE00009CCE00009C + CE0000319C0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C000063CE000063CE000063CE000063CE00639CCE009CCEFF009CCEFF000063 + CE00009C63006331CE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000001010100010101000313131003131 + 3100212121001010100031313100313131002121210010101000313131003131 + 3100212121001010100031313100313131002121210010101000313131003131 + 3100000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000063CE0000319C000063CE0000319C000063CE000031 + 9C0000319C0000319C009CCEFF0000319C0000319C0000319C00009CCE000031 + 9C009CCEFF0000319C000063CE0000319C000063CE0000319C000063CE000000 + 00000000000000000000000000000000000042424200BDBDBD00BDBDBD00FFFF + FF00EFEFEF00EFEFEF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00EFEFEF00FFFF + FF00FFFFFF00FFFFFF00EFEFEF00EFEFEF00EFEFEF00DEDEDE00FFFFFF00DEDE + DE00FFFFFF00DEDEDE00FFFFFF00BDBDBD008C8C8C008C8C8C00525252005252 + 5200525252000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000009CCE0000319C000031 + 9C0000319C0000319C0000319C0000319C000063CE000063CE0000319C000031 + 9C0000319C000063CE0000319C000063CE000063CE00639CCE00639CCE009CCE + FF0000630000009C630000CE9C00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000101010001010 + 1000313131003131310021212100101010003131310031313100212121001010 + 1000313131003131310021212100101010003131310031313100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000319C000063CE0000319C000063CE0000319C00009C + CE0000319C0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C0000319C0000319C0000319C0000319C0000319C000063CE00000000000000 + 00000000000000000000000000000000000042424200DEDEDE00DEDEDE00EFEF + EF00DEDEDE00FFFFFF00DEDEDE00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00EFEFEF00EFEFEF00DEDE + DE00FFFFFF00EFEFEF00DEDEDE00FFFFFF00EFEFEF00BDBDBD008C8C8C008C8C + 8C00525252005252520000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000031 + 9C0000319C0000319C000063CE000063CE000063CE00009CCE000063CE000031 + 9C0000319C0000319C000063CE0000319C000063CE000063CE000063CE00639C + CE009CCEFF000063000000CE9C00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000101010001010100031313100313131002121210010101000313131003131 + 3100212121001010100031313100313131000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000319C0000319C0000319C0000319C000031 + 9C0000319C009CCEFF0000319C0000319C0000319C0000319C0000319C000031 + 9C0000319C0000319C00009CCE0000319C0000319C0000319C00000000000000 + 000000000000000000000000000000000000000000004242420042424200DEDE + DE00DEDEDE00FFFFFF00FFFFFF00DEDEDE00DEDEDE00FFFFFF00FFFFFF00EFEF + EF00EFEFEF00FFFFFF00EFEFEF00EFEFEF00FFFFFF00EFEFEF00EFEFEF00FFFF + FF00EFEFEF00FFFFFF00EFEFEF00EFEFEF00DEDEDE00EFEFEF00FFFFFF00BDBD + BD008C8C8C008C8C8C0052525200212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000063CE000063CE00009CCE00009CCE0000319C0000319C000031 + 9C0000319C0000319C0000319C0000319C0000319C000063CE000063CE000063 + CE00639CCE009CCEFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000010101000101010003131310031313100212121001010 + 1000313131003131310000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000319C0000319C009CCEFF0000319C000031 + 9C0000319C0000319C0000319C00009CCE0000319C0000319C00009CFF000031 + 9C0000319C0000319C0000319C0000319C0000319C0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 420042424200DEDEDE00DEDEDE00FFFFFF00EFEFEF00EFEFEF00FFFFFF00EFEF + EF00FFFFFF00DEDEDE00FFFFFF00EFEFEF00FFFFFF00FFFFFF00DEDEDE00FFFF + FF00FFFFFF00EFEFEF00DEDEDE00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00DEDEDE00BDBDBD008C8C8C00212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000319C0000319C0000319C0000319C000031 + 9C000063CE000063CE000063CE0000319C0000319C0000319C0000319C000063 + CE000063CE00639CCE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000001010100010101000313131003131 + 3100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000319C0000319C0000319C000031 + 9C00009CFF0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C009CCEFF0000319C0000319C0000319C000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200DEDEDE00DEDEDE00FFFFFF00EFEFEF00EFEF + EF00DEDEDE00FFFFFF00FFFFFF00EFEFEF00EFEFEF00EFEFEF00FFFFFF00EFEF + EF00EFEFEF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00DEDEDE00FFFFFF00FFFF + FF00EFEFEF00DEDEDE00DEDEDE00212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000319C000063CE000063 + CE000063CE00009CCE00009CCE000063CE0000319C0000319C0000319C000063 + CE000063CE00639CCE0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000101010001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000319C000031 + 9C0000319C0000319C0000319C0000319C009CCEFF0000319C0000319C000031 + 9C0000319C0000319C0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000004242420042424200DEDEDE00DEDEDE00FFFF + FF00FFFFFF00FFFFFF00DEDEDE00EFEFEF00FFFFFF00FFFFFF00FFFFFF00EFEF + EF00DEDEDE00FFFFFF00EFEFEF00DEDEDE00FFFFFF00FFFFFF00DEDEDE00DEDE + DE00DEDEDE002121210021212100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000009CCE0000319C0000319C0000319C0000319C0000319C0000319C000031 + 9C000063CE000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000319C009CCEFF0000319C0000319C0000319C0000319C000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004242420042424200DEDE + DE00DEDEDE00EFEFEF00DEDEDE00DEDEDE00EFEFEF00CECECE00EFEFEF00FFFF + FF00EFEFEF00EFEFEF00FFFFFF00DEDEDE00EFEFEF00DEDEDE00DEDEDE004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000319C0000319C0000319C0000319C000063 + CE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 420042424200DEDEDE00DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEF + EF00EFEFEF00FFFFFF00EFEFEF00DEDEDE00DEDEDE0042424200424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200DEDEDE00DEDEDE00EFEFEF00EFEFEF00FFFF + FF00FFFFFF00DEDEDE00DEDEDE00424242004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000004242420042424200DEDEDE00DEDEDE00DEDE + DE00DEDEDE004242420042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000042424200424242004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000021212100212121001010100000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000008C8C8C00424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000212121001010100021212100101010002121210010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008C8C8C008C8C8C008C8C8C00424242004242 + 4200212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000212121002121 + 2100101010002121210010101000212121001010100010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008C8C8C008C8C8C008C8C8C008C8C8C00EFEFEF008C8C8C004242 + 4200212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002121210010101000212121001010 + 1000212121001010100021212100101010002121210010101000101010001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008C8C + 8C008C8C8C008C8C8C008C8C8C00EFEFEF00EFEFEF00BDBDBD00424242008C8C + 8C00212121000000000000000000212121004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000212121002121210021212100212121000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000010101000212121001010100021212100101010002121 + 2100101010002121210021212100212121001010100010101000101010001010 + 1000101010001010100000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BDBDBD008C8C + 8C008C8C8C00EFEFEF00EFEFEF00BDBDBD00BDBDBD008C8C8C00424242004242 + 4200424242002121210021212100424242004242420042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000101010001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000212121002100000063310000633100006331 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000021212100101010002121210010101000212121001010 + 1000212121002121210010101000101010001010100010101000101010001010 + 1000101010001010100010101000101010000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000BDBDBD00EFEF + EF00EFEFEF00BDBDBD00BDBDBD008C8C8C008C8C8C008C8C8C00424242004242 + 42004242420042424200424242008C8C8C008C8C8C0042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000031630000316300003163001010 + 1000101010001010100000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000212121002100000063310000FF310000FF630000FF31 + 0000000000001010100000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000010101000212121001010100021212100212121002121 + 2100101010001010100021212100212121002121210021212100101010001010 + 1000101010001010100010101000101010001010100010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000BDBD + BD00BDBDBD008C8C8C008C8C8C008C8C8C008C8C8C008C8C8C00424242004242 + 4200424242004242420042424200424242004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000316300003163000031630000316300003163001010 + 1000101010001010100010101000101010000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000002121210063310000FF310000AD000000633100005200 + 0000000000002121210010101000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000021212100101010002121210021212100101010001010 + 1000212121002121210021212100212121002121210021212100212121002121 + 2100101010001010100010101000101010001010100010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BDBDBD008C8C8C008C8C8C008C8C8C008C8C8C00424242004242 + 4200424242004242420042424200000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000003163000031630000316300003163000031630000639C0000639C002121 + 2100212121001010100010101000101010001010100010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000002121210063310000FF63000063310000633100005200 + 0000000000004242420021212100101010000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002121210021212100212121001010100010101000212121002121 + 2100212121002121210021212100212121002121210021212100212121002121 + 2100212121002121210010101000101010001010100010101000101010000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000BDBDBD008C8C8C008C8C8C008C8C8C00424242004242 + 4200424242004242420000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000003163000031 + 630000316300003163000031630000639C0000639C0021212100212121004242 + 4200424242002121210021212100101010001010100010101000101010001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000063310000FF31000063310000730000005200 + 0000000000004242420042424200212121001010100000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002121210010101000101010002121210021212100212121002121 + 2100101010004242420021212100424242004242420042424200101010002121 + 2100212121002121210021212100212121001010100010101000101010000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000BDBDBD008C8C8C0042424200424242004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000031630000316300003163000031 + 63000031630000639C0000639C00212121002121210042424200424242002121 + 2100212121004242420042424200212121002121210010101000101010001010 + 1000101010001010100000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000633100006331000052000000520000000000 + 0000424242004242420042424200424242002121210010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000001010100021212100212121000000730000007300000042001010 + 1000525252002121210042424200424242004242420021212100101010001010 + 1000212121002121210021212100212121002121210021212100101010000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002121210042424200424242004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000316300003163000031630000316300003163000063 + 9C0000639C002121210021212100424242004242420021212100212121004242 + 4200424242002121210021212100424242004242420021212100212121001010 + 1000101010001010100010101000000000000000000000000000212121002121 + 2100212121002121210000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 4200424242004242420042424200424242004242420021212100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000021212100212121000000BD000000DE000000DE00000073005252 + 5200424242005252520010101000101010001010100010101000212121001010 + 1000101010002121210021212100212121002121210021212100212121000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000424242004242420042424200424242004242 + 4200212121002121210021212100212121002121210021212100212121004242 + 4200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000003163000031630000316300003163000031630000639C0000639C002121 + 2100212121004242420042424200212121002121210042424200424242002121 + 2100212121004242420042424200212121002121210042424200212121002121 + 2100212121001010100010101000000000000000000000000000212121002100 + 0000633100006331000063310000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000212121002121 + 2100212121004242420042424200424242004242420042424200000000001010 + 1000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000042424200424242000000730000007300212121004242 + 4200525252001010100052525200525252002121210010101000101010001010 + 1000101010002121210021212100212121002121210021212100000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 4200424242004242420042424200424242004242420042424200424242004242 + 4200424242004242420042424200212121002121210021212100212121002121 + 2100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000003163000031 + 630000316300003163000031630000639C0000639C0021212100212121004242 + 4200424242002121210021212100424242004242420021212100212121004242 + 4200424242002121210021212100424242001010100010101000101010001010 + 1000212121002121210010101000000000000000000021212100210000006331 + 0000FF310000FF630000FF310000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000101010002121210021212100424242002121210042424200000000002121 + 2100101010000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004242420042424200212121002121 + 2100424242005252520000000000101010001010100010101000101010001010 + 1000212121002121210021212100212121000000000000000000000000000000 + 00000000000000000000000000000000000000000000BDBDBD008C8C8C008C8C + 8C008C8C8C008C8C8C008C8C8C008C8C8C008C8C8C0042424200424242004242 + 4200424242004242420042424200424242004242420021212100212121002121 + 2100212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000003163000031 + 63000031630000639C0000639C00212121002121210042424200424242002121 + 2100212121004242420042424200212121002121210042424200424242002121 + 2100212121004242420010101000101010002121210000316300212121001010 + 100010101000101010000000000000000000000000002121210063310000FF31 + 0000AD0000006331000052000000000000001010100000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000525252001010100010101000212121004242420042424200000000004242 + 4200212121001010100000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000424242004242 + 4200212121002121210000000000525252002121210000000000101010002121 + 2100212121002121210000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD008C8C8C008C8C8C008C8C + 8C008C8C8C004242420042424200424242004242420042424200212121002121 + 2100212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000316300003163000063 + 9C0000639C002121210021212100424242004242420021212100212121004242 + 4200424242002121210021212100424242004242420021212100212121004242 + 4200101010001010100021212100525252004242420021212100003163002121 + 210010101000101010000000000000000000000000002121210063310000FF63 + 0000633100006331000052000000000000002121210010101000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005252520052525200525252004242420042424200000000004242420000CE + CE00424242002121210000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000424242004242420000000000525252002121210000000000212121002121 + 2100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000EFEFEF00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD008C8C8C008C8C8C00424242004242420042424200424242004242 + 4200212121002121210000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000031630000639C002121 + 2100212121004242420042424200212121002121210042424200424242002121 + 2100212121004242420042424200212121002121210042424200101010001010 + 1000212121005252520042424200ADADAD002121210021212100003163002121 + 210021212100101010000000000000000000000000000000000063310000FF31 + 0000633100007300000052000000000000004242420021212100101010000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000052525200525252005252520000000000424242004242 + 420000CECE002121210000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EFEF + EF00EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00FFFFFF00FFFFFF00424242004242420042424200424242004242 + 4200424242002121210000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000004242 + 4200424242002121210021212100424242004242420021212100212121004242 + 4200424242002121210021212100424242001010100010101000424242004242 + 420021212100ADADAD0021212100212121000031630000316300212121002121 + 2100212121000000000000000000000000000000000000000000633100006331 + 0000520000005200000000000000424242004242420042424200212121001010 + 1000000000001010100010101000101010000000000000000000000000000000 + 0000424242004242420000000000000000000000000042424200424242004242 + 4200424242004242420000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EFEFEF00EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBDBD00FFFF + FF00FFFFFF00FFFFFF00FFFFFF008C8C8C008C8C8C0042424200424242004242 + 4200424242004242420021212100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004242420042424200212121002121210042424200424242002121 + 2100212121004242420010101000101010004242420021212100000000000000 + 0000212121002121210000316300003163002121210021212100212121002121 + 2100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000042424200424242004242420042424200424242002121 + 210010101000212121002121210021212100000000000063630000CECE004242 + 4200424242000000000000000000000000000000000000000000424242004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EFEFEF00BDBDBD00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BDBDBD00BDBDBD00BDBDBD00BDBDBD008C8C8C008C8C8C004242 + 4200424242004242420042424200212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000424242004242420021212100212121004242 + 4200101010001010100021212100525252000000000000000000000000002121 + 2100003163000031630021212100212121002121210021212100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002121210021212100212121004242420042424200424242004242 + 420021212100212121005252520021212100000000000000000000CECE000000 + 0000000000000000000000000000000000004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD008C8C + 8C008C8C8C004242420042424200424242004242420000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000042424200101010001010 + 1000212121005252520042424200ADADAD002121210021212100003163000031 + 6300212121002121210021212100212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000002121210021212100212121004242 + 4200101010005252520052525200000000004242420000000000000000000000 + 0000101010000000000000000000424242000000000010101000101010004242 + 4200212121000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD008C8C8C008C8C8C00424242004242420042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000212121000031 + 630021212100ADADAD0021212100212121000031630000316300212121002121 + 2100212121002121210000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000525252005252520000000000424242000000000000000000000000004242 + 4200212121002121210010101000000000001010100000000000424242004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00EFEFEF00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD008C8C8C008C8C8C0042424200424242000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000003163002121210000316300003163002121210021212100212121002121 + 2100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000042424200424242004242420042424200000000000000 + 0000424242004242420010101000101010000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EFEF + EF00EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD008C8C8C008C8C8C004242 + 4200424242000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000212121000031630021212100212121002121210021212100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000424242004242420042424200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EFEFEF00EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD008C8C + 8C008C8C8C004242420000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000021212100212121000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000424242004242420021212100000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000EFEFEF00EFEFEF00BDBDBD00BDBDBD00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD + BD00BDBDBD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000EFEFEF00EFEFEF00BDBD + BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000EFEF + EF00EFEFEF00BDBDBD00BDBDBD00BDBDBD00BDBDBD0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000525252002121210000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000EFEFEF00BDBDBD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000A00000000100010000000000000A00000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000 + FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFC7FFF0000000000000000 + FFFFFFFFFFF007FF0000000000000000FFFFFFFFFFC001FF0000000000000000 + FFE07FFFFF00007F0000000000000000FF801FFFFC00003F0000000000000000 + FE0007FFF000001F0000000000000000F80001FFF000000F0000000000000000 + E000007FE000000700000000000000008000001FC00000030000000000000000 + 8000000780000003000000000000000000000001800000010000000000000000 + 0000000080000001000000000000000000000000800000000000000000000000 + 0000000080000000000000000000000000000000800000000000000000000000 + C0000000800000000000000000000000F0000000800000000000000000000000 + FC000000800000000000000000000000FF000003C00000010000000000000000 + FFC0000FC00000010000000000000000FFF0003FC00000030000000000000000 + FFFC00FFC00000070000000000000000FFFF03FFC000000F0000000000000000 + FFFFCFFFE000001F0000000000000000FFFFFFFFE000003F0000000000000000 + FFFFFFFFE000007F0000000000000000FFFFFFFFF00001FF0000000000000000 + FFFFFFFFF80007FF0000000000000000FFFFFFFFFF007FFF0000000000000000 + FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFFFFFFFFFFFFF + FFFFFFFFFFC1E07FFFF01FFFFFFFFFFFFE3FFFFFFF00001FFFC00FFFFFFFFFFF + F80FFFFFFC000007FE0003FFFE1FFFFFE003FFFFF0000003F80000FFF803FFFF + 8000F9FFC0000001F000007F8000FFFF8000207F00000001E000003F00003FFF + 0000001F00000001E000003F00000FFF0000000780000001C000601F000003FF + 80000001E0000001C0007003000000FFE000000080000001800070038000007F + F80000000000000180007803C000001FFE0000000000000180007803C000000F + F80000000000000380007003C0000007F00000000000000780007007E0000003 + F00000000000000780007003F0000001F0000000000000038000F003F8000001 + F000000100000003C000F003FC000001F000000100000003C0007003FF000001 + F000000080000001E0003003FFC00003F0000000E0000001F0001007FFC00001 + F8000001F8000000FC001007FFE00001FE000007FE000000FC00000FFFFF0001 + FF80001FFF998001FE00007FFFFFF801FFE0607FFFFF8007FFC001FFFFFFFFC3 + FFF9F9FFFFFFC01FFFE007FFFFFFFFFFFFFFFFFFFFFFC07FFFFC3FFFFFFFFFFF + FFFFFFFFFFFFE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE007FFFFFFFFFFF + FFFFFFFFFFFFFFFFF8001FFFFFFFFFFFFFFFFFFFFFE007FFE00007FFF87FFFFF + FFFFFFFFFF0000FF800001FFE00FFFFFFFFFFFFFFC00003F0000007FC001FFFF + FC7F0FFFF800001F0000001F80007FFFF01C01FFF000000F0000000700001FFF + C00000FFF000000F80000001800007FF0000003FE0000007C0000000000003FF + 00000007E0000003C0000000800000FF00000003C0000003C00000008000003F + C0000000C0000003C00000018000001FF0000000E0000003C0000003C000000F + F8000000E0000003C0000003C0000007F8000000E0000007C0000003E0000003 + F8000000F000000FC0000003F0000001F8000000F000000F80000003F8000001 + FC000000F000000F00000003FC000001FE000003F800000F00000003FF000000 + FFC0000FF800001F00000001FF800000FFF0003FFC00001F80000000FFE00001 + FFFC00FFFC00003FE0000000FFF80001FFFE03FFFE00007FF8000000FFFE0001 + FFFFCFFFFF0000FFFE000001FFFF8003FFFFFFFFFFC003FFFF800007FFFFF007 + FFFFFFFFFFF81FFFFFE0001FFFFFFE0FFFFFFFFFFFFFFFFFFFF8007FFFFFFFFF + FFFFFFFFFFFFFFFFFFFE01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFC3FFFFFFF9FFFFFFFFFFFFFFFFFFFFFF00FFFFFFE07FFFFFFFFFFFFFFFFFF + FFC003FFFFF807FFFFFFFFFFFFFFFFFFFF0000FFFFE0007FFFFFFFFFFFFE0FFF + FC00003FFF80001FFFFFCFFFFFFC07FFF800001FFF80001FFFFF03FFFFFC03FF + F800001FFF80001FFFFC00FFFFF801FFF800001FFF80001FFFF0003FFFF800FF + F800001FFFE0007FFFC0000FFFF8007FF000000FFFF801FFFF000003FFF8003F + F000000FFFFC03FFFC000000C1F8001FF000000FFE0007FFF000000080FC000F + F000000FE00007FFC0000000807F0007F000000F800007FF80000000003FC003 + FC00003F000003FF80000001001FE001FF0000FF000003FF00000001000FE001 + FFC003FF800001FF000000010000F001FFF00FFFC00001FF8000000300000001 + FFFC3FFFE00000FFE000000380000303FFFC3FFFF800007FF800000FE0000607 + FFFC3FFFFE00003FFE00003FF8000003FFFC3FFFFE00001FFF8000FFFF000003 + FFFC3FFFFE000007FFC003FFFFE00047FFFC3FFFFF800001FFE00FFFFFF800FF + FFFC3FFFFFE00001FFF03FFFFFFE00FFFFFC3FFFFFF80001FFFCFFFFFFFFF1FF + FFFC3FFFFFFE0007FFFFFFFFFFFFFFFFFFFC3FFFFFFF801FFFFFFFFFFFFFFFFF + FFFC3FFFFFFFE07FFFFFFFFFFFFFFFFFFFFC3FFFFFFFF9FFFFFFFFFFFFFFFFFF + FFFE7FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/Hints/Unit1.pas b/official/1.7.0/EasyListview/Demos/Hints/Unit1.pas new file mode 100644 index 0000000..0d5655a --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Hints/Unit1.pas @@ -0,0 +1,262 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ImgList, + EasyListview, MPCommonUtilities, MPCommonObjects; + +type + TForm1 = class(TForm) + Panel1: TPanel; + ImageList1: TImageList; + ImageList2: TImageList; + Splitter1: TSplitter; + RadioGroupHintType: TRadioGroup; + CheckBoxAllowOnItemsOnly: TCheckBox; + cbViews: TComboBox; + CheckBoxCustomizeText: TCheckBox; + Label1: TLabel; + VCLv: TEasyListview; + EditPauseDelayTime: TEdit; + Label2: TLabel; + Label3: TLabel; + CheckBoxHeader: TCheckBox; + procedure FormCreate(Sender: TObject); + procedure InvalidateCLVClick(Sender: TObject); + procedure RadioGroupHintTypeClick(Sender: TObject); + procedure cbViewsChange(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure CheckBoxCustomizeTextClick(Sender: TObject); + procedure VCLvHintPauseTime(Sender: TCustomEasyListview; + HintWindowShown: Boolean; var PauseDelay: Integer); + procedure CheckBoxHeaderClick(Sender: TObject); + procedure VCLvHintCustomDraw(Sender: TCustomEasyListview; + const TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo); + procedure VCLvHintCustomInfo(Sender: TCustomEasyListview; + const TargetObj: TEasyCollectionItem; Info: TEasyHintInfo); + procedure VCLvHintPopup(Sender: TCustomEasyListview; + TargetObj: TEasyCollectionItem; HintType: TEasyHintType; + MousePos: TPoint; var Text: WideString; var HideTimeout, + ReShowTimeout: Integer; var Allow: Boolean); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.InvalidateCLVClick(Sender: TObject); +begin + VCLv.Invalidate; +end; + +procedure TForm1.FormCreate(Sender: TObject); +var + i, j, k: Integer; + Item: TEasyCollectionItem; + Column: TEasyCollectionItem; + Group: TEasyCollectionItem; +begin + VCLv.BeginUpdate; + try + for i := 0 to 9 do + begin + Column := VCLv.Header.Columns.Add; + Column.Caption := 'Column: ' + IntToStr(i); + Column.ImageIndex := Random(ImageList1.Count); + TEasyColumnStored( Column).Width := 120; + end; + + for i := 0 to 9 do + begin + Group := VCLv.Groups.Add; + if i mod 2 = 0 then + Group.Caption := 'Group: ' + IntToStr(i) + else + Group.Caption := 'Group: ' + IntToStr(i) + ' has an very long caption that just goes on forever'; + Group.ImageIndex := Random(ImageList1.Count); + for j := 0 to 19 do + begin + Item := TEasyGroupStored(Group).Items.Add; + if j mod 2 = 0 then + Item.Caption := 'Item: ' + IntToStr(j) + else + Item.Caption := 'Item: ' + IntToStr(j) + ' has an very long caption that just goes on forever'; + Item.ImageIndex := Random(ImageList1.Count); + // Fill in the Item Details + for k := 1 to 9 do + Item.Captions[k] := 'Item: ' + IntToStr(j) + ' Column: ' + IntToStr(k); + end + end; + finally + VCLv.EndUpdate(); + end +end; + + +procedure TForm1.RadioGroupHintTypeClick(Sender: TObject); +begin + VCLv.HintType := TEasyHintType( RadioGroupHintType.ItemIndex); + CheckBoxCustomizeText.Enabled := RadioGroupHintType.ItemIndex = 0; + CheckBoxAllowOnItemsOnly.Enabled := CheckBoxCustomizeText.Checked; + VCLv.Invalidate +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + VCLv.View := TEasyListStyle( cbViews.ItemIndex) +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(VCLv.View); +end; + +procedure TForm1.CheckBoxCustomizeTextClick(Sender: TObject); +begin + CheckBoxAllowOnItemsOnly.Enabled := CheckBoxCustomizeText.Checked; +end; + +procedure TForm1.VCLvHintPauseTime(Sender: TCustomEasyListview; + HintWindowShown: Boolean; var PauseDelay: Integer); +begin + // If the Hint Window is already shown then wait a bit between showing + // it again as the mouse is moved around the control + // This is the same property that can be globally set in + // Application.HintShortPause + // But here it can be set dynamically. + // Unfortunately the VCL does not allow us to know what the old hint + // control was nor the new one. It also does not allow us to see the + // cursor postion. + if HintWindowShown then + PauseDelay := StrToInt(EditPauseDelayTime.Text) +end; + +procedure TForm1.CheckBoxHeaderClick(Sender: TObject); +begin + VCLv.Header.Visible := CheckBoxHeader.Checked +end; + +procedure TForm1.VCLvHintCustomDraw(Sender: TCustomEasyListview; + const TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo); +var + R: TRect; +begin + if TargetObj is TEasyItem then + begin + R := Info.Bounds; + Imagelist2.DrawingStyle := dsTransparent; + ImageList2.Draw(Info.Canvas, 2, (RectHeight(R) - 32) div 2, + TEasyItem( TargetObj).ImageIndex mod ImageList2.Count); + R.Left := R.Left + 36; + DrawTextWEx(Info.Canvas.Handle, Info.Text, R, [dtSingleLine, dtLeft, dtVCenter], 1); + end +end; + +procedure TForm1.VCLvHintCustomInfo(Sender: TCustomEasyListview; + const TargetObj: TEasyCollectionItem; Info: TEasyHintInfo); +var + R: TRect; +begin + if Info.HintType = ehtCustomDraw then + begin + Info.Text := 'Custom Draw HintText for Item: ' + IntToStr(TargetObj.Index); + R := Rect(0, 0, Screen.Width, Screen.Height); + DrawTextWEx(Info.Canvas.Handle, Info.Text, R, [dtSingleLine, dtCalcRect, dtCalcRectAdjR], -1); + OffsetRect(R, -R.Left, -R.Top); + R.Right := R.Right + 32 + 4 + 4; + if R.Bottom < 32 + 2 then + R.Bottom := 32 + 2; + Info.Bounds := R; + end +end; + +procedure TForm1.VCLvHintPopup(Sender: TCustomEasyListview; + TargetObj: TEasyCollectionItem; HintType: TEasyHintType; + MousePos: TPoint; var Text: WideString; var HideTimeout, + ReShowTimeout: Integer; var Allow: Boolean); +var + ItemInfo: TEasyItemHitTestInfoSet; + GroupInfo: TEasyGroupHitTestInfoSet; + ViewPt: TPoint; +begin + ViewPt := VCLv.Scrollbars.MapWindowToView(MousePos); + + if HintType = ehtCustomDraw then + begin + Allow := TargetObj is TEasyItem; + end else + if HintType = ehtText then + begin + Allow := (TargetObj is TEasyItem) or (TargetObj is TEasyGroup); + if Allow then + begin + if TargetObj is TEasyItem then + begin + TEasyItem( TargetObj).HitTestAt(ViewPt, ItemInfo); + if CheckBoxCustomizeText.Checked then + begin + Text := 'Hovering over' + #13+ #10 + 'Item #' + IntToStr(TargetObj.Index); + if ehtOnIcon in ItemInfo then + Text := Text + #13+ #10 + 'OnIcon'; + if ehtOnClickSelectBounds in ItemInfo then + Text := Text + #13+ #10 + 'OnClickSelectBound'; + if ehtOnDragSelectBounds in ItemInfo then + Text := Text + #13+ #10 + 'OnDragSelectBound'; + if ehtOnText in ItemInfo then + Text := Text + #13+ #10 + 'OnTextRect'; + if ehtOnEdit in ItemInfo then + Text := Text + #13+ #10 + 'OnEditRect'; + if ehtOnCheck in ItemInfo then + Text := Text + #13+ #10 + 'OnCheckRect'; + end else + Allow := ItemInfo <> [] + end else + if TargetObj is TEasyGroup then + begin + TEasyGroup(TargetObj).HitTestAt(ViewPt, GroupInfo); + if CheckBoxCustomizeText.Checked then + begin + Text := 'Hovering over' + #13+ #10 + 'Group #' + IntToStr(TargetObj.Index); + if egtOnBand in GroupInfo then + Text := Text + #13+ #10 + 'OnBand'; + if egtOnExpandButton in GroupInfo then + Text := Text + #13+ #10 + 'OnExpandButton'; + if egtOnIcon in GroupInfo then + Text := Text + #13+ #10 + 'OnIcon'; + if egtOnLabel in GroupInfo then + Text := Text + #13+ #10 + 'OnOnLabel'; + if egtOnText in GroupInfo then + Text := Text + #13+ #10 + 'OnOnText'; + if egtOnHeader in GroupInfo then + Text := Text + #13+ #10 + 'OnHeader'; + if egtOnFooter in GroupInfo then + Text := Text + #13+ #10 + 'OnFooter'; + if egtOnLeftMargin in GroupInfo then + Text := Text + #13+ #10 + 'OnLeftMargin'; + if egtOnRightMargin in GroupInfo then + Text := Text + #13+ #10 + 'OnRightMargin'; + end else + Allow := GroupInfo <> [] + end + end + end else + if HintType = ehtToolTip then + begin + end; + + // Only allow hints over Items if checked + if CheckBoxAllowOnItemsOnly.Checked then + Allow := TargetObj is TEasyItem +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/Image CustomDraw/ImageCustomDrawProject.dpr b/official/1.7.0/EasyListview/Demos/Image CustomDraw/ImageCustomDrawProject.dpr new file mode 100644 index 0000000..2f96fee --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Image CustomDraw/ImageCustomDrawProject.dpr @@ -0,0 +1,13 @@ +program ImageCustomDrawProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.dfm new file mode 100644 index 0000000..06d6e2f --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.dfm @@ -0,0 +1,8583 @@ +object Form1: TForm1 + Left = 192 + Top = 114 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnDestroy = FormDestroy + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object EasyListview1: TEasyListview + Left = 0 + Top = 41 + Width = 688 + Height = 405 + Align = alClient + BackGround.Enabled = True + BackGround.Image.Data = { + C6860000424DC68600000000000036080000280000005A0000005A0000000100 + 200000000000907E000000000000000000000001000000000000000000000101 + 0100020202000303030004040400050505000606060007070700080808000909 + 09000A0A0A000B0B0B000C0C0C000D0D0D000E0E0E000F0F0F00101010001111 + 1100121212001313130014141400151515001616160017171700181818001919 + 19001A1A1A001B1B1B001C1C1C001D1D1D001E1E1E001F1F1F00202020002121 + 2100222222002323230024242400252525002626260027272700282828002929 + 29002A2A2A002B2B2B002C2C2C002D2D2D002E2E2E002F2F2F00303030003131 + 3100323232003333330034343400353535003636360037373700383838003939 + 39003A3A3A003B3B3B003C3C3C003D3D3D003E3E3E003F3F3F00404040004141 + 4100424242004343430044444400454545004646460047474700484848004949 + 49004A4A4A004B4B4B004C4C4C004D4D4D004E4E4E004F4F4F00505050005151 + 5100525252005353530054545400555555005656560057575700585858005959 + 59005A5A5A005B5B5B005C5C5C005D5D5D005E5E5E005F5F5F00606060006161 + 6100626262006363630064646400656565006666660067676700686868006969 + 69006A6A6A006B6B6B006C6C6C006D6D6D006E6E6E006F6F6F00707070007171 + 7100727272007373730074747400757575007676760077777700787878007979 + 79007A7A7A007B7B7B007C7C7C007D7D7D007E7E7E007F7F7F00808080008181 + 8100828282008383830084848400858585008686860087878700888888008989 + 89008A8A8A008B8B8B008C8C8C008D8D8D008E8E8E008F8F8F00909090009191 + 9100929292009393930094949400959595009696960097979700989898009999 + 99009A9A9A009B9B9B009C9C9C009D9D9D009E9E9E009F9F9F00A0A0A000A1A1 + A100A2A2A200A3A3A300A4A4A400A5A5A500A6A6A600A7A7A700A8A8A800A9A9 + A900AAAAAA00ABABAB00ACACAC00ADADAD00AEAEAE00AFAFAF00B0B0B000B1B1 + B100B2B2B200B3B3B300B4B4B400B5B5B500B6B6B600B7B7B700B8B8B800B9B9 + B900BABABA00BBBBBB00BCBCBC00BDBDBD00BEBEBE00BFBFBF00C0C0C000C1C1 + C100C2C2C200C3C3C300C4C4C400C5C5C500C6C6C600C7C7C700C8C8C800C9C9 + C900CACACA00CBCBCB00CCCCCC00CDCDCD00CECECE00CFCFCF00D0D0D000D1D1 + D100D2D2D200D3D3D300D4D4D400D5D5D500D6D6D600D7D7D700D8D8D800D9D9 + D900DADADA00DBDBDB00DCDCDC00DDDDDD00DEDEDE00DFDFDF00E0E0E000E1E1 + E100E2E2E200E3E3E300E4E4E400E5E5E500E6E6E600E7E7E700E8E8E800E9E9 + E900EAEAEA00EBEBEB00ECECEC00EDEDED00EEEEEE00EFEFEF00F0F0F000F1F1 + F100F2F2F200F3F3F300F4F4F400F5F5F500F6F6F600F7F7F700F8F8F800F9F9 + F900FAFAFA00FBFBFB00FCFCFC00FDFDFD00FEFEFE00FFFFFF00EBEBEB00F3F3 + F300FCFCFC00FFFFFF00E7E7E700FFFFFF00FFFFFF00F7F7F700FFFFFF00EBEB + EB00FFFFFF00FFFFFF00FBFBFB00FFFFFF00F6F6F600FAFAFA00EAEAEA00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F5F5F500F6F6 + F600FFFFFF00FFFFFF00EFEFEF00F4F4F400FFFFFF00FFFFFF00FFFFFF00EEEE + EE00E1E1E100FFFFFF00F2F2F200E7E7E700E2E2E200FFFFFF00FFFFFF00E0E0 + E000F3F3F300E3E3E300FCFCFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1 + F100EDEDED00EBEBEB00DEDEDE00FFFFFF00F0F0F000FFFFFF00FFFFFF00FFFF + FF00FEFEFE00EFEFEF00FCFCFC00FFFFFF00FDFDFD00F0F0F000DDDDDD00F3F3 + F300F6F6F600ECECEC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00E8E8E800EBEBEB00FFFFFF00F6F6F600D4D4D400E3E3E300FFFFFF00FFFF + FF00ECECEC00EFEFEF00FFFFFF00FBFBFB00FDFDFD00FFFFFF00F2F2F200E9E9 + E900F5F5F500E7E7E700E3E3E300EDEDED00F4F4F400FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FEFEFE00E4E4E400E9E9E900F6F6F600FFFFFF00F9F9 + F900F1F1F100FFFFFF00F7F7F700FFFFFF00FFFFFF00F3F3F300E9E9E900FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FDFDFD00FFFF + FF00F8F8F800FFFFFF00FFFFFF00FAFAFA00FFFFFF00E5E5E500FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FCFCFC00FFFFFF00FFFFFF00FFFFFF00F4F4F400E4E4 + E400EAEAEA00FFFFFF00FFFFFF00FFFFFF00FCFCFC00FFFFFF00FFFFFF00E9E9 + E900F5F5F500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00EFEFEF00FFFFFF00FFFF + FF00FFFFFF00F0F0F000DEDEDE00EFEFEF00F3F3F300F2F2F200E6E6E600FFFF + FF00F6F6F600FFFFFF00FFFFFF00E9E9E900FFFFFF00FFFFFF00DBDBDB00FFFF + FF00FFFFFF00E5E5E500FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFEFEF00FDFDFD00F9F9F900FFFFFF00FFFFFF00FCFCFC00FFFF + FF00F7F7F700EEEEEE00F1F1F100FFFFFF00FFFFFF00FCFCFC00EFEFEF00FCFC + FC00F2F2F200F5F5F500F4F4F400E5E5E500F9F9F900FFFFFF00FFFFFF00FFFF + FF00F2F2F200F8F8F800FEFEFE00F6F6F600FFFFFF00FFFFFF00E8E8E800FFFF + FF00FFFFFF00FFFFFF00F1F1F100F0F0F000FFFFFF00FFFFFF00F6F6F600FFFF + FF00FFFFFF00FAFAFA00FFFFFF00F8F8F800FFFFFF00F1F1F100FFFFFF00E9E9 + E900FFFFFF00FEFEFE00FFFFFF00F9F9F900FFFFFF00F7F7F700F7F7F700EAEA + EA00F8F8F800F8F8F800FFFFFF00EFEFEF00F7F7F700FFFFFF00FFFFFF00F8F8 + F800F7F7F700FBFBFB00F9F9F900FFFFFF00FFFFFF00E0E0E000EEEEEE00FFFF + FF00FCFCFC00ECECEC00FFFFFF00FFFFFF00FBFBFB00F7F7F700FFFFFF00F1F1 + F100DBDBDB00E5E5E500F2F2F200FFFFFF00E6E6E600FFFFFF00E7E7E700FFFF + FF00FFFFFF00EEEEEE00FFFFFF00EDEDED00FFFFFF00F0F0F000FFFFFF00FFFF + FF00FFFFFF00FEFEFE00FEFEFE00F2F2F200FFFFFF00F6F6F600FAFAFA00FAFA + FA00FFFFFF00FFFFFF00FEFEFE00FFFFFF00F4F4F400FAFAFA00F3F3F300F5F5 + F500F0F0F000FCFCFC00FFFFFF00EAEAEA00F5F5F500FFFFFF00FFFFFF00F4F4 + F400FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9E900FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700ECECEC00E9E9 + E900EFEFEF00FFFFFF00F2F2F200FFFFFF00E9E9E900FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FAFAFA00EDEDED00FAFAFA00FEFEFE00FDFDFD00F3F3F300E4E4 + E400FBFBFB00FFFFFF00F3F3F300FDFDFD00E1E1E100EFEFEF00FFFFFF00F0F0 + F000F9F9F900FFFFFF00F1F1F100FFFFFF00FFFFFF00E8E8E800F3F3F300EEEE + EE00F0F0F000EAEAEA00E8E8E800FFFFFF00FFFFFF00FFFFFF00F0F0F000FBFB + FB00F7F7F700FCFCFC00FDFDFD00FFFFFF00FFFFFF00EDEDED00FAFAFA00ECEC + EC00FFFFFF00FBFBFB00F0F0F000F1F1F100FFFFFF00FFFFFF00FFFFFF00F8F8 + F800FFFFFF00FFFFFF00F5F5F500F3F3F300FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F1F1F100F2F2F200FFFFFF00F0F0F000FFFFFF00EEEEEE00FFFF + FF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FBFBFB00F3F3F300F2F2F200FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00FAFAFA00FEFEFE00FBFB + FB00E8E8E800FFFFFF00DCDCDC00FDFDFD00FFFFFF00FCFCFC00ECECEC00F8F8 + F800FFFFFF00FFFFFF00FFFFFF00F7F7F700F8F8F800FFFFFF00F6F6F600F6F6 + F600F3F3F300F2F2F200FBFBFB00ECECEC00FBFBFB00FFFFFF00E7E7E700EDED + ED00FFFFFF00FFFFFF00FAFAFA00F7F7F700EBEBEB00FDFDFD00FFFFFF00FFFF + FF00FFFFFF00FCFCFC00FFFFFF00E9E9E900FFFFFF00FFFFFF00FDFDFD00FFFF + FF00FFFFFF00F3F3F300FFFFFF00FFFFFF00E2E2E200FFFFFF00FEFEFE00FFFF + FF00F6F6F600EDEDED00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6F600F1F1 + F100FFFFFF00FAFAFA00FFFFFF00FFFFFF00EEEEEE00EFEFEF00FAFAFA00FEFE + FE00FFFFFF00F1F1F100EEEEEE00F3F3F300E6E6E600F9F9F900EFEFEF00F6F6 + F600FCFCFC00F8F8F800EDEDED00FFFFFF00FAFAFA00FBFBFB00FFFFFF00FBFB + FB00FFFFFF00FFFFFF00F6F6F600FFFFFF00FFFFFF00EDEDED00FFFFFF00DEDE + DE00F9F9F900E7E7E700FFFFFF00E9E9E900E8E8E800F3F3F300FBFBFB00FFFF + FF00FEFEFE00E9E9E900F8F8F800FFFFFF00FEFEFE00F6F6F600FFFFFF00EDED + ED00E8E8E800E9E9E900F6F6F600FFFFFF00FFFFFF00FCFCFC00FFFFFF00FFFF + FF00EFEFEF00DFDFDF00FBFBFB00FFFFFF00FFFFFF00F9F9F900FEFEFE00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F300FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0F0F000FFFFFF00F3F3F300FBFB + FB00FBFBFB00F4F4F400FAFAFA00FDFDFD00FBFBFB00E9E9E900F4F4F400FFFF + FF00FFFFFF00F6F6F600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F9F9 + F900E6E6E600F3F3F300FFFFFF00F6F6F600F0F0F000F7F7F700F5F5F500FFFF + FF00FAFAFA00F7F7F700FFFFFF00F2F2F200FFFFFF00FFFFFF00E3E3E300FBFB + FB00F2F2F200FFFFFF00FFFFFF00F6F6F600FFFFFF00F3F3F300F1F1F100F5F5 + F500E6E6E600F6F6F600FEFEFE00FDFDFD00F1F1F100F3F3F300E7E7E700FFFF + FF00FDFDFD00EFEFEF00FAFAFA00F2F2F200F8F8F800FFFFFF00FEFEFE00F6F6 + F600FFFFFF00FEFEFE00F9F9F900EDEDED00E3E3E300ECECEC00FAFAFA00FFFF + FF00FFFFFF00FFFFFF00FAFAFA00F1F1F100F5F5F500EDEDED00FEFEFE00FFFF + FF00EDEDED00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F5F5F500FFFFFF00FFFF + FF00F9F9F900EDEDED00FFFFFF00FEFEFE00FAFAFA00FFFFFF00FEFEFE00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F6F6F600F5F5F500F8F8F800FFFFFF00FAFA + FA00ECECEC00DBDBDB00F0F0F000EFEFEF00F6F6F600FAFAFA00EEEEEE00F3F3 + F300F5F5F500FCFCFC00FBFBFB00F1F1F100E9E9E900E6E6E600EDEDED00FFFF + FF00FFFFFF00FFFFFF00F6F6F600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00E6E6E600EBEBEB00F4F4F400FFFFFF00F9F9F900FCFCFC00FFFFFF00E9E9 + E900F9F9F900EEEEEE00EEEEEE00FFFFFF00FEFEFE00F7F7F700E4E4E400FFFF + FF00F3F3F300FFFFFF00FFFFFF00EDEDED00E9E9E900FFFFFF00FEFEFE00FFFF + FF00F9F9F900FAFAFA00FFFFFF00FEFEFE00F8F8F800EBEBEB00E9E9E900F2F2 + F200F6F6F600FFFFFF00F4F4F400F9F9F900FFFFFF00FFFFFF00FCFCFC00F9F9 + F900FFFFFF00F6F6F600F9F9F900EDEDED00FCFCFC00FFFFFF00EDEDED00DDDD + DD00ECECEC00EFEFEF00FFFFFF00D7D7D700FFFFFF00F7F7F700F4F4F400FFFF + FF00F2F2F200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECECEC00F9F9 + F900EAEAEA00FFFFFF00FFFFFF00F2F2F200FCFCFC00F7F7F700E8E8E800FBFB + FB00FBFBFB00FFFFFF00F4F4F400F7F7F700FFFFFF00FEFEFE00F6F6F600F2F2 + F200F0F0F000EFEFEF00FFFFFF00FFFFFF00ECECEC00FBFBFB00FFFFFF00F4F4 + F400F7F7F700FFFFFF00F9F9F900F6F6F600FFFFFF00FFFFFF00F8F8F800FFFF + FF00FFFFFF00FFFFFF00EEEEEE00FFFFFF00E4E4E400EDEDED00FFFFFF00E4E4 + E400E7E7E700FFFFFF00F5F5F500FFFFFF00FFFFFF00FFFFFF00FBFBFB00ECEC + EC00E1E1E100F6F6F600F2F2F200FFFFFF00FEFEFE00FFFFFF00FFFFFF00F8F8 + F800FBFBFB00F5F5F500EBEBEB00F2F2F200F2F2F200FDFDFD00FFFFFF00FFFF + FF00FFFFFF00F8F8F800F1F1F100E7E7E700FFFFFF00FBFBFB00FFFFFF00FDFD + FD00EAEAEA00F7F7F700FCFCFC00F5F5F500EFEFEF00D2D2D200FFFFFF00FFFF + FF00F4F4F400FCFCFC00FDFDFD00ECECEC00FFFFFF00FFFFFF00F4F4F400FFFF + FF00F8F8F800FFFFFF00FEFEFE00FFFFFF00FDFDFD00FEFEFE00E9E9E900FAFA + FA00FFFFFF00FFFFFF00F8F8F800F2F2F200FFFFFF00F8F8F800ECECEC00ECEC + EC00FCFCFC00FEFEFE00F8F8F800FFFFFF00FAFAFA00F2F2F200FFFFFF00EDED + ED00FFFFFF00F8F8F800ECECEC00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00D6D6D600FEFE + FE00FFFFFF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1F100E8E8 + E800F5F5F500F3F3F300D4D4D400F9F9F900FAFAFA00F5F5F500F2F2F200FFFF + FF00EBEBEB00E3E3E300E8E8E800E9E9E900F9F9F900E1E1E100EAEAEA00FFFF + FF00FFFFFF00F6F6F600FFFFFF00F0F0F000FBFBFB00F5F5F500FFFFFF00FFFF + FF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00F7F7F700F4F4F400FCFCFC00FFFF + FF00FDFDFD00FFFFFF00FFFFFF00F9F9F900FFFFFF00D7D7D700E5E5E500FFFF + FF00FFFFFF00F9F9F900FFFFFF00F4F4F400FFFFFF00FFFFFF00FFFFFF00F9F9 + F900EBEBEB00FFFFFF00F7F7F700FFFFFF00FFFFFF00EAEAEA00F5F5F500FFFF + FF00FEFEFE00FBFBFB00FEFEFE00FFFFFF00FEFEFE00FFFFFF00F6F6F600E7E7 + E700FEFEFE00FFFFFF00F5F5F500DADADA00E0E0E000FFFFFF00FCFCFC00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0F0F000ECECEC00F0F0 + F000FFFFFF00F4F4F400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F3F3F300FFFFFF00FDFDFD00F2F2F200FAFAFA00E4E4E400FFFF + FF00F6F6F600F1F1F100F7F7F700DDDDDD00E8E8E800E5E5E500F6F6F600FBFB + FB00FEFEFE00E9E9E900F7F7F700EFEFEF00F8F8F800FFFFFF00F0F0F000E8E8 + E800FFFFFF00FFFFFF00FFFFFF00FFFFFF00EAEAEA00FFFFFF00FAFAFA00FFFF + FF00FFFFFF00DFDFDF00F0F0F000E3E3E300FFFFFF00FFFFFF00FFFFFF00FCFC + FC00FFFFFF00FFFFFF00F2F2F200FFFFFF00E6E6E600FFFFFF00F4F4F400FFFF + FF00F8F8F800FFFFFF00FBFBFB00F1F1F100FFFFFF00FFFFFF00FFFFFF00F3F3 + F300FDFDFD00FFFFFF00FFFFFF00FFFFFF00F1F1F100F5F5F500FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8F800F3F3F300E3E3E300EBEB + EB00FFFFFF00F4F4F400FFFFFF00EFEFEF00FFFFFF00FFFFFF00FDFDFD00FDFD + FD00E9E9E900F2F2F200ECECEC00FFFFFF00F1F1F100FFFFFF00F4F4F400F8F8 + F800FFFFFF00FEFEFE00E1E1E100FFFFFF00ECECEC00FFFFFF00F8F8F800E5E5 + E500FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6F600E5E5E500F7F7F700EEEE + EE00ECECEC00EEEEEE00F9F9F900FFFFFF00FFFFFF00F0F0F000FFFFFF00EFEF + EF00ECECEC00FDFDFD00FFFFFF00F9F9F900F3F3F300F7F7F700FFFFFF00EDED + ED00FFFFFF00FEFEFE00FFFFFF00E1E1E100FFFFFF00F9F9F900FFFFFF00DADA + DA00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FDFDFD00EBEBEB00FFFF + FF00FFFFFF00FAFAFA00E1E1E100FFFFFF00EEEEEE00DADADA00E9E9E900FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00E2E2E200F7F7F700F5F5 + F500FFFFFF00FDFDFD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00FFFF + FF00FFFFFF00FFFFFF00F9F9F900E1E1E100FAFAFA00F8F8F800FFFFFF00FAFA + FA00F8F8F800FDFDFD00E4E4E400E4E4E400FFFFFF00E1E1E100FEFEFE00E2E2 + E200F1F1F100E5E5E500EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEE + EE00F0F0F000FFFFFF00F8F8F800E9E9E900FFFFFF00F4F4F400E4E4E400FDFD + FD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00E5E5E500EBEBEB00EDED + ED00F2F2F200FFFFFF00FBFBFB00FFFFFF00F1F1F100FFFFFF00FFFFFF00EBEB + EB00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFB + FB00FFFFFF00FFFFFF00F3F3F300FFFFFF00E4E4E400FFFFFF00DEDEDE00FAFA + FA00FFFFFF00FFFFFF00FFFFFF00FEFEFE00EEEEEE00FFFFFF00FFFFFF00FFFF + FF00FDFDFD00F6F6F600FFFFFF00FFFFFF00F9F9F900F7F7F700FEFEFE00EFEF + EF00FAFAFA00FFFFFF00F4F4F400FAFAFA00FFFFFF00EAEAEA00EAEAEA00FFFF + FF00FFFFFF00FFFFFF00F2F2F200FFFFFF00F9F9F900FFFFFF00FFFFFF00FFFF + FF00E6E6E600FFFFFF00E5E5E500EBEBEB00FFFFFF00E9E9E900ECECEC00FFFF + FF00E4E4E400F8F8F800FFFFFF00FFFFFF00FFFFFF00ECECEC00E1E1E100E2E2 + E200E4E4E400F6F6F600FBFBFB00FFFFFF00FFFFFF00FAFAFA00F2F2F200FAFA + FA00E7E7E700E6E6E600EEEEEE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6 + F600DBDBDB00F1F1F100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFBFB00FFFF + FF00FFFFFF00FFFFFF00EDEDED00E5E5E500FFFFFF00FFFFFF00F1F1F100FFFF + FF00FFFFFF00FFFFFF00FFFFFF00ECECEC00FFFFFF00F9F9F900FFFFFF00EDED + ED00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00E7E7E700FFFFFF00FDFD + FD00F4F4F400F8F8F800DDDDDD00EEEEEE00FFFFFF00FBFBFB00FAFAFA00FFFF + FF00F1F1F100F7F7F700FAFAFA00EDEDED00FFFFFF00F1F1F100F9F9F900FFFF + FF00FFFFFF00F1F1F100DADADA00FDFDFD00F7F7F700F8F8F800FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FDFDFD00FAFAFA00FFFFFF00FFFFFF00FFFFFF00F3F3 + F300FFFFFF00E0E0E000FFFFFF00F7F7F700FBFBFB00FFFFFF00F7F7F700FFFF + FF00FFFFFF00EAEAEA00F8F8F800FCFCFC00FFFFFF00F8F8F800E5E5E500FBFB + FB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6F600F6F6F600FFFFFF00FFFF + FF00EFEFEF00EEEEEE00FFFFFF00FFFFFF00F3F3F300E8E8E800F3F3F300F0F0 + F000DDDDDD00E3E3E300EFEFEF00E5E5E500D8D8D800F5F5F500FCFCFC00FFFF + FF00EDEDED00E3E3E300FFFFFF00FFFFFF00EBEBEB00F8F8F800FFFFFF00FFFF + FF00FFFFFF00E4E4E400F8F8F800FFFFFF00F5F5F500F3F3F300FFFFFF00FDFD + FD00FFFFFF00F9F9F900EFEFEF00DEDEDE00F2F2F200FFFFFF00F3F3F300E1E1 + E100E9E9E900F8F8F800FFFFFF00F6F6F600ECECEC00FFFFFF00FBFBFB00F5F5 + F500FFFFFF00FCFCFC00EAEAEA00FFFFFF00EBEBEB00FFFFFF00EFEFEF00ECEC + EC00F0F0F000FEFEFE00FFFFFF00FFFFFF00FFFFFF00FDFDFD00FBFBFB00FDFD + FD00FBFBFB00FFFFFF00FFFFFF00E7E7E700F0F0F000F3F3F300FFFFFF00F6F6 + F600FFFFFF00F2F2F200FBFBFB00F7F7F700FFFFFF00F6F6F600FFFFFF00F0F0 + F000FFFFFF00FFFFFF00EEEEEE00E2E2E200FFFFFF00E9E9E900EAEAEA00FFFF + FF00FFFFFF00F5F5F500FAFAFA00FFFFFF00FCFCFC00F9F9F900FCFCFC00F3F3 + F300FFFFFF00ECECEC00FAFAFA00FFFFFF00FFFFFF00F8F8F800F4F4F400FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F2F2F200FFFFFF00E8E8 + E800F7F7F700E8E8E800FFFFFF00DFDFDF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F5F5F500FFFFFF00FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00F6F6 + F600F7F7F700F7F7F700F5F5F500FDFDFD00F9F9F900FFFFFF00FBFBFB00FDFD + FD00FFFFFF00F4F4F400F7F7F700FFFFFF00FBFBFB00F7F7F700FFFFFF00FEFE + FE00EFEFEF00FFFFFF00F8F8F800F0F0F000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00E0E0E000FFFFFF00DFDFDF00F9F9F900FFFFFF00FFFFFF00ECECEC00FEFE + FE00EFEFEF00FFFFFF00FFFFFF00F2F2F200D7D7D700EEEEEE00FFFFFF00FEFE + FE00FFFFFF00F8F8F800F3F3F300FFFFFF00F0F0F000EBEBEB00E7E7E700F2F2 + F200F2F2F200E6E6E600F7F7F700FFFFFF00FFFFFF00F9F9F900EBEBEB00FDFD + FD00FFFFFF00E5E5E500F8F8F800F0F0F000F0F0F000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E8E8E800FFFFFF00FFFF + FF00F4F4F400FFFFFF00F6F6F600FFFFFF00FFFFFF00FFFFFF00FDFDFD00F6F6 + F600FFFFFF00EBEBEB00FFFFFF00FFFFFF00EBEBEB00F0F0F000E3E3E300EFEF + EF00F1F1F100DFDFDF00FEFEFE00FAFAFA00FBFBFB00F4F4F400F2F2F200EDED + ED00E4E4E400F7F7F700FFFFFF00FFFFFF00FCFCFC00F9F9F900E4E4E400F5F5 + F500FFFFFF00EDEDED00FBFBFB00FAFAFA00F0F0F000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F4F4F400FBFBFB00F5F5F500E1E1E100F1F1F100F9F9F900EEEE + EE00F7F7F700F6F6F600FFFFFF00E6E6E600FFFFFF00FFFFFF00F6F6F600FFFF + FF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FBFBFB00FBFBFB00F0F0F000EEEEEE00F1F1F100FFFFFF00EEEEEE00F7F7 + F700F2F2F200F9F9F900FFFFFF00F9F9F900FFFFFF00FDFDFD00FFFFFF00FAFA + FA00FBFBFB00FFFFFF00FFFFFF00FFFFFF00F2F2F200FFFFFF00FEFEFE00F0F0 + F000FFFFFF00FFFFFF00E5E5E500FFFFFF00FFFFFF00FFFFFF00F8F8F800FFFF + FF00FDFDFD00EAEAEA00EDEDED00F4F4F400F4F4F400F6F6F600E7E7E700DADA + DA00F2F2F200FDFDFD00F8F8F800ECECEC00FFFFFF00F5F5F500F4F4F400FCFC + FC00FFFFFF00FBFBFB00FBFBFB00FEFEFE00FDFDFD00FFFFFF00F2F2F200FCFC + FC00F2F2F200F8F8F800F9F9F900FFFFFF00F9F9F900EEEEEE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F8F8F800EBEBEB00FFFFFF00E6E6E600FDFD + FD00FCFCFC00EBEBEB00E5E5E500FFFFFF00FFFFFF00EFEFEF00FDFDFD00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700FFFFFF00FBFBFB00F8F8 + F800F2F2F200FFFFFF00FAFAFA00E4E4E400F6F6F600FFFFFF00FCFCFC00FFFF + FF00F8F8F800EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEF + EF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFFFF00F5F5F500E7E7E700FCFC + FC00E9E9E900FCFCFC00F4F4F400F1F1F100FEFEFE00FFFFFF00FFFFFF00EEEE + EE00E4E4E400F4F4F400FFFFFF00F3F3F300EFEFEF00FFFFFF00EFEFEF00FDFD + FD00FCFCFC00EBEBEB00FFFFFF00F7F7F700FBFBFB00FFFFFF00FFFFFF00FDFD + FD00F0F0F000F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFD00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FBFBFB00E1E1E100FCFCFC00FFFFFF00F9F9 + F900FFFFFF00FFFFFF00F4F4F400F8F8F800FFFFFF00FBFBFB00FFFFFF00FBFB + FB00FBFBFB00F3F3F300FCFCFC00FFFFFF00FAFAFA00F1F1F100FFFFFF00EBEB + EB00FBFBFB00FFFFFF00F1F1F100F6F6F600FFFFFF00F2F2F200FFFFFF00FFFF + FF00FFFFFF00F4F4F400DCDCDC00F0F0F000F1F1F100EAEAEA00F7F7F700FDFD + FD00FFFFFF00FFFFFF00FDFDFD00FCFCFC00F2F2F200F7F7F700F7F7F700FFFF + FF00F3F3F300FFFFFF00FFFFFF00FEFEFE00F5F5F500EDEDED00FFFFFF00F4F4 + F400F4F4F400FEFEFE00EBEBEB00F1F1F100F2F2F200F2F2F200FFFFFF00FFFF + FF00EBEBEB00F7F7F700FAFAFA00F3F3F300FFFFFF00F8F8F800FFFFFF00FFFF + FF00F2F2F200ECECEC00EFEFEF00FAFAFA00EDEDED00ECECEC00F5F5F500FDFD + FD00F2F2F200FFFFFF00EDEDED00EAEAEA00F1F1F100F3F3F300FFFFFF00F0F0 + F000F6F6F600FFFFFF00FFFFFF00F3F3F300FFFFFF00F0F0F000F3F3F300F6F6 + F600FFFFFF00FDFDFD00FAFAFA00FFFFFF00F9F9F900FCFCFC00FBFBFB00EFEF + EF00FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00F5F5F500FFFFFF00DDDD + DD00FFFFFF00F5F5F500EEEEEE00FAFAFA00EFEFEF00FBFBFB00FFFFFF00F4F4 + F400F8F8F800FFFFFF00FAFAFA00FAFAFA00F4F4F400ECECEC00F8F8F800FBFB + FB00F6F6F600F7F7F700FFFFFF00FFFFFF00FFFFFF00F3F3F300F2F2F200FCFC + FC00F4F4F400FFFFFF00FFFFFF00EDEDED00FFFFFF00F6F6F600F3F3F300E5E5 + E500FCFCFC00F8F8F800F0F0F000FAFAFA00FFFFFF00FFFFFF00FFFFFF00F4F4 + F400FFFFFF00FCFCFC00FCFCFC00FEFEFE00FFFFFF00FFFFFF00F1F1F100FFFF + FF00F3F3F300FFFFFF00F6F6F600D8D8D800F9F9F900E9E9E900F4F4F400FFFF + FF00FCFCFC00F5F5F500F2F2F200FFFFFF00FCFCFC00FBFBFB00FBFBFB00F1F1 + F100E6E6E600F6F6F600E9E9E900F7F7F700FFFFFF00EDEDED00E7E7E700FCFC + FC00FFFFFF00E2E2E200F0F0F000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00ECECEC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1 + F100F2F2F200FFFFFF00FFFFFF00F6F6F600FEFEFE00E2E2E200FFFFFF00FFFF + FF00FFFFFF00F7F7F700F2F2F200F9F9F900F9F9F900FDFDFD00F7F7F700FFFF + FF00FFFFFF00FFFFFF00FEFEFE00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00ECECEC00E4E4E400FFFFFF00D5D5D500FAFAFA00E6E6 + E600FDFDFD00FFFFFF00ECECEC00FFFFFF00DFDFDF00EEEEEE00FFFFFF00FFFF + FF00FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FCFCFC00FFFFFF00FFFF + FF00E8E8E800FFFFFF00FFFFFF00FFFFFF00EBEBEB00FFFFFF00FFFFFF00FFFF + FF00FDFDFD00EBEBEB00F7F7F700FDFDFD00E6E6E600E5E5E500F7F7F700FFFF + FF00F1F1F100E4E4E400E1E1E100F2F2F200FEFEFE00FFFFFF00FFFFFF00FFFF + FF00F1F1F100EEEEEE00F6F6F600D4D4D400FDFDFD00EBEBEB00FFFFFF00FEFE + FE00FFFFFF00FFFFFF00EBEBEB00FFFFFF00FFFFFF00FFFFFF00F8F8F800E7E7 + E700DEDEDE00FFFFFF00E0E0E000FBFBFB00FFFFFF00FFFFFF00FCFCFC00FBFB + FB00F8F8F800FFFFFF00EEEEEE00FFFFFF00FFFFFF00EFEFEF00E4E4E400F9F9 + F900FFFFFF00FAFAFA00ECECEC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F1F1F100EAEAEA00F0F0F000F2F2F200FBFBFB00FDFDFD00FFFFFF00FFFF + FF00E8E8E800E2E2E200F4F4F400FCFCFC00F9F9F900F2F2F200FCFCFC00FFFF + FF00FFFFFF00DCDCDC00FFFFFF00F7F7F700F2F2F200FFFFFF00F1F1F100FFFF + FF00F8F8F800FFFFFF00FDFDFD00E9E9E900FFFFFF00FFFFFF00FEFEFE00F6F6 + F600E7E7E700FDFDFD00FDFDFD00EAEAEA00FAFAFA00F7F7F700FFFFFF00EEEE + EE00E9E9E900FAFAFA00FFFFFF00FEFEFE00EEEEEE00F2F2F200FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00F9F9F900E8E8E800F9F9 + F900FFFFFF00FFFFFF00E4E4E400FFFFFF00FFFFFF00FFFFFF00FDFDFD00FAFA + FA00FFFFFF00FCFCFC00DBDBDB00EEEEEE00F7F7F700FFFFFF00FFFFFF00ECEC + EC00F6F6F600FFFFFF00F7F7F700FFFFFF00FDFDFD00F9F9F900FBFBFB00E7E7 + E700FFFFFF00F8F8F800ECECEC00FAFAFA00F1F1F100E3E3E300FFFFFF00FFFF + FF00E6E6E600EFEFEF00FAFAFA00EBEBEB00FAFAFA00FFFFFF00F0F0F000FDFD + FD00FCFCFC00FFFFFF00FFFFFF00F7F7F700F1F1F100FFFFFF00F7F7F700E9E9 + E900FFFFFF00FFFFFF00FFFFFF00F5F5F500F6F6F600E7E7E700FBFBFB00EEEE + EE00FFFFFF00FFFFFF00E8E8E800FFFFFF00FFFFFF00FFFFFF00F3F3F300EBEB + EB00FFFFFF00FFFFFF00FAFAFA00FFFFFF00FBFBFB00D7D7D700E8E8E800FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F9F9F900FBFBFB00F7F7 + F700E0E0E000F6F6F600F1F1F100FBFBFB00FFFFFF00FFFFFF00DEDEDE00EDED + ED00F1F1F100FFFFFF00FFFFFF00FFFFFF00E9E9E900FFFFFF00FFFFFF00E4E4 + E400FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E5E5E500F7F7F700FFFFFF00EEEEEE00FFFFFF00EAEA + EA00FFFFFF00F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00FDFDFD00FFFFFF00FCFCFC00FFFFFF00F6F6F600E6E6E600F0F0F000EFEF + EF00F5F5F500DEDEDE00F1F1F100FFFFFF00F8F8F800FFFFFF00EDEDED00FFFF + FF00F5F5F500FFFFFF00FFFFFF00FFFFFF00E1E1E100FFFFFF00FFFFFF00FFFF + FF00FEFEFE00FFFFFF00FFFFFF00F8F8F800E2E2E200DFDFDF00F0F0F000F3F3 + F300FFFFFF00FFFFFF00FFFFFF00FEFEFE00E3E3E300F5F5F500FFFFFF00FFFF + FF00F8F8F800EFEFEF00FFFFFF00FFFFFF00F5F5F500F4F4F400FCFCFC00FBFB + FB00FFFFFF00F7F7F700F9F9F900FFFFFF00F3F3F300FEFEFE00FFFFFF00EAEA + EA00D7D7D700FAFAFA00FFFFFF00FFFFFF00FFFFFF00F5F5F500FFFFFF00EDED + ED00FFFFFF00FFFFFF00FFFFFF00EDEDED00FEFEFE00EAEAEA00E4E4E400F6F6 + F600FFFFFF00FFFFFF00F3F3F300F0F0F000FFFFFF00E9E9E900FFFFFF00FAFA + FA00D6D6D600F7F7F700FFFFFF00FFFFFF00F9F9F900E7E7E700FFFFFF00F4F4 + F400EDEDED00F7F7F700F1F1F100FFFFFF00FFFFFF00FFFFFF00F6F6F600FAFA + FA00FFFFFF00F2F2F200E7E7E700FFFFFF00F3F3F300E9E9E900F4F4F400FFFF + FF00FFFFFF00FFFFFF00DEDEDE00F2F2F200FFFFFF00FFFFFF00EFEFEF00FFFF + FF00EEEEEE00FFFFFF00FFFFFF00DBDBDB00FFFFFF00FFFFFF00D8D8D800E9E9 + E900FFFFFF00FFFFFF00FFFFFF00E4E4E400FAFAFA00FFFFFF00F1F1F100FCFC + FC00E8E8E800FFFFFF00FFFFFF00FDFDFD00F5F5F500F6F6F600FFFFFF00F2F2 + F200DCDCDC00F9F9F900FFFFFF00F7F7F700F1F1F100FDFDFD00FFFFFF00FFFF + FF00E0E0E000F6F6F600FFFFFF00FFFFFF00F0F0F000FFFFFF00E2E2E200FDFD + FD00F5F5F500FFFFFF00E3E3E300FFFFFF00FFFFFF00E6E6E600F4F4F400E9E9 + E900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EDEDED00E7E7 + E700F9F9F900FFFFFF00FFFFFF00FFFFFF00FBFBFB00EFEFEF00FFFFFF00F3F3 + F300F2F2F200FFFFFF00FDFDFD00DFDFDF00ECECEC00FFFFFF00FDFDFD00FEFE + FE00FFFFFF00FBFBFB00F4F4F400FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7E7 + E700FFFFFF00E4E4E400E1E1E100FFFFFF00FFFFFF00F6F6F600F2F2F200FFFF + FF00FFFFFF00FFFFFF00EDEDED00FFFFFF00EFEFEF00FFFFFF00F5F5F500E3E3 + E300FFFFFF00FFFFFF00FBFBFB00F9F9F900FFFFFF00FFFFFF00E7E7E700F7F7 + F700FFFFFF00FFFFFF00FDFDFD00E1E1E100EBEBEB00FFFFFF00F8F8F800F3F3 + F300FCFCFC00F5F5F500FCFCFC00FFFFFF00F7F7F700F3F3F300F0F0F000EBEB + EB00FCFCFC00FFFFFF00FFFFFF00FFFFFF00EAEAEA00FFFFFF00F6F6F600FFFF + FF00F4F4F400FDFDFD00F5F5F500FFFFFF00FFFFFF00EDEDED00FFFFFF00FFFF + FF00FFFFFF00FCFCFC00E2E2E200E9E9E900FFFFFF00E6E6E600F2F2F200F0F0 + F000FFFFFF00F3F3F300F4F4F400F4F4F400FEFEFE00FFFFFF00F4F4F400EFEF + EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F5F5F500F5F5 + F500EFEFEF00EDEDED00FFFFFF00FFFFFF00EDEDED00F8F8F800FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EAEAEA00EAEAEA00EAEAEA00FFFF + FF00FFFFFF00EAEAEA00E6E6E600FFFFFF00EDEDED00FEFEFE00FFFFFF00FCFC + FC00FFFFFF00FFFFFF00FFFFFF00F8F8F800FFFFFF00E6E6E600EAEAEA00FFFF + FF00F9F9F900EEEEEE00FFFFFF00FFFFFF00FCFCFC00E6E6E600F6F6F600FFFF + FF00FDFDFD00F5F5F500ECECEC00F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F2F2F200E1E1E100E1E1E100FDFDFD00FFFFFF00F8F8F800FFFF + FF00FFFFFF00FFFFFF00F7F7F700E4E4E400FCFCFC00FFFFFF00FFFFFF00EEEE + EE00FFFFFF00F5F5F500FFFFFF00FFFFFF00F3F3F300FEFEFE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FCFCFC00F6F6F600F9F9F900FBFBFB00FFFFFF00FFFF + FF00FFFFFF00FAFAFA00F3F3F300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFD + FD00EFEFEF00FBFBFB00FAFAFA00F5F5F500F8F8F800EDEDED00F9F9F900FFFF + FF00F7F7F700F5F5F500FFFFFF00FFFFFF00DDDDDD00E7E7E700FFFFFF00FFFF + FF00FFFFFF00E9E9E900D8D8D800FAFAFA00FFFFFF00F0F0F000FFFFFF00F5F5 + F500E7E7E700EEEEEE00EBEBEB00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFF + FF00F9F9F900FDFDFD00D6D6D600EEEEEE00EFEFEF00FDFDFD00F9F9F900FFFF + FF00FCFCFC00FEFEFE00E1E1E100EBEBEB00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00F7F7F700FFFFFF00FFFFFF00FFFFFF00F8F8F800E7E7E700FBFBFB00FFFF + FF00F9F9F900FFFFFF00FFFFFF00FFFFFF00E1E1E100FFFFFF00FAFAFA00FFFF + FF00F7F7F700FFFFFF00EEEEEE00EAEAEA00F4F4F400FFFFFF00E9E9E900FFFF + FF00FFFFFF00F1F1F100FFFFFF00FFFFFF00ECECEC00FDFDFD00EEEEEE00F4F4 + F400F9F9F900E4E4E400F6F6F600FFFFFF00FBFBFB00FFFFFF00FFFFFF00FFFF + FF00FEFEFE00FAFAFA00F6F6F600FFFFFF00FFFFFF00F9F9F900ECECEC00FDFD + FD00FFFFFF00EEEEEE00E6E6E600E7E7E700FEFEFE00FFFFFF00F1F1F100EAEA + EA00FDFDFD00E8E8E800F5F5F500FEFEFE00FFFFFF00F5F5F500F6F6F600FFFF + FF00FFFFFF00F5F5F500FFFFFF00F5F5F500F9F9F900EBEBEB00FFFFFF00FFFF + FF00FFFFFF00ECECEC00FFFFFF00FFFFFF00FEFEFE00FFFFFF00FAFAFA00F1F1 + F100EBEBEB00ECECEC00EAEAEA00FFFFFF00FCFCFC00ECECEC00F3F3F300FFFF + FF00FBFBFB00E7E7E700E2E2E200F2F2F200FFFFFF00FFFFFF00FFFFFF00F0F0 + F000FDFDFD00FFFFFF00FFFFFF00FFFFFF00F4F4F400EEEEEE00FFFFFF00FFFF + FF00F9F9F900FFFFFF00DCDCDC00FFFFFF00EFEFEF00FAFAFA00FAFAFA00FFFF + FF00FFFFFF00FEFEFE00F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFFFF00E8E8 + E800FFFFFF00FFFFFF00FFFFFF00F4F4F400F0F0F000FDFDFD00FFFFFF00FFFF + FF00F9F9F900FFFFFF00FFFFFF00FFFFFF00FDFDFD00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFEFEF00DDDDDD00F8F8F800FFFFFF00F4F4F400FCFCFC00FFFF + FF00FFFFFF00FFFFFF00E1E1E100F7F7F700FDFDFD00E8E8E800F0F0F000FFFF + FF00EAEAEA00FFFFFF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00F3F3F300E8E8 + E800FFFFFF00FFFFFF00FFFFFF00E4E4E400FFFFFF00FEFEFE00F8F8F800F7F7 + F700FFFFFF00FFFFFF00FBFBFB00E8E8E800F3F3F300F3F3F300F8F8F800F9F9 + F900F8F8F800FFFFFF00FFFFFF00FFFFFF00F8F8F800F1F1F100FFFFFF00FEFE + FE00F5F5F500FFFFFF00FFFFFF00FFFFFF00FBFBFB00FEFEFE00F3F3F300FFFF + FF00FFFFFF00FEFEFE00FFFFFF00F7F7F700F3F3F300FFFFFF00F0F0F000FFFF + FF00F8F8F800FBFBFB00EDEDED00EBEBEB00FFFFFF00FDFDFD00FFFFFF00FFFF + FF00FCFCFC00EBEBEB00F9F9F900FEFEFE00EEEEEE00FFFFFF00F8F8F800EAEA + EA00FFFFFF00FFFFFF00FFFFFF00FEFEFE00FFFFFF00F7F7F700E0E0E000ECEC + EC00FEFEFE00FFFFFF00FBFBFB00E9E9E900FBFBFB00FBFBFB00F2F2F200FFFF + FF00F2F2F200FCFCFC00FFFFFF00FFFFFF00F0F0F000FCFCFC00F2F2F200FEFE + FE00FAFAFA00FFFFFF00FFFFFF00FFFFFF00EBEBEB00F8F8F800FFFFFF00FFFF + FF00FFFFFF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00F2F2F200FBFBFB00EEEE + EE00F8F8F800F6F6F600FAFAFA00EBEBEB00FFFFFF00FAFAFA00FFFFFF00F5F5 + F500F8F8F800FFFFFF00F4F4F400F6F6F600FFFFFF00FFFFFF00F5F5F500FFFF + FF00FFFFFF00E4E4E400F9F9F900F9F9F900F6F6F600FEFEFE00FBFBFB00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FDFDFD00FDFDFD00F7F7F700FDFDFD00FFFF + FF00F4F4F400F3F3F300DADADA00FFFFFF00F8F8F800FBFBFB00FFFFFF00F9F9 + F900FBFBFB00E6E6E600E5E5E500F1F1F100FFFFFF00FFFFFF00F6F6F600FFFF + FF00FCFCFC00EFEFEF00FFFFFF00F3F3F300F9F9F900FFFFFF00FCFCFC00FFFF + FF00F6F6F600F4F4F400FAFAFA00F0F0F000FAFAFA00FFFFFF00FFFFFF00F6F6 + F600FEFEFE00FFFFFF00F7F7F700FFFFFF00FCFCFC00FFFFFF00FCFCFC00FFFF + FF00FFFFFF00FFFFFF00F7F7F700FFFFFF00FEFEFE00FFFFFF00FFFFFF00E2E2 + E200FFFFFF00E1E1E100EBEBEB00FCFCFC00F7F7F700F0F0F000F1F1F100F2F2 + F200E8E8E800E6E6E600FDFDFD00FFFFFF00FBFBFB00DDDDDD00EDEDED00FFFF + FF00F7F7F700E8E8E800FFFFFF00FFFFFF00F7F7F700FFFFFF00FBFBFB00F8F8 + F800FCFCFC00FFFFFF00FEFEFE00E9E9E900FDFDFD00F5F5F500E6E6E600F0F0 + F000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1 + F100F1F1F100F9F9F900FFFFFF00E5E5E500F6F6F600F5F5F500F1F1F100EFEF + EF00F5F5F500FAFAFA00FEFEFE00F0F0F000F8F8F800FFFFFF00FFFFFF00FFFF + FF00FAFAFA00F0F0F000FFFFFF00FFFFFF00FCFCFC00E8E8E800F4F4F400FCFC + FC00FFFFFF00FFFFFF00FAFAFA00F7F7F700FEFEFE00F8F8F800FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F8F8F800FEFEFE00FFFFFF00FBFBFB00FBFBFB00FFFF + FF00F6F6F600FFFFFF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FDFDFD00FFFFFF00F8F8F800F2F2F200FFFFFF00E0E0E000EBEB + EB00E8E8E800F2F2F200F9F9F900E3E3E300FFFFFF00FFFFFF00FFFFFF00FDFD + FD00F6F6F600F3F3F300F7F7F700F1F1F100EAEAEA00FFFFFF00FFFFFF00FFFF + FF00F0F0F000DFDFDF00F4F4F400FCFCFC00FFFFFF00EEEEEE00FBFBFB00F7F7 + F700FFFFFF00EAEAEA00EFEFEF00FFFFFF00FFFFFF00F8F8F800EBEBEB00FFFF + FF00E8E8E800F9F9F900FAFAFA00FFFFFF00E9E9E900E0E0E000FFFFFF00EAEA + EA00FDFDFD00F3F3F300E3E3E300F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E5E5E500E9E9E900EEEEEE00FFFFFF00FDFDFD00F5F5 + F500FFFFFF00F7F7F700FEFEFE00FFFFFF00F7F7F700F9F9F900FDFDFD00FFFF + FF00FFFFFF00FFFFFF00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E7E7E700EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FAFAFA00EEEEEE00FFFFFF00FFFFFF00FFFFFF00E8E8 + E800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFD00FFFFFF00F7F7 + F700FFFFFF00FCFCFC00FFFFFF00F4F4F400FDFDFD00F5F5F500FAFAFA00FFFF + FF00FCFCFC00FFFFFF00FCFCFC00F7F7F700FCFCFC00FFFFFF00FFFFFF00FFFF + FF00F2F2F200FDFDFD00F2F2F200E9E9E900FEFEFE00FFFFFF00FFFFFF00E4E4 + E400F9F9F900FFFFFF00F6F6F600F4F4F400ECECEC00FFFFFF00F2F2F200FBFB + FB00FFFFFF00E9E9E900F4F4F400FFFFFF00E3E3E300FFFFFF00F9F9F900EDED + ED00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00F4F4F400FBFB + FB00E7E7E700FFFFFF00FAFAFA00F0F0F000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FEFEFE00EBEBEB00DCDCDC00FAFAFA00F1F1F100F3F3 + F300FCFCFC00FFFFFF00EFEFEF00FFFFFF00EBEBEB00E0E0E000EFEFEF00E7E7 + E700EBEBEB00FCFCFC00E5E5E500F8F8F800FFFFFF00FAFAFA00FFFFFF00F3F3 + F300FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECECEC00FFFFFF00FDFDFD00F5F5 + F500FEFEFE00E2E2E200F7F7F700F9F9F900ECECEC00F5F5F500FFFFFF00FBFB + FB00F8F8F800FFFFFF00EDEDED00EBEBEB00EDEDED00FAFAFA00FFFFFF00F5F5 + F500E9E9E900FDFDFD00FFFFFF00FFFFFF00ECECEC00EFEFEF00E6E6E600FDFD + FD00FFFFFF00FFFFFF00F7F7F700FFFFFF00FFFFFF00F0F0F000FAFAFA00F8F8 + F800E7E7E700DEDEDE00FEFEFE00DDDDDD00FFFFFF00FFFFFF00ECECEC00E5E5 + E500F2F2F200FFFFFF00EEEEEE00E6E6E600E7E7E700FFFFFF00FFFFFF00FFFF + FF00FBFBFB00EAEAEA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EDEDED00F0F0 + F000FFFFFF00F9F9F900FDFDFD00F0F0F000F6F6F600EFEFEF00EDEDED00FEFE + FE00FFFFFF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00E4E4E400FEFEFE00F7F7F700FFFFFF00FAFAFA00F1F1F100FFFFFF00FAFA + FA00FBFBFB00E1E1E100ECECEC00FFFFFF00E7E7E700FCFCFC00F3F3F300FFFF + FF00FCFCFC00EAEAEA00F7F7F700FFFFFF00FFFFFF00F7F7F700ECECEC00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F300F1F1F100F0F0 + F000F2F2F200FFFFFF00FFFFFF00E3E3E300F2F2F200FFFFFF00FFFFFF00FFFF + FF00F4F4F400FFFFFF00FFFFFF00DCDCDC00E2E2E200E9E9E900FFFFFF00FFFF + FF00EDEDED00E6E6E600FFFFFF00F6F6F600F8F8F800FFFFFF00F2F2F200FFFF + FF00E3E3E300FFFFFF00FEFEFE00E7E7E700F2F2F200FFFFFF00E9E9E900F6F6 + F600FFFFFF00F5F5F500E5E5E500FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECEC + EC00E5E5E500FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9E900F5F5F500FFFF + FF00F1F1F100FEFEFE00F7F7F700FFFFFF00FFFFFF00F8F8F800ECECEC00EAEA + EA00FFFFFF00FFFFFF00EAEAEA00EBEBEB00EAEAEA00FFFFFF00FFFFFF00F7F7 + F700F0F0F000FFFFFF00F0F0F000FFFFFF00E5E5E500EDEDED00F8F8F800FFFF + FF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00FFFFFF00F2F2F200F4F4F400FFFF + FF00F2F2F200E8E8E800F1F1F100FCFCFC00F9F9F900FFFFFF00FAFAFA00E2E2 + E200F9F9F900F2F2F200ECECEC00FFFFFF00FFFFFF00F6F6F600FCFCFC00FFFF + FF00F4F4F400FFFFFF00FFFFFF00FFFFFF00FCFCFC00FFFFFF00FBFBFB00FFFF + FF00E4E4E400E3E3E300FFFFFF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFF + FF00EDEDED00E6E6E600FFFFFF00FFFFFF00FDFDFD00EDEDED00EEEEEE00FEFE + FE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6F600DEDEDE00E4E4E400F4F4 + F400FFFFFF00FAFAFA00F7F7F700FFFFFF00FDFDFD00F3F3F300F1F1F100F8F8 + F800FAFAFA00FFFFFF00F9F9F900FEFEFE00FFFFFF00FFFFFF00FFFFFF00F3F3 + F300F4F4F400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F300FFFF + FF00F5F5F500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3 + F300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFBFB00FBFBFB00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FCFCFC00F2F2F200FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F7F7F700F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFD + FD00EBEBEB00FBFBFB00F5F5F500FAFAFA00F1F1F100DDDDDD00F5F5F500FFFF + FF00FEFEFE00FAFAFA00FFFFFF00FFFFFF00E7E7E700F0F0F000FFFFFF00FFFF + FF00FFFFFF00E2E2E200E4E4E400FFFFFF00FFFFFF00E3E3E300FFFFFF00F8F8 + F800FFFFFF00FDFDFD00FFFFFF00EAEAEA00F4F4F400E5E5E500FEFEFE00FFFF + FF00FFFFFF00FFFFFF00F9F9F900F2F2F200FEFEFE00FAFAFA00FBFBFB00F9F9 + F900FFFFFF00FFFFFF00FFFFFF00F6F6F600FCFCFC00FFFFFF00FFFFFF00F7F7 + F700E3E3E300ECECEC00FFFFFF00E3E3E300F6F6F600F4F4F400FFFFFF00FFFF + FF00F3F3F300FCFCFC00FFFFFF00FFFFFF00FFFFFF00E0E0E000FFFFFF00E9E9 + E900FFFFFF00FFFFFF00FFFFFF00EAEAEA00E2E2E200EAEAEA00FFFFFF00E9E9 + E900F5F5F500F3F3F300FFFFFF00FCFCFC00F7F7F700FFFFFF00FFFFFF00FFFF + FF00F8F8F800EDEDED00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F4F4F400F6F6F600E5E5E500F7F7F700FFFFFF00FFFFFF00E5E5E500FBFB + FB00FFFFFF00FFFFFF00F8F8F800FDFDFD00FFFFFF00FFFFFF00E9E9E900DEDE + DE00FAFAFA00FFFFFF00FFFFFF00EFEFEF00F7F7F700FFFFFF00F5F5F500FFFF + FF00FFFFFF00F3F3F300FFFFFF00DFDFDF00FFFFFF00F8F8F800E0E0E000EFEF + EF00FFFFFF00E8E8E800F7F7F700FFFFFF00F6F6F600F1F1F100FFFFFF00F5F5 + F500FFFFFF00FFFFFF00F2F2F200F5F5F500FCFCFC00FFFFFF00FFFFFF00FEFE + FE00F2F2F200FFFFFF00FFFFFF00F3F3F300FEFEFE00FFFFFF00FFFFFF00FFFF + FF00F2F2F200E1E1E100E5E5E500FFFFFF00FAFAFA00EBEBEB00DFDFDF00DDDD + DD00E4E4E400F7F7F700FFFFFF00FEFEFE00FFFFFF00EFEFEF00FFFFFF00FAFA + FA00FFFFFF00FFFFFF00FAFAFA00EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FEFEFE00FCFCFC00F9F9F900FCFCFC00FEFEFE00FDFDFD00FDFD + FD00FAFAFA00F4F4F400FFFFFF00F8F8F800FBFBFB00FFFFFF00F8F8F800FFFF + FF00FFFFFF00FFFFFF00FEFEFE00FFFFFF00F8F8F800FFFFFF00EAEAEA00F0F0 + F000FFFFFF00FFFFFF00FFFFFF00E6E6E600FFFFFF00FFFFFF00F5F5F500E0E0 + E000E3E3E300FFFFFF00EFEFEF00F8F8F800FFFFFF00EEEEEE00F3F3F300FAFA + FA00E9E9E900FFFFFF00F3F3F300ECECEC00F9F9F900FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F0F0F000F4F4F400FFFFFF00EBEBEB00F6F6 + F600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FFFFFF00FBFBFB00E8E8 + E800E0E0E000FFFFFF00E0E0E000F2F2F200FFFFFF00FFFFFF00D8D8D800FFFF + FF00F6F6F600EBEBEB00FFFFFF00E4E4E400FEFEFE00FBFBFB00EEEEEE00FFFF + FF00F9F9F900FFFFFF00FFFFFF00FBFBFB00E2E2E200F8F8F800E7E7E700F9F9 + F900ECECEC00FFFFFF00FFFFFF00F9F9F900EDEDED00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F8F8F800FEFEFE00EEEEEE00F5F5F500EAEAEA00E5E5 + E500FCFCFC00FCFCFC00F8F8F800EBEBEB00E6E6E600F0F0F000F9F9F900FBFB + FB00FDFDFD00FFFFFF00F8F8F800FFFFFF00E8E8E800FFFFFF00FFFFFF00FDFD + FD00FFFFFF00F8F8F800F2F2F200FFFFFF00FFFFFF00E4E4E400F9F9F900E9E9 + E900F7F7F700E8E8E800EBEBEB00FAFAFA00F5F5F500FFFFFF00FFFFFF00F8F8 + F800EDEDED00FFFFFF00FFFFFF00FFFFFF00FBFBFB00E4E4E400F9F9F900F0F0 + F000F3F3F300FFFFFF00F7F7F700FFFFFF00FFFFFF00FFFFFF00EEEEEE00F5F5 + F500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECECEC00FCFCFC00E9E9 + E900E5E5E500F6F6F600F9F9F900FFFFFF00E6E6E600FFFFFF00FFFFFF00F0F0 + F000F5F5F500F9F9F900EDEDED00FFFFFF00FFFFFF00F2F2F200F1F1F100E8E8 + E800F2F2F200F8F8F800FFFFFF00FCFCFC00FEFEFE00EFEFEF00E8E8E800F8F8 + F800FFFFFF00FFFFFF00F2F2F200F7F7F700FFFFFF00FFFFFF00EBEBEB00F5F5 + F500FDFDFD00FFFFFF00FFFFFF00EAEAEA00FBFBFB00FFFFFF00FDFDFD00FFFF + FF00F1F1F100E1E1E100EAEAEA00F4F4F400FFFFFF00FDFDFD00FFFFFF00F8F8 + F800FBFBFB00EFEFEF00FFFFFF00FFFFFF00FFFFFF00E9E9E900FFFFFF00F2F2 + F200F0F0F000FAFAFA00FFFFFF00FFFFFF00F5F5F500E9E9E900FCFCFC00E6E6 + E600FFFFFF00FFFFFF00E5E5E500EDEDED00FFFFFF00FFFFFF00F9F9F900EBEB + EB00FFFFFF00F6F6F600F0F0F000E7E7E700F5F5F500FFFFFF00FFFFFF00FEFE + FE00F3F3F300FFFFFF00FFFFFF00EBEBEB00F0F0F000FBFBFB00FFFFFF00EEEE + EE00EFEFEF00FFFFFF00FFFFFF00FFFFFF00E7E7E700F2F2F200F4F4F400E4E4 + E400FFFFFF00FFFFFF00FFFFFF00F5F5F500F3F3F300FFFFFF00FFFFFF00FDFD + FD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00ECECEC00F2F2F200E6E6 + E600FEFEFE00FFFFFF00FFFFFF00FFFFFF00FAFAFA00F4F4F400F8F8F800FFFF + FF00FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00FCFCFC00FFFF + FF00FBFBFB00ECECEC00F1F1F100F6F6F600FFFFFF00DDDDDD00FDFDFD00FAFA + FA00FFFFFF00FAFAFA00EEEEEE00FFFFFF00FDFDFD00FFFFFF00FFFFFF00ECEC + EC00FCFCFC00FFFFFF00F5F5F500FFFFFF00FFFFFF00F7F7F700FBFBFB00FDFD + FD00FFFFFF00F5F5F500FFFFFF00FFFFFF00FFFFFF00F4F4F400FDFDFD00FFFF + FF00FBFBFB00FBFBFB00FFFFFF00FCFCFC00F2F2F200F4F4F400FEFEFE00FFFF + FF00FFFFFF00E6E6E600E8E8E800FFFFFF00EAEAEA00EFEFEF00FFFFFF00FAFA + FA00F9F9F900F2F2F200FDFDFD00F1F1F100EEEEEE00DCDCDC00FEFEFE00F3F3 + F300FFFFFF00F5F5F500F6F6F600EFEFEF00FFFFFF00FFFFFF00FCFCFC00E8E8 + E800F1F1F100F5F5F500FFFFFF00F1F1F100FFFFFF00FFFFFF00F9F9F900FEFE + FE00FEFEFE00FFFFFF00FFFFFF00EFEFEF00F0F0F000F6F6F600FAFAFA00F4F4 + F400F4F4F400FFFFFF00FFFFFF00F3F3F300FAFAFA00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E8E8E800F2F2F200F9F9F900FFFFFF00F6F6F600ECEC + EC00FFFFFF00FFFFFF00FBFBFB00E3E3E300E5E5E500F9F9F900F5F5F500FFFF + FF00FFFFFF00FDFDFD00F5F5F500FFFFFF00D9D9D900FFFFFF00F8F8F800F8F8 + F800FAFAFA00F4F4F400F5F5F500FFFFFF00FCFCFC00F5F5F500FFFFFF00EEEE + EE00EAEAEA00F4F4F400F6F6F600F6F6F600FBFBFB00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F8F8F800F3F3F300EEEEEE00F4F4F400F6F6F600EAEA + EA00FBFBFB00FFFFFF00F0F0F000FFFFFF00FDFDFD00F2F2F200F5F5F500EDED + ED00FCFCFC00FFFFFF00FFFFFF00FFFFFF00FBFBFB00EFEFEF00FAFAFA00E5E5 + E500FFFFFF00F5F5F500D5D5D500DCDCDC00F0F0F000F9F9F900FFFFFF00FFFF + FF00FDFDFD00F4F4F400FAFAFA00FFFFFF00FFFFFF00FFFFFF00F4F4F400E5E5 + E500EFEFEF00FFFFFF00F3F3F300FCFCFC00FFFFFF00FBFBFB00FDFDFD00FFFF + FF00F5F5F500FFFFFF00FFFFFF00FFFFFF00E6E6E600FFFFFF00E9E9E900FFFF + FF00FCFCFC00EDEDED00FDFDFD00FFFFFF00EAEAEA00F8F8F800FAFAFA00FCFC + FC00FFFFFF00FFFFFF00FFFFFF00FDFDFD00E2E2E200FFFFFF00EEEEEE00EEEE + EE00FFFFFF00FFFFFF00FFFFFF00F3F3F300E2E2E200FCFCFC00F6F6F600DBDB + DB00F0F0F000FCFCFC00FFFFFF00F1F1F100FBFBFB00F3F3F300F2F2F200FFFF + FF00F8F8F800E2E2E200FBFBFB00FAFAFA00FBFBFB00FFFFFF00F2F2F200EBEB + EB00FFFFFF00FAFAFA00FFFFFF00FFFFFF00EFEFEF00ECECEC00FFFFFF00FFFF + FF00F8F8F800FFFFFF00F8F8F800F0F0F000E6E6E600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FBFBFB00FFFFFF00FFFFFF00F4F4F400F8F8F800ECECEC00FFFF + FF00F3F3F300EAEAEA00F0F0F000FDFDFD00F9F9F900F5F5F500FFFFFF00FBFB + FB00FFFFFF00FAFAFA00FCFCFC00FFFFFF00FFFFFF00FFFFFF00FBFBFB00FFFF + FF00FFFFFF00FFFFFF00F8F8F800FFFFFF00FFFFFF00ECECEC00F0F0F000FFFF + FF00FDFDFD00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00F5F5F500FFFF + FF00FFFFFF00FFFFFF00F4F4F400FFFFFF00E2E2E200E6E6E600E7E7E700FFFF + FF00FFFFFF00FAFAFA00FFFFFF00F7F7F700FFFFFF00F7F7F700EDEDED00FFFF + FF00F5F5F500E0E0E000EDEDED00FAFAFA00F6F6F600FFFFFF00FAFAFA00E1E1 + E100F4F4F400FEFEFE00F2F2F200F8F8F800FFFFFF00F1F1F100FAFAFA00FFFF + FF00F0F0F000FBFBFB00FCFCFC00FFFFFF00FFFFFF00FFFFFF00F6F6F600F8F8 + F800EBEBEB00EAEAEA00FFFFFF00FFFFFF00ECECEC00FCFCFC00F7F7F700FFFF + FF00E8E8E800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00EFEFEF00FCFC + FC00EEEEEE00E8E8E800EAEAEA00ECECEC00FDFDFD00FFFFFF00FFFFFF00FFFF + FF00FDFDFD00E8E8E800E4E4E400F1F1F100FFFFFF00FFFFFF00F5F5F500FBFB + FB00F6F6F600EEEEEE00E7E7E700FDFDFD00F0F0F000F2F2F200FFFFFF00EAEA + EA00FFFFFF00EAEAEA00FFFFFF00FFFFFF00EEEEEE00EDEDED00FFFFFF00E2E2 + E200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00FAFA + FA00F7F7F700FBFBFB00FFFFFF00FFFFFF00EAEAEA00E5E5E500F4F4F400E9E9 + E900FFFFFF00FFFFFF00FFFFFF00FEFEFE00FCFCFC00FDFDFD00F6F6F600FFFF + FF00FFFFFF00FFFFFF00F8F8F800F9F9F900FDFDFD00FFFFFF00FFFFFF00F5F5 + F500FDFDFD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F9F9F900FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00FFFFFF00EEEEEE00FBFBFB00FFFF + FF00FDFDFD00EAEAEA00F2F2F200FFFFFF00F9F9F900EBEBEB00FFFFFF00FFFF + FF00F3F3F300EFEFEF00FDFDFD00F9F9F900FCFCFC00EFEFEF00FFFFFF00FFFF + FF00FDFDFD00F8F8F800E8E8E800FFFFFF00F4F4F400F6F6F600FAFAFA00FFFF + FF00E8E8E800EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00FFFF + FF00FFFFFF00E8E8E800F5F5F500FFFFFF00FFFFFF00ECECEC00FDFDFD00FFFF + FF00FFFFFF00FFFFFF00DFDFDF00E8E8E800FFFFFF00EDEDED00E7E7E700DADA + DA00FFFFFF00FFFFFF00E7E7E700F5F5F500E4E4E400FFFFFF00FCFCFC00FFFF + FF00FFFFFF00FDFDFD00F3F3F300F0F0F000ECECEC00F4F4F400F9F9F900ECEC + EC00FFFFFF00FFFFFF00FFFFFF00F9F9F900F4F4F400FFFFFF00FFFFFF00FBFB + FB00E9E9E900DEDEDE00FDFDFD00EDEDED00F5F5F500FFFFFF00FFFFFF00FCFC + FC00FFFFFF00FFFFFF00FFFFFF00E6E6E600FEFEFE00FFFFFF00F9F9F900E2E2 + E200ECECEC00FFFFFF00F7F7F700FFFFFF00FAFAFA00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FAFAFA00FFFFFF00F7F7F700FFFFFF00FFFFFF00F5F5F500E3E3 + E300FFFFFF00FFFFFF00FFFFFF00FDFDFD00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00E9E9E900F9F9F900FFFFFF00FEFEFE00EAEAEA00E8E8E800FFFFFF00FEFE + FE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8F800E6E6 + E600F9F9F900FFFFFF00F3F3F300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00FFFFFF00F3F3F300FFFFFF00DEDE + DE00FFFFFF00FFFFFF00F6F6F600FFFFFF00DFDFDF00E3E3E300EEEEEE00F4F4 + F400FFFFFF00FFFFFF00EDEDED00E9E9E900F8F8F800F2F2F200FFFFFF00F2F2 + F200EAEAEA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9E900FAFAFA00FFFF + FF00FFFFFF00FFFFFF00E8E8E800EFEFEF00F0F0F000FFFFFF00FDFDFD00FFFF + FF00FFFFFF00EDEDED00FFFFFF00EBEBEB00FBFBFB00FFFFFF00EFEFEF00FFFF + FF00FFFFFF00E7E7E700F1F1F100FFFFFF00F5F5F500F5F5F500F6F6F600FFFF + FF00FFFFFF00FBFBFB00ECECEC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFA + FA00F1F1F100F7F7F700FFFFFF00F0F0F000F1F1F100FFFFFF00F0F0F000F1F1 + F100ECECEC00FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6 + F600DCDCDC00FDFDFD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EAEAEA00FFFF + FF00FFFFFF00EAEAEA00FDFDFD00FFFFFF00F7F7F700E5E5E500FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F2F2F200F5F5F500FFFFFF00FFFFFF00FFFF + FF00F8F8F800EEEEEE00FAFAFA00D7D7D700F1F1F100FFFFFF00FDFDFD00E9E9 + E900F7F7F700FFFFFF00FFFFFF00EEEEEE00F8F8F800FFFFFF00FFFFFF00FFFF + FF00F5F5F500EDEDED00E6E6E600EEEEEE00FFFFFF00F0F0F000F9F9F900FFFF + FF00F5F5F500DFDFDF00FFFFFF00E7E7E700E5E5E500F0F0F000E7E7E700DFDF + DF00EBEBEB00E9E9E900F7F7F700FFFFFF00FFFFFF00ECECEC00EBEBEB00FFFF + FF00F5F5F500FFFFFF00FFFFFF00F4F4F400FAFAFA00F2F2F200FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FCFCFC00FAFAFA00F5F5F500FAFAFA00F7F7F700F0F0 + F000FFFFFF00F2F2F200FCFCFC00F4F4F400FEFEFE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00E6E6E600FFFFFF00FEFEFE00FEFEFE00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00E7E7E700FFFFFF00EBEBEB00FFFFFF00F4F4 + F400FFFFFF00F4F4F400FFFFFF00FFFFFF00E7E7E700FFFFFF00FFFFFF00FFFF + FF00EFEFEF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00F6F6F600EFEFEF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F300E9E9E900ECEC + EC00EDEDED00FFFFFF00F2F2F200FFFFFF00F2F2F200FFFFFF00FFFFFF00FAFA + FA00FFFFFF00FBFBFB00F3F3F300ECECEC00FFFFFF00F7F7F700FFFFFF00F0F0 + F000DFDFDF00F9F9F900FEFEFE00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FFFF + FF00FFFFFF00FFFFFF00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFA + FA00FFFFFF00F4F4F400ECECEC00FFFFFF00FFFFFF00F2F2F200FAFAFA00FFFF + FF00FFFFFF00EAEAEA00EFEFEF00FFFFFF00FFFFFF00EDEDED00FBFBFB00FFFF + FF00F5F5F500FFFFFF00E5E5E500F7F7F700FFFFFF00F6F6F600FFFFFF00F3F3 + F300FFFFFF00E3E3E300FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E4E4E400FAFAFA00FFFFFF00FFFFFF00ECECEC00FFFF + FF00FFFFFF00FFFFFF00FDFDFD00E6E6E600F8F8F800F5F5F500DEDEDE00E3E3 + E300F1F1F100FFFFFF00F7F7F700F0F0F000E5E5E500DEDEDE00FDFDFD00FFFF + FF00FFFFFF00FFFFFF00F8F8F800EAEAEA00EFEFEF00E2E2E200FEFEFE00F1F1 + F100FFFFFF00FFFFFF00FFFFFF00FFFFFF00F2F2F200FFFFFF00FFFFFF00FFFF + FF00FAFAFA00E5E5E500F7F7F700E3E3E300F7F7F700FFFFFF00FDFDFD00EFEF + EF00ECECEC00FFFFFF00F4F4F400FFFFFF00FFFFFF00EEEEEE00FEFEFE00EAEA + EA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4F4F400F0F0 + F000FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F300FBFBFB00FFFFFF00EFEF + EF00FBFBFB00E9E9E900EEEEEE00F6F6F600F5F5F500FFFFFF00F7F7F700FFFF + FF00F3F3F300FFFFFF00FDFDFD00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F6F6F600FFFFFF00FFFFFF00FBFBFB00FFFF + FF00FFFFFF00FAFAFA00EDEDED00E5E5E500FFFFFF00FFFFFF00F9F9F900F0F0 + F000FDFDFD00F3F3F300F5F5F500F1F1F100FFFFFF00FFFFFF00EEEEEE00F2F2 + F200FFFFFF00FDFDFD00F0F0F000FEFEFE00F1F1F100EDEDED00FFFFFF00EFEF + EF00EEEEEE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FCFCFC00FFFFFF00FFFFFF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FEFE + FE00EFEFEF00FFFFFF00F6F6F600FFFFFF00F0F0F000FFFFFF00FFFFFF00FFFF + FF00FEFEFE00F8F8F800FFFFFF00FFFFFF00FFFFFF00EFEFEF00E3E3E300FFFF + FF00FBFBFB00F5F5F500FBFBFB00FEFEFE00FFFFFF00F8F8F800F7F7F700FCFC + FC00FDFDFD00FFFFFF00F0F0F000F3F3F300FCFCFC00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00ECECEC00F8F8F800E9E9E900FFFFFF00FFFFFF00FFFF + FF00DFDFDF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00F9F9F900FFFFFF00FFFF + FF00DCDCDC00F4F4F400FFFFFF00FFFFFF00FFFFFF00F0F0F000F3F3F300FEFE + FE00F7F7F700FFFFFF00F6F6F600F0F0F000FDFDFD00F7F7F700FFFFFF00F8F8 + F800E9E9E900F5F5F500F9F9F900F2F2F200FFFFFF00FFFFFF00EBEBEB00FEFE + FE00FBFBFB00FDFDFD00FFFFFF00FFFFFF00EBEBEB00F2F2F200F5F5F500FFFF + FF00FFFFFF00F6F6F600EDEDED00F7F7F700FCFCFC00E8E8E800FFFFFF00F2F2 + F200FFFFFF00F4F4F400FFFFFF00F9F9F900FFFFFF00F1F1F100EAEAEA00FFFF + FF00FFFFFF00FFFFFF00F2F2F200FFFFFF00FFFFFF00FAFAFA00FFFFFF00FAFA + FA00F3F3F300FFFFFF00FBFBFB00FFFFFF00FDFDFD00FBFBFB00FFFFFF00F5F5 + F500EDEDED00F4F4F400F6F6F600F2F2F200F1F1F100FFFFFF00EEEEEE00FFFF + FF00FBFBFB00F2F2F200F6F6F600F9F9F900FAFAFA00F3F3F300FFFFFF00EDED + ED00FFFFFF00F3F3F300F5F5F500FFFFFF00FEFEFE00F0F0F000FCFCFC00E3E3 + E300F9F9F900F4F4F400F5F5F500FFFFFF00F2F2F200F4F4F400FBFBFB00FFFF + FF00EDEDED00EEEEEE00F4F4F400F2F2F200ECECEC00F8F8F800FFFFFF00FBFB + FB00FCFCFC00FDFDFD00FBFBFB00F2F2F200F7F7F700FFFFFF00FDFDFD00FAFA + FA00FCFCFC00FFFFFF00EEEEEE00FDFDFD00FFFFFF00FFFFFF00F8F8F800FFFF + FF00F6F6F600FFFFFF00E8E8E800FBFBFB00F2F2F200EBEBEB00F4F4F400FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEE + EE00F6F6F600F3F3F300F2F2F200FFFFFF00F2F2F200EFEFEF00FFFFFF00F8F8 + F800FFFFFF00F8F8F800F3F3F300FCFCFC00EFEFEF00F8F8F800FAFAFA00ECEC + EC00F8F8F800FBFBFB00F5F5F500FEFEFE00FAFAFA00EBEBEB00FBFBFB00F4F4 + F400FEFEFE00FFFFFF00FFFFFF00F3F3F300F2F2F200FFFFFF00FFFFFF00FFFF + FF00F0F0F000F5F5F500FFFFFF00FFFFFF00E5E5E500FFFFFF00FDFDFD00FFFF + FF00F9F9F900F6F6F600F1F1F100EAEAEA00FFFFFF00F9F9F900E8E8E800F5F5 + F500F6F6F600FFFFFF00FCFCFC00F6F6F600F9F9F900FAFAFA00DEDEDE00F4F4 + F400FEFEFE00E6E6E600F6F6F600F7F7F700F6F6F600FFFFFF00EFEFEF00F4F4 + F400FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00F2F2 + F200F6F6F600FFFFFF00E9E9E900EEEEEE00E5E5E500F7F7F700E9E9E900FFFF + FF00EBEBEB00FFFFFF00FDFDFD00FFFFFF00F7F7F700F8F8F800F0F0F000FFFF + FF00FFFFFF00FFFFFF00ECECEC00FBFBFB00EBEBEB00F6F6F600EAEAEA00EFEF + EF00F1F1F100FFFFFF00FBFBFB00EEEEEE00F3F3F300F7F7F700FFFFFF00F1F1 + F100F4F4F400F8F8F800F1F1F100FBFBFB00FFFFFF00FFFFFF00F8F8F800FFFF + FF00FCFCFC00F2F2F200FFFFFF00F8F8F800FFFFFF00FFFFFF00FCFCFC00F7F7 + F700F5F5F500F8F8F800DBDBDB00FFFFFF00FFFFFF00FFFFFF00F6F6F600FFFF + FF00FFFFFF00FCFCFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F9F9F900FFFFFF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F0F0F000F3F3F300FFFFFF00FBFBFB00FEFEFE00FFFFFF00FFFFFF00FFFF + FF00E9E9E900F0F0F000FDFDFD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F3F3F300ECECEC00F3F3F300FFFFFF00F1F1F100FAFAFA00ECECEC00E3E3 + E300F7F7F700FBFBFB00F5F5F500FFFFFF00FBFBFB00FFFFFF00F3F3F300E6E6 + E600F3F3F300FFFFFF00FFFFFF00FCFCFC00F5F5F500FFFFFF00E9E9E900EFEF + EF00F8F8F800FFFFFF00EFEFEF00E8E8E800EFEFEF00FFFFFF00FAFAFA00F4F4 + F400FFFFFF00FBFBFB00F9F9F900FFFFFF00F1F1F100E8E8E800F0F0F000F7F7 + F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00FCFCFC00F3F3F300FFFF + FF00F5F5F500F2F2F200F4F4F400FFFFFF00F8F8F800F1F1F100FFFFFF00FFFF + FF00FFFFFF00F6F6F600EEEEEE00F2F2F200FFFFFF00EEEEEE00FFFFFF00FCFC + FC00FFFFFF00FFFFFF00F3F3F300FFFFFF00FFFFFF00FDFDFD00FFFFFF00F3F3 + F300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FAFA + FA00F7F7F700FAFAFA00FFFFFF00FFFFFF00F3F3F300FBFBFB00FFFFFF00FFFF + FF00FCFCFC00FFFFFF00F8F8F800FFFFFF00E3E3E300EEEEEE00F9F9F900FFFF + FF00FFFFFF00E8E8E800FBFBFB00FFFFFF00FEFEFE00FFFFFF00EFEFEF00FFFF + FF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00F9F9F900FFFFFF00FFFFFF00FCFC + FC00E5E5E500FFFFFF00FFFFFF00F7F7F700FFFFFF00FCFCFC00FDFDFD00FFFF + FF00F9F9F900E5E5E500F8F8F800EEEEEE00EDEDED00FFFFFF00FFFFFF00FFFF + FF00FEFEFE00FBFBFB00FFFFFF00EFEFEF00FBFBFB00FFFFFF00F5F5F500FFFF + FF00FFFFFF00FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00EBEBEB00FFFFFF00FFFFFF00ECECEC00D9D9D900FFFFFF00FFFFFF00FFFF + FF00FFFFFF00E0E0E000FFFFFF00E0E0E000E1E1E100FFFFFF00F2F2F200F4F4 + F400FEFEFE00EDEDED00FFFFFF00FFFFFF00FFFFFF00F7F7F700F1F1F100FFFF + FF00FEFEFE00FFFFFF00EDEDED00F1F1F100FFFFFF00FDFDFD00FCFCFC00FFFF + FF00FFFFFF00E7E7E700F9F9F900FFFFFF00FFFFFF00F0F0F000F5F5F500F2F2 + F200EBEBEB00E5E5E500FFFFFF00FBFBFB00FFFFFF00F3F3F300FFFFFF00FFFF + FF00FFFFFF00F0F0F000FFFFFF00F4F4F400F9F9F900FFFFFF00FCFCFC00F2F2 + F200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00F5F5F500F8F8F800F1F1 + F100FFFFFF00F9F9F900E3E3E300E9E9E900E7E7E700F5F5F500F0F0F000ECEC + EC00FFFFFF00F0F0F000F8F8F800FFFFFF00F7F7F700ECECEC00FFFFFF00FFFF + FF00FFFFFF00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00E4E4 + E400FFFFFF00FFFFFF00EFEFEF00F9F9F900FDFDFD00FFFFFF00FEFEFE00FFFF + FF00FFFFFF00E4E4E400ECECEC00FAFAFA00FFFFFF00FCFCFC00FEFEFE00FFFF + FF00E5E5E500E4E4E400EDEDED00FCFCFC00F7F7F700FFFFFF00FFFFFF00FFFF + FF00F8F8F800E4E4E400F0F0F000FFFFFF00FCFCFC00FFFFFF00F6F6F600FBFB + FB00FFFFFF00FFFFFF00FFFFFF00FDFDFD00FFFFFF00FFFFFF00FFFFFF00F3F3 + F300FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1F100E3E3E300FFFFFF00FFFF + FF00F1F1F100FFFFFF00F8F8F800FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFF + FF00F5F5F500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FBFBFB00DEDEDE00F3F3F300FFFFFF00FFFFFF00FFFFFF00FEFEFE00FDFD + FD00FFFFFF00ECECEC00F8F8F800F9F9F900FDFDFD00F8F8F800FBFBFB00F6F6 + F600EBEBEB00FEFEFE00FFFFFF00FFFFFF00F8F8F800FDFDFD00DFDFDF00FFFF + FF00FFFFFF00E5E5E500EFEFEF00E1E1E100FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F1F1F100F6F6F600FFFFFF00FFFFFF00FFFFFF00FFFFFF00E8E8E800F0F0 + F000FFFFFF00FEFEFE00EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3 + F300F5F5F500FFFFFF00FFFFFF00EBEBEB00F1F1F100FFFFFF00FFFFFF00FFFF + FF00F4F4F400FAFAFA00FFFFFF00F1F1F100FBFBFB00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FCFCFC00EAEAEA00FFFFFF00FFFFFF00E3E3E300FFFF + FF00F6F6F600FFFFFF00FFFFFF00EBEBEB00E5E5E500FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FAFAFA00F7F7F700FFFFFF00E9E9E900FFFFFF00FFFFFF00FFFF + FF00EEEEEE00F8F8F800FFFFFF00FFFFFF00FFFFFF00FDFDFD00FFFFFF00FDFD + FD00FAFAFA00FFFFFF00F4F4F400EFEFEF00FFFFFF00FFFFFF00FAFAFA00F9F9 + F900FFFFFF00FFFFFF00FFFFFF00ECECEC00FEFEFE00F7F7F700FFFFFF00FFFF + FF00FCFCFC00FFFFFF00FFFFFF00F2F2F200F9F9F900FFFFFF00EFEFEF00FFFF + FF00EDEDED00DDDDDD00FFFFFF00FFFFFF00FFFFFF00F4F4F400EDEDED00FFFF + FF00F3F3F300FFFFFF00FFFFFF00F4F4F400E0E0E000ECECEC00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F2F2F200F7F7F700F7F7 + F700EAEAEA00FFFFFF00F5F5F500FEFEFE00E7E7E700EAEAEA00EBEBEB00FCFC + FC00FFFFFF00E8E8E800FAFAFA00FFFFFF00FFFFFF00E7E7E700DFDFDF00F9F9 + F900E8E8E800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700FFFF + FF00E8E8E800FFFFFF00FFFFFF00FFFFFF00EFEFEF00FFFFFF00FCFCFC00FFFF + FF00F7F7F700F3F3F300E9E9E900DADADA00F5F5F500FFFFFF00FCFCFC00E8E8 + E800F5F5F500FFFFFF00FDFDFD00FFFFFF00F1F1F100F5F5F500EFEFEF00F2F2 + F200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FBFB + FB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EBEBEB00FFFFFF00FFFFFF00DDDD + DD00FFFFFF00E3E3E300EFEFEF00F5F5F500EFEFEF00FFFFFF00E9E9E900FFFF + FF00F8F8F800FFFFFF00FFFFFF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FDFDFD00FFFFFF00FDFDFD00F5F5F500FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F7F7F700E9E9E900F6F6F600FFFFFF00FFFFFF00F2F2F200F8F8 + F800FBFBFB00FCFCFC00EDEDED00FDFDFD00FFFFFF00FFFFFF00F3F3F300FFFF + FF00FFFFFF00FFFFFF00ECECEC00FFFFFF00EAEAEA00EEEEEE00FFFFFF00E3E3 + E300E2E2E200FFFFFF00FFFFFF00FBFBFB00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F1F1F100FFFFFF00FCFCFC00E3E3E300FBFBFB00F0F0F000FFFFFF00F8F8 + F800EFEFEF00FFFFFF00FFFFFF00FFFFFF00F5F5F500F2F2F200FFFFFF00F5F5 + F500DDDDDD00E8E8E800FFFFFF00F7F7F700FDFDFD00FFFFFF00EBEBEB00FAFA + FA00FFFFFF00FFFFFF00F4F4F400E8E8E800F8F8F800FFFFFF00FCFCFC00FFFF + FF00DFDFDF00FFFFFF00F9F9F900FFFFFF00FFFFFF00FFFFFF00E9E9E900FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FFFFFF00E6E6E600F5F5 + F500F9F9F900FFFFFF00F6F6F600FFFFFF00F1F1F100F7F7F700FFFFFF00F7F7 + F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFA + FA00FFFFFF00EFEFEF00E9E9E900FFFFFF00FFFFFF00FFFFFF00E5E5E500FCFC + FC00FFFFFF00FFFFFF00E5E5E500E6E6E600FFFFFF00F4F4F400FFFFFF00FFFF + FF00F2F2F200F2F2F200FFFFFF00FFFFFF00FAFAFA00EDEDED00E7E7E700FFFF + FF00FFFFFF00FEFEFE00F0F0F000FFFFFF00F6F6F600FCFCFC00F1F1F100FFFF + FF00FFFFFF00FFFFFF00F6F6F600FFFFFF00FFFFFF00F4F4F400F8F8F800FBFB + FB00EAEAEA00FFFFFF00F7F7F700EBEBEB00FCFCFC00FFFFFF00FFFFFF00FDFD + FD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00E4E4E400E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFA + FA00EAEAEA00F2F2F200F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00F5F5F500FFFFFF00F6F6F600EEEEEE00FFFFFF00FAFAFA00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E6E6E600EEEEEE00FFFFFF00FDFDFD00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FBFBFB00FFFFFF00FAFAFA00EBEBEB00FCFCFC00FFFF + FF00FFFFFF00FCFCFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F9F9F900ECEC + EC00FFFFFF00E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7E7 + E700F8F8F800FFFFFF00E5E5E500F9F9F900FFFFFF00FEFEFE00FFFFFF00FFFF + FF00FFFFFF00F1F1F100E5E5E500FFFFFF00FFFFFF00FBFBFB00FFFFFF00FFFF + FF00FFFFFF00FDFDFD00FDFDFD00FFFFFF00FFFFFF00FFFFFF00F7F7F700FDFD + FD00FFFFFF00FFFFFF00EDEDED00FBFBFB00FFFFFF00FEFEFE00FFFFFF00E6E6 + E600FFFFFF00EAEAEA00E9E9E900FFFFFF00F8F8F800E9E9E900FFFFFF00E9E9 + E900FFFFFF00FEFEFE00FFFFFF00FFFFFF00E1E1E100F9F9F900FFFFFF00FFFF + FF00FCFCFC00ECECEC00FFFFFF00EDEDED00FBFBFB00FFFFFF00FFFFFF00F9F9 + F900EBEBEB00FFFFFF00FFFFFF00F9F9F900F5F5F500FFFFFF00E7E7E700DCDC + DC00F9F9F900FDFDFD00F5F5F500FAFAFA00FFFFFF00FFFFFF00EFEFEF00ECEC + EC00F3F3F300EDEDED00FFFFFF00F2F2F200FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F4F4F400FFFFFF00FFFFFF00FFFFFF00E8E8E800F4F4F400F8F8F800FFFF + FF00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFD00EDED + ED00FFFFFF00FFFFFF00ECECEC00F3F3F300FFFFFF00FFFFFF00FCFCFC00F2F2 + F200F1F1F100EDEDED00FFFFFF00FBFBFB00FAFAFA00FFFFFF00F5F5F500F3F3 + F300FFFFFF00FEFEFE00FEFEFE00FDFDFD00FFFFFF00F5F5F500E9E9E900EBEB + EB00F7F7F700FCFCFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00F9F9 + F900FFFFFF00F4F4F400FFFFFF00EAEAEA00EDEDED00FAFAFA00F4F4F400F7F7 + F700FAFAFA00FFFFFF00F6F6F600FFFFFF00F6F6F600E9E9E900F1F1F100F7F7 + F700FFFFFF00FEFEFE00EDEDED00F7F7F700FFFFFF00FFFFFF00FCFCFC00F9F9 + F900F9F9F900F9F9F900FFFFFF00FFFFFF00EEEEEE00F2F2F200FFFFFF00EEEE + EE00F6F6F600F6F6F600E9E9E900E0E0E000F6F6F600F3F3F300FFFFFF00FCFC + FC00F8F8F800E9E9E900F3F3F300F7F7F700F8F8F800EEEEEE00F2F2F200FFFF + FF00F1F1F100F6F6F600FCFCFC00F4F4F400FFFFFF00FFFFFF00FDFDFD00FBFB + FB00FEFEFE00FFFFFF00FFFFFF00FDFDFD00F5F5F500FBFBFB00FAFAFA00FAFA + FA00FBFBFB00F9F9F900FAFAFA00FBFBFB00FFFFFF00FEFEFE00FCFCFC00FDFD + FD00FFFFFF00FFFFFF00F8F8F800E9E9E900F6F6F600F2F2F200F3F3F300F1F1 + F100E2E2E200FFFFFF00EAEAEA00FCFCFC00F4F4F400FFFFFF00F7F7F700FAFA + FA00FFFFFF00E8E8E800FFFFFF00FFFFFF00FDFDFD00FFFFFF00FFFFFF00FAFA + FA00FFFFFF00FFFFFF00ECECEC00FFFFFF00FFFFFF00F8F8F800FFFFFF00FEFE + FE00F9F9F900FFFFFF00FFFFFF00F8F8F800FFFFFF00F3F3F300FFFFFF00FFFF + FF00F8F8F800F4F4F400FCFCFC00F6F6F600F2F2F200FFFFFF00F2F2F200F1F1 + F100FFFFFF00FAFAFA00EEEEEE00FFFFFF00FFFFFF00F9F9F900EEEEEE00FFFF + FF00FFFFFF00F8F8F800FFFFFF00F3F3F300FBFBFB00DFDFDF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00E7E7E700F7F7F700F0F0F000FFFFFF00F3F3 + F300F9F9F900FFFFFF00FFFFFF00FDFDFD00FFFFFF00ECECEC00F7F7F700F9F9 + F900EFEFEF00E6E6E600FFFFFF00F5F5F500E8E8E800EFEFEF00F9F9F900FDFD + FD00F7F7F700FFFFFF00FFFFFF00FCFCFC00EDEDED00FAFAFA00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00E8E8E800FCFCFC00FFFFFF00FFFFFF00F9F9F900E6E6 + E600F5F5F500F9F9F900FBFBFB00FFFFFF00FFFFFF00FFFFFF00FAFAFA00F7F7 + F700FFFFFF00EFEFEF00F3F3F300F6F6F600FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FCFCFC00FFFFFF00E4E4E400F7F7F700F2F2F200F4F4F400FFFFFF00F0F0 + F000F6F6F600F9F9F900F2F2F200FFFFFF00F4F4F400EEEEEE00F7F7F700FFFF + FF00F6F6F600F5F5F500EFEFEF00E5E5E500F2F2F200FFFFFF00F5F5F500FFFF + FF00F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00E6E6 + E600FFFFFF00EFEFEF00F9F9F900F7F7F700FFFFFF00FFFFFF00FFFFFF00F9F9 + F900FFFFFF00F3F3F300ECECEC00FFFFFF00ECECEC00FAFAFA00EDEDED00F6F6 + F600F1F1F100FFFFFF00FFFFFF00F8F8F800F2F2F200EBEBEB00FBFBFB00F7F7 + F700F4F4F400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F4F4F400FDFDFD00FFFFFF00FFFFFF00EDEDED00FFFFFF00F9F9F900F5F5 + F500FFFFFF00F4F4F400F7F7F700F9F9F900F3F3F300FBFBFB00FFFFFF00FFFF + FF00FFFFFF00EFEFEF00FEFEFE00EBEBEB00F6F6F600FAFAFA00FFFFFF00F1F1 + F100FFFFFF00FFFFFF00FAFAFA00FBFBFB00FFFFFF00FFFFFF00F8F8F800FFFF + FF00F0F0F000F1F1F100FFFFFF00FEFEFE00EDEDED00F3F3F300FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FAFAFA00FEFEFE00F8F8F800F6F6F600EDEDED00EAEA + EA00EDEDED00FFFFFF00FDFDFD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F7F7F700FFFFFF00FAFAFA00FDFDFD00E0E0E000E7E7E700FFFF + FF00FEFEFE00FDFDFD00FEFEFE00FFFFFF00F8F8F800EEEEEE00FFFFFF00FFFF + FF00F9F9F900FFFFFF00FDFDFD00FAFAFA00FFFFFF00F9F9F900E3E3E300FAFA + FA00FFFFFF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FEFEFE00FCFCFC00F9F9F900FFFFFF00FFFFFF00FFFF + FF00E9E9E900FAFAFA00F1F1F100FFFFFF00FFFFFF00F3F3F300E0E0E000FEFE + FE00FDFDFD00EFEFEF00F7F7F700FFFFFF00FFFFFF00F8F8F800FFFFFF00F0F0 + F000FAFAFA00E4E4E400FFFFFF00FFFFFF00FFFFFF00F8F8F800F2F2F200FFFF + FF00F7F7F700F9F9F900ECECEC00FDFDFD00FFFFFF00EFEFEF00EEEEEE00F7F7 + F700F4F4F400ECECEC00E8E8E800FBFBFB00FFFFFF00FFFFFF00FFFFFF00F8F8 + F800FDFDFD00F4F4F400F2F2F200ECECEC00FAFAFA00F0F0F000FFFFFF00FFFF + FF00FEFEFE00F7F7F700FFFFFF00F0F0F000FFFFFF00FFFFFF00FAFAFA00F9F9 + F900DFDFDF00FCFCFC00FDFDFD00FAFAFA00FFFFFF00EAEAEA00ECECEC00FCFC + FC00F8F8F800FFFFFF00FFFFFF00FFFFFF00F8F8F800FFFFFF00FFFFFF00F3F3 + F300FBFBFB00FEFEFE00FDFDFD00F8F8F800FFFFFF00FFFFFF00F7F7F700E5E5 + E500F9F9F900FFFFFF00F5F5F500FCFCFC00FFFFFF00FFFFFF00EEEEEE00E8E8 + E800FFFFFF00FFFFFF00FFFFFF00F6F6F600ECECEC00FFFFFF00FFFFFF00FFFF + FF00FAFAFA00FFFFFF00FFFFFF00E1E1E100E1E1E100EDEDED00FFFFFF00F6F6 + F600FCFCFC00FCFCFC00FFFFFF00EAEAEA00FBFBFB00EFEFEF00FFFFFF00FFFF + FF00F6F6F600EFEFEF00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FAFAFA00F8F8 + F800FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00F6F6F600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FEFEFE00ECECEC00F7F7F700FCFCFC00FFFFFF00FBFB + FB00FFFFFF00FFFFFF00EEEEEE00F9F9F900FEFEFE00EDEDED00FCFCFC00F1F1 + F100F8F8F800FFFFFF00FFFFFF00FFFFFF00EEEEEE00FFFFFF00FCFCFC00FDFD + FD00F1F1F100FFFFFF00E3E3E300EEEEEE00FFFFFF00FFFFFF00F7F7F700FEFE + FE00F7F7F700F8F8F800FFFFFF00FFFFFF00FEFEFE00FDFDFD00FEFEFE00FBFB + FB00FFFFFF00FFFFFF00EFEFEF00F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FBFBFB00FFFFFF00F7F7F700E8E8E800FBFBFB00FFFFFF00FBFB + FB00E7E7E700F2F2F200FFFFFF00F5F5F500FFFFFF00FFFFFF00FEFEFE00FEFE + FE00FFFFFF00FFFFFF00F0F0F000EBEBEB00FFFFFF00FFFFFF00F3F3F300FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F9F9F900F5F5F500F9F9F900F3F3F300FFFFFF00FDFDFD00FFFFFF00F7F7 + F700E2E2E200EDEDED00E8E8E800FAFAFA00FFFFFF00FFFFFF00E0E0E000FCFC + FC00ECECEC00FEFEFE00FFFFFF00F5F5F500FBFBFB00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00E2E2E200FFFFFF00FFFFFF00FFFFFF00E7E7E700FFFFFF00E9E9 + E900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8 + F800FDFDFD00FFFFFF00FFFFFF00FFFFFF00F7F7F700EDEDED00FFFFFF00F1F1 + F100F4F4F400F7F7F700E6E6E600F3F3F300EEEEEE00FCFCFC00FAFAFA00FFFF + FF00F6F6F600FDFDFD00FFFFFF00FCFCFC00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FBFBFB00F5F5F500E8E8E800FFFFFF00FFFFFF00FFFFFF00ECEC + EC00FEFEFE00EDEDED00F4F4F400EDEDED00FFFFFF00FFFFFF00FFFFFF00F5F5 + F500FFFFFF00FFFFFF00F6F6F600EFEFEF00FCFCFC00E6E6E600FDFDFD00F6F6 + F600DFDFDF00F6F6F600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FDFDFD00FFFFFF00FFFFFF00FCFCFC00FFFFFF00E9E9E900DFDFDF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00DCDCDC00FFFFFF00FDFD + FD00E4E4E400E2E2E200EEEEEE00FFFFFF00FCFCFC00F5F5F500FFFFFF00FFFF + FF00F8F8F800F0F0F000EEEEEE00FFFFFF00FFFFFF00FFFFFF00F8F8F800FFFF + FF00FFFFFF00FFFFFF00FEFEFE00F6F6F600FEFEFE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F7F7F700FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFB + FB00EBEBEB00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEE + EE00FFFFFF00FDFDFD00FDFDFD00FAFAFA00E8E8E800FBFBFB00FFFFFF00FBFB + FB00FCFCFC00FFFFFF00FFFFFF00E5E5E500F8F8F800FFFFFF00FFFFFF00FDFD + FD00DFDFDF00EDEDED00FFFFFF00FCFCFC00F4F4F400FFFFFF00FCFCFC00FFFF + FF00FFFFFF00F3F3F300ECECEC00EFEFEF00EEEEEE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EFEFEF00FFFFFF00EEEEEE00FFFFFF00EBEBEB00FFFFFF00FEFE + FE00FFFFFF00FFFFFF00F2F2F200FFFFFF00FFFFFF00FFFFFF00FAFAFA00D6D6 + D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7E7E700FCFCFC00F6F6F600F4F4 + F400FFFFFF00FFFFFF00FFFFFF00FEFEFE00EFEFEF00FFFFFF00E3E3E300E4E4 + E400F2F2F200FFFFFF00FFFFFF00FEFEFE00F8F8F800F8F8F800F8F8F800F7F7 + F700F3F3F300ECECEC00F9F9F900FFFFFF00F2F2F200FCFCFC00F6F6F600FEFE + FE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E3E3E300FFFFFF00E6E6 + E600DEDEDE00DBDBDB00F9F9F900E2E2E200FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9E900FFFFFF00EEEEEE00EEEE + EE00E4E4E400F1F1F100FDFDFD00E9E9E900FFFFFF00FFFFFF00FFFFFF00FFFF + FF00ECECEC00F2F2F200F7F7F700E8E8E800FEFEFE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00EDEDED00F0F0F000F2F2F200E8E8E800FFFFFF00E8E8E800FDFD + FD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F2F2F200F2F2F200FFFFFF00E8E8 + E800FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0F0F000FFFFFF00EDEDED00E4E4 + E400EAEAEA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4F4F400FFFFFF00FCFC + FC00FFFFFF00FFFFFF00F6F6F600F2F2F200FCFCFC00E0E0E000ECECEC00FAFA + FA00FFFFFF00FEFEFE00EFEFEF00FEFEFE00F2F2F200F8F8F800FFFFFF00F1F1 + F100E1E1E100FBFBFB00FFFFFF00FFFFFF00EAEAEA00F1F1F100FFFFFF00EDED + ED00FFFFFF00E8E8E800FFFFFF00FFFFFF00FCFCFC00FFFFFF00F0F0F000FFFF + FF00FFFFFF00E8E8E800EEEEEE00FFFFFF00F8F8F800EEEEEE00FCFCFC00FFFF + FF00FFFFFF00FFFFFF00ECECEC00FFFFFF00FFFFFF00FBFBFB00FFFFFF00F9F9 + F900EBEBEB00F6F6F600FCFCFC00F3F3F300EEEEEE00FFFFFF00EFEFEF00ECEC + EC00EBEBEB00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F2F2 + F200E5E5E500FFFFFF00FBFBFB00FFFFFF00FFFFFF00FFFFFF00ECECEC00FFFF + FF00FFFFFF00EAEAEA00F8F8F800FFFFFF00FDFDFD00FFFFFF00FFFFFF00F2F2 + F200FFFFFF00FFFFFF00FFFFFF00F0F0F000FFFFFF00FAFAFA00FFFFFF00EAEA + EA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1F100E2E2E200FFFFFF00FEFE + FE00FCFCFC00F8F8F800E3E3E300F5F5F500FFFFFF00FFFFFF00FFFFFF00FFFF + FF00EEEEEE00FCFCFC00FFFFFF00F6F6F600FFFFFF00EFEFEF00FFFFFF00FFFF + FF00FFFFFF00F5F5F500E4E4E400FFFFFF00F7F7F700F6F6F600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FBFBFB00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00FFFFFF00E7E7E700FAFAFA00F5F5F500FFFFFF00FFFFFF00F8F8F800FFFF + FF00F9F9F900FBFBFB00FFFFFF00FFFFFF00FFFFFF00F4F4F400E7E7E700FCFC + FC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00F8F8F800FFFFFF00FFFF + FF00EDEDED00F1F1F100FFFFFF00FFFFFF00F1F1F100EBEBEB00F5F5F500EDED + ED00E2E2E200E6E6E600F5F5F500F5F5F500E6E6E600F2F2F200FFFFFF00FAFA + FA00FFFFFF00FFFFFF00F4F4F400FFFFFF00F3F3F300FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FCFCFC00FFFFFF00FFFFFF00FFFFFF00FCFCFC00E7E7E700E8E8 + E800FFFFFF00FFFFFF00FCFCFC00F7F7F700FFFFFF00FAFAFA00E8E8E800F9F9 + F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00FFFF + FF00FFFFFF00F8F8F800FFFFFF00EBEBEB00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F3F3F300E7E7E700FEFEFE00EBEBEB00F2F2F200ECECEC00FFFFFF00F7F7 + F700FDFDFD00F4F4F400F7F7F700FFFFFF00F7F7F700EEEEEE00FFFFFF00FDFD + FD00E9E9E900F5F5F500F4F4F400FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6 + F600FAFAFA00FCFCFC00F5F5F500FFFFFF00F9F9F900F9F9F900F8F8F800FFFF + FF00FFFFFF00FEFEFE00FFFFFF00FBFBFB00FFFFFF00F4F4F400FFFFFF00FFFF + FF00FEFEFE00EEEEEE00FEFEFE00FCFCFC00FFFFFF00FFFFFF00FFFFFF00E7E7 + E700F8F8F800FFFFFF00FFFFFF00EFEFEF00F0F0F000FFFFFF00FFFFFF00E4E4 + E400FFFFFF00FFFFFF00FFFFFF00FBFBFB00EFEFEF00EFEFEF00FFFFFF00FFFF + FF00F1F1F100F3F3F300FFFFFF00F9F9F900FFFFFF00FEFEFE00F5F5F500FFFF + FF00F8F8F800F8F8F800FDFDFD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00E7E7E700FEFEFE00FCFCFC00EBEBEB00FFFFFF00FEFEFE00FEFEFE00F9F9 + F900EFEFEF00F5F5F500FFFFFF00F3F3F300F1F1F100FFFFFF00FFFFFF00FFFF + FF00F6F6F600FFFFFF00DEDEDE00FFFFFF00F9F9F900E1E1E100F0F0F000FFFF + FF00EEEEEE00FFFFFF00FAFAFA00ECECEC00FFFFFF00FFFFFF00F9F9F900F9F9 + F900F2F2F200EDEDED00FFFFFF00FFFFFF00F9F9F900F7F7F700EFEFEF00E0E0 + E000EFEFEF00FFFFFF00FFFFFF00EAEAEA00F8F8F800FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FCFCFC00F6F6F600EEEEEE00FFFFFF00FFFFFF00FFFFFF00FCFC + FC00E2E2E200FFFFFF00EEEEEE00ECECEC00FBFBFB00FFFFFF00F7F7F700FFFF + FF00FCFCFC00F5F5F500FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9E900F4F4 + F400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700F0F0F000FFFF + FF00F8F8F800FBFBFB00FFFFFF00FBFBFB00F1F1F100F0F0F000FFFFFF00FFFF + FF00FAFAFA00FFFFFF00FBFBFB00FFFFFF00FFFFFF00FDFDFD00FFFFFF00FFFF + FF00F7F7F700EAEAEA00FFFFFF00EEEEEE00FFFFFF00FFFFFF00FFFFFF00E2E2 + E200FFFFFF00F8F8F800F0F0F000F8F8F800F4F4F400F3F3F300EAEAEA00F6F6 + F600FEFEFE00FFFFFF00FFFFFF00FFFFFF00F7F7F700F8F8F800FFFFFF00F7F7 + F700E1E1E100E9E9E900F0F0F000F3F3F300F6F6F600F6F6F600F0F0F000F1F1 + F100F2F2F200F5F5F500EAEAEA00FFFFFF00E8E8E800FAFAFA00FBFBFB00F1F1 + F100FFFFFF00FFFFFF00F8F8F800E3E3E300FFFFFF00EAEAEA00F6F6F600FFFF + FF00FFFFFF00FFFFFF00ECECEC00FFFFFF00FFFFFF00FBFBFB00EFEFEF00FFFF + FF00FAFAFA00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F5F5 + F500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFA00F3F3F300F6F6F600FFFF + FF00EFEFEF00F1F1F100FFFFFF00FFFFFF00FBFBFB00F0F0F000FFFFFF00FAFA + FA00F1F1F100F5F5F500F9F9F900FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7 + F700FFFFFF00F4F4F400EEEEEE00FFFFFF00FFFFFF00F3F3F300FBFBFB00F8F8 + F800FCFCFC00EBEBEB00FFFFFF00FFFFFF00FFFFFF00F5F5F500F7F7F700FCFC + FC00FFFFFF00F9F9F900FFFFFF00FFFFFF00FCFCFC00FFFFFF00FCFCFC00FFFF + FF00F8F8F800F0F0F000FEFEFE00FFFFFF00FAFAFA00F1F1F100FAFAFA00FFFF + FF00FDFDFD00F7F7F700ECECEC00F1F1F100FFFFFF00FFFFFF00EFEFEF00F9F9 + F900FEFEFE00FFFFFF00FDFDFD00F6F6F600E4E4E400E5E5E500FFFFFF00FFFF + FF00F0F0F000F2F2F200FFFFFF00FFFFFF00F0F0F000FFFFFF00E9E9E900F5F5 + F500F4F4F400F2F2F200FFFFFF00EAEAEA00F8F8F800F6F6F600FFFFFF00FFFF + FF00FFFFFF00EDEDED00F4F4F400F0F0F000F8F8F800FFFFFF00FEFEFE00F2F2 + F200EFEFEF00FFFFFF00FCFCFC00FCFCFC00FFFFFF00F4F4F400E7E7E700F4F4 + F400FFFFFF00FFFFFF00F5F5F500FFFFFF00FFFFFF00FFFFFF00FBFBFB00F5F5 + F500FFFFFF00FFFFFF00F9F9F900E1E1E100F4F4F400FFFFFF00FFFFFF00FFFF + FF00FFFFFF00E8E8E800FDFDFD00EEEEEE00FFFFFF00F2F2F200FFFFFF00FFFF + FF00F4F4F400EAEAEA00F5F5F500E1E1E100FFFFFF00F6F6F600F2F2F200FFFF + FF00F3F3F300FFFFFF00FEFEFE00F7F7F700FFFFFF00FFFFFF00F2F2F200EFEF + EF00FBFBFB00F8F8F800FDFDFD00EBEBEB00E7E7E700DEDEDE00E6E6E600FFFF + FF00EAEAEA00F8F8F800FFFFFF00FFFFFF00F1F1F100F1F1F100FFFFFF00E7E7 + E700FFFFFF00F7F7F700FFFFFF00F6F6F600EEEEEE00FFFFFF00DFDFDF00FBFB + FB00F8F8F800FBFBFB00FFFFFF00E4E4E400F8F8F800EFEFEF00FBFBFB00F0F0 + F000FFFFFF00FEFEFE00FFFFFF00F0F0F000F6F6F600EBEBEB00FBFBFB00F6F6 + F600FFFFFF00FFFFFF00F9F9F900F4F4F400FFFFFF00F7F7F700F5F5F500FFFF + FF00F9F9F900F5F5F500FEFEFE00FFFFFF00FFFFFF00FFFFFF00FDFDFD00FBFB + FB00FFFFFF00EEEEEE00FFFFFF00FFFFFF00FFFFFF00F3F3F300F4F4F400FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F9F9F900FFFFFF00F1F1F100FFFFFF00F9F9 + F900EDEDED00FFFFFF00FFFFFF00FDFDFD00FCFCFC00F8F8F800FFFFFF00FFFF + FF00FEFEFE00EFEFEF00F8F8F800FCFCFC00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FAFAFA00F5F5F500FEFEFE00FAFAFA00FFFFFF00F2F2F200DEDEDE00F3F3 + F300FEFEFE00FFFFFF00F9F9F900F7F7F700FDFDFD00F8F8F800FDFDFD00FEFE + FE00FCFCFC00E4E4E400EFEFEF00FCFCFC00FFFFFF00FFFFFF00F6F6F600FFFF + FF00FBFBFB00F9F9F900F2F2F200FFFFFF00F9F9F900FFFFFF00FFFFFF00E6E6 + E600FFFFFF00E8E8E800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE + FE00F4F4F400F9F9F900FFFFFF00E9E9E900EAEAEA00ECECEC00F2F2F200F9F9 + F900EEEEEE00F6F6F600FFFFFF00FEFEFE00F6F6F600FBFBFB00FFFFFF00FFFF + FF00F9F9F900EAEAEA00FDFDFD00EFEFEF00F5F5F500F6F6F600F2F2F200E6E6 + E600FEFEFE00E9E9E900F2F2F200FFFFFF00F5F5F500FFFFFF00FEFEFE00FFFF + FF00FFFFFF00FFFFFF00E5E5E500FFFFFF00E9E9E900FFFFFF00F1F1F100FFFF + FF00FFFFFF00FFFFFF00F0F0F000F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F6F6F600F1F1F100F9F9F900EAEAEA00F4F4F400EEEEEE00FBFBFB00FFFF + FF00F5F5F500EAEAEA00ECECEC00F3F3F300F8F8F800FFFFFF00FFFFFF00FFFF + FF00F9F9F900FFFFFF00E6E6E600FBFBFB00FBFBFB00FFFFFF00FFFFFF00F8F8 + F800EDEDED00FFFFFF00FFFFFF00EFEFEF00F5F5F500F7F7F700F8F8F800F6F6 + F600FFFFFF00F8F8F800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9 + E900FFFFFF00FAFAFA00E4E4E400FFFFFF00FCFCFC00F1F1F100FDFDFD00FAFA + FA00FFFFFF00FFFFFF00FFFFFF00EEEEEE00F6F6F600FEFEFE00F5F5F500FFFF + FF00FFFFFF00FCFCFC00FFFFFF00EBEBEB00FFFFFF00E7E7E700FCFCFC00FFFF + FF00FDFDFD00E4E4E400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FDFDFD00E6E6E600FFFFFF00FFFFFF00EEEEEE00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F9F9F900FFFFFF00FCFCFC00FEFEFE00FFFFFF00FFFF + FF00FAFAFA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFCFC00FAFAFA00FFFF + FF00FAFAFA00F8F8F800F9F9F900FCFCFC00FFFFFF00F4F4F400FEFEFE00FCFC + FC00ECECEC00F8F8F800E2E2E200EEEEEE00F7F7F700EAEAEA00FFFFFF00EDED + ED00FCFCFC00FBFBFB00FFFFFF00FFFFFF00F4F4F400DEDEDE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E9E9E900FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F6F6F600F9F9F900EBEBEB00F8F8F800F5F5 + F500FFFFFF00FDFDFD00FDFDFD00EBEBEB00FAFAFA00FBFBFB00FBFBFB00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00EDEDED00FAFAFA00FFFFFF00ECECEC00FDFD + FD00F4F4F400E8E8E800FFFFFF00FFFFFF00FAFAFA00F3F3F300F5F5F500FFFF + FF00FFFFFF00FFFFFF00EAEAEA00FFFFFF00FFFFFF00FFFFFF00EFEFEF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00EEEEEE00FFFFFF00FFFFFF00FDFDFD00E9E9 + E900FFFFFF00FAFAFA00FFFFFF00FFFFFF00FBFBFB00F9F9F900EBEBEB00EEEE + EE00FFFFFF00FAFAFA00F9F9F900FFFFFF00FFFFFF00F2F2F200EDEDED00FFFF + FF00FDFDFD00F3F3F300FFFFFF00F1F1F100DFDFDF00FCFCFC00FFFFFF00E8E8 + E800FFFFFF00F1F1F100F1F1F100EEEEEE00E4E4E400FFFFFF00FFFFFF00FFFF + FF00FFFFFF00E6E6E600E7E7E700FFFFFF00FFFFFF00FDFDFD00FFFFFF00FBFB + FB00EBEBEB00FFFFFF00F6F6F600FCFCFC00FBFBFB00EEEEEE00FFFFFF00FFFF + FF00FBFBFB00E6E6E600F1F1F100FFFFFF00F6F6F600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F4F4F400FDFDFD00FFFFFF00FFFFFF00FDFDFD00FFFF + FF00E9E9E900F6F6F600FAFAFA00F7F7F700FFFFFF00FCFCFC00FFFFFF00FFFF + FF00F2F2F200FAFAFA00FFFFFF00FFFFFF00FFFFFF00E3E3E300F4F4F400FFFF + FF00FFFFFF00FCFCFC00FFFFFF00FFFFFF00F3F3F300FFFFFF00FFFFFF00FDFD + FD00E6E6E600FDFDFD00FFFFFF00FEFEFE00E9E9E900EFEFEF00F3F3F300EAEA + EA00E5E5E500E7E7E700EEEEEE00E8E8E800ECECEC00F6F6F600FFFFFF00FDFD + FD00E4E4E400F4F4F400FFFFFF00F0F0F000E8E8E800FFFFFF00EDEDED00FFFF + FF00FFFFFF00E9E9E900FCFCFC00FFFFFF00FFFFFF00FFFFFF00EEEEEE00FFFF + FF00FCFCFC00F5F5F500} + CacheDoubleBufferBits = False + UseDockManager = False + DragManager.DragMode = dmAutomatic + DragManager.Enabled = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Images = ImageListHeader + Header.Visible = True + ImagesGroup = ImageListGroups + ImagesSmall = ImageListSmall + ImagesLarge = ImageListLarge + ImagesExLarge = ImageListLarge + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + ShowGroupMargins = True + Selection.AlphaBlend = True + Selection.AlphaBlendSelRect = True + Selection.EnableDragSelect = True + Selection.MultiSelect = True + Sort.AutoSort = True + TabOrder = 0 + View = elsIcon + OnColumnImageDraw = EasyListview1ColumnImageDraw + OnColumnImageGetSize = EasyListview1ColumnImageGetSize + OnColumnImageDrawIsCustom = EasyListview1ColumnImageDrawIsCustom + OnGroupImageDraw = EasyListview1GroupImageDraw + OnGroupImageGetSize = EasyListview1GroupImageGetSize + OnGroupImageDrawIsCustom = EasyListview1GroupImageDrawIsCustom + OnItemImageDraw = EasyListview1ItemImageDraw + OnItemImageGetSize = EasyListview1ItemImageGetSize + OnItemImageDrawIsCustom = EasyListview1ItemImageDrawIsCustom + OnOLEDragStart = EasyListview1OLEDragStart + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 688 + Height = 41 + Align = alTop + TabOrder = 1 + object cbViews: TComboBox + Left = 16 + Top = 8 + Width = 201 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + object Checkbox1: TCheckBox + Left = 240 + Top = 8 + Width = 129 + Height = 17 + Caption = 'Custom Draw Images' + TabOrder = 1 + OnClick = CheckBox1Click + end + end + object ImageListSmall: TImageList + Left = 64 + Top = 136 + Bitmap = { + 494C010109000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000004000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0806000C0600000C040 + 0000F0CAA6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0604000C0600000C060 + 0000C0602000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 0000C0600000C060200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 2000C0600000C0600000C0806000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0400000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C080600000000000C0DC + C000C0400000C0600000C0400000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0800000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0604000000000000000 + 0000C0A08000C0600000C0600000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0800000C080 + 0000C0600000C0402000C0A08000C0A08000C0A08000F0FBFF00000000000000 + 000000000000C0400000C0600000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0800000C060 + 0000C0800000C0600000C0806000000000000000000000000000000000000000 + 000000000000C0804000C0600000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0A00000C060 + 2000C0600000C0800000C0600000C08060000000000000000000000000000000 + 000000000000C0804000C0600000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0A00000C080 + 4000F0CAA600C0600000C0800000C0600000C0604000C0DCC000000000000000 + 0000C0DCC000C0400000C0600000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0802000C0A04000C080 + 400000000000F0CAA600C0602000C0800000C0800000C0600000C0806000C080 + 8000C0602000C0600000C0600000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0804000C0C06000C080 + 40000000000000000000C0DCC000C0602000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0402000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0A08000C0806000F0CA + A60000000000000000000000000000000000C0A08000C0602000C0600000C060 + 0000C0600000C0604000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000004000000080000000A0000000C0200000C0200000C0200000A020000080 + 200080C080000000000000000000000000000000000000000000F0FBFF0000A0 + C00000A0C00000A0C000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000080606000F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA60080606000000000000000000000000000D3D3D300979797008484 + 8400898989008787870080808000848484008181810084848400848484008484 + 84008484840084848400B2B2B200000000000000000000000000A4A0A0000040 + 000000A0000000A0200000C0200000C0200000C0200000C0200000C0400000C0 + 40000080200040A04000000000000000000000000000F0FBFF0000A0C00080E0 + E00080E0E00080E0E000C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C0806000F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600806060000000000000000000ECECEC005AA4C9001E82B400187E + B000167CAE001379AB001076A8000D73A5000B71A300086EA000066C9E00046A + 9C0002689A00016799005E5E5E00AFAFAF00000000000040200000A0000000A0 + 200000C0200000C0200000C02000000000000000000000C0400000C0400000C0 + 400040C0600040C0600000802000000000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C0806000F0FB + FF00F0FBFF00F0FBFF00C0DCC00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000002287BA0067CCFF002085B80099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D30099FFFF00016799006A6A6A00000000000080000000C0200000C0 + 200000C0200000C0200000C02000FFFFFF00FFFFFF0040C0600040C0400040C0 + 600040C0600040C0600040C06000C0DCC0000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A0800000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000C08080000000 + 0000F0FBFF00C0A0E0004040E0000040E0008080E000F0CAA600F0CAA600F0CA + A600F0CAA600806060000000000000000000258ABD0067CCFF00278CBF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0099FFFF0002689A006565650080A0800000C0200000C0200000C0 + 200000C0400000C0400000C0400040C0600000000000FFFFFF000000000040C0 + 800040C0600040C0600040C0600000A020000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C08080000000 + 00008080E0000040E0000040E0004040E0000040E000C0C0C000F0CAA600F0CA + A600F0CAA600806060000000000000000000288DC00067CCFF002D92C50099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E60099FFFF00046A9C006D6D6D004080400000C0200000C0200000C0 + 400000C0400000C0400000C0400040C0600040C08000FFFFFF00FFFFFF000000 + 000040C0600040C0600040C0600000A000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A0800000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000C08080000000 + 0000C0A0E0008080E000F0FBFF00C0C0C0000040E0004060E000F0CAA600F0CA + A600F0CAA6008080600000000000000000002A8FC20067CCFF003398CB0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0099FFFF00066C9E006D6D6D000060000000C0400000C0400080E0 + A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000040C0800040C0600000A020000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0808000000000000000000000000000C0A080000000 + 0000000000000000000000000000F0FBFF008080E0000040E000C0A0E000F0CA + A600F0CAA600C080800000000000000000002D92C5006FD4FF003499CC0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80099FFFF00086EA000696969000060000000C0400000C0400080E0 + A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000040C0800040C0600000A020000000000040C0E000F0FBFF0080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000000000000000000000000000C0A080000000 + 000000000000000000000000000000000000F0FBFF000040E0004040E000C0DC + C000F0CAA600C080800000000000000000002F94C7007BE0FF002D92C5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF00000000000B71A3007C7C7C0040A0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF000000 + 000040C0600040C0600040C0800000A000000000000040C0E000F0FBFF0080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000C0808000F0CAA60000000000000000000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000080A0E0004060E000C0DC + C000F0CAA600C080800000000000000000003196C90085EBFF0081E6FF002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC0002489BC002085 + B8001C81B4001B81B30089BED800FBFBFB0080C0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF000000000040C0 + 800040C0800040C0800080E0800040C020000000000040C0E000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C08080000000000000000000000000000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0CAA600C080800000000000000000003398CB0091F7FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF00000000000000000000000000000000000000 + 0000167CAE00979797000000000000000000000000000080200040C0600040C0 + 600040C0600040C0600040C06000FFFFFF00FFFFFF0040C0800040C0800040C0 + 800080E0A00080E0A00040C06000000000000000000040C0E000F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000F0FBFF00F0FB + FF0000A0C0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0CA + A600F0CAA600C080800000000000000000003499CC000000000099FFFF0099FF + FF0099FFFF0099FFFF000000000060AACF007AB7D60079B5D40077B4D3006AAC + CD003F94BD00FEFEFE0000000000000000000000000040A0400000A0200040C0 + 600040C0600040C0600040C0600080E0C000C0DCC00040C0800080E0800080E0 + A000C0DCC00080E0A00000C00000000000000000000040C0E000F0FBFF00C0DC + C000C0808000C0808000C0808000C0808000C0808000C080800080A0A000F0FB + FF0000A0C0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C080800000000000000000000000000069B3D900000000000000 + 0000000000000000000069B0D400F7F7F7000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000040A0 + 400040C0600040C0600040C0600040C0800080E0800080E0A000C0DCC000C0DC + C00000C0200080E0A0000000000000000000000000000000000040C0E00080E0 + E00080A0A000C0C0C000C0DCC000C0DCC000C0DCC00080A0A00040A0C00040A0 + E000C0DCC0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000F0CA + A600C0C0A00000000000000000000000000000000000000000003499CC003398 + CB003196C9002F94C700FDFDFD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000A0200000A0200040C0400080E0800080E0A00080E0800040C0400000C0 + 0000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000C0808000A4A0A000A4A0A000A4A0A000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0808000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0C0C000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + 80000080200000A0200000C0200000C0200000C0200000A00000008000000040 + 0000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000000000000000 + 0000C0808000C0804000C0808000000000000000000000000000C0808000C080 + 4000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E0004060E000000000000000000040A040000080 + 200000C0400000C0400000C0200000C0200000C0200000C0200000A0200000A0 + 000000400000A4A0A00000000000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000C0DC + C000C0400000C0604000C0400000C0A0800000000000C0A08000C0400000C060 + 4000C0400000C0DCC000000000000000000000000000C0A0E0004060E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000008080E0000020E0004060E000000000000080200040C0600040C0 + 600000C0400000C0400000C04000000000000000000000C0200000C0200000C0 + 200000A0200000A0000000402000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000F0CA + A600C040000000000000C0808000C060400000000000C0604000C0A08000F0FB + FF00C0400000F0CAA6000000000000000000000000004060E0000020E0000020 + E0008080E000000000000000000000000000000000000000000000000000F0FB + FF004060E0000020E0004060E000F0FBFF00C0DCC00040C0600040C0600040C0 + 600040C0600040C0400040C06000FFFFFF00FFFFFF0000C0200000C0200000C0 + 200000C0200000C02000008000000000000000000000C0808000C0808000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000F0FB + FF00C0400000C0A08000C0806000C060000000000000C0400000C0808000C080 + 6000C0400000F0FBFF00000000000000000000000000F0FBFF000040E0000020 + E0000020E0008080E00000000000000000000000000000000000F0FBFF004060 + E0000020E0008080E000000000000000000000A0200040C0600040C0600040C0 + 600040C0800000000000FFFFFF000000000040C0600000C0400000C0400000C0 + 400000C0200000C0200000C0200080A0800000000000C0808000F0CAA600F0CA + A600F0CAA600C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0CAA600C0808000000000000000000000000000000000000000 + 0000C0A08000C0400000C0600000C0400000F0CAA600C0400000C0600000C060 + 0000C0A080000000000000000000000000000000000000000000F0FBFF004060 + E0000020E0000020E0004060E000F0FBFF0000000000F0FBFF000040E0000020 + E0008080E00000000000000000000000000000A0000040C0600040C0600040C0 + 600000000000FFFFFF00FFFFFF0040C0800040C0600000C0400000C0400000C0 + 400000C0400000C0200000C020004080400000000000C0808000F0CAA600F0CA + A600F0CAA600C0A08000F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0A08000804020008060600080402000C0808000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000080A0E0000020E0000020E0004060E00080A0E0000040E0000020E0008080 + E0000000000000000000000000000000000000A0200040C0600040C080000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0080E0A00000C0400000C040000060000000000000C0808000F0CAA600F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000000000000000 + 000000000000000000000000000080806000C0C0C00080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF004040E0000020E0000020E0000020E0008080E0000000 + 00000000000000000000000000000000000000A0200040C0600040C080000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0080E0A00000C0400000C040000060000000000000C0A08000F0FBFF00F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 0000F0FBFF00F0CAA600C0808000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A00080808000A4A0A000C0A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080E0000040E0000040E0000040E000F0FBFF000000 + 00000000000000000000000000000000000000A0000040C0800040C0600040C0 + 600000000000FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040A0400000000000C0A08000F0FBFF00F0FB + FF00F0FBFF00C0A0800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000080808000A4A0A000C0808000A4A0A000C0808000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF004060E0000040E0000040E0008080E0000040E0000040E000F0FB + FF000000000000000000000000000000000040C0200080E0800040C0800040C0 + 800040C0800000000000FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600080C0A00000000000C0A0800000000000F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 0000C0808000C0A08000F0FBFF00000000000000000000000000000000000000 + 000000000000C0C0C000C0C0A000A4A0A0000000000080808000C0A0A000C0C0 + C00000000000000000000000000000000000000000000000000000000000F0FB + FF004040E0000040E0000040E000C0A0E00000000000F0FBFF004060E0000040 + E000C0A0E0000000000000000000000000000000000040C0600080E0A00080E0 + A00040C0800040C0800040C08000FFFFFF00FFFFFF0040C0600040C0600040C0 + 600040C0600040C06000008020000000000000000000C0A08000000000000000 + 000000000000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000F0FBFF0000000000000000000000000000000000000000000000 + 000000000000C0A0A000A4A0A000F0FBFF0000000000F0FBFF00C0A0A000A4A0 + A000000000000000000000000000000000000000000000000000C0A0E0000040 + E0000040E0000040E000C0A0E000000000000000000000000000F0FBFF008080 + E0000040E000C0A0E00000000000000000000000000000C0000080E0A000C0DC + C00080E0A00080E0800040C08000C0DCC00080E0C00040C0600040C0600040C0 + 600040C0600000A0200040A040000000000000000000C0A08000000000000000 + 0000000000000000000000000000F0FBFF00F0CAA600C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF0080806000C0A0A000000000000000000000000000C0A0A0008060 + 6000F0FBFF0000000000000000000000000000000000C0A0E0000040E0000040 + E0000040E000C0A0E00000000000000000000000000000000000000000000000 + 0000C0A0E0004060E0000000000000000000000000000000000080E0A00000C0 + 2000C0DCC000C0DCC00080E0A00080E0800040C0800040C0600040C0600040C0 + 600040A0400000000000000000000000000000000000C0A08000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC00080806000F0FBFF00000000000000000000000000000000008080 + 6000C0DCC000000000000000000000000000000000000040E0000040E0000040 + E000F0FBFF000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C00000C0000040C0400080E0800080E0A00080E0800040C0400000A0200000A0 + 20000000000000000000000000000000000000000000F0CAA600000000000000 + 000000000000F0FBFF00F0FBFF00C0808000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C0000000000000000000000000000000000000000000C0DC + C000C0C0C0000000000000000000000000000000000080A0E0004060E000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0808000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000400000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFF000000000000FFCF000000000000 + FF87000000000000FF83000000000000FFC3000000000000FFE1000000000000 + 80200000000000008030000000000000803800000000000081F8000000000000 + 80F8000000000000803000000000000088000000000000008C01000000000000 + 8F01000000000000FFC7000000000000FFFFFE3FFC01C003FFFFE007C001C003 + 8001C00381F9C0030000818181F9C003000080008101D003000000A081F9D003 + 000000108101D0030000000881F1DE030000000881F1DF031FF4001081F3DF83 + 000000208007DFC301F380018007DFC3420380018007DFC3BCFFE003C007DFC7 + C1FFF007F83FC00FFFFFFFFFFFFFFFFFFC7FF801FFFFFFFFE007F801F1C7FFFC + C003F801E0838FF88181F801E48387E000018001E08383C305008001F007C087 + 08008001F80FF00F100083F9FE3FF81F100083F1FC1FFC1F080083F1FC0FF00F + 0400A3F1F88FE0878001B803F88FC1C38001BE3FF1C783F3C007BE3FF1E787FF + E00FB83FF3E78FFFFFFF807FFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageListLarge: TImageList + Height = 32 + Width = 32 + Left = 96 + Top = 136 + Bitmap = { + 494C010109000E00040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000008000000001002000000000000000 + 0100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0806000C080 + 6000C0600000C0600000C0400000C0400000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0806000C080 + 6000C0600000C0600000C0400000C0400000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 4000C0600000C0600000C0600000C0600000C0602000C0602000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 4000C0600000C0600000C0600000C0600000C0602000C0602000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000C0600000C0600000C0600000C0600000C0602000C060 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000C0600000C0600000C0600000C0600000C0602000C060 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0602000C0602000C0600000C0600000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0602000C0602000C0600000C0600000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 60000000000000000000C0DCC000C0DCC000C0400000C0400000C0600000C060 + 0000C0400000C0400000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 60000000000000000000C0DCC000C0DCC000C0400000C0400000C0600000C060 + 0000C0400000C0400000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 400000000000000000000000000000000000C0A08000C0A08000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 400000000000000000000000000000000000C0A08000C0A08000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0402000C040 + 2000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0402000C040 + 2000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0800000C0800000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0800000C0800000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0602000C0602000C0600000C0600000C0800000C080 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0602000C0602000C0600000C0600000C0800000C080 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0804000C0804000F0CAA600F0CAA600C0600000C060 + 0000C0800000C0800000C0600000C0600000C0604000C0604000C0DCC000C0DC + C00000000000000000000000000000000000C0DCC000C0DCC000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0804000C0804000F0CAA600F0CAA600C0600000C060 + 0000C0800000C0800000C0600000C0600000C0604000C0604000C0DCC000C0DC + C00000000000000000000000000000000000C0DCC000C0DCC000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0802000C080 + 2000C0A04000C0A04000C0804000C08040000000000000000000F0CAA600F0CA + A600C0602000C0602000C0800000C0800000C0800000C0800000C0600000C060 + 0000C0806000C0806000C0808000C0808000C0602000C0602000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0802000C080 + 2000C0A04000C0A04000C0804000C08040000000000000000000F0CAA600F0CA + A600C0602000C0602000C0800000C0800000C0800000C0800000C0600000C060 + 0000C0806000C0806000C0808000C0808000C0602000C0602000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0C06000C0C06000C0804000C08040000000000000000000000000000000 + 0000C0DCC000C0DCC000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0600000C060 + 0000C0402000C040200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0C06000C0C06000C0804000C08040000000000000000000000000000000 + 0000C0DCC000C0DCC000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0600000C060 + 0000C0402000C040200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0806000C0806000F0CAA600F0CAA6000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 4000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0806000C0806000F0CAA600F0CAA6000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 4000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A000406040004060 + 4000004000000060000000600000006000000060000000600000006000000060 + 0000006020000060200080A06000C0DCC000C0DCC00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 600000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A000406040004060 + 4000004000000060000000600000006000000060000000600000006000000060 + 0000006020000060200080A06000C0DCC000C0DCC00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF0000A0C00000A0C00000A0C00000A0C00000A0C00000A0 + C000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000C0DCC000006020000060200000400000008000000080 + 000000A0000000A0200000A0200000C0200000C0200000C0200000C0200000C0 + 200000A0200000A0200000802000008020000080200080C08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF0000A0C00000A0C00000A0C00000A0C00000A0C00000A0 + C000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000000000000000 + 0000A4A0A000A4A0A00000400000008000000080000000A0000000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0400000C0400000C0400000A0400000A040000080200040A0400040A0 + 4000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF0000A0C00000A0C00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A00000000000000000000000000A4A0 + A000004000000040000000A0000000A0000000A0000000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C04000008020000080 + 200040A060000000000000000000000000000000000000000000F0FBFF00F0FB + FF0000A0C00000A0C00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A00000000000000000000000000A4A0 + A000004000000040000000A0000000A0000000A0000000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C04000008020000080 + 200040A06000000000000000000000000000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A00656565006565650000000000C0DCC000C0DCC0000040 + 200000A0000000A0000000A0200000C0200000C0200000C0200000C0200000C0 + 200000C0200040C0600040C06000000000000000000040C0600040C0600000C0 + 400000C0400000C0400000C0400040C0600040C0600040C0600040C0600040C0 + 60000080200080C0800080C0800000000000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A0065656500656565000000000040806000408060000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200080E0A00080E0A000FFFFFF00FFFFFF00000000000000000040C0 + 600040C0400040C0400040C0600040C0600040C0600040C0600040C0600040C0 + 600040C060000080200000802000C0DCC000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D00C0DCC000006000000060000000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0400000C0 + 400000C0400040C0600040C0600000000000FFFFFF00FFFFFF00FFFFFF000000 + 000040C0800040C0800040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200080C06000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D00C0DCC000006000000060000000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0400000C0 + 400000C0400040C0600040C0600000000000FFFFFF00FFFFFF00FFFFFF000000 + 000040C0800040C0800040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200080C06000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D0080A08000008000000080000000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400040C0600000000000FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D004080400000A0200000A0200000C0 + 200000C0200000C0200000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400040C0600040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600040C0600000A00000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 6000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D000060200000A0200000A0200000C0 + 400000C0400000C0400040C0600080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DCC000C0DCC000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0600040C0 + 600040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 6000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA00069696900696969000060200000A0200000A0200000C0 + 400000C0400000C0400040C0600080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DCC000C0DCC000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0600040C0 + 600040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA00069696900696969000060000000C0200000C0200000C0 + 400000C0400000C0400080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000040C0800040C0 + 800040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C000060000000A0400000A0400000C0 + 400000C0400000C0400080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000040C0800040C0 + 800040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C004080400000A0400000A0400000C0 + 400040C0400040C0400040C0800080E0A00080E0A00080E0A00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C0000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0600040C0 + 600040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB004080400000A0400000A0400000C0 + 400040C0400040C0400040C0800080E0A00080E0A00080E0A00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C0000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0600040C0 + 600040C0600040C0600040C0600000A02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB0040A0400000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000000000040C0800040C0800040C0600040C0600040C0 + 600040C0800040C0800040C0800000A00000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB0080C0A000008020000080200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0600040C0600040C0800040C0800040C0 + 800080E0800040C0600040C0600040C02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 97000000000000000000000000000000000000000000008020000080200000C0 + 400040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 000040C0800040C0800040C0600040C0800040C0800040C0800080E0A00080E0 + A00080E0A00000C0200000C0200080E0A000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 97000000000000000000000000000000000000000000008020000080200000C0 + 400040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 000040C0800040C0800040C0600040C0800040C0800040C0800080E0A00080E0 + A00080E0A00000C0200000C0200080E0A000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE000000000000000000000000000000000000000000C0C0A000C0C0A0000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600080E0A00080E0A000FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0800040C0800080E0800080E0800080E0A00080E0A00080E0 + A00040C0600040C0200040C0200000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE000000000000000000000000000000000000000000000000000000000040A0 + 400000A0200000A0200040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600080E0C000C0DCC00040C0800040C0800040C0 + 800080E0800080E0800080E0A00080E0A00080E0A000C0DCC00080E0A00080E0 + A00000C00000C0DCC000C0DCC00000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00C0DCC000C0DCC000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800080A0A00080A0A000F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040A0400040A0400000A0200040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C0800040C0800080E0 + A00080E0A00080E0A00080E0A000C0DCC000C0DCC00080E0A00000C0000000C0 + 000080E0A000000000000000000000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00C0DCC000C0DCC000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800080A0A00080A0A000F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040A0400040A0400000A0200040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C0800040C0800080E0 + A00080E0A00080E0A00080E0A000C0DCC000C0DCC00080E0A00000C0000000C0 + 000080E0A0000000000000000000000000000000000000000000000000000000 + 000040C0E00040C0E00080E0E00080E0E00080A0A00080A0A000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0A00080A0 + A00040A0C00040A0C00040A0E00040A0E000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040A0400000A0200000A0200040C0600040C0600040C0 + 600040C0600040C0800040C0800040C0800080E0800080E0A00080E0A00080E0 + A000C0DCC000C0DCC000C0DCC00040C0600040C0600000C0200080E0A00080E0 + A000000000000000000000000000000000000000000000000000000000000000 + 000040C0E00040C0E00080E0E00080E0E00080A0A00080A0A000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0A00080A0 + A00040A0C00040A0C00040A0E00040A0E000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080C0800080C0800000A0200000A0200000A0 + 200040C0400040C0600040C0600080E0800080E0A00080E0800080E0800080E0 + 800040C0400040C0400000C0000040C0600040C06000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080E0A00080E0 + A00040C0400040C0400040C0400000A0000000C0000000C0200000C0200040C0 + 400080E0800080E08000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080E0A00080E0 + A00040C0400040C0400040C0400000A0000000C0000000C0200000C0200040C0 + 400080E0800080E08000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0DCC000C0DCC00080A06000006020000060 + 2000006000000060000000600000006000000060000000600000006000000040 + 00004060400040604000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0DCC000C0DCC00080A06000006020000060 + 2000006000000060000000600000006000000060000000600000006000000040 + 00004060400040604000A4A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0804000C080 + 4000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0804000C0804000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0004060E0004060E0000000000000000000000000000000 + 0000000000000000000080C0800000802000008020000080200000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000A0200000A0200000A0 + 00000080000000800000004000000060200000602000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0804000C080 + 4000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0804000C0804000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0004060E0004060E0000000000000000000000000000000 + 000040A0400040A040000080200000A0400000A0400000C0400000C0400000C0 + 400000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000A0200000A0200000A00000008000000080000000400000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0400000C0400000C0604000C060 + 4000C0400000C0400000C0A08000C0A080000000000000000000C0A08000C0A0 + 8000C0400000C0400000C0604000C0604000C0400000C0400000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0004060E0004060E000C0A0E000C0A0E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0000020E0000020E0004060E0004060E00000000000000000000000000040A0 + 6000008020000080200000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0000000A0000000A00000004000000040 + 0000A4A0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0400000C0400000C0604000C060 + 4000C0400000C0400000C0A08000C0A080000000000000000000C0A08000C0A0 + 8000C0400000C0400000C0604000C0604000C0400000C0400000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0004060E0004060E000C0A0E000C0A0E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0000020E0000020E0004060E0004060E00000000000000000000000000040A0 + 6000008020000080200000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0000000A0000000A00000004000000040 + 0000A4A0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600C0400000C0400000000000000000 + 0000C0808000C0808000C0604000C06040000000000000000000C0604000C060 + 4000C0A08000C0A08000F0FBFF00F0FBFF00C0400000C0400000F0CAA600F0CA + A6000000000000000000000000000000000000000000000000004060E0004060 + E0000020E0000020E0000020E0000020E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004060E0004060E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF000000000080C0800080C080000080 + 200040C0600040C0600040C0600040C0600040C0600000C0400000C0400000C0 + 400000C0400040C0600040C06000000000000000000040C0600040C0600000C0 + 200000C0200000C0200000C0200000C0200000C0200000A0200000A0000000A0 + 000000402000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600C0400000C0400000000000000000 + 0000C0808000C0808000C0604000C06040000000000000000000C0604000C060 + 4000C0A08000C0A08000F0FBFF00F0FBFF00C0400000C0400000F0CAA600F0CA + A6000000000000000000000000000000000000000000000000004060E0004060 + E0000020E0000020E0000020E0000020E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004060E0004060E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF00C0DCC000008020000080200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0400040C0 + 400040C060000000000000000000FFFFFF00FFFFFF0080E0A00080E0A00000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000004080600040806000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00C0400000C0400000C0A08000C0A0 + 8000C0806000C0806000C0600000C06000000000000000000000C0400000C040 + 0000C0808000C0808000C0806000C0806000C0400000C0400000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0000020E0000020E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0008080E0008080 + E0000000000000000000000000000000000080C0600000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0800040C0 + 800000000000FFFFFF00FFFFFF00FFFFFF000000000040C0600040C0600000C0 + 400000C0400000C0400000C0200000C0200000C0200000C0200000C0200000C0 + 200000A020000060000000600000C0DCC0000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00C0400000C0400000C0A08000C0A0 + 8000C0806000C0806000C0600000C06000000000000000000000C0400000C040 + 0000C0808000C0808000C0806000C0806000C0400000C0400000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0000020E0000020E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0008080E0008080 + E0000000000000000000000000000000000080C0600000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0800040C0 + 800000000000FFFFFF00FFFFFF00FFFFFF000000000040C0600040C0600000C0 + 400000C0400000C0400000C0200000C0200000C0200000C0200000C0200000C0 + 200000A020000060000000600000C0DCC0000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0400000C040 + 0000C0600000C0600000C0400000C0400000F0CAA600F0CAA600C0400000C040 + 0000C0600000C0600000C0600000C0600000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0008080E0008080E000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF000000000040C0600000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000C02000008000000080000080A080000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0400000C040 + 0000C0600000C0600000C0400000C0400000F0CAA600F0CAA600C0400000C040 + 0000C0600000C0600000C0600000C0600000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0008080E0008080E000000000000000 + 00000000000000000000000000000000000000A0000040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0800040C0800000000000FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0600000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0200000C0 + 200000C0200000A0200000A02000408040000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A0800080402000804020008060600080606000804020008040 + 2000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080A0E00080A0E0000020E0000020 + E0000020E0000020E0004060E0004060E00080A0E00080A0E0000040E0000040 + E0000020E0000020E0008080E0008080E0000000000000000000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0600040C0600040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C0DCC000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00040C0600000C0400000C0 + 400000C0400000A0200000A02000006020000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A0800080402000804020008060600080606000804020008040 + 2000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080A0E00080A0E0000020E0000020 + E0000020E0000020E0004060E0004060E00080A0E00080A0E0000040E0000040 + E0000020E0000020E0008080E0008080E0000000000000000000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0600040C0600040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C0DCC000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00040C0600000C0400000C0 + 400000C0400000A0200000A02000006020000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0C0C000C0C0C000808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF004040E0004040E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0800040C0800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00000C0400000C0 + 400000C0400000C0200000C02000006000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0C0C000C0C0C000808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF004040E0004040E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0800040C0800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00000C0400000C0 + 400000C0400000A0400000A04000006000000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A000C0A0A000C0A0A0008080800080808000A4A0A000A4A0 + A000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080E0008080E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0600040C0600040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0A00080E0A00080E0A00040C0800040C0400040C0 + 400000C0400000A0400000A04000408040000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A000C0A0A000C0A0A0008080800080808000A4A0A000A4A0 + A000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080E0008080E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200040C0600040C0600040C0 + 600040C0600040C0600040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0A00080E0A00080E0A00040C0800040C0400040C0 + 400000C0400000A0400000A04000408040000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080800080808000A4A0A000A4A0A000C0808000C0808000A4A0A000A4A0 + A000C0808000C0808000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF004060E0004060 + E0000040E0000040E0000040E0000040E0008080E0008080E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF000000000000000000000000000000 + 00000000000000000000000000000000000000A0000040C0800040C0800040C0 + 800040C0600040C0600040C0600040C0800040C0800000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200040A040000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080800080808000A4A0A000A4A0A000C0808000C0808000A4A0A000A4A0 + A000C0808000C0808000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF004060E0004060 + E0000040E0000040E0000040E0000040E0008080E0008080E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF000000000000000000000000000000 + 00000000000000000000000000000000000040C0200040C0600040C0600080E0 + 800040C0800040C0800040C0800040C0600040C0600040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C06000008020000080200080C0A0000000000000000000C0A08000C0A0 + 80000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0A08000C0A0 + 8000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C0C0 + C000C0C0A000C0C0A000A4A0A000A4A0A0000000000000000000808080008080 + 8000C0A0A000C0A0A000C0C0C000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004040E0004040E0000040E0000040 + E0000040E0000040E000C0A0E000C0A0E0000000000000000000F0FBFF00F0FB + FF004060E0004060E0000040E0000040E000C0A0E000C0A0E000000000000000 + 00000000000000000000000000000000000080E0A00000C0200000C0200080E0 + A00080E0A00080E0A00040C0800040C0800040C0800040C0600040C0800040C0 + 800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0800040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000C040000080200000802000000000000000000000000000C0A08000C0A0 + 80000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0A08000C0A0 + 8000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C0C0 + C000C0C0A000C0C0A000A4A0A000A4A0A0000000000000000000808080008080 + 8000C0A0A000C0A0A000C0C0C000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004040E0004040E0000040E0000040 + E0000040E0000040E000C0A0E000C0A0E0000000000000000000F0FBFF00F0FB + FF004060E0004060E0000040E0000040E000C0A0E000C0A0E000000000000000 + 00000000000000000000000000000000000080E0A00000C0200000C0200080E0 + A00080E0A00080E0A00040C0800040C0800040C0800040C0600040C0800040C0 + 800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0800040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000C040000080200000802000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000A4A0A000A4A0A000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF00C0A0A000C0A0A000A4A0A000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E000C0A0E000C0A0E00000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF008080E0008080E0000040E0000040E000C0A0E000C0A0 + E000000000000000000000000000000000000000000040C0200040C0200040C0 + 600080E0A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0 + 800040C080000000000000000000FFFFFF00FFFFFF0080E0A00080E0A00040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000802000C0C0A000C0C0A000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000A4A0A000A4A0A000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF00C0A0A000C0A0A000A4A0A000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E000C0A0E000C0A0E00000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF008080E0008080E0000040E0000040E000C0A0E000C0A0 + E0000000000000000000000000000000000000000000C0DCC000C0DCC00000C0 + 000080E0A00080E0A000C0DCC00080E0A00080E0A00080E0A00080E0800080E0 + 800040C0800040C0800040C08000C0DCC00080E0C00040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600000A0200000A0 + 200040A040000000000000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00808060008080 + 6000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A0008060600080606000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A0E000C0A0E0004060E0004060 + E0000000000000000000000000000000000000000000000000000000000080E0 + A00000C0000000C0000080E0A000C0DCC000C0DCC00080E0A00080E0A00080E0 + A00080E0A00040C0800040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000A0200040A0400040A0 + 4000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00808060008080 + 6000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A0008060600080606000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A0E000C0A0E0004060E0004060 + E0000000000000000000000000000000000000000000000000000000000080E0 + A00000C0000000C0000080E0A000C0DCC000C0DCC00080E0A00080E0A00080E0 + A00080E0A00040C0800040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000A0200040A0400040A0 + 4000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0DCC000C0DCC000808060008080 + 6000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0DCC000C0DCC000000000000000 + 00000000000000000000000000000000000000000000000000000040E0000040 + E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00000C0200040C0600040C06000C0DCC000C0DCC000C0DC + C00080E0A00080E0A00080E0A00080E0800040C0800040C0800040C0800040C0 + 600040C0600040C0600040C0600000A0200000A0200040A04000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0DCC000C0DCC000808060008080 + 6000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0DCC000C0DCC000000000000000 + 00000000000000000000000000000000000000000000000000000040E0000040 + E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC00040C0600040C0600000C0000040C0400040C0 + 400080E0800080E0800080E0800080E0A00080E0800040C0600040C0600040C0 + 400000A0200000A0200000A0200080C0800080C0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0C0C000C0C0C000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC00080E0800080E0 + 800040C0400000C0200000C0200000C0000000A0000040C0400040C0400040C0 + 400080E0A00080E0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0C0C000C0C0C000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC00080E0800080E0 + 800040C0400000C0200000C0200000C0000000A0000040C0400040C0400040C0 + 400080E0A00080E0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000800000000100010000000000000800000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFFFF0FF000000000000000000000000 + FFFFF0FF000000000000000000000000FFFFC03F000000000000000000000000 + FFFFC03F000000000000000000000000FFFFC00F000000000000000000000000 + FFFFC00F000000000000000000000000FFFFF00F000000000000000000000000 + FFFFF00F000000000000000000000000FFFFFC03000000000000000000000000 + FFFFFC03000000000000000000000000C0000C00000000000000000000000000 + C0000C00000000000000000000000000C0000F00000000000000000000000000 + C0000F00000000000000000000000000C0000FC0000000000000000000000000 + C0000FC0000000000000000000000000C003FFC0000000000000000000000000 + C003FFC0000000000000000000000000C000FFC0000000000000000000000000 + C000FFC0000000000000000000000000C0000F00000000000000000000000000 + C0000F00000000000000000000000000C0C00000000000000000000000000000 + C0C00000000000000000000000000000C0F00003000000000000000000000000 + C0F00003000000000000000000000000C0FF0003000000000000000000000000 + C0FF0003000000000000000000000000FFFFF03F000000000000000000000000 + FFFFF03F000000000000000000000000C0000003FFF80FFFFFF00003F000000F + C0000003FF80007FFFF00003F000000F00000000FF80007FF0000003F000000F + 00000000FC00003FF0000003F000000F00000000F000000FC003FFC3F000000F + 00000000E0000007C003FFC3F000000F00000000E0000007C003FFC3F000000F + 0000000080018001C003FFC3F000000F0000000080006000C0030003F300000F + 0000000000011000C0030003F300000F0000000000011000C003FFC3F300000F + 0000000000008C00C003FFC3F300000F0000000000006200C0030003F300000F + 0000000000000180C0030003F300000F0000000000000180C003FF03F3FC000F + 0000000000000040C003FF03F3FC000F03FFFF3000000040C003FF03F3FF000F + 03FFFF3000006180C003FF03F3FF000F0000000000006180C003FF0FF3FFC00F + 0000000000000200C003FF0FF3FFC00F0000000000000C00C000003FF3FFF00F + 0003FF0F80001000C000003FF3FFF00F0003FF0F80001000C000003FF3FFF00F + 300C000F80006001C000003FF3FFF00F300C000FE0000001C000003FF3FFF00F + CFF0FFFFF0000007C000003FF3FFF00FCFF0FFFFF0000007F000003FF3FFF03F + F003FFFFFC00000FF000003FF3FFF03FF003FFFFFE00003FFFC00FFFF00000FF + F003FFFFFFC001FFFFC00FFFF00000FFFFFFFFFFFFC001FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01FFFFFC00003FFFFFFFFFFFFFFFF + FE0001FFFFC00003FFFFFFFFFFFFFFFFFE0001FFFFC00003FF03F03FFFFFFFF0 + FC00003FFFC00003FF03F03FFFFFFFF0F000000FFFC00003FC00C00FC0FFFFC0 + E0000007FFC00003FC00C00FC0FFFFC0E0000007FFC00003FC30C00FC03FFC00 + 80018001FFC00003FC30C00FC03FFC0000060001C0000003FC00C00FC00FF00F + 00088000C0000003FC00C00FC00FF00F00088000C0000003FF00003FF000C03F + 00310000C0000003FF00003FF000C03F00460000C0000003FFC000FFFF0000FF + 01800000C0000003FFC000FFFF0000FF01800000C00FFFC3FFFC0FFFFFC003FF + 02000000C00FFFC3FFFC0FFFFFC003FF02000000C00FFF03FFF003FFFFF003FF + 01860000C00FFF03FFF003FFFFF003FF01860000C00FFF03FFF000FFFF0000FF + 00400000C00FFF03FFF000FFFF0000FF00300000CC0FFF03FFC0C0FFFC00C03F + 00080001CC0FFF03FFC0C0FFFC00C03F00080001CFC0000FFFC0C0FFF003F00F + 80060001CFC0000FFFC0C0FFF003F00F80000007CFFC0FFFFF03F03FC00FFF0F + E000000FCFFC0FFFFF03F03FC00FFF0FE000000FCFFC0FFFFF03FC3FC03FFFFF + F000003FCFFC0FFFFF03FC3FC03FFFFFFC00007FCFC00FFFFF0FFC3FC0FFFFFF + FF8003FFCFC00FFFFF0FFC3FC0FFFFFFFF8003FFC0003FFFFFFFFFFFFFFFFFFF + FFFFFFFFC0003FFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageListExLarge: TImageList + Height = 48 + Width = 48 + Left = 128 + Top = 136 + Bitmap = { + 494C010109000E00040030003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000C0000000C000000001002000000000000040 + 0200000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 6000C0806000C0806000C0600000C0600000C0600000C0400000C0400000C040 + 0000F0CAA600F0CAA600F0CAA600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 6000C0806000C0806000C0600000C0600000C0600000C0400000C0400000C040 + 0000F0CAA600F0CAA600F0CAA600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 6000C0806000C0806000C0600000C0600000C0600000C0400000C0400000C040 + 0000F0CAA600F0CAA600F0CAA600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0604000C0604000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0602000C0602000C0602000C0DCC000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0604000C0604000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0602000C0602000C0602000C0DCC000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0604000C0604000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0602000C0602000C0602000C0DCC000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0602000C0602000C0602000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0602000C0602000C0602000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0602000C0602000C0602000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C080 + 6000C0806000C0806000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0600000C0600000C0600000C0400000C040 + 0000C0400000F0FBFF00F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C080 + 6000C0806000C0806000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0600000C0600000C0600000C0400000C040 + 0000C0400000F0FBFF00F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C080 + 6000C0806000C0806000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0600000C0600000C0600000C0400000C040 + 0000C0400000F0FBFF00F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 4000C0604000C060400000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 4000C0604000C060400000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 4000C0604000C060400000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0402000C0402000C0402000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0402000C0402000C0402000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0402000C0402000C0402000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0800000C0800000C0800000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0800000C0800000C0800000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0800000C0800000C0800000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0800000C0800000C0800000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0800000C0800000C0800000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0800000C0800000C0800000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0804000C0804000C080 + 4000F0CAA600F0CAA600F0CAA600C0600000C0600000C0600000C0800000C080 + 0000C0800000C0600000C0600000C0600000C0604000C0604000C0604000C0DC + C000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0804000C0804000C080 + 4000F0CAA600F0CAA600F0CAA600C0600000C0600000C0600000C0800000C080 + 0000C0800000C0600000C0600000C0600000C0604000C0604000C0604000C0DC + C000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0804000C0804000C080 + 4000F0CAA600F0CAA600F0CAA600C0600000C0600000C0600000C0800000C080 + 0000C0800000C0600000C0600000C0600000C0604000C0604000C0604000C0DC + C000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 2000C0802000C0802000C0A04000C0A04000C0A04000C0804000C0804000C080 + 4000000000000000000000000000F0CAA600F0CAA600F0CAA600C0602000C060 + 2000C0602000C0800000C0800000C0800000C0800000C0800000C0800000C060 + 0000C0600000C0600000C0806000C0806000C0806000C0808000C0808000C080 + 8000C0602000C0602000C0602000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 2000C0802000C0802000C0A04000C0A04000C0A04000C0804000C0804000C080 + 4000000000000000000000000000F0CAA600F0CAA600F0CAA600C0602000C060 + 2000C0602000C0800000C0800000C0800000C0800000C0800000C0800000C060 + 0000C0600000C0600000C0806000C0806000C0806000C0808000C0808000C080 + 8000C0602000C0602000C0602000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 2000C0802000C0802000C0A04000C0A04000C0A04000C0804000C0804000C080 + 4000000000000000000000000000F0CAA600F0CAA600F0CAA600C0602000C060 + 2000C0602000C0800000C0800000C0800000C0800000C0800000C0800000C060 + 0000C0600000C0600000C0806000C0806000C0806000C0808000C0808000C080 + 8000C0602000C0602000C0602000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 4000C0804000C0804000C0C06000C0C06000C0C06000C0804000C0804000C080 + 4000000000000000000000000000000000000000000000000000C0DCC000C0DC + C000C0DCC000C0602000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0402000C040 + 2000C04020000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 4000C0804000C0804000C0C06000C0C06000C0C06000C0804000C0804000C080 + 4000000000000000000000000000000000000000000000000000C0DCC000C0DC + C000C0DCC000C0602000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0402000C040 + 2000C04020000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 4000C0804000C0804000C0C06000C0C06000C0C06000C0804000C0804000C080 + 4000000000000000000000000000000000000000000000000000C0DCC000C0DC + C000C0DCC000C0602000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0402000C040 + 2000C04020000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0806000C0806000C0806000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0A08000C060 + 2000C0602000C0602000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0604000C0604000C0604000C0DCC000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0806000C0806000C0806000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0A08000C060 + 2000C0602000C0602000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0604000C0604000C0604000C0DCC000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0806000C0806000C0806000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0A08000C060 + 2000C0602000C0602000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0604000C0604000C0604000C0DCC000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000A4A0A000A4A0A000406040004060400000400000004000000040 + 0000006000000060000000600000006000000060000000600000006000000060 + 0000006000000060000000600000006020000060200080A0600080A06000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000A4A0A000A4A0A000406040004060400000400000004000000040 + 0000006000000060000000600000006000000060000000600000006000000060 + 0000006000000060000000600000006020000060200080A0600080A06000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C00000A0 + C00000A0C00000A0C00000A0C00000A0C00000A0C00000A0C000C0808000C080 + 8000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC0000060 + 2000006020000040000000400000008000000080000000A0000000A0000000A0 + 000000A0200000A0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000802000008020000080 + 20000080200080C0800080C08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C00000A0 + C00000A0C00000A0C00000A0C00000A0C00000A0C00000A0C000C0808000C080 + 8000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC0000060 + 2000006020000040000000400000008000000080000000A0000000A0000000A0 + 000000A0200000A0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000802000008020000080 + 20000080200080C0800080C08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C00000A0 + C00000A0C00000A0C00000A0C00000A0C00000A0C00000A0C000C0808000C080 + 8000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 0000000000000000000000000000A4A0A000A4A0A00000400000004000000080 + 00000080000000A0000000A0000000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000A0 + 400000A04000008020000080200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF0000A0C00000A0C00000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 0000000000000000000000000000A4A0A000A4A0A00000400000004000000080 + 00000080000000A0000000A0000000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000A0 + 400000A04000008020000080200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF0000A0C00000A0C00000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 0000A4A0A000A4A0A000A4A0A000004000000040000000A0000000A0000000A0 + 000000A0000000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C04000008020000080200040A0600040A0600040A0 + 600000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF0000A0C00000A0C00000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000000000000000 + 0000A4A0A000A4A0A000A4A0A000004000000040000000A0000000A0000000A0 + 000000A0000000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C04000008020000080200040A0600040A0600040A0 + 60000000000000000000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000C0DCC000C0DC + C00000402000004020000040200000A0000000A0000000A0200000A0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0400000C0400040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 200080C0800080C08000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000C0DCC000C0DC + C00000402000004020000040200000A0000000A0000000A0200000A0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0400000C0400040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 200080C0800080C08000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000408060004080 + 600000800000008000000080000000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 60000080200000802000C0DCC000C0DCC00000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A006565650065656500656565000000000000000000408060004080 + 600000800000008000000080000000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 60000080200000802000C0DCC000C0DCC00000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D00C0DCC000C0DCC000006000000060 + 000000A0200000A0200000A0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200080C0600080C0600000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D00C0DCC000C0DCC000006000000060 + 000000A0200000A0200000A0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200080C0600080C0600000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D0080A0800080A08000008000000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D0080A0800080A08000008000000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D00408040004080400000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C0600040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D00408040004080400000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C0600040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D00006020000060200000A0200000A0 + 200000C0400000C0400000C0400000C0400000C0400040C0600040C0600080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DCC000C0DC + C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA000696969006969690069696900006020000060200000A0200000A0 + 200000C0400000C0400000C0400000C0400000C0400040C0600040C0600080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DCC000C0DC + C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA000696969006969690069696900006000000060000000C0200000C0 + 200000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA000696969006969690069696900006000000060000000C0200000C0 + 200000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C00006000000060000000A0400000A0 + 400000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C00006000000060000000A0400000A0 + 400000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C00408040004080400000A0400000A0 + 400000C0400000C0400000C0400040C0400040C0400040C0800040C0800080E0 + A00080E0A00080E0A00080E0A00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0C000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB00408040004080400000A0400000A0 + 400000C0400000C0400000C0400040C0400040C0400040C0800040C0800080E0 + A00080E0A00080E0A00080E0A00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0C000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB0040A0400040A0400000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A00080E0A000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0800040C0800040C0 + 800040C0800040C0800000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB0040A0400040A0400000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A00080E0A000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0800040C0800040C0 + 800040C0800040C0800000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB0080C0A00080C0A000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0800040C0800040C0800040C0800080E0800080E0800080E0 + 800040C0600040C0600040C0200040C0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 00000000000000000000000000000000000080C0A00080C0A000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0800040C0800040C0800040C0800080E0800080E0800080E0 + 800040C0600040C0600040C0200040C0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000008020000080 + 200000C0400000C0400000C0400040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 800040C0800040C0800040C0800080E0A00080E0A00080E0A00080E0A00080E0 + A00000C0200000C0200080E0A00080E0A00000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000008020000080 + 200000C0400000C0400000C0400040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 800040C0800040C0800040C0800080E0A00080E0A00080E0A00080E0A00080E0 + A00000C0200000C0200080E0A00080E0A00000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000C0C0A000C0C0 + A00000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0800040C0800040C0800040C0800040C0800040C0800040C0800080E0 + 800080E0800080E0A00080E0A00080E0A00080E0A00040C0600040C0600040C0 + 600040C0200040C02000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000C0C0A000C0C0 + A00000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0800040C0800040C0800040C0800040C0800040C0800040C0800080E0 + 800080E0800080E0A00080E0A00080E0A00080E0A00040C0600040C0600040C0 + 600040C0200040C02000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040A0400040A0400040A0400000A0200000A0200040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0C00080E0C000C0DCC000C0DCC00040C0800040C0 + 800040C0800040C0800040C0800080E0800080E0800080E0A00080E0A00080E0 + A00080E0A000C0DCC000C0DCC00080E0A00080E0A00000C0000000C0000000C0 + 0000C0DCC000C0DCC000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000C0DC + C000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800080A0A00080A0A00080A0A000F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040A0400040A0400040A0400000A0200000A0200040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0C00080E0C000C0DCC000C0DCC00040C0800040C0 + 800040C0800040C0800040C0800080E0800080E0800080E0A00080E0A00080E0 + A00080E0A000C0DCC000C0DCC00080E0A00080E0A00000C0000000C0000000C0 + 0000C0DCC000C0DCC000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000C0DC + C000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800080A0A00080A0A00080A0A000F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000040A0400040A0400000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C0800040C0800040C0 + 800080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00000C0000000C0000080E0A00080E0A00080E0 + A0000000000000000000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000C0DC + C000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800080A0A00080A0A00080A0A000F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000040A0400040A0400000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C0800040C0800040C0 + 800080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00000C0000000C0000080E0A00080E0A00080E0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040C0E00040C0E00040C0E00080E0E00080E0E00080E0 + E00080A0A00080A0A00080A0A000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0 + A00080A0A00080A0A00040A0C00040A0C00040A0C00040A0E00040A0E00040A0 + E000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040A0400040A0400000A0 + 200000A0200040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C0800040C0800040C0800080E0800080E0800080E0A00080E0 + A00080E0A00080E0A00080E0A000C0DCC000C0DCC000C0DCC000C0DCC00040C0 + 600040C0600000C0200000C0200080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040C0E00040C0E00040C0E00080E0E00080E0E00080E0 + E00080A0A00080A0A00080A0A000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0 + A00080A0A00080A0A00040A0C00040A0C00040A0C00040A0E00040A0E00040A0 + E000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040A0400040A0400000A0 + 200000A0200040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C0800040C0800040C0800080E0800080E0800080E0A00080E0 + A00080E0A00080E0A00080E0A000C0DCC000C0DCC000C0DCC000C0DCC00040C0 + 600040C0600000C0200000C0200080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040C0E00040C0E00040C0E00080E0E00080E0E00080E0 + E00080A0A00080A0A00080A0A000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0 + A00080A0A00080A0A00040A0C00040A0C00040A0C00040A0E00040A0E00040A0 + E000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + 800080C0800000A0200000A0200000A0200000A0200040C0400040C0400040C0 + 400040C0600040C0600080E0800080E0800080E0A00080E0A00080E0800080E0 + 800080E0800080E0800080E0800040C0400040C0400000C0000000C0000040C0 + 600040C06000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + 800080C0800000A0200000A0200000A0200000A0200040C0400040C0400040C0 + 400040C0600040C0600080E0800080E0800080E0A00080E0A00080E0800080E0 + 800080E0800080E0800080E0800040C0400040C0400000C0000000C0000040C0 + 600040C06000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00040C0400040C0400040C0 + 400040C0400040C0400000A0000000A0000000C0000000C0000000C0200000C0 + 200040C0400040C0400040C0400080E0800080E08000C0DCC000C0DCC0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00040C0400040C0400040C0 + 400040C0400040C0400000A0000000A0000000C0000000C0000000C0200000C0 + 200040C0400040C0400040C0400080E0800080E08000C0DCC000C0DCC0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0DCC00080A0600080A06000006020000060200000600000006000000060 + 0000006000000060000000600000006000000060000000600000006000000060 + 00000040000000400000004000004060400040604000A4A0A000A4A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0DCC00080A0600080A06000006020000060200000600000006000000060 + 0000006000000060000000600000006000000060000000600000006000000060 + 00000040000000400000004000004060400040604000A4A0A000A4A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0804000C0804000C0804000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0804000C0804000C080 + 4000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E000C0A0E0004060E0004060E0004060E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000080C0800080C080000080 + 200000802000008020000080200000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000A0200000A0 + 200000A0000000A0000000A00000008000000080000000400000004000000060 + 200000602000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0804000C0804000C0804000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0804000C0804000C080 + 4000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E000C0A0E0004060E0004060E0004060E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000080C0800080C080000080 + 200000802000008020000080200000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000A0200000A0 + 200000A0000000A0000000A00000008000000080000000400000004000000060 + 200000602000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0804000C0804000C0804000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0804000C0804000C080 + 4000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E000C0A0E0004060E0004060E0004060E0000000000000000000000000000000 + 000000000000000000000000000040A0400040A04000008020000080200000A0 + 400000A0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000A0000000A000000080 + 0000008000000040000000400000A4A0A000A4A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0604000C0604000C0604000C0400000C040 + 0000C0400000C0A08000C0A08000C0A08000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0400000C0400000C0400000C0604000C0604000C060 + 4000C0400000C0400000C0400000C0DCC000C0DCC000C0DCC000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0004060E0004060E0004060E000C0A0E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080E0008080E0008080E0000020E0000020 + E0000020E0004060E0004060E0004060E0000000000000000000000000000000 + 000000000000000000000000000040A0400040A04000008020000080200000A0 + 400000A0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000A0000000A000000080 + 0000008000000040000000400000A4A0A000A4A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0604000C0604000C0604000C0400000C040 + 0000C0400000C0A08000C0A08000C0A08000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0400000C0400000C0400000C0604000C0604000C060 + 4000C0400000C0400000C0400000C0DCC000C0DCC000C0DCC000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0004060E0004060E0004060E000C0A0E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080E0008080E0008080E0000020E0000020 + E0000020E0004060E0004060E0004060E0000000000000000000000000000000 + 000040A0600040A0600040A06000008020000080200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000A0 + 000000A0000000A0000000A000000040000000400000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0604000C0604000C0604000C0400000C040 + 0000C0400000C0A08000C0A08000C0A08000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0400000C0400000C0400000C0604000C0604000C060 + 4000C0400000C0400000C0400000C0DCC000C0DCC000C0DCC000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0004060E0004060E0004060E000C0A0E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080E0008080E0008080E0000020E0000020 + E0000020E0004060E0004060E0004060E0000000000000000000000000000000 + 000040A0600040A0600040A06000008020000080200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000A0 + 000000A0000000A0000000A000000040000000400000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600F0CAA600F0CA + A600C0400000C0400000C0400000000000000000000000000000C0808000C080 + 8000C0808000C0604000C0604000C0604000000000000000000000000000C060 + 4000C0604000C0604000C0A08000C0A08000C0A08000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000004060 + E0004060E0004060E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004060E0004060E0004060E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000080C0800080C0 + 800000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000A0200000A0200000A0000000A0000000402000004020000040 + 2000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600F0CAA600F0CA + A600C0400000C0400000C0400000000000000000000000000000C0808000C080 + 8000C0808000C0604000C0604000C0604000000000000000000000000000C060 + 4000C0604000C0604000C0A08000C0A08000C0A08000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000004060 + E0004060E0004060E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004060E0004060E0004060E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000080C0800080C0 + 800000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000A0200000A0200000A0000000A0000000402000004020000040 + 2000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600F0CAA600F0CA + A600C0400000C0400000C0400000000000000000000000000000C0808000C080 + 8000C0808000C0604000C0604000C0604000000000000000000000000000C060 + 4000C0604000C0604000C0A08000C0A08000C0A08000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000004060 + E0004060E0004060E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004060E0004060E0004060E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 60000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000800000008000000080 + 000040806000408060000000000000000000000000000000000000000000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000C0A08000C0A08000C0A08000C0806000C080 + 6000C0806000C0600000C0600000C0600000000000000000000000000000C040 + 0000C0400000C0400000C0808000C0808000C0808000C0806000C0806000C080 + 6000C0400000C0400000C0400000F0FBFF00F0FBFF00F0FBFF00000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 000000000000000000000000000000000000C0DCC000C0DCC000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 60000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000800000008000000080 + 000040806000408060000000000000000000000000000000000000000000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000C0A08000C0A08000C0A08000C0806000C080 + 6000C0806000C0600000C0600000C0600000000000000000000000000000C040 + 0000C0400000C0400000C0808000C0808000C0808000C0806000C0806000C080 + 6000C0400000C0400000C0400000F0FBFF00F0FBFF00F0FBFF00000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 00000000000000000000000000000000000080C0600080C0600000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000A0200000A0200000A0 + 20000060000000600000C0DCC000C0DCC000000000000000000000000000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000C0A08000C0A08000C0A08000C0806000C080 + 6000C0806000C0600000C0600000C0600000000000000000000000000000C040 + 0000C0400000C0400000C0808000C0808000C0808000C0806000C0806000C080 + 6000C0400000C0400000C0400000F0FBFF00F0FBFF00F0FBFF00000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 00000000000000000000000000000000000080C0600080C0600000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000A0200000A0200000A0 + 20000060000000600000C0DCC000C0DCC000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0A08000C0A08000C0A08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000000080000080A0800080A08000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0A08000C0A08000C0A08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000000080000080A0800080A08000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0A08000C0A08000C0A08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000A0200000A020004080400040804000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000C0A080008040200080402000804020008060600080606000806060008040 + 20008040200080402000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080A0E00080A0E00080A0E0000020E0000020E0000020E0000020E0000020 + E0000020E0004060E0004060E0004060E00080A0E00080A0E00080A0E0000040 + E0000040E0000040E0000020E0000020E0000020E0008080E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000A0200000A020004080400040804000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000C0A080008040200080402000804020008060600080606000806060008040 + 20008040200080402000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080A0E00080A0E00080A0E0000020E0000020E0000020E0000020E0000020 + E0000020E0004060E0004060E0004060E00080A0E00080A0E00080A0E0000040 + E0000040E0000040E0000020E0000020E0000020E0008080E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00C0DCC000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00040C0600040C0600000C0400000C0400000C0400000C0400000C0 + 400000A0200000A020000060200000602000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000C0A080008040200080402000804020008060600080606000806060008040 + 20008040200080402000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080A0E00080A0E00080A0E0000020E0000020E0000020E0000020E0000020 + E0000020E0004060E0004060E0004060E00080A0E00080A0E00080A0E0000040 + E0000040E0000040E0000020E0000020E0000020E0008080E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00C0DCC000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00040C0600040C0600000C0400000C0400000C0400000C0400000C0 + 400000A0200000A020000060200000602000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000808060008080600080806000C0C0C000C0C0C000C0C0C0008080 + 6000808060008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF004040E0004040 + E0004040E0000020E0000020E0000020E0000020E0000020E0000020E0000020 + E0000020E0000020E0008080E0008080E0008080E00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000C0200000C020000060000000600000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000808060008080600080806000C0C0C000C0C0C000C0C0C0008080 + 6000808060008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF004040E0004040 + E0004040E0000020E0000020E0000020E0000020E0000020E0000020E0000020 + E0000020E0000020E0008080E0008080E0008080E00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000C0200000C020000060000000600000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000808060008080600080806000C0C0C000C0C0C000C0C0C0008080 + 6000808060008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF004040E0004040 + E0004040E0000020E0000020E0000020E0000020E0000020E0000020E0000020 + E0000020E0000020E0008080E0008080E0008080E00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000A0400000A040000060000000600000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000C0A0A000C0A0A000C0A0A000C0A0A000808080008080800080808000A4A0 + A000A4A0A000A4A0A000C0A0A000C0A0A000C0A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0008080E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000A0400000A040000060000000600000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000C0A0A000C0A0A000C0A0A000C0A0A000808080008080800080808000A4A0 + A000A4A0A000A4A0A000C0A0A000C0A0A000C0A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0008080E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000080E0C00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0A00080E0A00080E0 + A00080E0A00040C0800040C0800040C0400040C0400000C0400000C0400000C0 + 400000A0400000A040004080400040804000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000C0A0A000C0A0A000C0A0A000C0A0A000808080008080800080808000A4A0 + A000A4A0A000A4A0A000C0A0A000C0A0A000C0A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0008080E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000080E0C00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0A00080E0A00080E0 + A00080E0A00040C0800040C0800040C0400040C0400000C0400000C0400000C0 + 400000A0400000A040004080400040804000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 800080808000A4A0A000A4A0A000A4A0A000C0808000C0808000C0808000A4A0 + A000A4A0A000A4A0A000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040 + E0000040E0000040E0000040E0000040E0008080E0008080E0008080E0000040 + E0000040E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0800040C0 + 800040C0800040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200040A0400040A04000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 800080808000A4A0A000A4A0A000A4A0A000C0808000C0808000C0808000A4A0 + A000A4A0A000A4A0A000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040 + E0000040E0000040E0000040E0000040E0008080E0008080E0008080E0000040 + E0000040E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0800040C0 + 800040C0800040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200040A0400040A04000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 800080808000A4A0A000A4A0A000A4A0A000C0808000C0808000C0808000A4A0 + A000A4A0A000A4A0A000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040 + E0000040E0000040E0000040E0000040E0008080E0008080E0008080E0000040 + E0000040E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000040C0200040C0200040C0600040C0 + 600080E0800080E0800080E0800040C0800040C0800040C0800040C0800040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 6000008020000080200080C0A00080C0A000000000000000000000000000C0A0 + 8000C0A08000C0A08000000000000000000000000000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0A000C0C0 + A000C0C0A000A4A0A000A4A0A000A4A0A0000000000000000000000000008080 + 80008080800080808000C0A0A000C0A0A000C0A0A000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004040E0004040E0004040E0000040E0000040E0000040E0000040E0000040 + E0000040E000C0A0E000C0A0E000C0A0E000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040E0000040 + E000C0A0E000C0A0E000C0A0E000000000000000000000000000000000000000 + 00000000000000000000000000000000000040C0200040C0200040C0600040C0 + 600080E0800080E0800080E0800040C0800040C0800040C0800040C0800040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 6000008020000080200080C0A00080C0A000000000000000000000000000C0A0 + 8000C0A08000C0A08000000000000000000000000000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0A000C0C0 + A000C0C0A000A4A0A000A4A0A000A4A0A0000000000000000000000000008080 + 80008080800080808000C0A0A000C0A0A000C0A0A000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004040E0004040E0004040E0000040E0000040E0000040E0000040E0000040 + E0000040E000C0A0E000C0A0E000C0A0E000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040E0000040 + E000C0A0E000C0A0E000C0A0E000000000000000000000000000000000000000 + 00000000000000000000000000000000000080E0A00080E0A00000C0200000C0 + 200080E0A00080E0A00080E0A00080E0A00080E0A00040C0800040C0800040C0 + 800040C0800040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000C0400000C0400000C0 + 400000802000008020000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000000000000000000000000000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0A000C0C0 + A000C0C0A000A4A0A000A4A0A000A4A0A0000000000000000000000000008080 + 80008080800080808000C0A0A000C0A0A000C0A0A000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004040E0004040E0004040E0000040E0000040E0000040E0000040E0000040 + E0000040E000C0A0E000C0A0E000C0A0E000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040E0000040 + E000C0A0E000C0A0E000C0A0E000000000000000000000000000000000000000 + 00000000000000000000000000000000000080E0A00080E0A00000C0200000C0 + 200080E0A00080E0A00080E0A00080E0A00080E0A00040C0800040C0800040C0 + 800040C0800040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000C0400000C0400000C0 + 400000802000008020000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A0A000C0A0A000A4A0A000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF00C0A0A000C0A0A000C0A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E000C0A0E000C0A0E0000040E0000040E0000040 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000C0A0E0000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 000000000000000000000000000000000000000000000000000040C0200040C0 + 200040C0600040C0600040C0600080E0A00080E0A00080E0A00080E0A00080E0 + 800080E0800040C0800040C0800040C0800040C0800040C0800040C0800040C0 + 80000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 2000C0C0A000C0C0A0000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A0A000C0A0A000A4A0A000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF00C0A0A000C0A0A000C0A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E000C0A0E000C0A0E0000040E0000040E0000040 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000C0A0E0000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 000000000000000000000000000000000000000000000000000040C0200040C0 + 200040C0600040C0600040C0600080E0A00080E0A00080E0A00080E0A00080E0 + 800080E0800040C0800040C0800040C0800040C0800040C0800040C0800040C0 + 80000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 2000C0C0A000C0C0A0000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A0A000C0A0A000A4A0A000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF00C0A0A000C0A0A000C0A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E000C0A0E000C0A0E0000040E0000040E0000040 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000C0A0E0000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC000C0DC + C00000C0000000C0000000C0000080E0A00080E0A000C0DCC000C0DCC00080E0 + A00080E0A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0 + 800040C0800040C08000C0DCC000C0DCC00080E0C00080E0C00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600000A0200000A0200040A0400040A0400040A0 + 400000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00808060008080600080806000C0A0A000C0A0 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A00080606000806060008060 + 6000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0004060E0004060E0004060E000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC000C0DC + C00000C0000000C0000000C0000080E0A00080E0A000C0DCC000C0DCC00080E0 + A00080E0A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0 + 800040C0800040C08000C0DCC000C0DCC00080E0C00080E0C00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600000A0200000A0200040A0400040A0400040A0 + 400000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00808060008080600080806000C0A0A000C0A0 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A00080606000806060008060 + 6000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0004060E0004060E0004060E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00080E0A00000C0000000C0000080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00040C0800040C0800040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00808060008080600080806000C0A0A000C0A0 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A00080606000806060008060 + 6000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0004060E0004060E0004060E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00080E0A00000C0000000C0000080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00040C0800040C0800040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000808060008080600080806000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080806000808060008080 + 6000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000040 + E0000040E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00000C0200000C0200040C0 + 600040C06000C0DCC000C0DCC000C0DCC000C0DCC00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600000A0 + 200000A0200040A0400040A04000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000808060008080600080806000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080806000808060008080 + 6000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000040 + E0000040E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00000C0200000C0200040C0 + 600040C06000C0DCC000C0DCC000C0DCC000C0DCC00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600000A0 + 200000A0200040A0400040A04000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000808060008080600080806000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080806000808060008080 + 6000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000040 + E0000040E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC00040C0 + 600040C0600000C0000000C0000040C0400040C0400080E0800080E0800080E0 + 800080E0800080E0800080E0A00080E0A00080E0800080E0800040C0600040C0 + 600040C0400040C0400040C0400000A0200000A0200000A0200000A0200080C0 + 800080C080000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC00040C0 + 600040C0600000C0000000C0000040C0400040C0400080E0800080E0800080E0 + 800080E0800080E0800080E0A00080E0A00080E0800080E0800040C0600040C0 + 600040C0400040C0400040C0400000A0200000A0200000A0200000A0200080C0 + 800080C080000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0DCC000C0DCC00080E0800080E0800040C0400040C0400040C0 + 400000C0200000C0200000C0000000C0000000A0000000A0000040C0400040C0 + 400040C0400040C0400040C0400080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0DCC000C0DCC00080E0800080E0800040C0400040C0400040C0 + 400000C0200000C0200000C0000000C0000000A0000000A0000040C0400040C0 + 400040C0400040C0400040C0400080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000C0000000C00000000100010000000000001200000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFFFFFF00000000000000000000 + 0000000000000000FFFFFFFFFFFF000000000000000000000000000000000000 + FFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFC0FFF0000 + 00000000000000000000000000000000FFFFFFFC0FFF00000000000000000000 + 0000000000000000FFFFFFFC0FFF000000000000000000000000000000000000 + FFFFFFE001FF000000000000000000000000000000000000FFFFFFE001FF0000 + 00000000000000000000000000000000FFFFFFE001FF00000000000000000000 + 0000000000000000FFFFFFE0003F000000000000000000000000000000000000 + FFFFFFE0003F000000000000000000000000000000000000FFFFFFE0003F0000 + 00000000000000000000000000000000FFFFFFFC003F00000000000000000000 + 0000000000000000FFFFFFFC003F000000000000000000000000000000000000 + FFFFFFFC003F000000000000000000000000000000000000FFFFFFFF80070000 + 00000000000000000000000000000000FFFFFFFF800700000000000000000000 + 0000000000000000FFFFFFFF8007000000000000000000000000000000000000 + E00000038000000000000000000000000000000000000000E000000380000000 + 00000000000000000000000000000000E0000003800000000000000000000000 + 0000000000000000E0000003F000000000000000000000000000000000000000 + E0000003F000000000000000000000000000000000000000E0000003F0000000 + 00000000000000000000000000000000E0000003FE0000000000000000000000 + 0000000000000000E0000003FE00000000000000000000000000000000000000 + E0000003FE00000000000000000000000000000000000000E00007FFFE000000 + 00000000000000000000000000000000E00007FFFE0000000000000000000000 + 0000000000000000E00007FFFE00000000000000000000000000000000000000 + E00000FFFE00000000000000000000000000000000000000E00000FFFE000000 + 00000000000000000000000000000000E00000FFFE0000000000000000000000 + 0000000000000000E0000003F000000000000000000000000000000000000000 + E0000003F000000000000000000000000000000000000000E0000003F0000000 + 00000000000000000000000000000000E00E0000000000000000000000000000 + 0000000000000000E00E00000000000000000000000000000000000000000000 + E00E00000000000000000000000000000000000000000000E00FC00000070000 + 00000000000000000000000000000000E00FC000000700000000000000000000 + 0000000000000000E00FC0000007000000000000000000000000000000000000 + E00FFF000007000000000000000000000000000000000000E00FFF0000070000 + 00000000000000000000000000000000E00FFF00000700000000000000000000 + 0000000000000000FFFFFFFC01FF000000000000000000000000000000000000 + FFFFFFFC01FF000000000000000000000000000000000000FFFFFFFC01FF0000 + 00000000000000000000000000000000E00000000007FFFFF001FFFFFFFFC000 + 0007FC000000003FE00000000007FFFFF001FFFFFFFFC0000007FC000000003F + E00000000007FFF8000007FFFFFFC0000007FC000000003F000000000000FFF8 + 000007FFFC0000000007FC000000003F000000000000FF80000001FFFC000000 + 0007FC000000003F000000000000FF80000001FFFC0000000007FC000000003F + 000000000000FE000000007FE00007FFFE07FC000000003F000000000000FE00 + 0000007FE00007FFFE07FC000000003F000000000000F0000000000FE00007FF + FE07FC000000003F000000000000F0000000000FE00007FFFE07FC000000003F + 000000000000C00003C00003E00007FFFE07FC000000003F000000000000C000 + 03C00003E00007FFFE07FC000000003F000000000000C00000300000E0000700 + 0007FC700000003F000000000000C00000300000E00007000007FC700000003F + 0000000000000000030E0000E00007000007FC700000003F0000000000000000 + 030E0000E00007FFFE07FC700000003F000000000000000000C18000E00007FF + FE07FC700000003F000000000000000000C18000E00007FFFE07FC700000003F + 000000000000000000306000E00007000007FC700000003F0000000000000000 + 00306000E00007000007FC700000003F000000000000000000001800E0000700 + 0007FC700000003F000000000000000000001800E00007FFF007FC7FF800003F + 000000000000000000000600E00007FFF007FC7FF800003F0000000000000000 + 00000600E00007FFF007FC7FF800003F007FFFFFF1C0000000000600E00007FF + F007FC7FFF00003F007FFFFFF1C0000000000600E00007FFF007FC7FFF00003F + 007FFFFFF1C0000000301800E00007FFF007FC7FFF00003F0000000000000000 + 00301800E00007FFF03FFC7FFFE0003F000000000000000000006000E00007FF + F03FFC7FFFE0003F000000000000000000006000E00007FFF03FFC7FFFE0003F + 000000000000000000018000E000000001FFFC7FFFFC003F000007FFF03F0000 + 00018000E000000001FFFC7FFFFC003F000007FFF03FC000000E0000E0000000 + 01FFFC7FFFFC003F000007FFF03FC000000E0000E000000001FFFC7FFFFC003F + 1C003800003FC00000300003E000000001FFFC7FFFFC003F1C003800003FC000 + 00300003E000000001FFFC7FFFFC003F1C003800003FF00000000003E0000000 + 01FFFC7FFFFC003F1C003800003FF00000000003E000000001FFFC7FFFFC003F + E3FFC0FFFFFFFE000000000FE000000001FFFC7FFFFC003FE3FFC0FFFFFFFE00 + 0000000FFC00000001FFFC7FFFFC01FFE3FFC0FFFFFFFF800000007FFC000000 + 01FFFC7FFFFC01FFFC0007FFFFFFFF800000007FFC00000001FFFC7FFFFC01FF + FC0007FFFFFFFFE0000001FFFFFE0003FFFFFC0000000FFFFC0007FFFFFFFFE0 + 000001FFFFFE0003FFFFFC0000000FFFFC0007FFFFFFFFFE00001FFFFFFE0003 + FFFFFC0000000FFFFFFFFFFFFFFFFFFE00001FFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFE00000007FFFFFFFF + FFFFFFFFFFFFFFFFFFFF800FFFFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFF + FFE000001FFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFFFFE000001FFFFFFE + 00000007FFF007FC01FFFFFFFFFFFFC0FF80000001FFFFFE00000007FFF007FC + 01FFFFFFFFFFFFC0FF80000001FFFFFE00000007FFF007FC01FFFFFFFFFFFFC0 + FE000000007FFFFE00000007FF8000E0003FE00FFFFFFE00FE000000007FFFFE + 00000007FF8000E0003FE00FFFFFFE00F0000000000FFFFE00000007FF8000E0 + 003FE00FFFFFFE00F0000000000FFFFE00000007FF81C0E0003FE001FFFF8000 + C00003C00003FFFE00000007FF81C0E0003FE001FFFF8000C00003C00003FFFE + 00000007FF81C0E0003FE001FFFF800000000C000003E00000000007FF8000E0 + 003FE0003FFC003F00000C000003E00000000007FF8000E0003FE0003FFC003F + 000070C00000E00000000007FF8000E0003FE0003FFC003F000070C00000E000 + 00000007FFF0000001FFFC0000E001FF000183000000E00000000007FFF00000 + 01FFFC0000E001FF000183000000E00000000007FFF0000001FFFC0000E001FF + 00060C000000E00000000007FFFE00000FFFFFF000000FFF00060C000000E000 + 00000007FFFE00000FFFFFF000000FFF001800000000E00000000007FFFE0000 + 0FFFFFF000000FFF001800000000E0003FFFFE07FFFFF803FFFFFFFE00007FFF + 006000000000E0003FFFFE07FFFFF803FFFFFFFE00007FFF006000000000E000 + 3FFFFE07FFFFF803FFFFFFFE00007FFF006000000000E0003FFFF007FFFFC000 + 7FFFFFFFC0007FFF006000000000E0003FFFF007FFFFC0007FFFFFFFC0007FFF + 00180C000000E0003FFFF007FFFFC0007FFFFFFFC0007FFF00180C000000E000 + 3FFFF007FFFFC0000FFFFFF000000FFF000600000000E0003FFFF007FFFFC000 + 0FFFFFF000000FFF000600000000E0003FFFF007FFFFC0000FFFFFF000000FFF + 000180000000E3803FFFF007FFFE00E00FFFFF8000E001FF000180000000E380 + 3FFFF007FFFE00E00FFFFF8000E001FF000070000003E3803FFFF007FFFE00E0 + 0FFFFF8000E001FF000070000003E3FE0000003FFFFE00E00FFFFC0007FC003F + C0000C000003E3FE0000003FFFFE00E00FFFFC0007FC003FC0000C000003E3FE + 0000003FFFFE00E00FFFFC0007FC003FC0000000000FE3FFF803FFFFFFF007FC + 01FFE0003FFFF03FC0000000000FE3FFF803FFFFFFF007FC01FFE0003FFFF03F + F0000000007FE3FFF803FFFFFFF007FC01FFE0003FFFF03FF0000000007FE3FF + F803FFFFFFF007FF81FFE001FFFFFFFFFE00000001FFE3FFF803FFFFFFF007FF + 81FFE001FFFFFFFFFE00000001FFE3FFF803FFFFFFF007FF81FFE001FFFFFFFF + FF80000007FFE3FE0003FFFFFFF03FFF81FFE00FFFFFFFFFFF80000007FFE3FE + 0003FFFFFFF03FFF81FFE00FFFFFFFFFFFF800007FFFE3FE0003FFFFFFF03FFF + 81FFE00FFFFFFFFFFFF800007FFFE000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFE000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000 + 001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageListGroups: TImageList + Left = 64 + Top = 176 + end + object ImageListHeader: TImageList + Left = 64 + Top = 208 + end +end diff --git a/official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.pas b/official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.pas new file mode 100644 index 0000000..83bbede --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Image CustomDraw/Unit1.pas @@ -0,0 +1,259 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, EasyListview, StdCtrls, ExtCtrls, ImgList, + MPCommonUtilities, ActiveX, MPCommonObjects; + +type + TForm1 = class(TForm) + EasyListview1: TEasyListview; + Panel1: TPanel; + cbViews: TComboBox; + ImageListSmall: TImageList; + ImageListLarge: TImageList; + ImageListExLarge: TImageList; + Checkbox1: TCheckBox; + ImageListGroups: TImageList; + ImageListHeader: TImageList; + procedure FormShow(Sender: TObject); + procedure cbViewsChange(Sender: TObject); + procedure CheckBox1Click(Sender: TObject); + procedure EasyListview1ItemImageDrawIsCustom( + Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; + var IsCustom: Boolean); + procedure EasyListview1ItemImageGetSize(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; var ImageWidth, + ImageHeight: Integer); + procedure EasyListview1ColumnImageDrawIsCustom( + Sender: TCustomEasyListview; Column: TEasyColumn; + var IsCustom: Boolean); + procedure EasyListview1ColumnImageGetSize(Sender: TCustomEasyListview; + Column: TEasyColumn; var ImageWidth, ImageHeight: Integer); + procedure EasyListview1GroupImageDrawIsCustom( + Sender: TCustomEasyListview; Group: TEasyGroup; + var IsCustom: Boolean); + procedure EasyListview1GroupImageGetSize(Sender: TCustomEasyListview; + Group: TEasyGroup; var ImageWidth, ImageHeight: Integer); + procedure EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); + procedure EasyListview1ColumnImageDraw(Sender: TCustomEasyListview; + Column: TEasyColumn; ACanvas: TCanvas; + const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); + procedure EasyListview1GroupImageDraw(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); + procedure EasyListview1ItemImageDraw(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); + procedure FormDestroy(Sender: TObject); + procedure CheckBoxUseBitmapClick(Sender: TObject); + private + { Private declarations } + FLargeCustomImage: TBitmap; + FSmallCustomImage: TBitmap; + public + { Public declarations } + procedure MapImageCustomImageSize(var ImageHeight, ImageWidth: Integer); + property LargeCustomImage: TBitmap read FLargeCustomImage write FLargeCustomImage; + property SmallCustomImage: TBitmap read FSmallCustomImage write FSmallCustomImage; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.MapImageCustomImageSize(var ImageHeight, + ImageWidth: Integer); +begin + case EasyListview1.View of + elsIcon: + begin + ImageWidth := 32; + ImageHeight := 32; + end; + elsSmallIcon, + elsList, + elsReport, + elsGrid: + begin + ImageWidth := 16; + ImageHeight := 16; + end; + elsThumbnail, + elsFilmStrip, + elsTile: + begin + ImageWidth := 48; + ImageHeight := 48; + end; + end; +end; + +procedure TForm1.FormShow(Sender: TObject); +var + i, j: Integer; + Group: TEasyGroup; + Item: TEasyItem; + Column: TEasyColumn; +begin + LargeCustomImage := TBitmap.Create; + LargeCustomImage.LoadFromFile('XPSearch.bmp'); + SmallCustomImage := TBitmap.Create; + SmallCustomImage.LoadFromFile('XPSearch_Small.bmp'); + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(EasyListview1.View); + for i := 0 to 10 do + begin + Group := EasyListview1.Groups.Add; + Group.Caption := 'Group: ' + IntToStr(i); + Group.ImageIndex := Random(ImageListGroups.Count); + Group.Tag := Integer(Random(clWhite)); + for j := 0 to 10 do + begin + Item := Group.Items.Add; + if j mod 3 = 0 then + Item.Enabled := False; + Item.Caption := 'Group: ' + IntToStr(i) + ' - Item: ' + IntToStr(j); + Item.Captions[1] := 'Group: ' + IntToStr(i) + ' - Item: ' + IntToStr(j); + Item.ImageIndex := Random(ImageListSmall.Count); + Item.ImageIndexes[1] := Random(ImageListSmall.Count); + Item.Tag := Integer(Random(clWhite)); + end + end; + for i := 0 to 1 do + begin + Column := EasyListview1.Header.Columns.Add; + Column.Width := 150; + Column.Caption := 'Column: ' + IntToStr(i); + Column.ImageIndex := Random(ImageListHeader.Count); + Column.Tag := Integer(Random(clWhite)); + Column.AutoToggleSortGlyph := True; + end; +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + EasyListview1.View := TEasyListStyle(cbViews.ItemIndex) +end; + +procedure TForm1.CheckBox1Click(Sender: TObject); +begin + if not Checkbox1.Checked then + begin + EasyListview1.ImagesSmall := ImageListSmall; + EasyListview1.ImagesLarge := ImageListLarge; + EasyListview1.ImagesExLarge := ImageListExLarge; + EasyListview1.ImagesGroup := ImageListGroups; + EasyListview1.Header.Images := ImageListHeader; + end else + begin + EasyListview1.ImagesSmall := nil; + EasyListview1.ImagesLarge := nil; + EasyListview1.ImagesExLarge := nil; + EasyListview1.ImagesGroup := nil; + EasyListview1.Header.Images := nil + end +end; + +procedure TForm1.EasyListview1ItemImageDrawIsCustom( + Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; + var IsCustom: Boolean); +begin + IsCustom := Checkbox1.Checked +end; + +procedure TForm1.EasyListview1ItemImageGetSize(Sender: TCustomEasyListview; + Item: TEasyItem; Column: TEasyColumn; var ImageWidth, + ImageHeight: Integer); +begin + MapImageCustomImageSize(ImageWidth, ImageHeight) +end; + +procedure TForm1.EasyListview1ColumnImageDrawIsCustom( + Sender: TCustomEasyListview; Column: TEasyColumn; var IsCustom: Boolean); +begin + IsCustom := Checkbox1.Checked +end; + +procedure TForm1.EasyListview1ColumnImageGetSize( + Sender: TCustomEasyListview; Column: TEasyColumn; var ImageWidth, + ImageHeight: Integer); +begin + ImageWidth := 16; + ImageHeight := 16 +end; + +procedure TForm1.EasyListview1GroupImageDrawIsCustom( + Sender: TCustomEasyListview; Group: TEasyGroup; var IsCustom: Boolean); +begin + IsCustom := Checkbox1.Checked +end; + +procedure TForm1.EasyListview1GroupImageGetSize( + Sender: TCustomEasyListview; Group: TEasyGroup; var ImageWidth, + ImageHeight: Integer); +begin + ImageWidth := 16; + ImageHeight := 16 +end; + +procedure TForm1.EasyListview1OLEDragStart(Sender: TCustomEasyListview; + ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; + var AllowDrag: Boolean); +begin + AllowDrag := True; +end; + + +procedure TForm1.EasyListview1ColumnImageDraw(Sender: TCustomEasyListview; + Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; + AlphaBlender: TEasyAlphaBlender); +begin + ACanvas.Brush.Color := TColor(Column.Tag); + ACanvas.FillRect(RectArray.IconRect); +end; + +procedure TForm1.EasyListview1GroupImageDraw(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +var + H: Integer; + R: TRect; +begin + R := RectArray.IconRect; + ACanvas.Brush.Color := TColor(Group.Tag); + H := R.Bottom - R.Top; + Inc(R.Top, (H - 16) div 2); + Dec(R.Bottom, (H - 16) div 2); + ACanvas.FillRect(R); +end; + +procedure TForm1.EasyListview1ItemImageDraw(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +var + Image: TBitmap; +begin + if EasyListview1.View in [elsIcon, elsThumbnail, elsFilmStrip, elsTile] then + Image := LargeCustomImage + else begin + Image := SmallCustomImage; + Image.TransparentColor := clFuchsia; + Image.TransparentMode := tmFixed; + end; + + Image.Transparent := True; + AlphaBlender.Blend(EasyListview1, Item, ACanvas, RectArray.IconRect, Image) +end; + +procedure TForm1.FormDestroy(Sender: TObject); +begin + SmallCustomImage.Free; + LargeCustomImage.Free; +end; + +procedure TForm1.CheckBoxUseBitmapClick(Sender: TObject); +begin + EasyListview1.Invalidate; +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/Image CustomDraw/XPSearch.bmp b/official/1.7.0/EasyListview/Demos/Image CustomDraw/XPSearch.bmp new file mode 100644 index 0000000000000000000000000000000000000000..22f451ec264054021d7f73c09aac7734f017ff79 GIT binary patch literal 2102 zcmdVay^a$>48U3ls((Jdh~#aa<)D9DzikMJP%t430pe&?G5P7#x8_p+)#e zD-4c6qR?VOnxa^4M<7w?F*Q}9!4XIldQ97tXmA7)g&s@dN;EhEi9(O%3MCpGfkdIl zQl=6OjzFT&W0^~d21g)K=))FRE79NxBnmCT{6iGW%pJ>}D71tM6b45iQRuO4rbL4y zkSO%nQdgqE5l9qzY&U~M7#x8_p~q23B^n%oM4`tqDJ2>lfkdGXM<`l}21g)KXes7j zqA)lDiRJEbv{Z=(M<7w?aqLWq21g)K=y4=ni3Ud?QRs18Lx~1QAW`UXlv9ZYM<7w? zam-7J21g*};pbj%X&3Y-vOj!ezh6q=UVd7>{)cPY-OkVDxx0OP_gsU|AKpLP;Qr%3 zYViHoc=&QZ?Ka!>nr&UL=WFY+nzu{s zay?#aFj4)d!S*tVY0Wj>XN=8x3ak0F{=9?J`u)WKtC_@~2DnncRR2z3y*ck+X3{@4 zp>&a-Ov}5Y#d^KHTp<#Cs=s`ly_p{mJ`8Ne9AV_>LFzZrHTNWKOaoaT4la)Y6u9WHrZ zucM)YUi~;#oGWUpI)YaPUv*p6lSq&mLO5&zsW=iU;I+YYo8Ql{Qm<04X?{}Cb?FE< z@l~f*Jr4!B^s}XjU8vIq(>~o&FNC~&jbQoYFjKcbe*5G9XaCRMmtE%Nqlv2GR+wz? z{pA1Y|MUMB|F8dFZ|c;iYaNd;<95*g`1#Rb`D&ni_1xq<-Rs0~2b`{|!8xBDT?mkIx$y+3_^^!@nz$skpA(U&Zd z?f)G%FZ+KzNJV}4exNxOPSfG0LrnP{HaGi!{{3W-J9oLE%YxM04w~V0%kOv4F27%4 I5IqbG0DrU6wEzGB literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Donkey.bmp b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Donkey.bmp new file mode 100644 index 0000000000000000000000000000000000000000..02f0f4b2fdc2bbe447f1d5e7215cdcad0c82e11d GIT binary patch literal 4678 zcma);zmDs;6^9uhfOS&@L7qTmo*+$92q^+sK#CP7mFR^KShw0XJ>TOF0u`ceHFT9x zY1Vm$6uRZ6nFX?tixkRtD9=jvTziN1C(5#ZJUoYofBy8BKmS(6^7~&Z^*iqV0DpvE zs3boB&97tim5Wu1ud;ToxN@sP2rB$Ls2~2-DV1hW0e_?o1Q?Xc6r{jSR)K{E0t`x3 z3R1{`AC-j$0t{!nDRl-FSZE-?pcJ>NNg;y@EHn^cppyzx$e;oX4FnjJ;;V)fGN`~p z0|5q=DY~grkWU2`8VE4VuB9n;1{GLnAiyxYou$+nRA8Zj0K*)TDy7b#0t*cU80K)< zlsbb7EHn^cm_ym5)EQJ@p@9Iy9OjTxXHbEK1_BIm2(lri&Y%Jd4FnjJ#eb_(5YH=+ zPXhr4Wm5$yWKe;H1_BK8uw^NA1{GLnAiyvWX_ZoEP=SR80u1wTW5n7FDzMN%fMHIB zCZ*1x0t*cU80ItyDRl-FSZE-?5L3twDRl-FSZE-?paT8}l|lv;SZF{#!<<@aN}WLk z78(dJ%xRaU)EQJ@p@9IyoRU>aok0Z_8VE4V>1tEz3@WhDK!9OR+-EZ+wnbH-ktN~#waazoym2L&UaFr^LXBg znw}FZJh+`#p2ec;Jf(9{?wvpX^gA)*V(bs`Y1e#VI0NtgMab9 zr$N+o-dv~jqV4+^zQ;sf?HDCw=fcesaVyKK>9A-I{maXU_ShflL#KCLY%I#ho|e41 z4)mgpX2x+$`orPyU_^VQIT4Se!-4(nKI0#*A;#mL$?pzP$B*MNalU8#Z;z3Lh>p)< zXRtep_h`pMcjy`A`&t5onAj$r_#j=7!eh+d$w{$G=~*jzJ8Cv^Jsx#pwHu4ZuEyydKOda=tH=qx_;n`6IWPwUv(*j$Jg>>U1H z zk_}>U_)0rX(cPE+d3?x={BdhE-8H*;iPy40-O)}g?8GS<+Xu~vK9LsE-&$lWwfD7C zSEKdG$eBSSLcpdZpvC2TcIh@+PFUNm@orxmHiVK^FdmOS_qB-qzAsyYmOzmcQbf8f z^3?#piB)VCF_Dc*>1;ea$WBfGR%i0BYsK=DY{GPu6@xBovm>3i+jnRgXQC^+Zy66u z5+-H@+EsGgusbmUVsv)#c=wHL{qNRJwFGr`l>=Jzc$M=it2*^Y76Wlo$> zetL&?eBziQ(pXB3R7U)LcE_^FnYObus`A+7ci5fcv5b|*Z%!;Y*pqW99{)^E#%Rde b6w9e?aanrH^}X6zS`-`1iWVi++V1}Wf6PCY literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.dpr b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.dpr new file mode 100644 index 0000000..edfe7c4 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.dpr @@ -0,0 +1,13 @@ +program ItemCustomDrawProjectAdv; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.dfm new file mode 100644 index 0000000..01e55a1 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.dfm @@ -0,0 +1,61 @@ +object Form1: TForm1 + Left = 256 + Top = 228 + Width = 425 + Height = 366 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object ELV: TEasyListview + Left = 0 + Top = 0 + Width = 409 + Height = 330 + Align = alClient + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Columns.Items = { + 0400000001000000FFFECE000400000080080000000000000000000000010100 + 0000070000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsReport + OnColumnCustomView = ELVColumnCustomView + OnItemCustomView = ELVItemCustomView + OnItemFreeing = ELVItemFreeing + OnPaintHeaderBkGnd = ELVPaintHeaderBkGnd + end +end diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.pas b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.pas new file mode 100644 index 0000000..17562f2 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Item CustomDraw Advanced/Unit1.pas @@ -0,0 +1,371 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, EasyListview, ImgList, StdCtrls, ExtCtrls, MPCommonUtilities, + MPCommonObjects; + +type + TUserData = record + FirstName, + LastName, + Email, + Street, + City, + Country: WideString; + end; + +const + COLUMNNAMES: array[0..4] of WideString = ( + 'First Name', + 'Last Name', + 'Email', + 'Address', + 'Avator' + ); + + USERDATA: array[0..2] of TUserData = ( + (FirstName: 'Steve'; + LastName: 'Jeremy'; + Email: 'jeremy@bergsoft.net'; + Street: 'Long Street 33'; + City: 'Great City'; + Country: 'Far Far Away'), + (FirstName: 'Julia'; + LastName: 'Miranda'; + Email: 'julia@bergsoft.net'; + Street: 'Long Street 33'; + City: 'Great City'; + Country: 'Far Far Away'), + (FirstName: 'Bill'; + LastName: 'Jeremy'; + Email: 'jeremy@bergsoft.net'; + Street: 'Long Street 33'; + City: 'Great City'; + Country: 'Far Far Away') + ); + +type + TTestData = class + private + FAvatar: TBitmap; + FCity: WideString; + FCountry: WideString; + FEMail: WideString; + FFirstName: WideString; + FLastName: WideString; + FMailBoxSize: Integer; + FStreet: WideString; + public + constructor Create; + destructor Destroy; override; + property Avatar: TBitmap read FAvatar write FAvatar; + property City: WideString read FCity write FCity; + property Country: WideString read FCountry write FCountry; + property EMail: WideString read FEMail write FEMail; + property FirstName: WideString read FFirstName write FFirstName; + property LastName: WideString read FLastName write FLastName; + property MailBoxSize: Integer read FMailBoxSize write FMailBoxSize; + property Street: WideString read FStreet write FStreet; + end; + +type + TForm1 = class(TForm) + ELV: TEasyListview; + procedure FormShow(Sender: TObject); + procedure ELVItemFreeing(Sender: TCustomEasyListview; Item: TEasyItem); + procedure ELVPaintHeaderBkGnd(Sender: TCustomEasyListview; + ACanvas: TCanvas; ARect: TRect; var Handled: Boolean); + procedure ELVItemCustomView(Sender: TCustomEasyListview; + Item: TEasyItem; ViewStyle: TEasyListStyle; + var View: TEasyViewItemClass); + procedure ELVColumnCustomView(Sender: TCustomEasyListview; + Column: TEasyColumn; var View: TEasyViewColumnClass); + private + { Private declarations } + public + { Public declarations } + end; + + // There are lots of helpful methods in the descendents of TEasyViewReportItem for default drawing + TCustomViewReportItem = class(TEasyViewReportItem) + public + function CalculateDisplayRect(Item: TEasyItem; Column: TEasyColumn): TRect; override; + function ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; override; + function SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; override; + procedure ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); override; + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; + procedure PaintText(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; LinesToDraw: Integer); override; + end; + + TCustomViewColumn = class(TEasyViewColumn) + public + procedure Paint(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType); override; + end; + +type + TEasyHeaderHack = class(TEasyHeader); + TEasyColumnHack = class(TEasyColumn); + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.FormShow(Sender: TObject); +var + i: Integer; + Item: TEasyItem; + TestData: TTestData; +begin + ELV.BeginUpdate; + try + ELV.CellSizes.Report.Height := 100; + ELV.Header.Columns.Clear; + ELV.Header.Sizeable := False; + ELV.Header.Draggable := False; + for i := 0 to 2 do + begin + Item := ELV.Items.Add; + TestData := TTestData.Create; + TestData.FirstName := USERDATA[i].FirstName; + TestData.LastName := USERDATA[i].LastName; + TestData.Street := USERDATA[i].Street; + TestData.City := USERDATA[i].City; + TestData.Country := USERDATA[i].Country; + TestData.Email := USERDATA[i].Email; + TestData.MailBoxSize := 10 + Random(30) + Random(10); + // Remeber to free this in the ItemFreeing event + Item.Data := TestData; + end; + ELV.Header.FixedSingleColumn := True; + finally + ELV.EndUpdate(); + end +end; + +procedure TForm1.ELVItemFreeing(Sender: TCustomEasyListview; + Item: TEasyItem); +begin + Item.Data.Free +end; + +procedure TForm1.ELVPaintHeaderBkGnd(Sender: TCustomEasyListview; + ACanvas: TCanvas; ARect: TRect; var Handled: Boolean); +begin + Handled := True; +end; + + +{ TCustomViewColumn } +procedure TCustomViewColumn.Paint(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType); +var + R: TRect; + RectArray: TEasyRectArrayObject; + Width, i: Integer; + DrawTextFlags: TCommonDrawTextWFlags; +begin + ItemRectArray(Column, RectArray); + Width := RectWidth(RectArray.BoundsRect) div (High(COLUMNNAMES) + 1); + R := RectArray.BoundsRect; + R.Right := R.Left + Width; + for i := 0 to High(COLUMNNAMES) do + begin + ACanvas.Brush.Color := clLtGray; + ACanvas.FrameRect(R); + LoadTextFont(Column, ACanvas); + ACanvas.Brush.Color := clWhite; + DrawTextFlags := [dtEndEllipsis, dtCenter, dtVCenter]; + DrawTextWEx(ACanvas.Handle, COLUMNNAMES[i], R, DrawTextFlags, 1); + R.Left := R.Right - 1; + R.Right := R.Right + Width; + end +end; + +{ TTestData } +constructor TTestData.Create; +begin + Avatar := TBitmap.Create; + Avatar.LoadFromFile('Donkey.bmp'); +end; + +destructor TTestData.Destroy; +begin + Avatar.Free; + inherited Destroy; +end; + +{ TCustomViewReportItem } +function TCustomViewReportItem.CalculateDisplayRect(Item: TEasyItem; Column: TEasyColumn): TRect; +begin + Result:= inherited CalculateDisplayRect(Item, Column); +end; + +function TCustomViewReportItem.ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + // Anywhere in the Label Rect is a valid "Text" area + Result := RectArray.LabelRect; +end; + +function TCustomViewReportItem.SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; +begin + Result:= inherited SelectionHit(Item, SelectViewportRect, SelectType); +end; + +function TCustomViewReportItem.SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; +begin + // Anywhere is a valid hit point + Result:= True; +end; + +procedure TCustomViewReportItem.ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); +begin + inherited ItemRectArray(Item, Column, ACanvas, Caption, RectArray); + // The Text is the same as the Label + RectArray.TextRect := RectArray.BoundsRect; + RectArray.TextRect.Right := Item.OwnerListview.ClientWidth; + InflateRect(RectArray.TextRect, -4, -4); + InflateRect(RectArray.FullFocusSelRect, 2, 2); + RectArray.FullFocusSelRect := RectArray.TextRect; + RectArray.SelectionRect := RectArray.FullFocusSelRect; + RectArray.FocusChangeInvalidRect := RectArray.FullFocusSelRect; + +end; + + +procedure TCustomViewReportItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +var + R: TRect; +begin + if Column.Index = 0 then + begin + R := RectArray.BoundsRect; + R.Right := R.Left + TEasyListview( Item.OwnerListview).ClientWidth; + R.Left := 0; + if Item.Index mod 2 <> 0 then + begin + ACanvas.Brush.Color := RGB(191, 239, 254); + ACanvas.FillRect(R); + end; + end +end; + +procedure TCustomViewReportItem.PaintText(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; LinesToDraw: Integer); +var + R: TRect; + DrawTextFlags: TCommonDrawTextWFlags; + Hilight: Boolean; + Size: TSize; + MyData: TTestData; + Header: TEasyHeaderHack; + HeaderRight: Integer; +begin + if Column.Index = 0 then + begin + Header := TEasyHeaderHack( TEasyListview( Item.OwnerListview).Header); + HeaderRight := TEasyColumnHack( Header.LastColumn).DisplayRect.Right; + + // This was set in the ItemRectArray override + R := RectArray.TextRect; + R.Right := HeaderRight; + R.Left := R.Left + 4; + Hilight := (Item.Selected or Item.Hilighted); + MyData := TTestData( Item.Data); + // Load the object inspector default font in a disabled mode + LoadTextFont(Item, 0, ACanvas, Hilight); + ACanvas.Font.Color := clGray; + DrawTextFlags := [dtEndEllipsis, dtLeft, dtVCenter]; + Size := TextExtentW('User Name:', ACanvas); + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, 'User Name:', R, DrawTextFlags, 1); + LoadTextFont(Item, 0, ACanvas, Hilight); + Size := TextExtentW(MyData.LastName, ACanvas); + R.Top := R.Bottom + 1; + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, MyData.LastName, R, DrawTextFlags, 1); + Size := TextExtentW(MyData.FirstName, ACanvas); + R.Top := R.Bottom + 1; + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, MyData.FirstName, R, DrawTextFlags, 1); + R.Top := R.Bottom + 30; + R.Bottom := R.Top + 10; + R.Right := R.Left + 60; + ACanvas.Brush.Color := clGray; + ACanvas.FrameRect(R); + InflateRect(R, -2, -2); + R.Right := R.Left + MyData.MailBoxSize; + if Item.Index mod 2 <> 0 then + ACanvas.Brush.Color := clGreen + else + ACanvas.Brush.Color := RGB(191, 239, 254); + ACanvas.Rectangle(R); + + R := RectArray.TextRect; + R.Right := HeaderRight; + R.Left := 150; + // Load the object inspector default font in a disabled mode + LoadTextFont(Item, 0, ACanvas, Hilight); + if Item.Index mod 2 = 0 then + ACanvas.Font.Color := RGB(202, 242, 255) + else + ACanvas.Font.Color := RGB(0, 143, 191); + DrawTextFlags := [dtEndEllipsis, dtLeft, dtVCenter]; + Size := TextExtentW(MyData.EMail, ACanvas); + R.Bottom := R.Top + Size.cy + 20; + DrawTextWEx(ACanvas.Handle, MyData.EMail, R, DrawTextFlags, 1); + + if Item.Index mod 2 = 0 then + LoadTextFont(Item, 0, ACanvas, Hilight); + Size := TextExtentW(MyData.Street, ACanvas); + R.Top := R.Bottom + 1; + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, MyData.Street, R, DrawTextFlags, 1); + Size := TextExtentW(MyData.City, ACanvas); + R.Top := R.Bottom + 1; + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, MyData.City, R, DrawTextFlags, 1); + Size := TextExtentW(MyData.Country, ACanvas); + R.Top := R.Bottom + 1; + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, MyData.Country, R, DrawTextFlags, 1); + + R := RectArray.TextRect; + R.Right := HeaderRight; + R.Left := 300; + // Load the object inspector default font in a disabled mode + LoadTextFont(Item, 0, ACanvas, Hilight); + ACanvas.Font.Color := clGray; + DrawTextFlags := [dtEndEllipsis, dtLeft, dtVCenter]; + Size := TextExtentW('Avatar:', ACanvas); + R.Bottom := R.Top + Size.cy; + DrawTextWEx(ACanvas.Handle, 'Avatar:', R, DrawTextFlags, 1); + Size := TextExtentW('Avatar:', ACanvas); + R.Top := R.Bottom + 1; + R.Bottom := R.Top + Size.cy; + ACanvas.Brush.Color := RGB(0, 143, 191); + ACanvas.FrameRect(Rect(R.Left - 1, R.Top - 1, MyData.Avatar.Width + R.Left + 1, MyData.Avatar.Height + R.Top + 1)); + ACanvas.Draw(R.Left, R.Top, MyData.Avatar) + end +end; + +procedure TForm1.ELVItemCustomView(Sender: TCustomEasyListview; + Item: TEasyItem; ViewStyle: TEasyListStyle; + var View: TEasyViewItemClass); +begin + if ViewStyle = elsReport then + View := TCustomViewReportItem +end; + +procedure TForm1.ELVColumnCustomView(Sender: TCustomEasyListview; + Column: TEasyColumn; var View: TEasyViewColumnClass); +begin + View := TCustomViewColumn; +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw/ItemCustomDrawProject.dpr b/official/1.7.0/EasyListview/Demos/Item CustomDraw/ItemCustomDrawProject.dpr new file mode 100644 index 0000000..621cbf6 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Item CustomDraw/ItemCustomDrawProject.dpr @@ -0,0 +1,13 @@ +program ItemCustomDrawProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.dfm new file mode 100644 index 0000000..be65af6 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.dfm @@ -0,0 +1,615 @@ +object Form1: TForm1 + Left = 256 + Top = 228 + Width = 576 + Height = 366 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object EasyListview1: TEasyListview + Left = 0 + Top = 41 + Width = 560 + Height = 289 + Align = alClient + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Columns.Items = { + 0400000001000000FFFECE00040000008008000100000100000000000001C800 + 00000100000006000000530061006D0070006C00650000000000000000000000 + 0000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + ImagesSmall = ImageList1 + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + TabOrder = 0 + View = elsReport + OnItemCustomView = EasyListview1ItemCustomView + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 560 + Height = 41 + Align = alTop + TabOrder = 1 + object CheckBoxFullWidth: TCheckBox + Left = 24 + Top = 8 + Width = 97 + Height = 17 + Caption = 'Full Width' + TabOrder = 0 + OnClick = CheckBoxFullWidthClick + end + end + object ImageList1: TImageList + Left = 192 + Top = 168 + Bitmap = { + 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000004000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000004000000080000000A0000000C0200000C0200000C0200000A020000080 + 200080C080000000000000000000000000004DFFFF00FFFFFF004DFFFF00FFFF + FF004DFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A0000040 + 000000A0000000A0200000C0200000C0200000C0200000C0200000C0400000C0 + 40000080200040A0400000000000000000000000000000000000000000000000 + 0000000000004DFFFF00808080008080800080808000BBBBBB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000040200000A0000000A0 + 200000C0200000C0200000C02000000000000000000000C0400000C0400000C0 + 400040C0600040C0600000802000000000000000000000000000000000000000 + 000000000000000000004D4D4D004D4D4D004D4D4D0080808000BBBBBB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000080000000C0200000C0 + 200000C0200000C0200000C02000FFFFFF00FFFFFF0040C0600040C0400040C0 + 600040C0600040C0600040C06000C0DCC0000000000000000000000000000000 + 0000000000004D4D4D00FFFFFF004DFFFF00FFFFFF004D4D4D0080808000BBBB + BB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080A0800000C0200000C0200000C0 + 200000C0400000C0400000C0400040C0600000000000FFFFFF000000000040C0 + 800040C0600040C0600040C0600000A020000000000000000000000000000000 + 00004D4D4D00FFFFFF00A6A6A600FFFFFF004DFFFF00FFFFFF004D4D4D008080 + 8000BBBBBB000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004080400000C0200000C0200000C0 + 400000C0400000C0400000C0400040C0600040C08000FFFFFF00FFFFFF000000 + 000040C0600040C0600040C0600000A000000000000000000000000000004D4D + 4D00FFFFFF00A6A6A600FFFFFF00D3D3D300A6A6A6004DFFFF00FFFFFF004D4D + 4D0080808000BBBBBB0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000060000000C0400000C0400080E0 + A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000040C0800040C0600000A0200000000000000000004D4D4D00FFFF + FF00A6A6A600FFFFFF00D3D3D300A6A6A6004DFFFF00FFFFFF004DFFFF00A6A6 + A6004D4D4D0080808000BBBBBB00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000060000000C0400000C0400080E0 + A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000040C0800040C0600000A02000000000004D4D4D00FFFFFF00A6A6 + A600FFFFFF00D3D3D300A6A6A6004DFFFF00FFFFFF004DFFFF00A6A6A600D3D3 + D300D3D3D3004D4D4D0080808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000040A0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF000000 + 000040C0600040C0600040C0800000A000004D4D4D004D4D4D004D4D4D00FFFF + FF00D3D3D300A6A6A6004DFFFF00FFFFFF004DFFFF00A6A6A600D3D3D300D3D3 + D300D3D3D3004D4D4D0080808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080C0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF000000000040C0 + 800040C0800040C0800080E0800040C020000000000000000000000000004D4D + 4D004D4D4D004DFFFF00FFFFFF004DFFFF00A6A6A600D3D3D300D3D3D300D3D3 + D3004D4D4D0080808000BBBBBB00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000080200040C0600040C0 + 600040C0600040C0600040C06000FFFFFF00FFFFFF0040C0800040C0800040C0 + 800080E0A00080E0A00040C06000000000000000000000000000000000000000 + 0000000000004D4D4D004DFFFF00A6A6A600D3D3D300D3D3D300D3D3D300A6A6 + A600A64D4D004D4D4D0080808000BBBBBB000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040A0400000A0200040C0 + 600040C0600040C0600040C0600080E0C000C0DCC00040C0800080E0800080E0 + A000C0DCC00080E0A00000C00000000000000000000000000000000000000000 + 000000000000000000004D4D4D00D3D3D300D3D3D300D3D3D3004D4D4D00A64D + 4D00A64D4D00A64D4D004D4D4D00808080000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000040A0 + 400040C0600040C0600040C0600040C0800080E0800080E0A000C0DCC000C0DC + C00000C0200080E0A00000000000000000000000000000000000000000000000 + 00000000000000000000000000004D4D4D004D4D4D004D4D4D00000000004D4D + 4D00A64D4D00A64D4D00A64D4D004D4D4D000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000A0200000A0200040C0400080E0800080E0A00080E0800040C0400000C0 + 0000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00004D4D4D00A64D4D00A64D4D004D4D4D000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000004D4D4D004D4D4D00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000000000000000 + 0000C0808000C0804000C0808000000000000000000000000000C0808000C080 + 4000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E0004060E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000C0DC + C000C0400000C0604000C0400000C0A0800000000000C0A08000C0400000C060 + 4000C0400000C0DCC000000000000000000000000000C0A0E0004060E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000008080E0000020E0004060E00000000000D3D3D300979797008484 + 8400898989008787870080808000848484008181810084848400848484008484 + 84008484840084848400B2B2B200000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000F0CA + A600C040000000000000C0808000C060400000000000C0604000C0A08000F0FB + FF00C0400000F0CAA6000000000000000000000000004060E0000020E0000020 + E0008080E000000000000000000000000000000000000000000000000000F0FB + FF004060E0000020E0004060E000F0FBFF00ECECEC005AA4C9001E82B400187E + B000167CAE001379AB001076A8000D73A5000B71A300086EA000066C9E00046A + 9C0002689A00016799005E5E5E00AFAFAF0000000000C0808000C0808000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000F0FB + FF00C0400000C0A08000C0806000C060000000000000C0400000C0808000C080 + 6000C0400000F0FBFF00000000000000000000000000F0FBFF000040E0000020 + E0000020E0008080E00000000000000000000000000000000000F0FBFF004060 + E0000020E0008080E00000000000000000002287BA0067CCFF002085B80099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D30099FFFF00016799006A6A6A0000000000C0808000F0CAA600F0CA + A600F0CAA600C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0CAA600C0808000000000000000000000000000000000000000 + 0000C0A08000C0400000C0600000C0400000F0CAA600C0400000C0600000C060 + 0000C0A080000000000000000000000000000000000000000000F0FBFF004060 + E0000020E0000020E0004060E000F0FBFF0000000000F0FBFF000040E0000020 + E0008080E000000000000000000000000000258ABD0067CCFF00278CBF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0099FFFF0002689A006565650000000000C0808000F0CAA600F0CA + A600F0CAA600C0A08000F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0A08000804020008060600080402000C0808000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000080A0E0000020E0000020E0004060E00080A0E0000040E0000020E0008080 + E00000000000000000000000000000000000288DC00067CCFF002D92C50099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E60099FFFF00046A9C006D6D6D0000000000C0808000F0CAA600F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000000000000000 + 000000000000000000000000000080806000C0C0C00080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF004040E0000020E0000020E0000020E0008080E0000000 + 0000000000000000000000000000000000002A8FC20067CCFF003398CB0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0099FFFF00066C9E006D6D6D0000000000C0A08000F0FBFF00F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 0000F0FBFF00F0CAA600C0808000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A00080808000A4A0A000C0A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080E0000040E0000040E0000040E000F0FBFF000000 + 0000000000000000000000000000000000002D92C5006FD4FF003499CC0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80099FFFF00086EA0006969690000000000C0A08000F0FBFF00F0FB + FF00F0FBFF00C0A0800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000080808000A4A0A000C0808000A4A0A000C0808000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF004060E0000040E0000040E0008080E0000040E0000040E000F0FB + FF00000000000000000000000000000000002F94C7007BE0FF002D92C5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF00000000000B71A3007C7C7C0000000000C0A0800000000000F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 0000C0808000C0A08000F0FBFF00000000000000000000000000000000000000 + 000000000000C0C0C000C0C0A000A4A0A0000000000080808000C0A0A000C0C0 + C00000000000000000000000000000000000000000000000000000000000F0FB + FF004040E0000040E0000040E000C0A0E00000000000F0FBFF004060E0000040 + E000C0A0E0000000000000000000000000003196C90085EBFF0081E6FF002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC0002489BC002085 + B8001C81B4001B81B30089BED800FBFBFB0000000000C0A08000000000000000 + 000000000000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000F0FBFF0000000000000000000000000000000000000000000000 + 000000000000C0A0A000A4A0A000F0FBFF0000000000F0FBFF00C0A0A000A4A0 + A000000000000000000000000000000000000000000000000000C0A0E0000040 + E0000040E0000040E000C0A0E000000000000000000000000000F0FBFF008080 + E0000040E000C0A0E00000000000000000003398CB0091F7FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF00000000000000000000000000000000000000 + 0000167CAE0097979700000000000000000000000000C0A08000000000000000 + 0000000000000000000000000000F0FBFF00F0CAA600C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF0080806000C0A0A000000000000000000000000000C0A0A0008060 + 6000F0FBFF0000000000000000000000000000000000C0A0E0000040E0000040 + E0000040E000C0A0E00000000000000000000000000000000000000000000000 + 0000C0A0E0004060E00000000000000000003499CC000000000099FFFF0099FF + FF0099FFFF0099FFFF000000000060AACF007AB7D60079B5D40077B4D3006AAC + CD003F94BD00FEFEFE00000000000000000000000000C0A08000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC00080806000F0FBFF00000000000000000000000000000000008080 + 6000C0DCC000000000000000000000000000000000000040E0000040E0000040 + E000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000069B3D900000000000000 + 0000000000000000000069B0D400F7F7F7000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600000000000000 + 000000000000F0FBFF00F0FBFF00C0808000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C0000000000000000000000000000000000000000000C0DC + C000C0C0C0000000000000000000000000000000000080A0E0004060E000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000003499CC003398 + CB003196C9002F94C700FDFDFD00000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0808000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0C0C000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF0000A0 + C00000A0C00000A0C000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000080606000F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000F0CA + A6000000000000000000000000000000000000000000000000000000000080C0 + 80000080200000A0200000C0200000C0200000C0200000A00000008000000040 + 0000C0DCC00000000000000000000000000000000000F0FBFF0000A0C00080E0 + E00080E0E00080E0E000C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C0806000F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0806000C0600000C040 + 0000F0CAA600000000000000000000000000000000000000000040A040000080 + 200000C0400000C0400000C0200000C0200000C0200000C0200000A0200000A0 + 000000400000A4A0A00000000000000000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C0806000F0FB + FF00F0FBFF00F0FBFF00C0DCC00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0604000C0600000C060 + 0000C0602000C0DCC0000000000000000000000000000080200040C0600040C0 + 600000C0400000C0400000C04000000000000000000000C0200000C0200000C0 + 200000A0200000A0000000402000000000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A0800000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000C08080000000 + 0000F0FBFF00C0A0E0004040E0000040E0008080E000F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 0000C0600000C06020000000000000000000C0DCC00040C0600040C0600040C0 + 600040C0600040C0400040C06000FFFFFF00FFFFFF0000C0200000C0200000C0 + 200000C0200000C0200000800000000000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C08080000000 + 00008080E0000040E0000040E0004040E0000040E000C0C0C000F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 2000C0600000C0600000C08060000000000000A0200040C0600040C0600040C0 + 600040C0800000000000FFFFFF000000000040C0600000C0400000C0400000C0 + 400000C0200000C0200000C0200080A080000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A0800000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000C08080000000 + 0000C0A0E0008080E000F0FBFF00C0C0C0000040E0004060E000F0CAA600F0CA + A600F0CAA60080806000000000000000000000000000C0400000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C080600000000000C0DC + C000C0400000C0600000C0400000F0FBFF0000A0000040C0600040C0600040C0 + 600000000000FFFFFF00FFFFFF0040C0800040C0600000C0400000C0400000C0 + 400000C0400000C0200000C02000408040000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0808000000000000000000000000000C0A080000000 + 0000000000000000000000000000F0FBFF008080E0000040E000C0A0E000F0CA + A600F0CAA600C0808000000000000000000000000000C0600000C0800000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0604000000000000000 + 0000C0A08000C0600000C0600000C080600000A0200040C0600040C080000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0080E0A00000C0400000C04000006000000000000040C0E000F0FBFF0080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000000000000000000000000000C0A080000000 + 000000000000000000000000000000000000F0FBFF000040E0004040E000C0DC + C000F0CAA600C0808000000000000000000000000000C0600000C0800000C080 + 0000C0600000C0402000C0A08000C0A08000C0A08000F0FBFF00000000000000 + 000000000000C0400000C0600000C060200000A0200040C0600040C080000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0080E0A00000C0400000C04000006000000000000040C0E000F0FBFF0080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000C0808000F0CAA60000000000000000000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000080A0E0004060E000C0DC + C000F0CAA600C0808000000000000000000000000000C0600000C0800000C060 + 0000C0800000C0600000C0806000000000000000000000000000000000000000 + 000000000000C0804000C0600000C040000000A0000040C0800040C0600040C0 + 600000000000FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040A040000000000040C0E000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C08080000000000000000000000000000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0CAA600C0808000000000000000000000000000C0600000C0A00000C060 + 2000C0600000C0800000C0600000C08060000000000000000000000000000000 + 000000000000C0804000C0600000C040000040C0200080E0800040C0800040C0 + 800040C0800000000000FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600080C0A0000000000040C0E000F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000F0FBFF00F0FB + FF0000A0C0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0CA + A600F0CAA600C0808000000000000000000000000000C0600000C0A00000C080 + 4000F0CAA600C0600000C0800000C0600000C0604000C0DCC000000000000000 + 0000C0DCC000C0400000C0600000C06020000000000040C0600080E0A00080E0 + A00040C0800040C0800040C08000FFFFFF00FFFFFF0040C0600040C0600040C0 + 600040C0600040C0600000802000000000000000000040C0E000F0FBFF00C0DC + C000C0808000C0808000C0808000C0808000C0808000C080800080A0A000F0FB + FF0000A0C0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000000000000000000000000000C0802000C0A04000C080 + 400000000000F0CAA600C0602000C0800000C0800000C0600000C0806000C080 + 8000C0602000C0600000C0600000C08060000000000000C0000080E0A000C0DC + C00080E0A00080E0800040C08000C0DCC00080E0C00040C0600040C0600040C0 + 600040C0600000A0200040A0400000000000000000000000000040C0E00080E0 + E00080A0A000C0C0C000C0DCC000C0DCC000C0DCC00080A0A00040A0C00040A0 + E000C0DCC0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000F0CA + A600C0C0A00000000000000000000000000000000000C0804000C0C06000C080 + 40000000000000000000C0DCC000C0602000C0800000C0800000C0800000C080 + 0000C0600000C0600000C040200000000000000000000000000080E0A00000C0 + 2000C0DCC000C0DCC00080E0A00080E0800040C0800040C0600040C0600040C0 + 600040A040000000000000000000000000000000000000000000000000000000 + 000000000000C0808000A4A0A000A4A0A000A4A0A000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0808000F0CA + A6000000000000000000000000000000000000000000C0A08000C0806000F0CA + A60000000000000000000000000000000000C0A08000C0602000C0600000C060 + 0000C0600000C0604000C0DCC00000000000000000000000000000000000C0DC + C00000C0000040C0400080E0800080E0A00080E0800040C0400000A0200000A0 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000400000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FE3FFFFF00000000E00707FF00000000 + C003F83F000000008181FC1F000000008000F80F0000000000A0F00700000000 + 0010E003000000000008C0010000000000088001000000000010000100000000 + 0020E001000000008001F800000000008001FC0000000000E003FE2000000000 + F007FFF000000000FFFFFFF900000000F801FFFFFFFFFFFFF801F1C7FFFCFFFF + F801E0838FF88001F801E48387E000008001E08383C300008001F007C0870000 + 8001F80FF00F000083F9FE3FF81F000083F1FC1FFC1F000083F1FC0FF00F1FF4 + A3F1F88FE0870000B803F88FC1C301F3BE3FF1C783F34203BE3FF1E787FFBCFF + B83FF3E78FFFC1FF807FFFFFFFFFFFFFFC01C003FFFFFC7FC001C003FFCFE007 + 81F9C003FF87C00381F9C003FF8381818101D003FFC3000181F9D003FFE10500 + 8101D0038020080081F1DE038030100081F1DF038038100081F3DF8381F80800 + 8007DFC380F804008007DFC3803080018007DFC388008001C007DFC78C01C007 + F83FC00F8F01E00FFFFFFFFFFFC7FFFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.pas b/official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.pas new file mode 100644 index 0000000..1172764 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Item CustomDraw/Unit1.pas @@ -0,0 +1,87 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, EasyListview, ImgList, StdCtrls, ExtCtrls, + MPCommonObjects; + +type + TForm1 = class(TForm) + EasyListview1: TEasyListview; + ImageList1: TImageList; + Panel1: TPanel; + CheckBoxFullWidth: TCheckBox; + procedure FormShow(Sender: TObject); + procedure CheckBoxFullWidthClick(Sender: TObject); + procedure EasyListview1ItemCustomView(Sender: TCustomEasyListview; + Item: TEasyItem; ViewStyle: TEasyListStyle; + var View: TEasyViewItemClass); + private + { Private declarations } + public + { Public declarations } + end; + + TCustomViewReportItem = class(TEasyViewReportItem) + public + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +{ TCustomViewReportItem } +procedure TCustomViewReportItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +var + R: TRect; +begin + inherited PaintBefore(Item, Column, Caption, ACanvas, RectArray, Handled); + if Item.Index mod 2 = 0 then + begin + ACanvas.Brush.Color := clMoneyGreen; + if Form1.CheckBoxFullWidth.Checked then + begin + R := TEasyListview(Item.OwnerListview).Scrollbars.MapViewRectToWindowRect(RectArray.BoundsRect); + R.Right := Form1.ClientWidth; + R := TEasyListview(Item.OwnerListview).Scrollbars.MapWindowRectToViewRect(R); + ACanvas.FillRect(R); + end else + ACanvas.FillRect(RectArray.BoundsRect) + end +end; + +procedure TForm1.FormShow(Sender: TObject); +var + i: Integer; + Item: TEasyItem; +begin + for i := 0 to 999 do + begin + ITem := EasyListview1.Items.Add; + Item.Caption := 'Item: ' + IntToStr(i); + Item.Captions[1] := 'Column 2'; + Item.ImageIndex := Item.Index mod ImageList1.Count; + end; +end; + +procedure TForm1.CheckBoxFullWidthClick(Sender: TObject); +begin + EasyListview1.Invalidate +end; + +procedure TForm1.EasyListview1ItemCustomView(Sender: TCustomEasyListview; + Item: TEasyItem; ViewStyle: TEasyListStyle; + var View: TEasyViewItemClass); +begin + if ViewStyle = elsReport then + View := TCustomViewReportItem +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/ScrollButton/ScrollButtonProject.dpr b/official/1.7.0/EasyListview/Demos/ScrollButton/ScrollButtonProject.dpr new file mode 100644 index 0000000..6c3322a --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/ScrollButton/ScrollButtonProject.dpr @@ -0,0 +1,13 @@ +program ScrollButtonProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.dfm b/official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.dfm new file mode 100644 index 0000000..e8e01a0 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.dfm @@ -0,0 +1,91 @@ +object Form1: TForm1 + Left = 291 + Top = 151 + Width = 408 + Height = 328 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object EasyScrollButton2: TEasyScrollButton + Left = 72 + Top = 96 + Width = 17 + Height = 113 + OnClick = EasyScrollButton2Click + TabOrder = 0 + end + object EasyScrollButton3: TEasyScrollButton + Left = 200 + Top = 96 + Width = 17 + Height = 113 + Direction = sbdRight + OnClick = EasyScrollButton2Click + TabOrder = 1 + end + object EasyScrollButton1: TEasyScrollButton + Left = 88 + Top = 80 + Width = 113 + Height = 17 + Direction = sbdUp + OnClick = EasyScrollButton2Click + TabOrder = 2 + end + object EasyScrollButton4: TEasyScrollButton + Left = 88 + Top = 208 + Width = 113 + Height = 17 + Direction = sbdDown + OnClick = EasyScrollButton2Click + TabOrder = 3 + end + object CheckBoxThemed: TCheckBox + Left = 248 + Top = 88 + Width = 97 + Height = 17 + Caption = 'Themed' + Checked = True + State = cbChecked + TabOrder = 4 + OnClick = CheckBoxThemedClick + end + object CheckBoxFlat: TCheckBox + Left = 248 + Top = 112 + Width = 97 + Height = 17 + Caption = 'Flat' + TabOrder = 5 + OnClick = CheckBoxFlatClick + end + object CheckBoxAutoScroll: TCheckBox + Left = 248 + Top = 136 + Width = 97 + Height = 17 + Caption = 'AutoScroll' + TabOrder = 6 + OnClick = CheckBoxAutoScrollClick + end + object CheckBoxEnabled: TCheckBox + Left = 248 + Top = 160 + Width = 97 + Height = 17 + Caption = 'Enabled' + Checked = True + State = cbChecked + TabOrder = 7 + OnClick = CheckBoxEnabledClick + end +end diff --git a/official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.pas b/official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.pas new file mode 100644 index 0000000..9e18168 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/ScrollButton/Unit1.pas @@ -0,0 +1,75 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, EasyListview, ImgList, ExtCtrls, + EasyScrollFrame, StdCtrls, MPCommonObjects; + +type + TForm1 = class(TForm) + EasyScrollButton2: TEasyScrollButton; + EasyScrollButton3: TEasyScrollButton; + EasyScrollButton1: TEasyScrollButton; + EasyScrollButton4: TEasyScrollButton; + CheckBoxThemed: TCheckBox; + CheckBoxFlat: TCheckBox; + CheckBoxAutoScroll: TCheckBox; + CheckBoxEnabled: TCheckBox; + procedure EasyScrollButton2Click(Sender: TObject); + procedure CheckBoxThemedClick(Sender: TObject); + procedure CheckBoxFlatClick(Sender: TObject); + procedure CheckBoxAutoScrollClick(Sender: TObject); + procedure CheckBoxEnabledClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.EasyScrollButton2Click(Sender: TObject); +begin + beep; +end; + +procedure TForm1.CheckBoxThemedClick(Sender: TObject); +begin + EasyScrollButton1.Themed := CheckBoxThemed.Checked; + EasyScrollButton2.Themed := CheckBoxThemed.Checked; + EasyScrollButton3.Themed := CheckBoxThemed.Checked; + EasyScrollButton4.Themed := CheckBoxThemed.Checked; +end; + +procedure TForm1.CheckBoxFlatClick(Sender: TObject); +begin + EasyScrollButton1.Flat := CheckBoxFlat.Checked; + EasyScrollButton2.Flat := CheckBoxFlat.Checked; + EasyScrollButton3.Flat := CheckBoxFlat.Checked; + EasyScrollButton4.Flat := CheckBoxFlat.Checked; +end; + +procedure TForm1.CheckBoxAutoScrollClick(Sender: TObject); +begin + EasyScrollButton1.AutoScroll := CheckBoxAutoScroll.Checked; + EasyScrollButton2.AutoScroll := CheckBoxAutoScroll.Checked; + EasyScrollButton3.AutoScroll := CheckBoxAutoScroll.Checked; + EasyScrollButton4.AutoScroll := CheckBoxAutoScroll.Checked; +end; + +procedure TForm1.CheckBoxEnabledClick(Sender: TObject); +begin + EasyScrollButton1.Enabled := CheckBoxEnabled.Checked; + EasyScrollButton2.Enabled := CheckBoxEnabled.Checked; + EasyScrollButton3.Enabled := CheckBoxEnabled.Checked; + EasyScrollButton4.Enabled := CheckBoxEnabled.Checked; +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.dfm b/official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.dfm new file mode 100644 index 0000000..404a07d --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.dfm @@ -0,0 +1,5863 @@ +object Imagelists: TImagelists + OldCreateOrder = False + Left = 75 + Top = 97 + Height = 423 + Width = 591 + object ImageListSmall: TImageList + Left = 44 + Top = 16 + Bitmap = { + 494C010109000E00040010001000FFFFFFFFFF100300FFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0806000C0600000C040 + 0000F0CAA6000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0604000C0600000C060 + 0000C0602000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 0000C0600000C060200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 2000C0600000C0600000C0806000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0400000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C080600000000000C0DC + C000C0400000C0600000C0400000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0800000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0604000000000000000 + 0000C0A08000C0600000C0600000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0800000C080 + 0000C0600000C0402000C0A08000C0A08000C0A08000F0FBFF00000000000000 + 000000000000C0400000C0600000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0800000C060 + 0000C0800000C0600000C0806000000000000000000000000000000000000000 + 000000000000C0804000C0600000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0A00000C060 + 2000C0600000C0800000C0600000C08060000000000000000000000000000000 + 000000000000C0804000C0600000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0600000C0A00000C080 + 4000F0CAA600C0600000C0800000C0600000C0604000C0DCC000000000000000 + 0000C0DCC000C0400000C0600000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0802000C0A04000C080 + 400000000000F0CAA600C0602000C0800000C0800000C0600000C0806000C080 + 8000C0602000C0600000C0600000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0804000C0C06000C080 + 40000000000000000000C0DCC000C0602000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0402000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0A08000C0806000F0CA + A60000000000000000000000000000000000C0A08000C0602000C0600000C060 + 0000C0600000C0604000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000004000000080000000A0000000C0200000C0200000C0200000A020000080 + 200080C080000000000000000000000000000000000000000000F0FBFF0000A0 + C00000A0C00000A0C000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000080606000F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A0000040 + 000000A0000000A0200000C0200000C0200000C0200000C0200000C0400000C0 + 40000080200040A04000000000000000000000000000F0FBFF0000A0C00080E0 + E00080E0E00080E0E000C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C0806000F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA60080606000000000000000000000000000D3D3D300979797008484 + 8400898989008787870080808000848484008181810084848400848484008484 + 84008484840084848400B2B2B20000000000000000000040200000A0000000A0 + 200000C0200000C0200000C02000000000000000000000C0400000C0400000C0 + 400040C0600040C0600000802000000000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C0806000F0FB + FF00F0FBFF00F0FBFF00C0DCC00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600806060000000000000000000ECECEC005AA4C9001E82B400187E + B000167CAE001379AB001076A8000D73A5000B71A300086EA000066C9E00046A + 9C0002689A00016799005E5E5E00AFAFAF00000000000080000000C0200000C0 + 200000C0200000C0200000C02000FFFFFF00FFFFFF0040C0600040C0400040C0 + 600040C0600040C0600040C06000C0DCC0000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A0800000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000C08080000000 + 0000F0FBFF00C0A0E0004040E0000040E0008080E000F0CAA600F0CAA600F0CA + A600F0CAA6008060600000000000000000002287BA0067CCFF002085B80099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D30099FFFF00016799006A6A6A0080A0800000C0200000C0200000C0 + 200000C0400000C0400000C0400040C0600000000000FFFFFF000000000040C0 + 800040C0600040C0600040C0600000A020000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000C08080000000 + 00008080E0000040E0000040E0004040E0000040E000C0C0C000F0CAA600F0CA + A600F0CAA600806060000000000000000000258ABD0067CCFF00278CBF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0099FFFF0002689A00656565004080400000C0200000C0200000C0 + 400000C0400000C0400000C0400040C0600040C08000FFFFFF00FFFFFF000000 + 000040C0600040C0600040C0600000A000000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A0800000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000C08080000000 + 0000C0A0E0008080E000F0FBFF00C0C0C0000040E0004060E000F0CAA600F0CA + A600F0CAA600808060000000000000000000288DC00067CCFF002D92C50099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E60099FFFF00046A9C006D6D6D000060000000C0400000C0400080E0 + A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000040C0800040C0600000A020000000000040C0E00080E0E00080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0808000000000000000000000000000C0A080000000 + 0000000000000000000000000000F0FBFF008080E0000040E000C0A0E000F0CA + A600F0CAA600C080800000000000000000002A8FC20067CCFF003398CB0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0099FFFF00066C9E006D6D6D000060000000C0400000C0400080E0 + A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000000000040C0800040C0600000A020000000000040C0E000F0FBFF0080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000000000000000000000000000C0A080000000 + 000000000000000000000000000000000000F0FBFF000040E0004040E000C0DC + C000F0CAA600C080800000000000000000002D92C5006FD4FF003499CC0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80099FFFF00086EA0006969690040A0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF000000 + 000040C0600040C0600040C0800000A000000000000040C0E000F0FBFF0080E0 + E00080E0E00080E0E000C0A08000000000000000000000000000000000000000 + 0000C0808000F0CAA60000000000000000000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000080A0E0004060E000C0DC + C000F0CAA600C080800000000000000000002F94C7007BE0FF002D92C5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF00000000000B71A3007C7C7C0080C0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600080E0A000FFFFFF00FFFFFF000000000040C0 + 800040C0800040C0800080E0800040C020000000000040C0E000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C08080000000000000000000000000000000000000000000C0A080000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0CAA600C080800000000000000000003196C90085EBFF0081E6FF002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC0002489BC002085 + B8001C81B4001B81B30089BED800FBFBFB00000000000080200040C0600040C0 + 600040C0600040C0600040C06000FFFFFF00FFFFFF0040C0800040C0800040C0 + 800080E0A00080E0A00040C06000000000000000000040C0E000F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000F0FBFF00F0FB + FF0000A0C0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0CA + A600F0CAA600C080800000000000000000003398CB0091F7FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF00000000000000000000000000000000000000 + 0000167CAE009797970000000000000000000000000040A0400000A0200040C0 + 600040C0600040C0600040C0600080E0C000C0DCC00040C0800080E0800080E0 + A000C0DCC00080E0A00000C00000000000000000000040C0E000F0FBFF00C0DC + C000C0808000C0808000C0808000C0808000C0808000C080800080A0A000F0FB + FF0000A0C0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C080800000000000000000003499CC000000000099FFFF0099FF + FF0099FFFF0099FFFF000000000060AACF007AB7D60079B5D40077B4D3006AAC + CD003F94BD00FEFEFE00000000000000000000000000000000000000000040A0 + 400040C0600040C0600040C0600040C0800080E0800080E0A000C0DCC000C0DC + C00000C0200080E0A0000000000000000000000000000000000040C0E00080E0 + E00080A0A000C0C0C000C0DCC000C0DCC000C0DCC00080A0A00040A0C00040A0 + E000C0DCC0000000000000000000000000000000000000000000F0CAA6000000 + 0000000000000000000000000000000000000000000000000000C0808000F0CA + A600C0C0A0000000000000000000000000000000000069B3D900000000000000 + 0000000000000000000069B0D400F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000A0200000A0200040C0400080E0800080E0A00080E0800040C0400000C0 + 0000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000C0808000A4A0A000A4A0A000A4A0A000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0808000F0CA + A6000000000000000000000000000000000000000000000000003499CC003398 + CB003196C9002F94C700FDFDFD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0C0C000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + 80000080200000A0200000C0200000C0200000C0200000A00000008000000040 + 0000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000000000000000 + 0000C0808000C0804000C0808000000000000000000000000000C0808000C080 + 4000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E0004060E000000000000000000040A040000080 + 200000C0400000C0400000C0200000C0200000C0200000C0200000A0200000A0 + 000000400000A4A0A00000000000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000C0DC + C000C0400000C0604000C0400000C0A0800000000000C0A08000C0400000C060 + 4000C0400000C0DCC000000000000000000000000000C0A0E0004060E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000008080E0000020E0004060E000000000000080200040C0600040C0 + 600000C0400000C0400000C04000000000000000000000C0200000C0200000C0 + 200000A0200000A0000000402000000000000000000000000000000000000000 + 000000000000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000F0CA + A600C040000000000000C0808000C060400000000000C0604000C0A08000F0FB + FF00C0400000F0CAA6000000000000000000000000004060E0000020E0000020 + E0008080E000000000000000000000000000000000000000000000000000F0FB + FF004060E0000020E0004060E000F0FBFF00C0DCC00040C0600040C0600040C0 + 600040C0600040C0400040C06000FFFFFF00FFFFFF0000C0200000C0200000C0 + 200000C0200000C02000008000000000000000000000C0808000C0808000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C080800000000000000000000000000000000000F0FB + FF00C0400000C0A08000C0806000C060000000000000C0400000C0808000C080 + 6000C0400000F0FBFF00000000000000000000000000F0FBFF000040E0000020 + E0000020E0008080E00000000000000000000000000000000000F0FBFF004060 + E0000020E0008080E000000000000000000000A0200040C0600040C0600040C0 + 600040C0800000000000FFFFFF000000000040C0600000C0400000C0400000C0 + 400000C0200000C0200000C0200080A0800000000000C0808000F0CAA600F0CA + A600F0CAA600C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0CAA600C0808000000000000000000000000000000000000000 + 0000C0A08000C0400000C0600000C0400000F0CAA600C0400000C0600000C060 + 0000C0A080000000000000000000000000000000000000000000F0FBFF004060 + E0000020E0000020E0004060E000F0FBFF0000000000F0FBFF000040E0000020 + E0008080E00000000000000000000000000000A0000040C0600040C0600040C0 + 600000000000FFFFFF00FFFFFF0040C0800040C0600000C0400000C0400000C0 + 400000C0400000C0200000C020004080400000000000C0808000F0CAA600F0CA + A600F0CAA600C0A08000F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600C0808000000000000000000000000000000000000000 + 000000000000F0CAA600C0A08000804020008060600080402000C0808000F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000080A0E0000020E0000020E0004060E00080A0E0000040E0000020E0008080 + E0000000000000000000000000000000000000A0200040C0600040C080000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0080E0A00000C0400000C040000060000000000000C0808000F0CAA600F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 000000000000F0CAA600C0808000000000000000000000000000000000000000 + 000000000000000000000000000080806000C0C0C00080806000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF004040E0000020E0000020E0000020E0008080E0000000 + 00000000000000000000000000000000000000A0200040C0600040C080000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0080E0A00000C0400000C040000060000000000000C0A08000F0FBFF00F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 0000F0FBFF00F0CAA600C0808000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A00080808000A4A0A000C0A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080E0000040E0000040E0000040E000F0FBFF000000 + 00000000000000000000000000000000000000A0000040C0800040C0600040C0 + 600000000000FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040A0400000000000C0A08000F0FBFF00F0FB + FF00F0FBFF00C0A0800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000080808000A4A0A000C0808000A4A0A000C0808000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF004060E0000040E0000040E0008080E0000040E0000040E000F0FB + FF000000000000000000000000000000000040C0200080E0800040C0800040C0 + 800040C0800000000000FFFFFF00FFFFFF0080E0A00040C0600040C0600040C0 + 600040C0600040C0600040C0600080C0A00000000000C0A0800000000000F0CA + A600F0CAA600C0A0800000000000000000000000000000000000000000000000 + 0000C0808000C0A08000F0FBFF00000000000000000000000000000000000000 + 000000000000C0C0C000C0C0A000A4A0A0000000000080808000C0A0A000C0C0 + C00000000000000000000000000000000000000000000000000000000000F0FB + FF004040E0000040E0000040E000C0A0E00000000000F0FBFF004060E0000040 + E000C0A0E0000000000000000000000000000000000040C0600080E0A00080E0 + A00040C0800040C0800040C08000FFFFFF00FFFFFF0040C0600040C0600040C0 + 600040C0600040C06000008020000000000000000000C0A08000000000000000 + 000000000000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000F0FBFF0000000000000000000000000000000000000000000000 + 000000000000C0A0A000A4A0A000F0FBFF0000000000F0FBFF00C0A0A000A4A0 + A000000000000000000000000000000000000000000000000000C0A0E0000040 + E0000040E0000040E000C0A0E000000000000000000000000000F0FBFF008080 + E0000040E000C0A0E00000000000000000000000000000C0000080E0A000C0DC + C00080E0A00080E0800040C08000C0DCC00080E0C00040C0600040C0600040C0 + 600040C0600000A0200040A040000000000000000000C0A08000000000000000 + 0000000000000000000000000000F0FBFF00F0CAA600C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF0080806000C0A0A000000000000000000000000000C0A0A0008060 + 6000F0FBFF0000000000000000000000000000000000C0A0E0000040E0000040 + E0000040E000C0A0E00000000000000000000000000000000000000000000000 + 0000C0A0E0004060E0000000000000000000000000000000000080E0A00000C0 + 2000C0DCC000C0DCC00080E0A00080E0800040C0800040C0600040C0600040C0 + 600040A0400000000000000000000000000000000000C0A08000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC00080806000F0FBFF00000000000000000000000000000000008080 + 6000C0DCC000000000000000000000000000000000000040E0000040E0000040 + E000F0FBFF000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C00000C0000040C0400080E0800080E0A00080E0800040C0400000A0200000A0 + 20000000000000000000000000000000000000000000F0CAA600000000000000 + 000000000000F0FBFF00F0FBFF00C0808000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C0000000000000000000000000000000000000000000C0DC + C000C0C0C0000000000000000000000000000000000080A0E0004060E000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0808000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF00FFFF000000000000FFCF000000000000 + FF87000000000000FF83000000000000FFC3000000000000FFE1000000000000 + 80200000000000008030000000000000803800000000000081F8000000000000 + 80F8000000000000803000000000000088000000000000008C01000000000000 + 8F01000000000000FFC7000000000000FFFFFE3FFC01C003FFFFE007C001C003 + FFFFC00381F9C0038001818181F9C003000080008101D003000000A081F9D003 + 000000108101D0030000000881F1DE030000000881F1DF030000001081F3DF83 + 1FF400208007DFC3000080018007DFC301F380018007DFC34203E003C007DFC7 + BCFFF007F83FC00FC1FFFFFFFFFFFFFFFC7FF801FFFFFFFFE007F801F1C7FFFC + C003F801E0838FF88181F801E48387E000018001E08383C305008001F007C087 + 08008001F80FF00F100083F9FE3FF81F100083F1FC1FFC1F080083F1FC0FF00F + 0400A3F1F88FE0878001B803F88FC1C38001BE3FF1C783F3C007BE3FF1E787FF + E00FB83FF3E78FFFFFFF807FFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageListLarge: TImageList + Height = 32 + Width = 32 + Left = 44 + Top = 68 + Bitmap = { + 494C010109000E00040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 00000000000036000000280000008000000060000000010020000000000000C0 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0806000C080 + 6000C0600000C0600000C0400000C0400000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0806000C080 + 6000C0600000C0600000C0400000C0400000F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 4000C0600000C0600000C0600000C0600000C0602000C0602000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0604000C060 + 4000C0600000C0600000C0600000C0600000C0602000C0602000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000C0600000C0600000C0600000C0600000C0602000C060 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0604000C0604000C0600000C0600000C0600000C0600000C0602000C060 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0602000C0602000C0600000C0600000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0602000C0602000C0600000C0600000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 60000000000000000000C0DCC000C0DCC000C0400000C0400000C0600000C060 + 0000C0400000C0400000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 60000000000000000000C0DCC000C0DCC000C0400000C0400000C0600000C060 + 0000C0400000C0400000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 400000000000000000000000000000000000C0A08000C0A08000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 400000000000000000000000000000000000C0A08000C0A08000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0402000C040 + 2000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0402000C040 + 2000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0800000C0800000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0800000C0800000C0600000C0600000C0800000C0800000C0600000C060 + 0000C0806000C080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0602000C0602000C0600000C0600000C0800000C080 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0602000C0602000C0600000C0600000C0800000C080 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0600000C0600000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0804000C0804000F0CAA600F0CAA600C0600000C060 + 0000C0800000C0800000C0600000C0600000C0604000C0604000C0DCC000C0DC + C00000000000000000000000000000000000C0DCC000C0DCC000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0600000C060 + 0000C0A00000C0A00000C0804000C0804000F0CAA600F0CAA600C0600000C060 + 0000C0800000C0800000C0600000C0600000C0604000C0604000C0DCC000C0DC + C00000000000000000000000000000000000C0DCC000C0DCC000C0400000C040 + 0000C0600000C0600000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0802000C080 + 2000C0A04000C0A04000C0804000C08040000000000000000000F0CAA600F0CA + A600C0602000C0602000C0800000C0800000C0800000C0800000C0600000C060 + 0000C0806000C0806000C0808000C0808000C0602000C0602000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0802000C080 + 2000C0A04000C0A04000C0804000C08040000000000000000000F0CAA600F0CA + A600C0602000C0602000C0800000C0800000C0800000C0800000C0600000C060 + 0000C0806000C0806000C0808000C0808000C0602000C0602000C0600000C060 + 0000C0600000C0600000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0C06000C0C06000C0804000C08040000000000000000000000000000000 + 0000C0DCC000C0DCC000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0600000C060 + 0000C0402000C040200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0804000C080 + 4000C0C06000C0C06000C0804000C08040000000000000000000000000000000 + 0000C0DCC000C0DCC000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0600000C0600000C0600000C060 + 0000C0402000C040200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0806000C0806000F0CAA600F0CAA6000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 4000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0806000C0806000F0CAA600F0CAA6000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0604000C060 + 4000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC0000040000000400000008000000080 + 000000A0000000A0000000C0200000C0200000C0200000C0200000C0200000C0 + 200000A0200000A02000008020000080200080C0800080C08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF0000A0C00000A0C00000A0C00000A0C00000A0C00000A0 + C000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC0000040000000400000008000000080 + 000000A0000000A0000000C0200000C0200000C0200000C0200000C0200000C0 + 200000A0200000A02000008020000080200080C0800080C08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF0000A0C00000A0C00000A0C00000A0C00000A0C00000A0 + C000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00008060600080606000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000A4A0A000A4A0A000004000000040000000A0000000A0000000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0400000C0400000C0400000C04000008020000080200040A0400040A0 + 4000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF0000A0C00000A0C00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000A4A0A000A4A0A000004000000040000000A0000000A0000000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0400000C0400000C0400000C04000008020000080200040A0400040A0 + 4000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF0000A0C00000A0C00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000004020000040 + 200000A0000000A0000000A0200000A0200000C0200000C0200000C0200000C0 + 200000C0200000C020000000000000000000000000000000000000C0400000C0 + 400000C0400000C0400000C0400000C0400040C0600040C0600040C0600040C0 + 600000802000008020000000000000000000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000000000000000000000D3D3D300D3D3 + D300979797009797970084848400848484008989890089898900878787008787 + 8700808080008080800084848400848484008181810081818100848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400B2B2B200B2B2B20000000000000000000000000000000000004020000040 + 200000A0000000A0000000A0200000A0200000C0200000C0200000C0200000C0 + 200000C0200000C020000000000000000000000000000000000000C0400000C0 + 400000C0400000C0400000C0400000C0400040C0600040C0600040C0600040C0 + 600000802000008020000000000000000000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0806000C0806000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0DCC000C0DCC00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000008000000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C02000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0600040C0 + 600040C0400040C0400040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C06000C0DCC000C0DCC000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000ECECEC00ECECEC005AA4C9005AA4 + C9001E82B4001E82B400187EB000187EB000167CAE00167CAE001379AB001379 + AB001076A8001076A8000D73A5000D73A5000B71A3000B71A300086EA000086E + A000066C9E00066C9E00046A9C00046A9C0002689A0002689A00016799000167 + 99005E5E5E005E5E5E00AFAFAF00AFAFAF000000000000000000008000000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C02000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0600040C0 + 600040C0400040C0400040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C06000C0DCC000C0DCC000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000F0FBFF00F0FBFF00C0A0E000C0A0 + E0004040E0004040E0000040E0000040E0008080E0008080E000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A0080A0800080A0800000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C060000000000000000000FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 6000000000000000000000000000000000002287BA002287BA0067CCFF0067CC + FF002085B8002085B80099FFFF0099FFFF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF003BA0D3003BA0D30099FFFF0099FF + FF0001679900016799006A6A6A006A6A6A0080A0800080A0800000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C060000000000000000000FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C080800000000000000000008080E0008080E0000040E0000040 + E0000040E0000040E0004040E0004040E0000040E0000040E000C0C0C000C0C0 + C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600806060008060 + 600000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A006565650065656500408040004080400000C0200000C0 + 200000C0200000C0200000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C0600040C0800040C08000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0000000A00000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 600000000000000000000000000000000000258ABD00258ABD0067CCFF0067CC + FF00278CBF00278CBF0099FFFF0099FFFF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF0044A9DC0044A9DC0099FFFF0099FF + FF0002689A0002689A006565650065656500408040004080400000C0200000C0 + 200000C0200000C0200000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C0600040C0800040C08000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0000000A00000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A080000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C08080000000000000000000C0A0E000C0A0E0008080E0008080 + E000F0FBFF00F0FBFF00C0C0C000C0C0C0000040E0000040E0004060E0004060 + E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600808060008080 + 600000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D00006000000060000000C0400000C0 + 400000C0400000C0400080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0 + 800040C0600040C0600000A0200000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 800000000000000000000000000000000000288DC000288DC00067CCFF0067CC + FF002D92C5002D92C50099FFFF0099FFFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF004EB3E6004EB3E60099FFFF0099FF + FF00046A9C00046A9C006D6D6D006D6D6D00006000000060000000C0400000C0 + 400000C0400000C0400080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0 + 800040C0600040C0600000A0200000A02000000000000000000040C0E00040C0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF008080E0008080E0000040E0000040 + E000C0A0E000C0A0E000F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D00006000000060000000C0400000C0 + 400000C0400000C0400080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0 + 800040C0600040C0600000A0200000A02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002A8FC2002A8FC20067CCFF0067CC + FF003398CB003398CB0099FFFF0099FFFF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0057BCEF0057BCEF0099FFFF0099FF + FF00066C9E00066C9E006D6D6D006D6D6D00006000000060000000C0400000C0 + 400000C0400000C0400080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0 + 800040C0600040C0600000A0200000A02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF000040E0000040 + E0004040E0004040E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA000696969006969690040A0400040A0400040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A00080E0A000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600040C0600040C0 + 600040C0800040C0800000A0000000A00000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002D92C5002D92C5006FD4FF006FD4 + FF003499CC003499CC0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0060C5F80060C5F80099FFFF0099FF + FF00086EA000086EA000696969006969690040A0400040A0400040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A00080E0A000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600040C0600040C0 + 600040C0800040C0800000A0000000A00000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000C0DCC000C0DCC000F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C0080C0A00080C0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0800040C0800040C0800040C0 + 800080E0800080E0800040C0200040C02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000002F94C7002F94C7007BE0FF007BE0 + FF002D92C5002D92C50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000081E6FF0081E6FF00000000000000 + 00000B71A3000B71A3007C7C7C007C7C7C0080C0A00080C0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0800040C0800040C0800040C0 + 800080E0800080E0800040C0200040C02000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C06000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0 + 800040C0800040C0800040C0800040C0800080E0A00080E0A00080E0A00080E0 + A00040C0600040C060000000000000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003196C9003196C90085EBFF0085EB + FF0081E6FF0081E6FF002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288DC000288D + C0002489BC002489BC002085B8002085B8001C81B4001C81B4001B81B3001B81 + B30089BED80089BED800FBFBFB00FBFBFB000000000000000000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C06000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0 + 800040C0800040C0800040C0800040C0800080E0A00080E0A00080E0A00080E0 + A00040C0600040C060000000000000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 970000000000000000000000000000000000000000000000000040A0400040A0 + 400000A0200000A0200040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0C00080E0C000C0DCC000C0DCC00040C0800040C0 + 800080E0800080E0800080E0A00080E0A000C0DCC000C0DCC00080E0A00080E0 + A00000C0000000C000000000000000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00C0DCC000C0DCC000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800080A0A00080A0A000F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000003398CB003398CB0091F7FF0091F7 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF0000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000167CAE00167CAE00979797009797 + 970000000000000000000000000000000000000000000000000040A0400040A0 + 400000A0200000A0200040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0C00080E0C000C0DCC000C0DCC00040C0800040C0 + 800080E0800080E0800080E0A00080E0A000C0DCC000C0DCC00080E0A00080E0 + A00000C0000000C000000000000000000000000000000000000040C0E00040C0 + E000F0FBFF00F0FBFF00C0DCC000C0DCC000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800080A0A00080A0A000F0FBFF00F0FBFF0000A0C00000A0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040A0400040A0400040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0800040C0800080E0800080E0800080E0A00080E0 + A000C0DCC000C0DCC000C0DCC000C0DCC00000C0200000C0200080E0A00080E0 + A000000000000000000000000000000000000000000000000000000000000000 + 000040C0E00040C0E00080E0E00080E0E00080A0A00080A0A000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0A00080A0 + A00040A0C00040A0C00040A0E00040A0E000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 0000000000000000000000000000000000003499CC003499CC00000000000000 + 000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF00000000000000000060AACF0060AACF007AB7D6007AB7D60079B5D40079B5 + D40077B4D30077B4D3006AACCD006AACCD003F94BD003F94BD00FEFEFE00FEFE + FE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040A0400040A0400040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0800040C0800080E0800080E0800080E0A00080E0 + A000C0DCC000C0DCC000C0DCC000C0DCC00000C0200000C0200080E0A00080E0 + A000000000000000000000000000000000000000000000000000000000000000 + 000040C0E00040C0E00080E0E00080E0E00080A0A00080A0A000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0A00080A0 + A00040A0C00040A0C00040A0E00040A0E000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000F0CAA600F0CAA600C0C0A000C0C0A000000000000000 + 000000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200000A0200000A0 + 200040C0400040C0400080E0800080E0800080E0A00080E0A00080E0800080E0 + 800040C0400040C0400000C0000000C00000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B3D90069B3 + D900000000000000000000000000000000000000000000000000000000000000 + 000069B0D40069B0D400F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200000A0200000A0 + 200040C0400040C0400080E0800080E0800080E0A00080E0A00080E0800080E0 + 800040C0400040C0400000C0000000C00000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003499CC003499CC003398CB003398CB003196C9003196C9002F94C7002F94 + C700FDFDFD00FDFDFD0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000080C0800080C08000008020000080200000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000A0000000A0 + 000000800000008000000040000000400000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0804000C080 + 4000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0804000C0804000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0004060E0004060E0000000000000000000000000000000 + 0000000000000000000080C0800080C08000008020000080200000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000A0000000A0 + 000000800000008000000040000000400000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0804000C080 + 4000C0808000C080800000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0804000C0804000C0808000C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0004060E0004060E0000000000000000000000000000000 + 000040A0400040A04000008020000080200000C0400000C0400000C0400000C0 + 400000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000A0200000A0200000A0000000A000000040000000400000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0400000C0400000C0604000C060 + 4000C0400000C0400000C0A08000C0A080000000000000000000C0A08000C0A0 + 8000C0400000C0400000C0604000C0604000C0400000C0400000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0004060E0004060E000C0A0E000C0A0E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0000020E0000020E0004060E0004060E0000000000000000000000000000000 + 000040A0400040A04000008020000080200000C0400000C0400000C0400000C0 + 400000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000A0200000A0200000A0000000A000000040000000400000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0400000C0400000C0604000C060 + 4000C0400000C0400000C0A08000C0A080000000000000000000C0A08000C0A0 + 8000C0400000C0400000C0604000C0604000C0400000C0400000C0DCC000C0DC + C000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0004060E0004060E000C0A0E000C0A0E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0000020E0000020E0004060E0004060E0000000000000000000008020000080 + 200040C0600040C0600040C0600040C0600000C0400000C0400000C0400000C0 + 400000C0400000C040000000000000000000000000000000000000C0200000C0 + 200000C0200000C0200000C0200000C0200000A0200000A0200000A0000000A0 + 0000004020000040200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600C0400000C0400000000000000000 + 0000C0808000C0808000C0604000C06040000000000000000000C0604000C060 + 4000C0A08000C0A08000F0FBFF00F0FBFF00C0400000C0400000F0CAA600F0CA + A6000000000000000000000000000000000000000000000000004060E0004060 + E0000020E0000020E0000020E0000020E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004060E0004060E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000008020000080 + 200040C0600040C0600040C0600040C0600000C0400000C0400000C0400000C0 + 400000C0400000C040000000000000000000000000000000000000C0200000C0 + 200000C0200000C0200000C0200000C0200000A0200000A0200000A0000000A0 + 0000004020000040200000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600C0400000C0400000000000000000 + 0000C0808000C0808000C0604000C06040000000000000000000C0604000C060 + 4000C0A08000C0A08000F0FBFF00F0FBFF00C0400000C0400000F0CAA600F0CA + A6000000000000000000000000000000000000000000000000004060E0004060 + E0000020E0000020E0000020E0000020E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004060E0004060E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF00C0DCC000C0DCC00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0400040C0 + 400040C0600040C06000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000000080000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00C0400000C0400000C0A08000C0A0 + 8000C0806000C0806000C0600000C06000000000000000000000C0400000C040 + 0000C0808000C0808000C0806000C0806000C0400000C0400000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0000020E0000020E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0008080E0008080 + E00000000000000000000000000000000000C0DCC000C0DCC00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0400040C0 + 400040C0600040C06000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000000080000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00C0400000C0400000C0A08000C0A0 + 8000C0806000C0806000C0600000C06000000000000000000000C0400000C040 + 0000C0808000C0808000C0806000C0806000C0400000C0400000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0000020E0000020E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0008080E0008080 + E0000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00000000000000000040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0200000C0200000C0200000C0 + 200000C0200000C0200080A0800080A080000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0400000C040 + 0000C0600000C0600000C0400000C0400000F0CAA600F0CAA600C0400000C040 + 0000C0600000C0600000C0600000C0600000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0008080E0008080E000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00000000000000000040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0200000C0200000C0200000C0 + 200000C0200000C0200080A0800080A080000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0400000C040 + 0000C0600000C0600000C0400000C0400000F0CAA600F0CAA600C0400000C040 + 0000C0600000C0600000C0600000C0600000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF004060E0004060E0000020E0000020E0000020E0000020 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF000040E0000040E0000020E0000020E0008080E0008080E000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0600040C0 + 600040C0600040C0600040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF0040C0800040C0800040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0200000C0 + 200000C0200000C0200040804000408040000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A0800080402000804020008060600080606000804020008040 + 2000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080A0E00080A0E0000020E0000020 + E0000020E0000020E0004060E0004060E00080A0E00080A0E0000040E0000040 + E0000020E0000020E0008080E0008080E0000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0600040C0 + 600040C0600040C0600040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF0040C0800040C0800040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0200000C0 + 200000C0200000C0200040804000408040000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A0800080402000804020008060600080606000804020008040 + 2000C0808000C0808000F0CAA600F0CAA6000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080A0E00080A0E0000020E0000020 + E0000020E0000020E0004060E0004060E00080A0E00080A0E0000040E0000040 + E0000020E0000020E0008080E0008080E0000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00000C0400000C0 + 400000C0400000C0400000600000006000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0C0C000C0C0C000808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF004040E0004040E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00000C0400000C0 + 400000C0400000C0400000600000006000000000000000000000C0808000C080 + 8000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0C0C000C0C0C000808060008080 + 6000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF004040E0004040E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00000C0400000C0 + 400000C0400000C0400000600000006000000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A000C0A0A000C0A0A0008080800080808000A4A0A000A4A0 + A000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080E0008080E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00000C0400000C0 + 400000C0400000C0400000600000006000000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0CAA600F0CA + A600C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A000C0A0A000C0A0A0008080800080808000A4A0A000A4A0 + A000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080E0008080E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0800040C0 + 800040C0600040C0600040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040A0400040A040000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080800080808000A4A0A000A4A0A000C0808000C0808000A4A0A000A4A0 + A000C0808000C0808000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF004060E0004060 + E0000040E0000040E0000040E0000040E0008080E0008080E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0800040C0 + 800040C0600040C0600040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040A0400040A040000000000000000000C0A08000C0A0 + 8000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008080800080808000A4A0A000A4A0A000C0808000C0808000A4A0A000A4A0 + A000C0808000C0808000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF004060E0004060 + E0000040E0000040E0000040E0000040E0008080E0008080E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF000000000000000000000000000000 + 00000000000000000000000000000000000040C0200040C0200080E0800080E0 + 800040C0800040C0800040C0800040C0800040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080C0A00080C0A0000000000000000000C0A08000C0A0 + 80000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0A08000C0A0 + 8000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C0C0 + C000C0C0A000C0C0A000A4A0A000A4A0A0000000000000000000808080008080 + 8000C0A0A000C0A0A000C0C0C000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004040E0004040E0000040E0000040 + E0000040E0000040E000C0A0E000C0A0E0000000000000000000F0FBFF00F0FB + FF004060E0004060E0000040E0000040E000C0A0E000C0A0E000000000000000 + 00000000000000000000000000000000000040C0200040C0200080E0800080E0 + 800040C0800040C0800040C0800040C0800040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080C0A00080C0A0000000000000000000C0A08000C0A0 + 80000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0808000C0808000C0A08000C0A0 + 8000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C0C0 + C000C0C0A000C0C0A000A4A0A000A4A0A0000000000000000000808080008080 + 8000C0A0A000C0A0A000C0C0C000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF004040E0004040E0000040E0000040 + E0000040E0000040E000C0A0E000C0A0E0000000000000000000F0FBFF00F0FB + FF004060E0004060E0000040E0000040E000C0A0E000C0A0E000000000000000 + 000000000000000000000000000000000000000000000000000040C0600040C0 + 600080E0A00080E0A00080E0A00080E0A00040C0800040C0800040C0800040C0 + 800040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 6000008020000080200000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000A4A0A000A4A0A000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF00C0A0A000C0A0A000A4A0A000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E000C0A0E000C0A0E00000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF008080E0008080E0000040E0000040E000C0A0E000C0A0 + E00000000000000000000000000000000000000000000000000040C0600040C0 + 600080E0A00080E0A00080E0A00080E0A00040C0800040C0800040C0800040C0 + 800040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 6000008020000080200000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0808000C0808000F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000A4A0A000A4A0A000F0FBFF00F0FBFF000000000000000000F0FBFF00F0FB + FF00C0A0A000C0A0A000A4A0A000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E000C0A0E000C0A0E00000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF008080E0008080E0000040E0000040E000C0A0E000C0A0 + E00000000000000000000000000000000000000000000000000000C0000000C0 + 000080E0A00080E0A000C0DCC000C0DCC00080E0A00080E0A00080E0800080E0 + 800040C0800040C08000C0DCC000C0DCC00080E0C00080E0C00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600000A0200000A0 + 200040A0400040A0400000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00808060008080 + 6000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A0008060600080606000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A0E000C0A0E0004060E0004060 + E00000000000000000000000000000000000000000000000000000C0000000C0 + 000080E0A00080E0A000C0DCC000C0DCC00080E0A00080E0A00080E0800080E0 + 800040C0800040C08000C0DCC000C0DCC00080E0C00080E0C00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600000A0200000A0 + 200040A0400040A0400000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0CAA600F0CAA600C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00808060008080 + 6000C0A0A000C0A0A00000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A0008060600080606000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A0E000C0A0E0004060E0004060 + E000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00000C0200000C02000C0DCC000C0DCC000C0DCC000C0DC + C00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0600040C0 + 600040C0600040C0600040C0600040C0600040A0400040A04000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0DCC000C0DCC000808060008080 + 6000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0DCC000C0DCC000000000000000 + 00000000000000000000000000000000000000000000000000000040E0000040 + E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00000C0200000C02000C0DCC000C0DCC000C0DCC000C0DC + C00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0600040C0 + 600040C0600040C0600040C0600040C0600040A0400040A04000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0DCC000C0DCC000808060008080 + 6000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 000000000000000000008080600080806000C0DCC000C0DCC000000000000000 + 00000000000000000000000000000000000000000000000000000040E0000040 + E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC00000C0000000C0000040C0400040C0 + 400080E0800080E0800080E0A00080E0A00080E0800080E0800040C0400040C0 + 400000A0200000A0200000A0200000A020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0C0C000C0C0C000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC00000C0000000C0000040C0400040C0 + 400080E0800080E0800080E0A00080E0A00080E0800080E0800040C0400040C0 + 400000A0200000A0200000A0200000A020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000C0DCC000C0C0C000C0C0C000000000000000 + 000000000000000000000000000000000000000000000000000080A0E00080A0 + E0004060E0004060E000F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0CAA600F0CA + A600C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000600000000100010000000000000600000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFFFF0FF000000000000000000000000 + FFFFF0FF000000000000000000000000FFFFC03F000000000000000000000000 + FFFFC03F000000000000000000000000FFFFC00F000000000000000000000000 + FFFFC00F000000000000000000000000FFFFF00F000000000000000000000000 + FFFFF00F000000000000000000000000FFFFFC03000000000000000000000000 + FFFFFC03000000000000000000000000C0000C00000000000000000000000000 + C0000C00000000000000000000000000C0000F00000000000000000000000000 + C0000F00000000000000000000000000C0000FC0000000000000000000000000 + C0000FC0000000000000000000000000C003FFC0000000000000000000000000 + C003FFC0000000000000000000000000C000FFC0000000000000000000000000 + C000FFC0000000000000000000000000C0000F00000000000000000000000000 + C0000F00000000000000000000000000C0C00000000000000000000000000000 + C0C00000000000000000000000000000C0F00003000000000000000000000000 + C0F00003000000000000000000000000C0FF0003000000000000000000000000 + C0FF0003000000000000000000000000FFFFF03F000000000000000000000000 + FFFFF03F000000000000000000000000FFFFFFFFFFFC0FFFFFF00003F000000F + FFFFFFFFFFFC0FFFFFF00003F000000FFFFFFFFFFC00003FF0000003F000000F + FFFFFFFFFC00003FF0000003F000000FFFFFFFFFF000000FC003FFC3F000000F + FFFFFFFFF000000FC003FFC3F000000FC0000003C003C003C003FFC3F000000F + C0000003C003C003C003FFC3F000000F00000000C0000000C0030003F300000F + 00000000C0000000C0030003F300000F000000000000CC00C003FFC3F300000F + 000000000000CC00C003FFC3F300000F0000000000000300C0030003F300000F + 0000000000000300C0030003F300000F00000000000000C0C003FF03F3FC000F + 00000000000000C0C003FF03F3FC000F00000000000000C0C003FF03F3FF000F + 00000000000000C0C003FF03F3FF000F0000000000000300C003FF0FF3FFC00F + 0000000000000300C003FF0FF3FFC00F03FFFF3000000C00C000003FF3FFF00F + 03FFFF3000000C00C000003FF3FFF00F00000000C0000003C000003FF3FFF00F + 00000000C0000003C000003FF3FFF00F0003FF0FC0000003C000003FF3FFF00F + 0003FF0FC0000003C000003FF3FFF00F300C000FFC00000FF000003FF3FFF03F + 300C000FFC00000FF000003FF3FFF03FCFF0FFFFFF00003FFFC00FFFF00000FF + CFF0FFFFFF00003FFFC00FFFF00000FFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFF + F003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFC00003FFFFFFFFFFFFFFFF + FFF03FFFFFC00003FFFFFFFFFFFFFFFFFC00003FFFC00003FF03F03FFFFFFFF0 + FC00003FFFC00003FF03F03FFFFFFFF0F000000FFFC00003FC00C00FC0FFFFC0 + F000000FFFC00003FC00C00FC0FFFFC0C003C003FFC00003FC30C00FC03FFC00 + C003C003FFC00003FC30C00FC03FFC0000000003C0000003FC00C00FC00FF00F + 00000003C0000003FC00C00FC00FF00F00330000C0000003FF00003FF000C03F + 00330000C0000003FF00003FF000C03F00C00000C0000003FFC000FFFF0000FF + 00C00000C0000003FFC000FFFF0000FF03000000C00FFFC3FFFC0FFFFFC003FF + 03000000C00FFFC3FFFC0FFFFFC003FF03000000C00FFF03FFF003FFFFF003FF + 03000000C00FFF03FFF003FFFFF003FF00C00000C00FFF03FFF000FFFF0000FF + 00C00000C00FFF03FFF000FFFF0000FF00300000CC0FFF03FFC0C0FFFC00C03F + 00300000CC0FFF03FFC0C0FFFC00C03FC0000003CFC0000FFFC0C0FFF003F00F + C0000003CFC0000FFFC0C0FFF003F00FC0000003CFFC0FFFFF03F03FC00FFF0F + C0000003CFFC0FFFFF03F03FC00FFF0FF000003FCFFC0FFFFF03FC3FC03FFFFF + F000003FCFFC0FFFFF03FC3FC03FFFFFFC0000FFCFC00FFFFF0FFC3FC0FFFFFF + FC0000FFCFC00FFFFF0FFC3FC0FFFFFFFFFFFFFFC0003FFFFFFFFFFFFFFFFFFF + FFFFFFFFC0003FFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageListExLarge: TImageList + Height = 48 + Width = 48 + Left = 44 + Top = 120 + Bitmap = { + 494C010109000E00040030003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000C000000090000000010020000000000000B0 + 0100000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 6000C0806000C0806000C0600000C0600000C0600000C0400000C0400000C040 + 0000F0CAA600F0CAA600F0CAA600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 6000C0806000C0806000C0600000C0600000C0600000C0400000C0400000C040 + 0000F0CAA600F0CAA600F0CAA600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 6000C0806000C0806000C0600000C0600000C0600000C0400000C0400000C040 + 0000F0CAA600F0CAA600F0CAA600000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0604000C0604000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0602000C0602000C0602000C0DCC000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0604000C0604000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0602000C0602000C0602000C0DCC000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 4000C0604000C0604000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0602000C0602000C0602000C0DCC000C0DCC000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0602000C0602000C0602000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0602000C0602000C0602000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0604000C0604000C0604000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0602000C0602000C0602000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C080 + 6000C0806000C0806000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0600000C0600000C0600000C0400000C040 + 0000C0400000F0FBFF00F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C080 + 6000C0806000C0806000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0600000C0600000C0600000C0400000C040 + 0000C0400000F0FBFF00F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C080 + 6000C0806000C0806000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0600000C0600000C0600000C0400000C040 + 0000C0400000F0FBFF00F0FBFF00F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 4000C0604000C060400000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 4000C0604000C060400000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0600000C060 + 4000C0604000C060400000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0402000C0402000C0402000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0402000C0402000C0402000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0402000C0402000C0402000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0800000C0800000C0800000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0800000C0800000C0800000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0800000C0800000C0800000C0600000C0600000C060 + 0000C0800000C0800000C0800000C0600000C0600000C0600000C0806000C080 + 6000C08060000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0800000C0800000C0800000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0800000C0800000C0800000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0602000C0602000C060 + 2000C0600000C0600000C0600000C0800000C0800000C0800000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0804000C0804000C0804000C0600000C060 + 0000C0600000C0400000C0400000C04000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0804000C0804000C080 + 4000F0CAA600F0CAA600F0CAA600C0600000C0600000C0600000C0800000C080 + 0000C0800000C0600000C0600000C0600000C0604000C0604000C0604000C0DC + C000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0804000C0804000C080 + 4000F0CAA600F0CAA600F0CAA600C0600000C0600000C0600000C0800000C080 + 0000C0800000C0600000C0600000C0600000C0604000C0604000C0604000C0DC + C000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C060 + 0000C0600000C0600000C0A00000C0A00000C0A00000C0804000C0804000C080 + 4000F0CAA600F0CAA600F0CAA600C0600000C0600000C0600000C0800000C080 + 0000C0800000C0600000C0600000C0600000C0604000C0604000C0604000C0DC + C000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0602000C0602000C06020000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 2000C0802000C0802000C0A04000C0A04000C0A04000C0804000C0804000C080 + 4000000000000000000000000000F0CAA600F0CAA600F0CAA600C0602000C060 + 2000C0602000C0800000C0800000C0800000C0800000C0800000C0800000C060 + 0000C0600000C0600000C0806000C0806000C0806000C0808000C0808000C080 + 8000C0602000C0602000C0602000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 2000C0802000C0802000C0A04000C0A04000C0A04000C0804000C0804000C080 + 4000000000000000000000000000F0CAA600F0CAA600F0CAA600C0602000C060 + 2000C0602000C0800000C0800000C0800000C0800000C0800000C0800000C060 + 0000C0600000C0600000C0806000C0806000C0806000C0808000C0808000C080 + 8000C0602000C0602000C0602000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 2000C0802000C0802000C0A04000C0A04000C0A04000C0804000C0804000C080 + 4000000000000000000000000000F0CAA600F0CAA600F0CAA600C0602000C060 + 2000C0602000C0800000C0800000C0800000C0800000C0800000C0800000C060 + 0000C0600000C0600000C0806000C0806000C0806000C0808000C0808000C080 + 8000C0602000C0602000C0602000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0806000C0806000C08060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 4000C0804000C0804000C0C06000C0C06000C0C06000C0804000C0804000C080 + 4000000000000000000000000000000000000000000000000000C0DCC000C0DC + C000C0DCC000C0602000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0402000C040 + 2000C04020000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 4000C0804000C0804000C0C06000C0C06000C0C06000C0804000C0804000C080 + 4000000000000000000000000000000000000000000000000000C0DCC000C0DC + C000C0DCC000C0602000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0402000C040 + 2000C04020000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C080 + 4000C0804000C0804000C0C06000C0C06000C0C06000C0804000C0804000C080 + 4000000000000000000000000000000000000000000000000000C0DCC000C0DC + C000C0DCC000C0602000C0602000C0602000C0800000C0800000C0800000C080 + 0000C0800000C0800000C0800000C0800000C0800000C0800000C0800000C080 + 0000C0600000C0600000C0600000C0600000C0600000C0600000C0402000C040 + 2000C04020000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0806000C0806000C0806000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0A08000C060 + 2000C0602000C0602000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0604000C0604000C0604000C0DCC000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0806000C0806000C0806000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0A08000C060 + 2000C0602000C0602000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0604000C0604000C0604000C0DCC000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0806000C0806000C0806000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A08000C0A08000C0A08000C060 + 2000C0602000C0602000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0600000C0600000C0600000C0604000C0604000C0604000C0DCC000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000A4A0A000A4A0A000406040004060400000400000004000000040 + 0000006000000060000000600000006000000060000000600000006000000060 + 0000006000000060000000600000006020000060200080A0600080A06000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000806060008060600080606000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000A4A0A000A4A0A000406040004060400000400000004000000040 + 0000006000000060000000600000006000000060000000600000006000000060 + 0000006000000060000000600000006020000060200080A0600080A06000C0DC + C000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C00000A0 + C00000A0C00000A0C00000A0C00000A0C00000A0C00000A0C000C0808000C080 + 8000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC0000060 + 2000006020000040000000400000008000000080000000A0000000A0000000A0 + 000000A0200000A0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000802000008020000080 + 20000080200080C0800080C08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C00000A0 + C00000A0C00000A0C00000A0C00000A0C00000A0C00000A0C000C0808000C080 + 8000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC0000060 + 2000006020000040000000400000008000000080000000A0000000A0000000A0 + 000000A0200000A0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000802000008020000080 + 20000080200080C0800080C08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF0000A0C00000A0C00000A0 + C00000A0C00000A0C00000A0C00000A0C00000A0C00000A0C000C0808000C080 + 8000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000806060008060600080606000F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000000000000000000000000000D3D3 + D300D3D3D300D3D3D30097979700979797009797970084848400848484008484 + 8400898989008989890089898900878787008787870087878700808080008080 + 8000808080008484840084848400848484008181810081818100818181008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484008484840084848400B2B2B200B2B2 + B200B2B2B2000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A4A0A000A4A0A00000400000004000000080 + 00000080000000A0000000A0000000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000A0 + 400000A04000008020000080200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF0000A0C00000A0C00000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 0000000000000000000000000000A4A0A000A4A0A00000400000004000000080 + 00000080000000A0000000A0000000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000A0 + 400000A04000008020000080200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF0000A0C00000A0C00000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 0000A4A0A000A4A0A000A4A0A000004000000040000000A0000000A0000000A0 + 000000A0000000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C04000008020000080200040A0600040A0600040A0 + 600000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF0000A0C00000A0C00000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000ECECEC00ECECEC00ECECEC005AA4 + C9005AA4C9005AA4C9001E82B4001E82B4001E82B400187EB000187EB000187E + B000167CAE00167CAE00167CAE001379AB001379AB001379AB001076A8001076 + A8001076A8000D73A5000D73A5000D73A5000B71A3000B71A3000B71A300086E + A000086EA000086EA000066C9E00066C9E00066C9E00046A9C00046A9C00046A + 9C0002689A0002689A0002689A000167990001679900016799005E5E5E005E5E + 5E005E5E5E00AFAFAF00AFAFAF00AFAFAF000000000000000000000000000000 + 0000A4A0A000A4A0A000A4A0A000004000000040000000A0000000A0000000A0 + 000000A0000000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C04000008020000080200040A0600040A0600040A0 + 60000000000000000000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000C0DCC000C0DC + C00000402000004020000040200000A0000000A0000000A0200000A0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0400000C0400040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 200080C0800080C08000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000C0DCC000C0DC + C00000402000004020000040200000A0000000A0000000A0200000A0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0400000C0400040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 200080C0800080C08000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0806000C0806000C0806000F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DC + C000C0DCC00080A0E00080A0E00080A0E000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000408060004080 + 600000800000008000000080000000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 60000080200000802000C0DCC000C0DCC00000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 0000000000000000000000000000000000002287BA002287BA002287BA0067CC + FF0067CCFF0067CCFF002085B8002085B8002085B80099FFFF0099FFFF0099FF + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4FF006FD4 + FF003BA0D3003BA0D3003BA0D30099FFFF0099FFFF0099FFFF00016799000167 + 9900016799006A6A6A006A6A6A006A6A6A000000000000000000408060004080 + 600000800000008000000080000000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 60000080200000802000C0DCC000C0DCC00000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A00656565006565650065656500C0DCC000C0DCC000006000000060 + 000000A0200000A0200000A0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200080C0600080C0600000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00C0A0E000C0A0E000C0A0E0004040E0004040 + E0004040E0000040E0000040E0000040E0008080E0008080E0008080E000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A00656565006565650065656500C0DCC000C0DCC000006000000060 + 000000A0200000A0200000A0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200080C0600080C0600000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000258ABD00258ABD00258ABD0067CC + FF0067CCFF0067CCFF00278CBF00278CBF00278CBF0099FFFF0099FFFF0099FF + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0FF007BE0 + FF0044A9DC0044A9DC0044A9DC0099FFFF0099FFFF0099FFFF0002689A000268 + 9A0002689A0065656500656565006565650080A0800080A08000008000000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D0080A0800080A08000008000000080 + 000000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C060000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 00008080E0008080E0008080E0000040E0000040E0000040E0000040E0000040 + E0000040E0004040E0004040E0004040E0000040E0000040E0000040E000C0C0 + C000C0C0C000C0C0C000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600806060008060600080606000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D00408040004080400000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C0600040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D00408040004080400000A0200000A0 + 200000C0200000C0200000C0200000C0200000C0200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400040C0600040C0600040C0800040C08000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 000000000000000000000000000000000000288DC000288DC000288DC00067CC + FF0067CCFF0067CCFF002D92C5002D92C5002D92C50099FFFF0099FFFF0099FF + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EBFF0085EB + FF004EB3E6004EB3E6004EB3E60099FFFF0099FFFF0099FFFF00046A9C00046A + 9C00046A9C006D6D6D006D6D6D006D6D6D00006020000060200000A0200000A0 + 200000C0400000C0400000C0400000C0400000C0400040C0600040C0600080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DCC000C0DC + C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A08000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C080800000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0008080E0008080E0008080E000F0FBFF00F0FB + FF00F0FBFF00C0C0C000C0C0C000C0C0C0000040E0000040E0000040E0004060 + E0004060E0004060E000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600808060008080600080806000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D00006020000060200000A0200000A0 + 200000C0400000C0400000C0400000C0400000C0400040C0600040C0600080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DCC000C0DC + C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D00006000000060000000C0200000C0 + 200000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002A8FC2002A8FC2002A8FC20067CC + FF0067CCFF0067CCFF003398CB003398CB003398CB0099FFFF0099FFFF0099FF + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7FF0091F7 + FF0057BCEF0057BCEF0057BCEF0099FFFF0099FFFF0099FFFF00066C9E00066C + 9E00066C9E006D6D6D006D6D6D006D6D6D00006000000060000000C0200000C0 + 200000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080E0000040 + E0000040E0000040E000C0A0E000C0A0E000C0A0E000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA000696969006969690069696900006000000060000000A0400000A0 + 400000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA000696969006969690069696900006000000060000000A0400000A0 + 400000C0400000C0400000C0400000C0400000C0400080E0A00080E0A000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000040C0800040C0800040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002D92C5002D92C5002D92C5006FD4 + FF006FD4FF006FD4FF003499CC003499CC003499CC0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0060C5F80060C5F80060C5F80099FFFF0099FFFF0099FFFF00086EA000086E + A000086EA000696969006969690069696900408040004080400000A0400000A0 + 400000C0400000C0400000C0400040C0400040C0400040C0800040C0800080E0 + A00080E0A00080E0A00080E0A00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0C000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00F0FBFF00F0FBFF000040 + E0000040E0000040E0004040E0004040E0004040E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C00408040004080400000A0400000A0 + 400000C0400000C0400000C0400040C0400040C0400040C0800040C0800080E0 + A00080E0A00080E0A00080E0A00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0C000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00000000000040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600000A0200000A0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C0040A0400040A0400000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A00080E0A000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0800040C0800040C0 + 800040C0800040C0800000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C0040A0400040A0400000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600080E0A00080E0A000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0 + 800040C0800040C0600040C0600040C0600040C0600040C0800040C0800040C0 + 800040C0800040C0800000A0000000A0000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E000C0A08000C0A0 + 8000C0A080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000C0DCC000C0DCC000C0DC + C000F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000002F94C7002F94C7002F94C7007BE0 + FF007BE0FF007BE0FF002D92C5002D92C5002D92C50000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000081E6FF0081E6FF0081E6FF000000000000000000000000000B71A3000B71 + A3000B71A3007C7C7C007C7C7C007C7C7C0080C0A00080C0A000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0800040C0800040C0800040C0800080E0800080E0800080E0 + 800040C0600040C0600040C0200040C0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB0080C0A00080C0A000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0800040C0800040C0 + 600040C0600040C0800040C0800040C0800040C0800080E0800080E0800080E0 + 800040C0600040C0600040C0200040C0200000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000008020000080 + 200000C0400000C0400000C0400040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 800040C0800040C0800040C0800080E0A00080E0A00080E0A00080E0A00080E0 + A00000C0200000C0200080E0A00080E0A00000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A08000C0A08000C0A0800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003196C9003196C9003196C90085EB + FF0085EBFF0085EBFF0081E6FF0081E6FF0081E6FF002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92 + C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C5002D92C500288D + C000288DC000288DC0002489BC002489BC002489BC002085B8002085B8002085 + B8001C81B4001C81B4001C81B4001B81B3001B81B3001B81B30089BED80089BE + D80089BED800FBFBFB00FBFBFB00FBFBFB000000000000000000008020000080 + 200000C0400000C0400000C0400040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C08000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000000000000000000000040C0800040C0800040C0600040C0600040C0 + 800040C0800040C0800040C0800080E0A00080E0A00080E0A00080E0A00080E0 + A00000C0200000C0200080E0A00080E0A00000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000C0C0A000C0C0 + A00000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0800040C0800040C0800040C0800040C0800040C0800040C0800080E0 + 800080E0800080E0A00080E0A00080E0A00080E0A00040C0600040C0600040C0 + 600040C0200040C02000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000C0C0A000C0C0 + A00000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600080E0A00080E0A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 + 000040C0800040C0800040C0800040C0800040C0800040C0800040C0800080E0 + 800080E0800080E0A00080E0A00080E0A00080E0A00040C0600040C0600040C0 + 600040C0200040C02000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040A0400040A0400040A0400000A0200000A0200040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0C00080E0C000C0DCC000C0DCC00040C0800040C0 + 800040C0800040C0800040C0800080E0800080E0800080E0A00080E0A00080E0 + A00080E0A000C0DCC000C0DCC00080E0A00080E0A00000C0000000C0000000C0 + 0000C0DCC000C0DCC000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000C0DC + C000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800080A0A00080A0A00080A0A000F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003398CB003398CB003398CB0091F7 + FF0091F7FF0091F7FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4FF008EF4 + FF008EF4FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000167CAE00167CAE00167CAE00979797009797970097979700000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040A0400040A0400040A0400000A0200000A0200040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0C00080E0C000C0DCC000C0DCC00040C0800040C0 + 800040C0800040C0800040C0800080E0800080E0800080E0A00080E0A00080E0 + A00080E0A000C0DCC000C0DCC00080E0A00080E0A00000C0000000C0000000C0 + 0000C0DCC000C0DCC000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000C0DC + C000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800080A0A00080A0A00080A0A000F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000040A0400040A0400000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C0800040C0800040C0 + 800080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00000C0000000C0000080E0A00080E0A00080E0 + A0000000000000000000000000000000000000000000000000000000000040C0 + E00040C0E00040C0E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000C0DC + C000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800080A0A00080A0A00080A0A000F0FBFF00F0FBFF00F0FB + FF0000A0C00000A0C00000A0C000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000040A0400040A0400000A0200000A0200040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0800040C0800040C0800040C0 + 800080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00000C0000000C0000080E0A00080E0A00080E0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040C0E00040C0E00040C0E00080E0E00080E0E00080E0 + E00080A0A00080A0A00080A0A000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0 + A00080A0A00080A0A00040A0C00040A0C00040A0C00040A0E00040A0E00040A0 + E000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000003499CC003499CC003499CC000000 + 0000000000000000000099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF + FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000 + 00000000000060AACF0060AACF0060AACF007AB7D6007AB7D6007AB7D60079B5 + D40079B5D40079B5D40077B4D30077B4D30077B4D3006AACCD006AACCD006AAC + CD003F94BD003F94BD003F94BD00FEFEFE00FEFEFE00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040A0400040A0400000A0 + 200000A0200040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C0800040C0800040C0800080E0800080E0800080E0A00080E0 + A00080E0A00080E0A00080E0A000C0DCC000C0DCC000C0DCC000C0DCC00040C0 + 600040C0600000C0200000C0200080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040C0E00040C0E00040C0E00080E0E00080E0E00080E0 + E00080A0A00080A0A00080A0A000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0 + A00080A0A00080A0A00040A0C00040A0C00040A0C00040A0E00040A0E00040A0 + E000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040A0400040A0400000A0 + 200000A0200040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0800040C0800040C0800040C0800080E0800080E0800080E0A00080E0 + A00080E0A00080E0A00080E0A000C0DCC000C0DCC000C0DCC000C0DCC00040C0 + 600040C0600000C0200000C0200080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000040C0E00040C0E00040C0E00080E0E00080E0E00080E0 + E00080A0A00080A0A00080A0A000C0C0C000C0C0C000C0C0C000C0DCC000C0DC + C000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC000C0DCC00080A0 + A00080A0A00080A0A00040A0C00040A0C00040A0C00040A0E00040A0E00040A0 + E000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA60000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600C0C0A000C0C0A000C0C0A000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + 800080C0800000A0200000A0200000A0200000A0200040C0400040C0400040C0 + 400040C0600040C0600080E0800080E0800080E0A00080E0A00080E0800080E0 + 800080E0800080E0800080E0800040C0400040C0400000C0000000C0000040C0 + 600040C06000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + 800080C0800000A0200000A0200000A0200000A0200040C0400040C0400040C0 + 400040C0600040C0600080E0800080E0800080E0A00080E0A00080E0800080E0 + 800080E0800080E0800080E0800040C0400040C0400000C0000000C0000040C0 + 600040C06000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000069B3 + D90069B3D90069B3D90000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000069B0D40069B0 + D40069B0D400F7F7F700F7F7F700F7F7F7000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00040C0400040C0400040C0 + 400040C0400040C0400000A0000000A0000000C0000000C0000000C0200000C0 + 200040C0400040C0400040C0400080E0800080E08000C0DCC000C0DCC0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000A4A0A000A4A0 + A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00040C0400040C0400040C0 + 400040C0400040C0400000A0000000A0000000C0000000C0000000C0200000C0 + 200040C0400040C0400040C0400080E0800080E08000C0DCC000C0DCC0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000003499CC003499CC003499CC003398CB003398CB003398 + CB003196C9003196C9003196C9002F94C7002F94C7002F94C700FDFDFD00FDFD + FD00FDFDFD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0DCC00080A0600080A06000006020000060200000600000006000000060 + 0000006000000060000000600000006000000060000000600000006000000060 + 00000040000000400000004000004060400040604000A4A0A000A4A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0DCC00080A0600080A06000006020000060200000600000006000000060 + 0000006000000060000000600000006000000060000000600000006000000060 + 00000040000000400000004000004060400040604000A4A0A000A4A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0804000C0804000C0804000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0804000C0804000C080 + 4000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E000C0A0E0004060E0004060E0004060E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000080C0800080C080000080 + 200000802000008020000080200000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000A0200000A0 + 200000A0000000A0000000A00000008000000080000000400000004000000060 + 200000602000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0804000C0804000C0804000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0804000C0804000C080 + 4000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E000C0A0E0004060E0004060E0004060E0000000000000000000000000000000 + 0000000000000000000000000000000000000000000080C0800080C080000080 + 200000802000008020000080200000A0200000A0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000A0200000A0 + 200000A0000000A0000000A00000008000000080000000400000004000000060 + 200000602000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0804000C0804000C0804000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0808000C0808000C0808000C0804000C0804000C080 + 4000C0808000C0808000C0808000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0E000C0A0 + E000C0A0E0004060E0004060E0004060E0000000000000000000000000000000 + 000000000000000000000000000040A0400040A04000008020000080200000A0 + 400000A0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000A0000000A000000080 + 0000008000000040000000400000A4A0A000A4A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0604000C0604000C0604000C0400000C040 + 0000C0400000C0A08000C0A08000C0A08000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0400000C0400000C0400000C0604000C0604000C060 + 4000C0400000C0400000C0400000C0DCC000C0DCC000C0DCC000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0004060E0004060E0004060E000C0A0E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080E0008080E0008080E0000020E0000020 + E0000020E0004060E0004060E0004060E0000000000000000000000000000000 + 000000000000000000000000000040A0400040A04000008020000080200000A0 + 400000A0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000A0200000A0200000A0000000A000000080 + 0000008000000040000000400000A4A0A000A4A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0604000C0604000C0604000C0400000C040 + 0000C0400000C0A08000C0A08000C0A08000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0400000C0400000C0400000C0604000C0604000C060 + 4000C0400000C0400000C0400000C0DCC000C0DCC000C0DCC000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0004060E0004060E0004060E000C0A0E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080E0008080E0008080E0000020E0000020 + E0000020E0004060E0004060E0004060E0000000000000000000000000000000 + 000040A0600040A0600040A06000008020000080200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000A0 + 000000A0000000A0000000A000000040000000400000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0400000C0400000C0400000C0604000C0604000C0604000C0400000C040 + 0000C0400000C0A08000C0A08000C0A08000000000000000000000000000C0A0 + 8000C0A08000C0A08000C0400000C0400000C0400000C0604000C0604000C060 + 4000C0400000C0400000C0400000C0DCC000C0DCC000C0DCC000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0004060E0004060E0004060E000C0A0E000C0A0E000C0A0 + E000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080E0008080E0008080E0000020E0000020 + E0000020E0004060E0004060E0004060E0000000000000000000000000000000 + 000040A0600040A0600040A06000008020000080200000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000A0 + 000000A0000000A0000000A000000040000000400000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600F0CAA600F0CA + A600C0400000C0400000C0400000000000000000000000000000C0808000C080 + 8000C0808000C0604000C0604000C0604000000000000000000000000000C060 + 4000C0604000C0604000C0A08000C0A08000C0A08000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000004060 + E0004060E0004060E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004060E0004060E0004060E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000080C0800080C0 + 800000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000A0200000A0200000A0000000A0000000402000004020000040 + 2000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600F0CAA600F0CA + A600C0400000C0400000C0400000000000000000000000000000C0808000C080 + 8000C0808000C0604000C0604000C0604000000000000000000000000000C060 + 4000C0604000C0604000C0A08000C0A08000C0A08000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000004060 + E0004060E0004060E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004060E0004060E0004060E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000080C0800080C0 + 800000802000008020000080200040C0600040C0600040C0600040C0600040C0 + 600040C0600000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400040C0600040C060000000000000000000000000000000000040C0600040C0 + 600000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000A0200000A0200000A0000000A0000000402000004020000040 + 2000C0DCC000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0CAA600F0CAA600F0CA + A600C0400000C0400000C0400000000000000000000000000000C0808000C080 + 8000C0808000C0604000C0604000C0604000000000000000000000000000C060 + 4000C0604000C0604000C0A08000C0A08000C0A08000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600000000000000 + 0000000000000000000000000000000000000000000000000000000000004060 + E0004060E0004060E0000020E0000020E0000020E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004060E0004060E0004060E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00C0DCC000C0DCC000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 60000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000800000008000000080 + 000040806000408060000000000000000000000000000000000000000000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000C0A08000C0A08000C0A08000C0806000C080 + 6000C0806000C0600000C0600000C0600000000000000000000000000000C040 + 0000C0400000C0400000C0808000C0808000C0808000C0806000C0806000C080 + 6000C0400000C0400000C0400000F0FBFF00F0FBFF00F0FBFF00000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 000000000000000000000000000000000000C0DCC000C0DCC000008020000080 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0400040C0400040C0600040C0600040C0 + 60000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000800000008000000080 + 000040806000408060000000000000000000000000000000000000000000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000C0A08000C0A08000C0A08000C0806000C080 + 6000C0806000C0600000C0600000C0600000000000000000000000000000C040 + 0000C0400000C0400000C0808000C0808000C0808000C0806000C0806000C080 + 6000C0400000C0400000C0400000F0FBFF00F0FBFF00F0FBFF00000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 00000000000000000000000000000000000080C0600080C0600000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000A0200000A0200000A0 + 20000060000000600000C0DCC000C0DCC000000000000000000000000000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF00C0400000C0400000C0400000C0A08000C0A08000C0A08000C0806000C080 + 6000C0806000C0600000C0600000C0600000000000000000000000000000C040 + 0000C0400000C0400000C0808000C0808000C0808000C0806000C0806000C080 + 6000C0400000C0400000C0400000F0FBFF00F0FBFF00F0FBFF00000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0008080E0008080E0008080E000000000000000 + 00000000000000000000000000000000000080C0600080C0600000A0200000A0 + 200040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000040C0600040C0 + 600000C0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000C0200000C0200000C0200000A0200000A0200000A0 + 20000060000000600000C0DCC000C0DCC000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0A08000C0A08000C0A08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000000080000080A0800080A08000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0A08000C0A08000C0A08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000000000000040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 200000C0200000C0200000C0200000C0200000C0200000C0200000C0200000C0 + 2000008000000080000080A0800080A08000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A08000C0A08000C0A08000C0400000C0400000C0400000C0600000C060 + 0000C0600000C0400000C0400000C0400000F0CAA600F0CAA600F0CAA600C040 + 0000C0400000C0400000C0600000C0600000C0600000C0600000C0600000C060 + 0000C0A08000C0A08000C0A08000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060 + E0000020E0000020E0000020E0000020E0000020E0000020E0004060E0004060 + E0004060E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF000040E0000040E0000040E0000020E0000020E0000020 + E0008080E0008080E0008080E000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000A0200000A020004080400040804000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000C0A080008040200080402000804020008060600080606000806060008040 + 20008040200080402000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080A0E00080A0E00080A0E0000020E0000020E0000020E0000020E0000020 + E0000020E0004060E0004060E0004060E00080A0E00080A0E00080A0E0000040 + E0000040E0000040E0000020E0000020E0000020E0008080E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000040C0800040C0800040C0600040C0600000C0400000C0 + 400000C0400000C0400000C0400000C0400000C0400000C0400000C0400000C0 + 400000C0400000C0400000C0400000C0200000C0200000C0200000C0200000C0 + 200000A0200000A020004080400040804000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000C0A080008040200080402000804020008060600080606000806060008040 + 20008040200080402000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080A0E00080A0E00080A0E0000020E0000020E0000020E0000020E0000020 + E0000020E0004060E0004060E0004060E00080A0E00080A0E00080A0E0000040 + E0000040E0000040E0000020E0000020E0000020E0008080E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00C0DCC000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00040C0600040C0600000C0400000C0400000C0400000C0400000C0 + 400000A0200000A020000060200000602000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0A08000C0A0 + 8000C0A080008040200080402000804020008060600080606000806060008040 + 20008040200080402000C0808000C0808000C0808000F0CAA600F0CAA600F0CA + A600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080A0E00080A0E00080A0E0000020E0000020E0000020E0000020E0000020 + E0000020E0004060E0004060E0004060E00080A0E00080A0E00080A0E0000040 + E0000040E0000040E0000020E0000020E0000020E0008080E0008080E0008080 + E000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00C0DCC000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00080E0A00040C0600040C0600000C0400000C0400000C0400000C0400000C0 + 400000A0200000A020000060200000602000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000808060008080600080806000C0C0C000C0C0C000C0C0C0008080 + 6000808060008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF004040E0004040 + E0004040E0000020E0000020E0000020E0000020E0000020E0000020E0000020 + E0000020E0000020E0008080E0008080E0008080E00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000C0200000C020000060000000600000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000808060008080600080806000C0C0C000C0C0C000C0C0C0008080 + 6000808060008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF004040E0004040 + E0004040E0000020E0000020E0000020E0000020E0000020E0000020E0000020 + E0000020E0000020E0008080E0008080E0008080E00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000C0200000C020000060000000600000000000000000000000000000C080 + 8000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000808060008080600080806000C0C0C000C0C0C000C0C0C0008080 + 6000808060008080600000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF004040E0004040 + E0004040E0000020E0000020E0000020E0000020E0000020E0000020E0000020 + E0000020E0000020E0008080E0008080E0008080E00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000A0400000A040000060000000600000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000C0A0A000C0A0A000C0A0A000C0A0A000808080008080800080808000A4A0 + A000A4A0A000A4A0A000C0A0A000C0A0A000C0A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0008080E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0800040C080000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080E0A00080E0A00000C0400000C0400000C0400000C0400000C0 + 400000A0400000A040000060000000600000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000C0A0A000C0A0A000C0A0A000C0A0A000808080008080800080808000A4A0 + A000A4A0A000A4A0A000C0A0A000C0A0A000C0A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0008080E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000080E0C00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0A00080E0A00080E0 + A00080E0A00040C0800040C0800040C0400040C0400000C0400000C0400000C0 + 400000A0400000A040004080400040804000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000C0A0A000C0A0A000C0A0A000C0A0A000808080008080800080808000A4A0 + A000A4A0A000A4A0A000C0A0A000C0A0A000C0A0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080E0008080 + E0008080E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E000F0FBFF00F0FBFF00F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0200000A0200040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0800040C080000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000000000000080E0C00080E0C00080E0C00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C00080E0C00080E0C00080E0A00080E0A00080E0 + A00080E0A00040C0800040C0800040C0400040C0400000C0400000C0400000C0 + 400000A0400000A040004080400040804000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 800080808000A4A0A000A4A0A000A4A0A000C0808000C0808000C0808000A4A0 + A000A4A0A000A4A0A000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040 + E0000040E0000040E0000040E0000040E0008080E0008080E0008080E0000040 + E0000040E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0800040C0 + 800040C0800040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200040A0400040A04000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 800080808000A4A0A000A4A0A000A4A0A000C0808000C0808000C0808000A4A0 + A000A4A0A000A4A0A000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040 + E0000040E0000040E0000040E0000040E0008080E0008080E0008080E0000040 + E0000040E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A0000000A0000040C0800040C0 + 800040C0800040C0800040C0800040C0600040C0600040C0600040C0600040C0 + 800040C080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600000A0200000A0200040A0400040A04000000000000000000000000000C0A0 + 8000C0A08000C0A08000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00F0FBFF00F0FBFF00C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C08080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 800080808000A4A0A000A4A0A000A4A0A000C0808000C0808000C0808000A4A0 + A000A4A0A000A4A0A000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040 + E0000040E0000040E0000040E0000040E0008080E0008080E0008080E0000040 + E0000040E0000040E0000040E0000040E0000040E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000040C0200040C0200040C0600040C0 + 600080E0800080E0800080E0800040C0800040C0800040C0800040C0800040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 6000008020000080200080C0A00080C0A000000000000000000000000000C0A0 + 8000C0A08000C0A08000000000000000000000000000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0A000C0C0 + A000C0C0A000A4A0A000A4A0A000A4A0A0000000000000000000000000008080 + 80008080800080808000C0A0A000C0A0A000C0A0A000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004040E0004040E0004040E0000040E0000040E0000040E0000040E0000040 + E0000040E000C0A0E000C0A0E000C0A0E000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040E0000040 + E000C0A0E000C0A0E000C0A0E000000000000000000000000000000000000000 + 00000000000000000000000000000000000040C0200040C0200040C0600040C0 + 600080E0800080E0800080E0800040C0800040C0800040C0800040C0800040C0 + 600040C0600040C0800040C080000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 6000008020000080200080C0A00080C0A000000000000000000000000000C0A0 + 8000C0A08000C0A08000000000000000000000000000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0A000C0C0 + A000C0C0A000A4A0A000A4A0A000A4A0A0000000000000000000000000008080 + 80008080800080808000C0A0A000C0A0A000C0A0A000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004040E0004040E0004040E0000040E0000040E0000040E0000040E0000040 + E0000040E000C0A0E000C0A0E000C0A0E000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040E0000040 + E000C0A0E000C0A0E000C0A0E000000000000000000000000000000000000000 + 00000000000000000000000000000000000080E0A00080E0A00000C0200000C0 + 200080E0A00080E0A00080E0A00080E0A00080E0A00040C0800040C0800040C0 + 800040C0800040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000C0400000C0400000C0 + 400000802000008020000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A08000000000000000000000000000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C0A08000C0A08000C0A08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0808000C0808000C0808000C0A08000C0A08000C0A08000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0A000C0C0 + A000C0C0A000A4A0A000A4A0A000A4A0A0000000000000000000000000008080 + 80008080800080808000C0A0A000C0A0A000C0A0A000C0C0C000C0C0C000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF004040E0004040E0004040E0000040E0000040E0000040E0000040E0000040 + E0000040E000C0A0E000C0A0E000C0A0E000000000000000000000000000F0FB + FF00F0FBFF00F0FBFF004060E0004060E0004060E0000040E0000040E0000040 + E000C0A0E000C0A0E000C0A0E000000000000000000000000000000000000000 + 00000000000000000000000000000000000080E0A00080E0A00000C0200000C0 + 200080E0A00080E0A00080E0A00080E0A00080E0A00040C0800040C0800040C0 + 800040C0800040C0600040C0600040C0800040C0800000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000C0400000C0400000C0 + 400000802000008020000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A0A000C0A0A000A4A0A000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF00C0A0A000C0A0A000C0A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E000C0A0E000C0A0E0000040E0000040E0000040 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000C0A0E0000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 000000000000000000000000000000000000000000000000000040C0200040C0 + 200040C0600040C0600040C0600080E0A00080E0A00080E0A00080E0A00080E0 + 800080E0800040C0800040C0800040C0800040C0800040C0800040C0800040C0 + 80000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 2000C0C0A000C0C0A0000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A0A000C0A0A000A4A0A000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF00C0A0A000C0A0A000C0A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E000C0A0E000C0A0E0000040E0000040E0000040 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000C0A0E0000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 000000000000000000000000000000000000000000000000000040C0200040C0 + 200040C0600040C0600040C0600080E0A00080E0A00080E0A00080E0A00080E0 + 800080E0800040C0800040C0800040C0800040C0800040C0800040C0800040C0 + 80000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0080E0A00080E0 + A00040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000802000008020000080 + 2000C0C0A000C0C0A0000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A0A000C0A0A000A4A0A000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000F0FB + FF00F0FBFF00F0FBFF00C0A0A000C0A0A000C0A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0E000C0A0E000C0A0E0000040E0000040E0000040 + E0000040E0000040E0000040E0000040E0000040E0000040E000C0A0E000C0A0 + E000C0A0E0000000000000000000000000000000000000000000000000000000 + 00000000000000000000F0FBFF00F0FBFF00F0FBFF008080E0008080E0008080 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC000C0DC + C00000C0000000C0000000C0000080E0A00080E0A000C0DCC000C0DCC00080E0 + A00080E0A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0 + 800040C0800040C08000C0DCC000C0DCC00080E0C00080E0C00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600000A0200000A0200040A0400040A0400040A0 + 400000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00808060008080600080806000C0A0A000C0A0 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A00080606000806060008060 + 6000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0004060E0004060E0004060E000000000000000 + 0000000000000000000000000000000000000000000000000000C0DCC000C0DC + C00000C0000000C0000000C0000080E0A00080E0A000C0DCC000C0DCC00080E0 + A00080E0A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0 + 800040C0800040C08000C0DCC000C0DCC00080E0C00080E0C00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600000A0200000A0200040A0400040A0400040A0 + 400000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00808060008080600080806000C0A0A000C0A0 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A00080606000806060008060 + 6000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0004060E0004060E0004060E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00080E0A00000C0000000C0000080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00040C0800040C0800040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00F0FBFF00F0CAA600F0CAA600F0CAA600C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00F0FBFF00F0FBFF00808060008080600080806000C0A0A000C0A0 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A00080606000806060008060 + 6000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + E000C0A0E000C0A0E0000040E0000040E0000040E0000040E0000040E0000040 + E0000040E0000040E0000040E000C0A0E000C0A0E000C0A0E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0E000C0A0E000C0A0E0004060E0004060E0004060E000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080E0A00080E0A00080E0A00000C0000000C0000080E0A00080E0A000C0DC + C000C0DCC00080E0A00080E0A00080E0A00080E0A00080E0A00080E0A00080E0 + A00040C0800040C0800040C0800040C0800040C0600040C0600040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600000A0200000A0200040A0400040A0400000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000808060008080600080806000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080806000808060008080 + 6000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000040 + E0000040E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00000C0200000C0200040C0 + 600040C06000C0DCC000C0DCC000C0DCC000C0DCC00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600000A0 + 200000A0200040A0400040A04000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000808060008080600080806000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080806000808060008080 + 6000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000040 + E0000040E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000080E0A00080E0A00000C0200000C0200040C0 + 600040C06000C0DCC000C0DCC000C0DCC000C0DCC00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0800080E0800040C0800040C0800040C0800040C0 + 800040C0600040C0600040C0600040C0600040C0600040C0600040C0600000A0 + 200000A0200040A0400040A04000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + 8000C0A08000C0A0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0DCC000C0DCC000808060008080600080806000F0FBFF00F0FB + FF00F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080806000808060008080 + 6000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000040 + E0000040E0000040E0000040E0000040E0000040E0000040E0000040E0000040 + E000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC00040C0 + 600040C0600000C0000000C0000040C0400040C0400080E0800080E0800080E0 + 800080E0800080E0800080E0A00080E0A00080E0800080E0800040C0600040C0 + 600040C0400040C0400040C0400000A0200000A0200000A0200000A0200080C0 + 800080C080000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC00040C0 + 600040C0600000C0000000C0000040C0400040C0400080E0800080E0800080E0 + 800080E0800080E0800080E0A00080E0A00080E0800080E0800040C0600040C0 + 600040C0400040C0400040C0400000A0200000A0200000A0200000A0200080C0 + 800080C080000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0DCC000C0DCC00080E0800080E0800040C0400040C0400040C0 + 400000C0200000C0200000C0000000C0000000A0000000A0000040C0400040C0 + 400040C0400040C0400040C0400080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0808000C0808000C0808000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000C0DCC000C0DCC000C0DC + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080A0 + E00080A0E00080A0E0004060E0004060E0004060E000F0FBFF00F0FBFF00F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0DCC000C0DCC00080E0800080E0800040C0400040C0400040C0 + 400000C0200000C0200000C0000000C0000000A0000000A0000040C0400040C0 + 400040C0400040C0400040C0400080E0A00080E0A00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0CA + A600F0CAA600F0CAA600C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A08000C0A0 + 8000C0A08000C0808000C0808000C0808000F0FBFF00F0FBFF00F0FBFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000C0000000900000000100010000000000800D00000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFFFFFF00000000000000000000 + 0000000000000000FFFFFFFFFFFF000000000000000000000000000000000000 + FFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFC0FFF0000 + 00000000000000000000000000000000FFFFFFFC0FFF00000000000000000000 + 0000000000000000FFFFFFFC0FFF000000000000000000000000000000000000 + FFFFFFE001FF000000000000000000000000000000000000FFFFFFE001FF0000 + 00000000000000000000000000000000FFFFFFE001FF00000000000000000000 + 0000000000000000FFFFFFE0003F000000000000000000000000000000000000 + FFFFFFE0003F000000000000000000000000000000000000FFFFFFE0003F0000 + 00000000000000000000000000000000FFFFFFFC003F00000000000000000000 + 0000000000000000FFFFFFFC003F000000000000000000000000000000000000 + FFFFFFFC003F000000000000000000000000000000000000FFFFFFFF80070000 + 00000000000000000000000000000000FFFFFFFF800700000000000000000000 + 0000000000000000FFFFFFFF8007000000000000000000000000000000000000 + E00000038000000000000000000000000000000000000000E000000380000000 + 00000000000000000000000000000000E0000003800000000000000000000000 + 0000000000000000E0000003F000000000000000000000000000000000000000 + E0000003F000000000000000000000000000000000000000E0000003F0000000 + 00000000000000000000000000000000E0000003FE0000000000000000000000 + 0000000000000000E0000003FE00000000000000000000000000000000000000 + E0000003FE00000000000000000000000000000000000000E00007FFFE000000 + 00000000000000000000000000000000E00007FFFE0000000000000000000000 + 0000000000000000E00007FFFE00000000000000000000000000000000000000 + E00000FFFE00000000000000000000000000000000000000E00000FFFE000000 + 00000000000000000000000000000000E00000FFFE0000000000000000000000 + 0000000000000000E0000003F000000000000000000000000000000000000000 + E0000003F000000000000000000000000000000000000000E0000003F0000000 + 00000000000000000000000000000000E00E0000000000000000000000000000 + 0000000000000000E00E00000000000000000000000000000000000000000000 + E00E00000000000000000000000000000000000000000000E00FC00000070000 + 00000000000000000000000000000000E00FC000000700000000000000000000 + 0000000000000000E00FC0000007000000000000000000000000000000000000 + E00FFF000007000000000000000000000000000000000000E00FFF0000070000 + 00000000000000000000000000000000E00FFF00000700000000000000000000 + 0000000000000000FFFFFFFC01FF000000000000000000000000000000000000 + FFFFFFFC01FF000000000000000000000000000000000000FFFFFFFC01FF0000 + 00000000000000000000000000000000FFFFFFFFFFFFFFFFF001FFFFFFFFC000 + 0007FC000000003FFFFFFFFFFFFFFFFFF001FFFFFFFFC0000007FC000000003F + FFFFFFFFFFFFFFF8000007FFFFFFC0000007FC000000003FE00000000007FFF8 + 000007FFFC0000000007FC000000003FE00000000007FF80000001FFFC000000 + 0007FC000000003FE00000000007FF80000001FFFC0000000007FC000000003F + E00000000007FE000000007FE00007FFFE07FC000000003F000000000000FE00 + 0000007FE00007FFFE07FC000000003F000000000000F0000000000FE00007FF + FE07FC000000003F000000000000F0000000000FE00007FFFE07FC000000003F + 000000000000C00003C00003E00007FFFE07FC000000003F000000000000C000 + 03C00003E00007FFFE07FC000000003F000000000000C00000300000E0000700 + 0007FC700000003F000000000000C00000300000E00007000007FC700000003F + 0000000000000000030E0000E00007000007FC700000003F0000000000000000 + 030E0000E00007FFFE07FC700000003F000000000000000000C18000E00007FF + FE07FC700000003F000000000000000000C18000E00007FFFE07FC700000003F + 000000000000000000306000E00007000007FC700000003F0000000000000000 + 00306000E00007000007FC700000003F000000000000000000001800E0000700 + 0007FC700000003F000000000000000000001800E00007FFF007FC7FF800003F + 000000000000000000000600E00007FFF007FC7FF800003F0000000000000000 + 00000600E00007FFF007FC7FF800003F000000000000000000000600E00007FF + F007FC7FFF00003F000000000000000000000600E00007FFF007FC7FFF00003F + 000000000000000000301800E00007FFF007FC7FFF00003F007FFFFFF1C00000 + 00301800E00007FFF03FFC7FFFE0003F007FFFFFF1C0000000006000E00007FF + F03FFC7FFFE0003F007FFFFFF1C0000000006000E00007FFF03FFC7FFFE0003F + 007FFFFFF1C0000000018000E000000001FFFC7FFFFC003F0000000000000000 + 00018000E000000001FFFC7FFFFC003F000000000000C000000E0000E0000000 + 01FFFC7FFFFC003F000000000000C000000E0000E000000001FFFC7FFFFC003F + 000007FFF03FC00000300003E000000001FFFC7FFFFC003F000007FFF03FC000 + 00300003E000000001FFFC7FFFFC003F000007FFF03FF00000000003E0000000 + 01FFFC7FFFFC003F000007FFF03FF00000000003E000000001FFFC7FFFFC003F + 1C003800003FFE000000000FE000000001FFFC7FFFFC003F1C003800003FFE00 + 0000000FFC00000001FFFC7FFFFC01FF1C003800003FFF800000007FFC000000 + 01FFFC7FFFFC01FFE3FFC0FFFFFFFF800000007FFC00000001FFFC7FFFFC01FF + E3FFC0FFFFFFFFE0000001FFFFFE0003FFFFFC0000000FFFE3FFC0FFFFFFFFE0 + 000001FFFFFE0003FFFFFC0000000FFFE3FFC0FFFFFFFFFE00001FFFFFFE0003 + FFFFFC0000000FFFFC0007FFFFFFFFFE00001FFFFFFFFFFFFFFFFFFFFFFFFFFF + FC0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0007FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFE00000007FFFFFFFF + FFFFFFFFFFFFFFFFFFFF800FFFFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFF + FFE000001FFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFFFFE000001FFFFFFE + 00000007FFF007FC01FFFFFFFFFFFFC0FF80000001FFFFFE00000007FFF007FC + 01FFFFFFFFFFFFC0FF80000001FFFFFE00000007FFF007FC01FFFFFFFFFFFFC0 + FE000000007FFFFE00000007FF8000E0003FE00FFFFFFE00FE000000007FFFFE + 00000007FF8000E0003FE00FFFFFFE00F0000000000FFFFE00000007FF8000E0 + 003FE00FFFFFFE00F0000000000FFFFE00000007FF81C0E0003FE001FFFF8000 + C00003C00003FFFE00000007FF81C0E0003FE001FFFF8000C00003C00003FFFE + 00000007FF81C0E0003FE001FFFF800000000C000003E00000000007FF8000E0 + 003FE0003FFC003F00000C000003E00000000007FF8000E0003FE0003FFC003F + 000070C00000E00000000007FF8000E0003FE0003FFC003F000070C00000E000 + 00000007FFF0000001FFFC0000E001FF000183000000E00000000007FFF00000 + 01FFFC0000E001FF000183000000E00000000007FFF0000001FFFC0000E001FF + 00060C000000E00000000007FFFE00000FFFFFF000000FFF00060C000000E000 + 00000007FFFE00000FFFFFF000000FFF001800000000E00000000007FFFE0000 + 0FFFFFF000000FFF001800000000E0003FFFFE07FFFFF803FFFFFFFE00007FFF + 006000000000E0003FFFFE07FFFFF803FFFFFFFE00007FFF006000000000E000 + 3FFFFE07FFFFF803FFFFFFFE00007FFF006000000000E0003FFFF007FFFFC000 + 7FFFFFFFC0007FFF006000000000E0003FFFF007FFFFC0007FFFFFFFC0007FFF + 00180C000000E0003FFFF007FFFFC0007FFFFFFFC0007FFF00180C000000E000 + 3FFFF007FFFFC0000FFFFFF000000FFF000600000000E0003FFFF007FFFFC000 + 0FFFFFF000000FFF000600000000E0003FFFF007FFFFC0000FFFFFF000000FFF + 000180000000E3803FFFF007FFFE00E00FFFFF8000E001FF000180000000E380 + 3FFFF007FFFE00E00FFFFF8000E001FF000070000003E3803FFFF007FFFE00E0 + 0FFFFF8000E001FF000070000003E3FE0000003FFFFE00E00FFFFC0007FC003F + C0000C000003E3FE0000003FFFFE00E00FFFFC0007FC003FC0000C000003E3FE + 0000003FFFFE00E00FFFFC0007FC003FC0000000000FE3FFF803FFFFFFF007FC + 01FFE0003FFFF03FC0000000000FE3FFF803FFFFFFF007FC01FFE0003FFFF03F + F0000000007FE3FFF803FFFFFFF007FC01FFE0003FFFF03FF0000000007FE3FF + F803FFFFFFF007FF81FFE001FFFFFFFFFE00000001FFE3FFF803FFFFFFF007FF + 81FFE001FFFFFFFFFE00000001FFE3FFF803FFFFFFF007FF81FFE001FFFFFFFF + FF80000007FFE3FE0003FFFFFFF03FFF81FFE00FFFFFFFFFFF80000007FFE3FE + 0003FFFFFFF03FFF81FFE00FFFFFFFFFFFF800007FFFE3FE0003FFFFFFF03FFF + 81FFE00FFFFFFFFFFFF800007FFFE000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFE000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000 + 001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end + object ImageListGroups: TImageList + Left = 44 + Top = 172 + Bitmap = { + 494C010107000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000040606000A4A0A0008060 + 600080404000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A0008060 + 600080404000A4A0A000A4A0A0000000000000000000C0C0C000808080008080 + 8000808080008080800080808000808080008080800080808000808080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000808080008040 + 0000C080000080202000C0C0C000C0DCC000C0DCC000C0DCC000808080008040 + 0000C080000080202000A4A0A0000000000000000000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000808080000000 + 0000C0C0C000C0C0C0000000000000000000C0C0C00080808000808080008080 + 8000808080008080800080808000808080008080800080808000808080008080 + 8000808080008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000008040400080400000FFFF + 0000C0C00000C0C00000802020004020E0000000FF008040800080400000FFFF + 0000C0C00000C0C00000802020004020200000000000C0C0C000808080008080 + 800080808000C0C0C000808080008080800080808000C0C0C000808080000000 + 0000C0C0C000C0C0C0000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004020200080000000FFFF00008040 + 000080000000C0C00000C0800000802020004020A00080000000FFFF00008040 + 000080000000C0C00000C08000008020200000000000C0C0C000C0C0C000C0C0 + C00080808000C0C0C000C0C0C000C0C0C00080808000C0C0C000808080000000 + 000000000000C0C0C0000000000000000000C0C0C000C0C0C00080808000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C0008080800080808000808080008080 + 8000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C00000C0C0 + 000080400000FFFF0000C0804000404080000020C00080808000C0C00000C0C0 + 000080400000FFFF0000C08040004040400000000000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000808080000000 + 0000C0C0C000C0C0C0000000000000000000C0C0C000C0C0C000808080000000 + 00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0008080 + 8000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000004040400080808000C0C0 + 0000FFFF0000C0804000404080004020E0004040C0000020C00080808000C0C0 + 0000FFFF0000C0804000406060000000000000000000C0C0C000808080008080 + 8000808080008080800080808000808080008080800080808000808080000000 + 000000000000C0C0C0000000000000000000C0C0C000C0C0C000808080000000 + 00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000A4A0A0008080 + 8000C0808000404080004020E0008020200080000000804080000020C0008080 + 8000C080800080606000A4A0A0000000000000000000C0C0C000FF000000FF00 + 0000FF000000FF000000FF00000000000000FF00000000000000808080000000 + 0000C0C0C000C0C0C0000000000000000000C0C0C000C0C0C000808080000000 + 00000000000000000000C0C0C000C0C0C0008080800080808000808080008080 + 8000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C0C0004040 + 8000000080004020E00080202000C0C00000FFFF000080400000804080000020 + C00000008000C0DCC000A4A0A0000000000000000000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 + 000000000000C0C0C0000000000000000000C0C0C000C0C0C000808080000000 + 00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0008080 + 8000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C0C0004040 + C0004020E00080202000C0C00000C0C0000080400000FFFF0000804000008040 + 80000000FF00C0DCC000A4A0A000000000000000000000000000808080000000 + 0000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0C0000000 + 0000C0C0C000C0C0C0000000000000000000C0C0C000C0C0C000808080008080 + 8000808080008080800080808000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C0C0004040 + C0000000800080404000FFFF00008040000080000000C0C00000C08000004040 + 40000000FF00C0DCC000A4A0A000000000000000000000000000808080000000 + 0000000000008000000080000000800000008000000080000000800000008000 + 000000000000C0C0C0000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C0008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C0C000A4A0 + A000A4A0A00080606000C0804000FFFF0000C0C00000C0C00000808080008080 + 8000A4A0A000C0C0C000A4A0A000000000000000000000000000808080000000 + 0000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0C0000000 + 0000C0C0C000C0C0C0000000000000000000C0C0C00080808000808080008080 + 8000808080008080800080808000808080008080800080808000808080008080 + 8000808080008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0DCC000C0DC + C000C0DCC000C0DCC00080808000C0804000C080000080808000A4A0A000C0DC + C000C0DCC000C0DCC000A4A0A000000000000000000000000000808080000000 + 0000000000008000000080000000800000008000000080000000000000000000 + 000000000000000000000000000000000000C0C0C000FF000000FF000000FF00 + 0000FF000000FF000000FF000000FF000000FF000000FF00000000000000FF00 + 0000000000008080800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000404040008080800000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 0000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0C000C0C0 + C00000000000808080000000000000000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 000000000000000000000000000000000000000000000000000000000000C0C0 + C000808080000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008080 + 8000808080008080800080808000808080008080800080808000808080008080 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000040404000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080808000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000080808000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C0000000000000000000000000000000000000000000000000000000 + 000000000000A4A0A00040404000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000080808000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C0000000000000000000000000000000000000000000808080000000 + 000080000000800000008000000080000000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000080808000000000008000000080000000800000008000 + 0000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000A4A0A0000000000000000000A4A0A00040404000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008080800000000000C0C0 + C00000000000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0 + C000C0C0C0000000000000000000000000008080800000FFFF00808080000000 + 000000000000000000000000000000000000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008080 + 8000C0C0C000C0C0C00080808000000000000000000000000000000000000000 + 0000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000C0DCC00080606000806060000000000000000000A4A0A00040404000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000080808000000000000000 + 0000808000008080000080800000808000008080000080800000808000000000 + 0000C0C0C0000000000000000000000000008080800000000000808080000000 + 000080000000800000008000000080000000C0C0C000C0C0C000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000000000000000000000000000000000008080 + 8000000000008000000080808000000000008000000080000000800000008000 + 0000C0C0C000000000000000000000000000000000000000000000000000A4A0 + A000A4A0A000000000000000000080606000806060000000000000000000A4A0 + A00040404000FFFFFF00FFFFFF00FFFFFF00000000008080800000000000C0C0 + C00000000000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0 + C000C0C0C0000000000000000000000000008080800000FFFF00808080000000 + 000000000000000000000000000000000000C0C0C00000000000C0C0C0000000 + 0000C0C0C00000000000C0C0C0000000000080808000C0C0C000C0C0C0008080 + 8000000000000000000080808000000000000000000000000000000000000000 + 0000C0C0C0000000000080808000000000000000000000000000000000008060 + 600040404000A4A0A0008060600000000000A4A0A00080606000806060000000 + 000000000000A4A0A00040404000FFFFFF000000000080808000000000000000 + 0000C0C0C0000000000080800000808000008080000080800000808000000000 + 0000C0C0C0000000000000000000000000008080800000000000808080000000 + 000080000000800000008000000080000000C0C0C000C0C0C00000000000C0C0 + C00000000000C0C0C000C0C0C000000000008080800000000000800000008080 + 8000000000008000000080808000000000008000000080000000000000000000 + 0000000000000000000080808000000000000000000000000000C0DCC0008080 + 80004060600080A0A00000000000A4A0A0008060600000000000000000008060 + 6000806060000000000000000000A4A0A000000000008080800080000000C0C0 + C00000000000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0 + C000C0C0C0000000000000000000000000008080800000FFFF00808080000000 + 000000000000000000000000000000000000C0C0C00000000000C0C0C0000000 + 0000C0C0C00000000000C0C0C000000000008080800000000000000000008080 + 8000000000000000000080808000000000000000000000000000000000008080 + 800080808000808080008080800000000000C0DCC000000000000000000080A0 + A00040A0A00040A0A00000000000A4A0A000A4A0A000A4A0A000806060008060 + 60000000000080606000A4A0A000000000000000000080808000808080008000 + 00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 + 0000C0C0C0000000000000000000000000008080800000000000808080008080 + 80008080800080808000808080008080800080808000C0C0C00000000000C0C0 + C00000000000C0C0C000C0C0C000000000008080800000000000800000008080 + 8000000000008000000080808000808080008080800080808000808080008080 + 800000000000000000008080800000000000FFFFFF0080808000C0DCC00080C0 + C00080C0C0000080800000000000806060000000000000000000000000008060 + 600000000000806060000000000000000000000000008080800080000000C0C0 + C00000000000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0 + C000C0C0C0000000000000000000000000008080800000FFFF000000000000FF + FF000000000000FFFF000000000080808000C0C0C00000000000C0C0C0000000 + 0000C0C0C00000000000C0C0C000000000008080800000000000000000008080 + 8000000000000000000000000000000000008080800080808000C0C0C000C0C0 + C000C0C0C000C0C0C0000000000000000000FFFFFF00FFFFFF00FFFFFF008080 + 800000C0C00080A0A00080A0A000C0DCC0000000000000000000000000008060 + 6000A4A0A000A4A0A00000000000000000000000000080808000000000000000 + 0000C0C0C0000000000080800000808000008080000080800000808000000000 + 0000C0C0C0000000000000000000000000008080800080808000808080008080 + 80008080800080808000808080008080800000000000C0C0C00000000000C0C0 + C00000000000C0C0C000C0C0C000000000008080800000000000800000008080 + 8000808080008080800080808000808080008080800080800000808000008080 + 000080800000C0C0C0000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF000040400080C0C00040A0A0000000000000000000C0DCC00000000000A4A0 + A00080606000000000000000000000000000000000008080800000000000C0C0 + C00000000000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0 + C000C0C0C0000000000000000000000000000000000000000000808080000000 + 0000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0C0000000 + 0000C0C0C00000000000C0C0C000000000008080800000000000000000000000 + 00000000000080808000808080000000000080000000FFFF0000808000008080 + 000080800000C0C0C0000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF000020400040C0C00040A0A00080A0A000C0DCC0000000000000000000A4A0 + A000A4A0A0000000000000000000000000000000000080808000000000000000 + 0000808000008080000080800000808000008080000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080008000 + 0000800000008000000080000000800000008000000080000000800000008000 + 00008000000080000000C0C0C000000000008080800080808000808080008080 + 80008080800080808000808080000000000080000000FFFF0000FFFF00008080 + 000080800000C0C0C0000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000C0C00080A0A00000404000FFFFFF0080808000C0DCC0000000 + 000000000000000000000000000000000000000000008080800000000000C0C0 + C00000000000C0C0C00000000000C0C0C00000000000C0C0C000C0C0C0000000 + 0000808080000000000000000000000000000000000000000000808080008000 + 0000800000008000000080000000800000008000000080000000800000008000 + 00008000000080000000C0C0C000000000000000000000000000000000000000 + 0000000000000000000080808000000000008000000080000000800000008000 + 000080000000C0C0C0000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000040400080E0E00000808000FFFFFF00FFFFFF00FFFFFF008080 + 8000C0DCC0000000000000000000000000000000000080808000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0008080 + 8000000000000000000000000000000000000000000000000000808080008080 + 8000808080008080800080808000808080008080800080808000808080008080 + 8000808080008080800080808000000000000000000000000000000000000000 + 0000000000000000000080808000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000020400040C0C00040A0A00000204000FFFFFF00FFFFFF00FFFF + FF00FFFFFF0080808000C0DCC000000000000000000080808000808080008080 + 8000808080008080800080808000808080008080800080808000808080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000808080008080800080808000808080008080 + 800080808000808080000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF008080E0004040800040204000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0080808000424D3E000000000000003E000000 + 2800000040000000200000000100010000000000000100000000000000000000 + 000000000000000000000000FFFFFF00FFFF800FFFFF00008001800100010000 + 800180010001000080008001000100000000800900010000000080011C010000 + 800180091C010000800181411C010000800180091C0100008001D55100010000 + 8001D809000100008001D551000100008001D82100290000FE3FD54B00010000 + FFFFDFE7FFFF0000FFFFC00FFFFF0000FFFFC03FFC03F0008003C03FFC03F800 + 8003103FE103F600AAA31F00E1F3F180B01350000901E660AAA31F540DF0E118 + B41350284920C2668AA31F546DE0620980134028480102EB8AA32A546F0100E3 + B41300A8400101A7AAA3D55479010067B043C0000101001FAA97C000FD010007 + BFCFC000FDFD0001801FFFFFFE03000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.pas b/official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.pas new file mode 100644 index 0000000..5bb0c83 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Shared Demo Data/DatamoduleImagelists.pas @@ -0,0 +1,47 @@ +unit DatamoduleImagelists; + +interface + +{$I ..\..\Source\Compilers.inc} + +uses + SysUtils, + Classes, + ImgList, + Controls, + {$IFNDEF COMPILER_6_UP} + Forms, + {$ENDIF} + EasyListview; + +type + TImagelists = class(TDataModule) + ImageListSmall: TImageList; + ImageListLarge: TImageList; + ImageListExLarge: TImageList; + ImageListGroups: TImageList; + private + { Private declarations } + public + procedure UseImagesForListview(Listview: TEasyListview); + end; + +var + Imagelists: TImagelists; + +implementation + +{$R *.dfm} + +{ TImagelists } + +procedure TImagelists.UseImagesForListview(Listview: TEasyListview); +begin + Listview.ImagesGroup := ImageListGroups; + Listview.ImagesSmall := ImageListSmall; + Listview.ImagesLarge := ImageListLarge; + Listview.ImagesExLarge := ImageListExLarge; +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/Sorting/SortingProject.dpr b/official/1.7.0/EasyListview/Demos/Sorting/SortingProject.dpr new file mode 100644 index 0000000..474b30f --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Sorting/SortingProject.dpr @@ -0,0 +1,16 @@ +program SortingProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + DatamoduleImagelists in '..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TImagelists, Imagelists); + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/official/1.7.0/EasyListview/Demos/Sorting/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Sorting/Unit1.dfm new file mode 100644 index 0000000..e22a832 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Sorting/Unit1.dfm @@ -0,0 +1,297 @@ +object Form1: TForm1 + Left = 197 + Top = 200 + Width = 636 + Height = 469 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object LV: TEasyListview + Left = 0 + Top = 57 + Width = 628 + Height = 378 + Align = alClient + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -13 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [fsBold] + Header.Columns.Items = { + 0000000001000000800800000000000000000000000101000000050000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + Header.Visible = True + PaintInfoGroup.CaptionIndent = 6 + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoItem.TileDetailCount = 2 + ParentFont = False + Selection.MouseButtonSelRect = [cmbLeft, cmbRight] + TabOrder = 0 + View = elsReport + OnAutoGroupGetKey = LVAutoGroupGetKey + OnAutoSortGroupCreate = LVAutoSortGroupCreate + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 628 + Height = 57 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 22 + Height = 13 + Caption = 'View' + end + object Label2: TLabel + Left = 384 + Top = 12 + Width = 45 + Height = 13 + Caption = 'Algorithm' + end + object LabelItems: TLabel + Left = 8 + Top = 32 + Width = 27 + Height = 13 + Caption = 'Items' + end + object cbViews: TComboBox + Left = 40 + Top = 6 + Width = 161 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbViewsChange + end + object cAutosort: TCheckBox + Left = 292 + Top = 24 + Width = 97 + Height = 17 + Caption = 'Autosort' + TabOrder = 1 + OnClick = cAutosortClick + end + object cAutoGroup: TCheckBox + Left = 292 + Top = 8 + Width = 73 + Height = 17 + Caption = 'AutoGroup' + TabOrder = 2 + OnClick = cAutoGroupClick + end + object cbSort: TComboBox + Left = 440 + Top = 8 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 3 + end + object ButtonRebuild: TButton + Left = 208 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Rebuild' + TabOrder = 4 + OnClick = ButtonRebuildClick + end + object EditItems: TEdit + Left = 40 + Top = 32 + Width = 121 + Height = 21 + TabOrder = 5 + Text = '100' + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/Sorting/Unit1.pas b/official/1.7.0/EasyListview/Demos/Sorting/Unit1.pas new file mode 100644 index 0000000..6cea99b --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Sorting/Unit1.pas @@ -0,0 +1,216 @@ +unit Unit1; + +// Demo: simplest way to use EasyListview (very similar to TListview) + +interface + +{$I ..\..\Source\Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF COMPILER_6_UP} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + EasyListview, + StdCtrls, + ExtCtrls, + DatamoduleImagelists, + ImgList, MPCommonObjects; + +const + DetailType1Array: array[0..6] of WideString = ( + 'Detail 1 Type 1', + 'Detail 1 Type 2', + 'Detail 1 Type 3', + 'Detail 1 Type 4', + 'Detail 1 Type 5', + 'Detail 1 Type 6', + 'Detail 1 Type 7' + ); + + DetailType2Array: array[0..4] of WideString = ( + 'Detail 2 Type 1', + 'Detail 2 Type 2', + 'Detail 2 Type 3', + 'Detail 2 Type 4', + 'Detail 2 Type 5' + ); + + +type + TForm1 = class(TForm) + LV: TEasyListview; + Panel1: TPanel; + cbViews: TComboBox; + Label1: TLabel; + cAutosort: TCheckBox; + cAutoGroup: TCheckBox; + cbSort: TComboBox; + Label2: TLabel; + ButtonRebuild: TButton; + EditItems: TEdit; + LabelItems: TLabel; + procedure cAutosortClick(Sender: TObject); + procedure cbViewsChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure cAutoGroupClick(Sender: TObject); + procedure LVAutoSortGroupCreate(Sender: TCustomEasyListview; + Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; + var Group: TEasyGroup; var DoDefaultAction: Boolean); + procedure ButtonRebuildClick(Sender: TObject); + procedure LVAutoGroupGetKey(Sender: TCustomEasyListview; + Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; + var Key: Cardinal); + + private + function RandomString: string; + procedure AddItems(Count: Integer); + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +begin + FillStringsWithEasyListStyles(cbViews.Items); + cbViews.ItemIndex := Ord(LV.View); + FillStringsWithEasySortAlgorithms(cbSort.Items); + cbSort.ItemIndex := Ord(LV.Sort.Algorithm); + Imagelists.UseImagesForListview(LV); + cAutosort.Checked := LV.Sort.AutoSort; + cAutoGroup.Checked := LV.Sort.AutoRegroup; + AddItems(StrToInt(EditItems.Text)); +end; + +procedure TForm1.cbViewsChange(Sender: TObject); +begin + LV.View := TEasyListStyle(cbViews.ItemIndex); +end; + +procedure TForm1.AddItems(Count: Integer); +var + i, j, RandomIndex: Integer; + Item: TEasyItem; +begin + LV.BeginUpdate; + try + LV.Items.Clear; + for i := 0 to Count - 1 do + begin + Item := LV.Items.Add; + Item.ImageIndex := i mod LV.ImagesSmall.Count; + Item.Details[0] := 0; + Item.Details[1] := 1; + for j := 0 to LV.Header.Columns.Count - 1 do + begin + LV.Header.Columns[j].AutoSpring := True; + Item.Captions[0] := RandomString; + // Let ELV sort the first column with the first letter of the Caption (default) + // So don't do anything with Item.GroupKey[0] + + RandomIndex := Random(Length(DetailType1Array)); + Item.Captions[1] := DetailType1Array[RandomIndex]; + Item.GroupKey[1] := RandomIndex; + + RandomIndex := Random(Length(DetailType2Array)); + Item.Captions[2] := DetailType2Array[RandomIndex]; + Item.GroupKey[2] := RandomIndex; + + // Invents some keys for groups of Detail numbers + RandomIndex := Random(100); + Item.Captions[3] := IntToStr(RandomIndex) + end + end; + finally + LV.EndUpdate; + end; +end; + +function TForm1.RandomString: string; +begin + Result := ''; + while (Length(Result) < 5) or (Random < 0.3) do + if Random < 0.65 then + Result := Result + 'aeoui'[1 + Trunc(Random * 5)] + else + Result := Result + 'bcdfghjklmnpqrstvwxyz'[1 + Trunc(Random * 21)]; +end; + +procedure TForm1.cAutosortClick(Sender: TObject); +begin + LV.Sort.AutoSort := cAutoSort.Checked; +end; + +procedure TForm1.cAutoGroupClick(Sender: TObject); +begin + LV.Sort.AutoRegroup := cAutoGroup.Checked; +end; + + +procedure TForm1.LVAutoSortGroupCreate(Sender: TCustomEasyListview; + Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; + var Group: TEasyGroup; var DoDefaultAction: Boolean); +begin + // Here we customize the Group that is created for the AutoGrouping + if ColumnIndex = 3 then + begin + // Create a custom specialied TEasyGroup if desired, here we create a + // basic stored group. + Group := Groups.Add; + + case Item.GroupKey[ColumnIndex] of + 0: Group.Caption := 'Size is between 0 and 10'; + 1: Group.Caption := 'Size is between 11 and 20'; + 2: Group.Caption := 'Size is between 21 and 30'; + 3: Group.Caption := 'Size is between 31 and 40'; + 4: Group.Caption := 'Size is between 41 and 50'; + 5: Group.Caption := 'Size is between 51 and 60'; + 6: Group.Caption := 'Size is between 61 and 70'; + 7: Group.Caption := 'Size is between 71 and 80'; + 8: Group.Caption := 'Size is between 81 and 90'; + 9: Group.Caption := 'Size is between 91 and 100'; + end; + DoDefaultAction := False; + end +end; + +procedure TForm1.ButtonRebuildClick(Sender: TObject); +begin + AddItems(StrToInt(EditItems.Text)); +end; + +procedure TForm1.LVAutoGroupGetKey(Sender: TCustomEasyListview; + Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; + var Key: Cardinal); +begin + // Custom Grouping if third column is pressed + if ColumnIndex = 3 then + begin + case StrToInt(Item.Captions[3]) of + 0..10: Key := 0; + 11..20: Key := 1; + 21..30: Key := 2; + 31..40: Key := 3; + 41..50: Key := 4; + 51..60: Key := 5; + 61..70: Key := 6; + 71..80: Key := 7; + 81..90: Key := 8; + 91..100: Key := 9; + end; + end +end; + +end. + diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.dfm b/official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.dfm new file mode 100644 index 0000000..e292ea5 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.dfm @@ -0,0 +1,73 @@ +object EasyTaskPanelFormReplace: TEasyTaskPanelFormReplace + Left = 135 + Top = 227 + Width = 213 + Height = 234 + Caption = 'EasyTaskPanelFormReplace' + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + DesignSize = ( + 205 + 200) + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 186 + Height = 13 + Caption = 'Replace some object or another.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label2: TLabel + Left = 16 + Top = 32 + Width = 115 + Height = 13 + Caption = 'Enter the search criteria:' + end + object Button1: TButton + Left = 120 + Top = 168 + Width = 75 + Height = 25 + Caption = 'Run Search' + TabOrder = 0 + end + object Edit1: TEdit + Left = 16 + Top = 48 + Width = 177 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = 'Edit1' + end + object RadioGroup1: TRadioGroup + Left = 16 + Top = 80 + Width = 177 + Height = 81 + Anchors = [akLeft, akTop, akRight] + Caption = 'Options' + Columns = 2 + Items.Strings = ( + 'Option1 ' + 'Option2' + 'Option3 ' + 'Option4 ' + 'Option5 ' + 'Option6') + TabOrder = 2 + end +end diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.pas b/official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.pas new file mode 100644 index 0000000..09c430a --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/ReplacePanel.pas @@ -0,0 +1,48 @@ +unit ReplacePanel; + +// ********************************************************************** +// +// Create a new Task Panel from the Object Repository. +// +// File > New > Other... +// The select the "New" tab and double click on the "EasyListview TaskPanel" icon +// +// ********************************************************************** + +interface + + +uses + Windows, + Messages, + SysUtils, + Classes, + Controls, + Forms, + Dialogs, + Graphics, + EasyTaskPanelForm, StdCtrls, MPCommonObjects, EasyListview, ExtCtrls; + + +type + TEasyTaskPanelFormReplace = class(TEasyTaskPanelForm) + Label1: TLabel; + Button1: TButton; + Edit1: TEdit; + RadioGroup1: TRadioGroup; + Label2: TLabel; + private + { Private declarations } + public + { Public declarations } + end; + +var + EasyTaskPanelFormReplace: TEasyTaskPanelFormReplace; + +implementation + +{$R *.dfm} + + +end. diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.dfm b/official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.dfm new file mode 100644 index 0000000..5cb62aa --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.dfm @@ -0,0 +1,104 @@ +object EasyTaskPanelFormSearch: TEasyTaskPanelFormSearch + Left = 192 + Top = 114 + Width = 255 + Height = 273 + HorzScrollBar.Tracking = True + VertScrollBar.Tracking = True + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = True + OnShow = EasyTaskPanelFormShow + DesignSize = ( + 247 + 239) + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 88 + Width = 128 + Height = 13 + Caption = 'A word or phrase in the file:' + end + object Label2: TLabel + Left = 8 + Top = 16 + Width = 235 + Height = 13 + Caption = 'Search by any or all of the criteria below.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object Label3: TLabel + Left = 8 + Top = 40 + Width = 122 + Height = 13 + Caption = 'All or part of the file name:' + end + object Label4: TLabel + Left = 8 + Top = 136 + Width = 38 + Height = 13 + Caption = 'Look in:' + end + object Edit1: TEdit + Left = 8 + Top = 56 + Width = 225 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object TEdit + Left = 8 + Top = 104 + Width = 225 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + end + object ComboBox1: TComboBox + Left = 8 + Top = 152 + Width = 225 + Height = 21 + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 2 + Items.Strings = ( + 'Local Disk (C:)' + 'Local Disk (D:)' + 'Network' + 'Some other place...') + end + object Button1: TButton + Left = 72 + Top = 200 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Back' + TabOrder = 3 + end + object Button2: TButton + Left = 160 + Top = 200 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Search' + TabOrder = 4 + end +end diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.pas b/official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.pas new file mode 100644 index 0000000..c6aa6fe --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/SearchPanel.pas @@ -0,0 +1,59 @@ +unit SearchPanel; + +// ********************************************************************** +// +// Create a new Task Panel from the Object Repository. +// +// File > New > Other... +// The select the "New" tab and double click on the "EasyListview TaskPanel" icon +// +// ********************************************************************** + +interface + + +uses + Windows, + Messages, + SysUtils, + Classes, + Controls, + Forms, + Dialogs, + Graphics, + EasyTaskPanelForm, + StdCtrls, + ExtCtrls; + + +type + TEasyTaskPanelFormSearch = class(TEasyTaskPanelForm) + Edit1: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + ComboBox1: TComboBox; + Button1: TButton; + Button2: TButton; + procedure EasyTaskPanelFormShow(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + EasyTaskPanelFormSearch: TEasyTaskPanelFormSearch; + +implementation + +{$R *.dfm} + + +procedure TEasyTaskPanelFormSearch.EasyTaskPanelFormShow(Sender: TObject); +begin + ComboBox1.ItemIndex := 0; +end; + +end. \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/TaskPanelProject.dpr b/official/1.7.0/EasyListview/Demos/TaskPanel/TaskPanelProject.dpr new file mode 100644 index 0000000..e971bb6 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/TaskPanelProject.dpr @@ -0,0 +1,15 @@ +program TaskPanelProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + SearchPanel in 'SearchPanel.pas' {EasyTaskPanelFormSearch: TEasyTaskPanelForm}, + ReplacePanel in 'ReplacePanel.pas' {EasyTaskPanelFormReplace: TEasyTaskPanelForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.dfm b/official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.dfm new file mode 100644 index 0000000..66fc348 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.dfm @@ -0,0 +1,218 @@ +object Form1: TForm1 + Left = 203 + Top = 241 + Width = 696 + Height = 480 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 290 + Top = 0 + Width = 6 + Height = 446 + ResizeStyle = rsUpdate + end + object EasyTaskPanelBand1: TEasyTaskPanelBand + Left = 0 + Top = 0 + Width = 290 + Height = 446 + Align = alLeft + OnGetTaskPanel = EasyTaskPanelBand1GetTaskPanel + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Groups.Items = { + 0400000002000000FFFECE000400000080080400000000000000010000000600 + 000053006500610072006300680000000000010000000000000000000000FA00 + 0000FFFECE000400000080080400000000000000010000000700000052006500 + 70006C0061006300650000000000010000000100000000000000CD000000} + HotTrack.Enabled = True + HotTrack.GroupTrack = [htgIcon, htgText, htgTopMargin] + ImagesGroup = ImageList1 + PaintInfoGroup.CaptionIndent = 9 + PaintInfoGroup.MarginBottom.Size = 11 + PaintInfoGroup.MarginBottom.Visible = True + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoGroup.MarginLeft.Size = 11 + PaintInfoGroup.MarginLeft.Visible = True + PaintInfoGroup.MarginRight.Size = 11 + PaintInfoGroup.MarginRight.Visible = True + PaintInfoGroup.MarginTop.Size = 24 + ParentFont = False + Selection.Enabled = False + TabOrder = 0 + end + object Panel1: TPanel + Left = 296 + Top = 0 + Width = 392 + Height = 446 + Align = alClient + Caption = 'Panel1' + TabOrder = 1 + end + object ImageList1: TImageList + Left = 304 + Top = 32 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000080000000000000000000000000000000000000000000000000000000 + 80000000FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000FF000000800000000000000000000000000000000000000000000000 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A0004060 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000FF000000800000FFFF00C0C0C000C0C0C000C0C0C000000080000000 + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080C0E00040A0 + E0004060A000C0A0A00000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000008080800000FF + FF0000FF00000000FF0000008000C0C0C000C0C0C000000080000000FF00C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000080C0 + E00040A0E0004060A000C0A0A000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000808080008080800000FF + FF0000FF00000000FF000000FF0000008000000080000000FF000000FF00C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000080C0E00040A0E0004060A0000000000000000000C0C0C000C0DCC0000000 + 000000000000000000000000000000000000000000008080800000FFFF0000FF + FF0000FFFF0000FF00000000FF00000080000000FF000000FF00C0C0C000C0C0 + C000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000080E0E000C0C0C000C0808000F0CAA600FFFFFF00FFFFFF00F0CA + A600C0A0A0000000000000000000000000000000000080808000C0C0C000C0C0 + C000C0C0C000C0C0C000000080000000FF0000008000FFFFFF00C0C0C000C0C0 + C000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0C0C000F0CAA600F0CAA600FFFFFF00FFFFFF00FFFF + FF00F0FBFF00C0DCC00000000000000000000000000080808000C0C0C000C0C0 + C000C0C0C000C0C0C00000008000000000000000FF0000008000C0C0C000C0C0 + C000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000F0CAA600F0CAA600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C080800000000000000000000000000080808000C0C0C000C0C0 + C000C0C0C000000080000000FF000000FF000000FF0000008000C0C0C000C0C0 + C000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000F0CAA600F0CAA600FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C0A0800000000000000000000000000080808000C0C0C000C0C0 + C000000080000000FF000000FF00C0C0C0000000FF000000FF000000800000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0A0A000FFFFFF00F0CAA600F0CAA600F0CAA600FFFF + FF00FFFFFF00C08080000000000000000000000000000000000080808000C0C0 + C000000080000000FF00C0C0C000C0C0C0000000FF00000080000000800000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0DCC000F0CAA600FFFFFF00F0CAA600F0CAA600F0CA + A600F0CAA6000000000000000000000000000000000000000000000000000000 + 80000000FF00C0C0C000C0C0C000C0C0C000C0C0C0000000FF00000080000000 + 8000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0DCC000C0A0A000F0CAA600F0CAA600C0A0 + A000C0DCC0000000000000000000000000000000000000000000000000000000 + 800080808000C0C0C000C0C0C000C0C0C000C0C0C00000FFFF000000FF000000 + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000080000000 + FF00000000008080800080808000808080008080800080808000000000000000 + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000FF000000 + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFF7E700000000 + FFFFF02F00000000C7FFF00F00000000C3FFC00700000000E1FF800700000000 + F19F800300000000F807800300000000FC03800300000000FC03800300000000 + FC03800300000000FC03C00700000000FC07E00F00000000FE07E00F00000000 + FFFFC82F00000000FFFFCFFF0000000000000000000000000000000000000000 + 000000000000} + end + object XPManifest1: TXPManifest + Left = 424 + Top = 48 + end +end diff --git a/official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.pas b/official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.pas new file mode 100644 index 0000000..139852d --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/TaskPanel/Unit1.pas @@ -0,0 +1,59 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, + Dialogs, MPCommonObjects, EasyListview, EasyTaskPanelForm, + SearchPanel, ReplacePanel, StdCtrls, ImgList, ExtCtrls, XPMan; + +type + TForm1 = class(TForm) + ImageList1: TImageList; + EasyTaskPanelBand1: TEasyTaskPanelBand; + Splitter1: TSplitter; + Panel1: TPanel; + XPManifest1: TXPManifest; + procedure Button1Click(Sender: TObject); + procedure EasyTaskPanelBand1TEasyGroupsTaskPanelTEasyGroupTaskPanelGetTaskPanel( + Sender: TCustomEasyListview; Group: TEasyGroup; + var TaskPanel: TEasyTaskPanelFormClass); + procedure EasyTaskPanelBand1GetTaskPanel(Sender: TCustomEasyListview; + Group: TEasyGroup; var TaskPanel: TEasyTaskPanelFormClass); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.Button1Click(Sender: TObject); +begin + +// EasyTaskPanelBand1.Groups[0].Panel := EasyTaskPanelFormSearch +end; + +procedure TForm1.EasyTaskPanelBand1TEasyGroupsTaskPanelTEasyGroupTaskPanelGetTaskPanel( + Sender: TCustomEasyListview; Group: TEasyGroup; + var TaskPanel: TEasyTaskPanelFormClass); +begin + TaskPanel := TEasyTaskPanelFormSearch +end; + +procedure TForm1.EasyTaskPanelBand1GetTaskPanel( + Sender: TCustomEasyListview; Group: TEasyGroup; + var TaskPanel: TEasyTaskPanelFormClass); +begin + case Group.Index of + 0: TaskPanel := TEasyTaskPanelFormSearch; + 1: TaskPanel := TEasyTaskPanelFormReplace; + end +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/Taskband/TaskbandProject.dpr b/official/1.7.0/EasyListview/Demos/Taskband/TaskbandProject.dpr new file mode 100644 index 0000000..8742ad6 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Taskband/TaskbandProject.dpr @@ -0,0 +1,13 @@ +program TaskbandProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/Taskband/Unit1.dfm b/official/1.7.0/EasyListview/Demos/Taskband/Unit1.dfm new file mode 100644 index 0000000..1a972bd --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Taskband/Unit1.dfm @@ -0,0 +1,1318 @@ +object Form1: TForm1 + Left = 215 + Top = 166 + Width = 688 + Height = 553 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 217 + Top = 0 + Width = 6 + Height = 517 + ResizeStyle = rsUpdate + end + object EasyTaskBand1: TEasyTaskBand + Left = 0 + Top = 0 + Width = 217 + Height = 517 + Align = alLeft + CellSizes.List.AutoSize = True + EditManager.Color = clBlack + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'MS Sans Serif' + EditManager.Font.Style = [] + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Groups.Items = { + 0400000003000000FFFECE000400000080080400000005000000FFFECE000400 + 0000800801000000060000004900740065006D00200031000000000001000000 + 00000000000000000000000000000000FFFECE00040000000008010000000600 + 00004900740065006D0020003200000000000100000001000000000000000000 + 000000000000FFFECE0004000000800801000000060000004900740065006D00 + 20003300000000000100000002000000000000000000000000000000FFFECE00 + 04000000000801000000060000004900740065006D0020003400000000000100 + 000003000000000000000000000000000000FFFECE0004000000800801000000 + 060000004900740065006D002000350000000000010000000400000000000000 + 0000000000000000010000000300000042006F00620000000000010000000000 + 000000000000FFFECE000400000080080400000004000000FFFECE0004000000 + 800801000000060000004900740065006D0020004E0000000000010000000500 + 0000000000000000000000000000FFFECE000400000080080100000006000000 + 4900740065006D0020004D000000000001000000040000000000000000000000 + 00000000FFFECE0004000000800801000000060000004900740065006D002000 + 4C00000000000100000001000000000000000000000000000000FFFECE000400 + 0000800801000000060000004900740065006D00200058000000000001000000 + 0000000000000000000000000000000001000000030000005300750065000000 + 0000010000000000000000000000FFFECE000400000080080400000005000000 + FFFECE0004000000800801000000080000004900740065006D00200058005900 + 5A00000000000100000006000000000000000000000000000000FFFECE000400 + 0000800801000000080000004900740065006D002000580059005A0000000000 + 0100000003000000000000000000000000000000FFFECE000400000080080100 + 0000080000004900740065006D002000580059005A0000000000010000000400 + 0000000000000000000000000000FFFECE000400000080080100000008000000 + 4900740065006D002000580059005A0000000000010000000500000000000000 + 0000000000000000FFFECE000400000080080100000008000000490074006500 + 6D002000580059005A0000000000010000000000000000000000000000000000 + 0000010000000400000046007200650064000000000001000000000000000000 + 0000} + HotTrack.Enabled = True + HotTrack.GroupTrack = [htgIcon, htgText, htgTopMargin] + ImagesGroup = ImageList2 + ImagesSmall = ImageList1 + PaintInfoGroup.CaptionIndent = 9 + PaintInfoGroup.MarginBottom.Size = 3 + PaintInfoGroup.MarginBottom.Visible = True + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + PaintInfoGroup.MarginLeft.Size = 11 + PaintInfoGroup.MarginLeft.Visible = True + PaintInfoGroup.MarginRight.Size = 11 + PaintInfoGroup.MarginRight.Visible = True + PaintInfoGroup.MarginTop.Size = 26 + ParentFont = False + ShowGroupMargins = True + Selection.Enabled = False + TabOrder = 0 + OnGroupCollapse = EasyTaskBand1GroupCollapse + OnGroupExpand = EasyTaskBand1GroupExpand + OnGroupHotTrack = EasyTaskBand1GroupHotTrack + OnItemClick = EasyTaskBand1ItemClick + OnItemFocusChanged = EasyTaskBand1ItemFocusChanged + OnItemHotTrack = EasyTaskBand1ItemHotTrack + end + object Panel1: TPanel + Left = 223 + Top = 0 + Width = 449 + Height = 517 + Align = alClient + TabOrder = 1 + object Label1: TLabel + Left = 16 + Top = 32 + Width = 31 + Height = 13 + Caption = 'Label1' + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 31 + Height = 13 + Caption = 'Label2' + end + object CheckBoxSpecialGroup: TCheckBox + Left = 16 + Top = 88 + Width = 193 + Height = 17 + Caption = 'First Group is Special (Bold)' + TabOrder = 0 + OnClick = CheckBoxSpecialGroupClick + end + object CheckBoxOneAtATime: TCheckBox + Left = 16 + Top = 136 + Width = 193 + Height = 17 + Caption = 'Only One group open at a time' + TabOrder = 1 + OnClick = CheckBoxOneAtATimeClick + end + end + object ImageList1: TImageList + Height = 20 + Width = 20 + Left = 135 + Top = 72 + Bitmap = { + 494C010107000900040014001400FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000500000003C0000000100200000000000004B + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A4A0A000A4A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000060 + 0000006000000060000000600000006000000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A000C0A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0 + A000A4A0A000A4A0A00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008000000060 + 0000006000000060000000600000006000000060200000600000006000000000 + 000000000000000000000000000000000000A4A0A000808080008080A000C0A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000A4A0A000A4A0A000C0A0A000F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB + FF00F0FBFF00C0A0A000A4A0A000A4A0A0000000000000000000000000000000 + 00000000000000000000000000000000000000800000008020000080000000A0 + 200000C0200000C0200000C0200000C0200000A0000000600000004020000060 + 00000000000000000000000000000000000080A0C00040A0E0004060A0008080 + A000C0A0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A000A4A0 + A000F0FBFF00F0FBFF00A4A0A000F0FBFF00FFFFFF00C0A0E00080A0E000FFFF + FF00A4A0A00080806000C0A0A000F0FBFF00C0A0A00000000000000000000000 + 00000000000000000000008000000080000000A0400000C0400000C0400000C0 + 400000C0400000C0200000C0200000C0200000C0200000C0200000A0200000A0 + 0000006000000000000000000000000000000000000080C0E00040A0E0004080 + E0004060A0008080A000C0A0A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A000F0FB + FF00F0FBFF00A4A0A000F0FBFF00FFFFFF00F0CAA600F0FBFF00C0A0C000F0CA + A600FFFFFF00F0FBFF0080806000A4A0A000F0CAA600A4A0A000000000000000 + 000000000000000000000080200000A0400040C0600040C0600000C0400000C0 + 400040C06000F0FBFF00F0FBFF0040C0600000C0200000C0200000C0200000C0 + 200000A00000006000000000000000000000000000000000000040C0E00040A0 + E0004080E0004060A0008080A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF0040A0 + 400040804000F0FBFF00FFFFFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0FBFF00A4A0A000F0FBFF0040A0400040804000FFFFFF00F0CAA600F0CA + A600000000000000000000A0400040C0600040C0600040C0600040C0600000C0 + 400080E0A000FFFFFF00FFFFFF00F0FBFF0000C0200000C0200000C0200000C0 + 200000C02000006020000000000000000000000000000000000080C0E00040C0 + E00040A0E0004080E0004060A000C0A0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A00080A0600040A0 + 400040A0400080C0A000FFFFFF00F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600A4A0A000F0FBFF0080A0600040A0400040A04000FFFFFF00F0CAA600F0CA + A600000000000080000040C0600040C0600040C0600040C0600040C0600040C0 + 600040C06000F0FBFF00FFFFFF00FFFFFF0040C0600000C0200000C0200000C0 + 200000C0200000800000006000000000000000000000000000000000000080C0 + E00040C0E00040A0E0004080E000A4A0A000000000000000000000000000C0C0 + C000C0DCC000C0DCC000C0DCC000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A00040A0400040E0 + 800040E0800040802000C0C0A000FFFFFF00FFFFFF00FFFFFF00F0CAA600F0CA + A600A4A0A00080C0800040A0400040E0800040E08000C0C0A000FFFFFF00FFFF + FF000000000080C0800040C0600040C0600040C0600040C0600040C0600040C0 + 600040C0600040C08000F0FBFF00FFFFFF00F0FBFF0040C0600000C0400000C0 + 200000C0200000A0200000602000000000000000000000000000000000000000 + 000080C0E00040C0E00040A0E0008080A000C0C0C000C0C0C000C0A0A000C0A0 + 8000C0A0A000C0C0A000C0A0A000C0A0A000C0C0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000A4A0A0000080200040C0600040C0 + 600040E0800040E0800040E08000F0FBFF00FFFFFF00F0FBFF00F0FBFF00FFFF + FF000080200040C0400040C0600040C0600040E0800040E0800040A04000F0FB + FF000000000000A0200040C0600040C0600080E0A00080E0C00080E0C00080E0 + C00080E0C00080E0A00080E0A000C0DCC000FFFFFF00FFFFFF00F0FBFF0040C0 + 600000C0400000C0200000800000008000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A08000F0CAA600FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0FBFF00C0A0A000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000080000000A0200040C0400040C0 + 600040C0600040A0400040A0400040804000F0FBFF00A4A0A000806060008080 + 600000A0200000A0200040C0400040C0600040C0600040A04000008020004080 + 40000000000000A0000040C0600040C0600080E0C000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0FB + FF0040C0600000C0400000802000008000000000000000000000000000000000 + 0000000000000000000000000000C0A08000F0CAA600FFFFFF00F0CAA600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0A08000C0DCC0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000008000004080600000A0400040C0 + 400040C0600040802000F0FBFF00C0C0A000F0FBFF00A4A0A000A4A0A0004020 + 2000F0FBFF00F0FBFF0000A0400040C0400040C0600000800000408060000080 + 00000000000000A0000040C0600040C0600080E0C000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0DC + C00040C0600000C0400000802000008000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600F0CAA600F0CAA600F0CAA600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0CAA600C08080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000A4A0A000A4A0A00000A0200040C0 + 400040C0400040A04000FFFFFF00FFFFFF00FFFFFF00F0FBFF00A4A0A0004040 + 4000FFFFFF00F0CAA600F0CAA6004080400000A02000F0CAA600C0A0A000A4A0 + A0000000000000A0200040C0600040C0600080E0A00080E0C00080E0C00080E0 + C00080E0C00080E0C00080E0C000F0FBFF00FFFFFF00FFFFFF00F0FBFF0040C0 + 600040C0600000C0400000800000008000000000000000000000000000000000 + 00000000000000000000C0DCC000F0CAA600F0CAA600F0CAA600F0CAA600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0CAA600C0808000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000A4A0A000A4A0A0000080200000A0 + 200000A0400040804000F0FBFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0FB + FF0080606000F0CAA6004080400000A0200000A02000F0CAA600A4A0A000A4A0 + A0000000000040C0400040C0800040C0600040C0600040C0600040C0600040C0 + 600040C0600040C0600080E0A000FFFFFF00FFFFFF00F0FBFF0040C0600040C0 + 600040C0600000C0400000800000000000000000000000000000000000000000 + 00000000000000000000C0DCC000F0CAA600F0CAA600F0CAA600F0CAA600FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0A08000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000A4A0A00080C080000080 + 200000A0200000A0200040804000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004080400000A0200000A0200040A0400080C08000C0A0A000A4A0A0000000 + 00000000000080E0800080E0800080E0A00080E0800040C0800040C0800040C0 + 600040C08000FFFFFF00FFFFFF00FFFFFF0040C0800040C0600040C0600040C0 + 600040C0600000800000C0C0A000000000000000000000000000000000000000 + 00000000000000000000C0DCC000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0CAA600C0808000C0DC + C000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF0040A0 + 400000A0200000A0200000A0200080C08000F0FBFF00F0FBFF00F0FBFF0080C0 + 800000A0200000A020000080200080A08000F0FBFF00A4A0A000000000000000 + 0000000000000000000000C0200080E0C00080E0A00080E0A00040C0800040C0 + 600080E0A000FFFFFF00FFFFFF00F0FBFF0040C0600040C0600040C0600040C0 + 600040C0600040A0400000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600FFFFFF00F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600FFFFFF00FFFFFF00F0CAA600F0CAA600C08080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A000F0FB + FF00408040000080200000A0200000A0200000802000008020004080400040A0 + 400000A020000080200080C08000C0A0A000F0CAA600A4A0A000000000000000 + 0000000000000000000040C0200040C04000C0DCC00080E0A00080E0A00040C0 + 800040C0800080E0C000C0DCC00040C0800040C0600040C0600040C0600040C0 + 600040C0600080E0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0CAA600FFFFFF00FFFFFF00FFFFFF00F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A08000C0A0A0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A000A4A0 + A000F0FBFF0080A080004080400000802000008020004080400040A060000080 + 20000080200080C08000F0FBFF00F0CAA600A4A0A00000000000000000000000 + 0000000000000000000080E0800040C0200040C04000C0DCC000C0DCC00080E0 + A00080E0800040C0800040C0600040C0600040C0600040C0600040C0600040C0 + 400000A000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000F0CAA600FFFFFF00FFFFFF00F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000A4A0 + A000A4A0A000F0FBFF00F0FBFF00F0FBFF00C0C0A000C0C0A000C0C0A000C0C0 + A000F0FBFF00F0FBFF00F0FBFF00A4A0A000A4A0A00000000000000000000000 + 000000000000000000000000000080E0800040C0200040C0200080E0A00080E0 + A00080E0A00080E0A00040C0800040C0800040C0600040C0600000A0400000A0 + 2000C0C0A0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0A0A000F0FBFF00FFFFFF00FFFF + FF00F0CAA600F0CAA600FFFFFF00F0CAA600F0CAA600C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000A4A0A000A4A0A000A4A0A000A4A0A000A4A0A000A4A0 + A000A4A0A000A4A0A00000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080E0800040C0 + 400040C0200000C0000000A0000000A0200080E0800080E08000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C080 + 8000C0808000C0A0A000C0A0A000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000A4A0A000A4A0A000A4A0A000A4A0A000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000A4A0A00080808000A4A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000406060004060600040404000404040004040 + 4000004000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000A4A0A0008080 + 8000A4A0A000C0A0A000A4A0A000806060000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000080C0800080A06000006000000060000000600000006000000060 + 0000406040000040000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000A0C00000A0C00000A0C00080C0E00000A0C00000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0A0A000C0A0A000F0CAA600C0A0 + A000C0A0A000F0CAA600F0CAA60080808000808080008060600080606000A4A0 + A000000000000000000000000000000000000000000000000000000000000000 + 000080C08000008020000080200000C0200000C0200000C0200000C0200000A0 + 2000008000000040000000602000004000000000000000000000000000000000 + 00000000000000000000000000000000000000A0C00000A0C00000A0C00080C0 + E00000A0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000A0C00080E0E00080E0E00080E0E00080E0E00080E0E00040C0E00040C0 + E00000A0C00040A0E00080C0E00080E0E00000A0C00000000000000000000000 + 00000000000000000000C0A0A0008080800080808000C0A0A000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA6008080 + 800000000000000000000000000000000000000000000000000040A060000080 + 200000C0400000C0400000C0400000C0400000C0400000C0200000C0200000C0 + 200000C0200000C0200000A0000000A000000040000000000000000000000000 + 00000000000000000000000000000000000000A0C00080E0E00080E0E00080E0 + E00080E0E00080E0E00040C0E00040C0E00000A0C00040A0E00080C0E00080E0 + E00000A0C0000000000000000000000000000000000000A0C00080C0E00080E0 + E00000A0C00040C0E000F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00040C0E00000A0E00040A0E00000000000000000000000 + 00000000000000000000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C08080008080 + 8000C0A0A00000000000000000000000000000000000000000000080200040C0 + 600040C0600040C0600000C0400000C0400040C06000F0FBFF00F0FBFF0040C0 + 600000C0200000C0200000C0200000A0200000A0000000400000000000000000 + 00000000000000A0C00080C0E00080E0E00000A0C00040C0E000F0FBFF0080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00040C0E00000A0 + E00040A0E0000000000000000000000000000000000000A0C00040C0E00000A0 + E00000A0C00040A0E000F0FBFF0080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00040C0E00000000000000000000000 + 00000000000000000000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C08080004060 + 600080808000C0A0A00000000000000000000000000080C0800040C0600040C0 + 600040C0600040C0600040C0600040C06000F0FBFF00FFFFFF00FFFFFF0080E0 + A00000C0200000C0200000C0200000C0200000C0200040806000000000000000 + 00000000000000A0C00040C0E00000A0E00000A0C00040A0E000F0FBFF0080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00040C0E0000000000000000000000000000000000000A0C000F0FBFF0080E0 + E00000A0C00040C0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00000000000000000000000 + 00000000000000000000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A60000000000C0A0A000C0C0A000C0A0A000F0CAA600F0CAA600F0CAA600C0A0 + A000F0CAA6008080800000000000000000000000000080C0600040C0600040C0 + 600040C0600040C0600040C06000F0FBFF00FFFFFF00FFFFFF00F0FBFF0040C0 + 600000C0400000C0200000C0200000C0200000C0200000600000004000000000 + 00000000000000A0C000F0FBFF0080E0E00000A0C00040C0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E0000000000000000000000000000000000000A0C000F0FBFF0080E0 + E00000A0E00080C0E00040C0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00000A0C000000000000000 + 00000000000000000000C0C0C000C0A0A000F0CAA600F0CAA600F0CAA6000000 + 000000000000000000000000000000000000C0A0A000F0CAA600F0CAA600F0CA + A600F0CAA600A4A0A00000000000000000000000000000A0200040C0600040C0 + 600040C0600040C0600040C08000FFFFFF00FFFFFF00F0FBFF0040C0600000C0 + 400000C0400000C0400000C0200000C0200000C020000080000080A080000000 + 00000000000000A0C000F0FBFF0080E0E00000A0E00080C0E00040C0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0 + E00080E0E00000A0C00000000000000000000000000000A0E00040A0E00000A0 + C00000A0E00080E0E00040C0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF008080 + 8000FF00000080808000F0FBFF0080E0E000F0FBFF0040C0E000000000000000 + 000000000000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600C08080000000 + 000000000000000000000000000000000000C0A0A000F0CAA600F0CAA600F0CA + A600C0808000C0A0A0000000000000000000C0DCC00000A0200040C0600040C0 + 600040C08000F0FBFF00FFFFFF00FFFFFF00C0DCC00080E0A00080E0A00080E0 + A00080E0A00080E0A00080E0A00040C0600000C0400000A02000006020000000 + 00000000000000A0E00040A0E00000A0C00000A0E00080E0E00040C0E000F0FB + FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF0080E0 + E000F0FBFF0040C0E00000000000000000000000000000A0E00040C0E00080C0 + E00000A0E00080E0E00080E0E00040C0E00040C0E00040A0E00040A0E0008080 + 8000FF00000080808000F0FBFF0080E0E000F0FBFF0000A0C00080C0E0000000 + 000000000000C0A08000F0CAA600F0CAA600F0CAA600F0CAA600806060000000 + 00000000000000000000000000000000000000000000C0A0A000F0CAA600F0CA + A600C0A0A00080606000C0A0A00000000000C0DCC00000A0200040C0600040C0 + 8000F0FBFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0080E0A00000C0400000C02000006000000000 + 00000000000000A0E00040C0E00080C0E00000A0E00080E0E00080E0E00040C0 + E00040C0E00040A0E00040A0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0080E0 + E000F0FBFF0000A0C00080C0E000000000000000000000A0E00040C0E00040A0 + E00000A0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E0008080 + 8000FF00000080808000C0DCC00080E0E000F0FBFF00FFFFFF0040C0E0000000 + 000000000000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600806060000000 + 00000000000000000000000000000000000000000000C0A0A000F0CAA600F0CA + A600F0CAA600F0CAA600C0A0A0000000000080C0800000A0200040C0600040C0 + 8000F0FBFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0080E0A00000C0400000A04000006000000000 + 00000000000000A0E00040C0E00040A0E00000A0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00040C0E000F0FBFF00F0FBFF00F0FBFF0080E0 + E000F0FBFF00FFFFFF0040C0E000000000000000000000A0E00080C0E00040C0 + E00040A0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E0008080 + 8000FF00000080808000C0DCC00040C0E00040C0E00040C0E00040C0E0000000 + 00000000000000000000C0A0A000C0A0A000F0CAA600F0CAA600806060000000 + 00000000000000000000000000000000000000000000C0A0A000C0A0A000F0CA + A600F0CAA600F0CAA600C0A0A0000000000080C0800000A0200040C0600040C0 + 600040C08000F0FBFF00FFFFFF00FFFFFF00F0FBFF0080E0C00080E0C00080E0 + C00080E0C00080E0A00080E0A00040C0800040C0400000A04000408040000000 + 00000000000000A0E00080C0E00040C0E00040A0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00040C0E00040C0E00040C0E00040C0 + E00040C0E00040C0E00040C0E000000000000000000000A0E00080E0E00040C0 + E00040A0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E0008080 + 8000FF00000080808000C0DCC00040A0E0000000000000000000000000000000 + 00000000000000000000C0A0A000C0A0A000C0A0A000C0A0A000C0808000A4A0 + A0000000000000000000000000000000000000000000C0A0A000F0CAA600C0A0 + A000C0808000F0CAA600000000000000000080C0800000A0000040C0800040C0 + 600040C0600040C08000F0FBFF00FFFFFF00FFFFFF0080E0A00040C0600040C0 + 600040C0600040C0600040C0600040C0600040C0600000A0200040A040000000 + 00000000000000A0E00080E0E00040C0E00040A0E00080E0E00080E0E00080E0 + E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00080E0E00040A0 + E000000000000000000000000000000000000000000040A0E00080E0E00080E0 + E00040A0E000F0FBFF00F0FBFF00F0FBFF00F0FBFF0040C0E000808080008080 + 8000C0C0C000808080008080800040A0E0000000000000000000000000000000 + 00000000000000000000C0A08000C0808000C0808000C0808000C08080008060 + 6000A4A0A000000000000000000000000000C0A0A000C0808000C0808000C080 + 800080606000A4A0A00000000000000000000000000080E0A00080E0A00080E0 + A00040C0800040C0800040C06000F0FBFF00FFFFFF00FFFFFF00FFFFFF0040C0 + 800040C0600040C0600040C0600040C0600040C060000080200080C080000000 + 00000000000040A0E00080E0E00080E0E00040A0E000F0FBFF00F0FBFF00F0FB + FF00F0FBFF0040C0E00080E0E00040E0E00040A0E00040A0E00040A0E00040A0 + E000000000000000000000000000000000000000000040A0E00080E0E00080E0 + E00080E0E00040C0E00040C0E00040C0E00040C0E00080808000808080008080 + 8000C0C0C0008080800080808000808080000000000000000000000000000000 + 00000000000000000000C0A0A000C0808000C0808000C0A08000C0808000C080 + 8000C0606000806060004060600080808000C0808000C0808000C0808000C080 + 8000C0808000806060000000000000000000000000000000000040C0600080E0 + A00080E0A00080E0800040C0800040C08000F0FBFF00FFFFFF00FFFFFF0080E0 + A00040C0600040C0600040C0600040C0600040C0600080C08000000000000000 + 00000000000040A0E00080E0E00080E0E00080E0E00040C0E00040C0E00040C0 + E00040C0E00080E0E00080E0E00080E0E00040A0E00000000000000000000000 + 0000000000000000000000000000000000000000000040A0E00080E0E00080E0 + E00080E0E00080E0E000F0FBFF0000000000808080008080800080808000C0C0 + C000C0C0C000808080008080800080808000C0DCC00000000000000000000000 + 00000000000000000000C0C0C000F0CAA600C0A0A000C0A0A000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000A4A0A0000000000000000000000000000000000000C0000080E0 + A000C0DCC00080E0A00080E0A00040C0800040C08000C0DCC00080E0C00040C0 + 600040C0600040C0600040C0600040C0600000A0200000000000000000000000 + 00000000000040A0E00080E0E00080E0E00080E0E00080E0E000F0FBFF00F0FB + FF0080E0E00080E0E00080E0E00080E0E00040A0E00000000000000000000000 + 0000000000000000000000000000000000000000000040A0E000F0FBFF0080E0 + E00080E0E000F0FBFF0080E0E000808080008080800080808000C0C0C000C0C0 + C000C0C0C000C0C0C000FF000000FF0000008080800000000000000000000000 + 000000000000000000000000000000000000C0A0A000C0A0A000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C0A0 + 8000C0808000C0A0A0000000000000000000000000000000000080C0800000C0 + 000080E0A000C0DCC00080E0A00080E0A00040C0800040C0800040C0600040C0 + 600040C0600040C0600040C0600000A0200040A0400000000000000000000000 + 00000000000040A0E000F0FBFF0080E0E00080E0E000F0FBFF0080E0E00040A0 + E00040A0E00040A0E00040A0E00040A0E00040A0E00000000000000000000000 + 0000000000000000000000000000000000000000000040A0E00080C0E00080E0 + E00000A0C00080E0E00040C0E00080808000FFFF0000FFFF0000FFFFFF00FFFF + FF00C0C0C000C0C0C000C0C0C000C0C0C000FF000000C0DCC000000000000000 + 000000000000000000000000000000000000C0A0A000C0A08000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C06060004060 + 60000000000000000000000000000000000000000000000000000000000080E0 + A00000C0200040C06000C0DCC00080E0A00080E0A00080E0800040C0800040C0 + 800040C0600040C0600000A0200040A0400080C0800000000000000000000000 + 00000000000040A0E00080C0E00080E0E00000A0C00080E0E00040C0E0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008080800080808000808080008080800080808000808080008080 + 8000808080008080800080808000808080008080800080808000808080000000 + 00000000000000000000000000000000000000000000C0A0A000C0A08000C0A0 + A000C0A08000C0606000C0606000C0808000C0A08000C0606000C0808000C0A0 + A000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000080C0800040C0400000C0200000C0000000A0000040C0 + 400080E0A00080C0800000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000C0808000C0808000C0A0A0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000500000003C0000000100010000000000D00200000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + FE0FFFE0FF9FFFF000000000FC03FFC01F0FFFF000000000F000FF000F07FFF0 + 00000000C0007C000781FFF000000000C0003C0003C1FFF000000000C0000C00 + 03C0FFF0000000008000080001E0E1F0000000008000080001F0007000000000 + 0000080000FE0030000000000000080000FE0010000000000000080000FE0010 + 000000000000080000FC0000000000000000080001FC00000000000080001800 + 01FC000000000000C0003C0003FE001000000000C0003C0003FE001000000000 + C0007C0007FE003000000000E0007E0007FE003000000000FC03FFC03FFFC0F0 + 00000000FE0FFFFFFFFFFFF000000000FFFFFFF0FFFE07FFFFFF0000FFFFFFC0 + FFF803FFFFFF0000F07FFF000FF000FF07FF0000F0007C000FC0007F00070000 + 80007C0007C000380007000080007C00038000380007000080007C0803800018 + 0007000080003C1F03800018000300008000381F03000018000300008000181F + 81000018000100008000181F810000180001000080001C1F8100001800010000 + 8000FC0F83000018000F00008000FC0703800018000F00008000FC0003C00038 + 007F000081007C0003C00078007F000080007F0003C00078007F000080003F00 + 0FE000781FFF0000F8001F800FFC03FFFFFF0000FFFFFFF0FFFFFFFFFFFF0000 + 00000000000000000000000000000000000000000000} + end + object ImageList2: TImageList + Height = 32 + Width = 32 + Left = 103 + Top = 72 + Bitmap = { + 494C010101000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000002000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00F0FB + FF00F0FBFF00F0FBFF00C0C0C000A4A0A0008080800080808000A4A0A000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000F0FBFF00C0DCC000A4A0A0008080 + 800080808000C0A0A000A4A0A000C0A0A000A4A0A0008080800080606000C0C0 + C000F0FBFF00F0FBFF00F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000F0FBFF00A4A0A00080808000C0A0A000F0CA + A60080606000C0A08000C0A0A000F0CAA600F0CAA600F0CAA60080808000A4A0 + A000C0C0C000A4A0A000A4A0A000C0C0C000F0FBFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0A0A000F0CAA600F0CAA600F0CA + A600C0A0A000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600808080008060 + 600080808000C08080008060600080606000A4A0A000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000F0FBFF00F0FBFF00C0A0A000C0A0A000F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0A0008080 + 8000F0CAA600F0CAA600F0CAA6008080800080606000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00C0C0A0008080800080808000C0A0A000C0A0A000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA60080808000C0DCC000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0A000C0A08000C0A0A000C0808000C0A0A000C0A0A000F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600A4A0A000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C080800080808000C0DCC000C0C0C000C0C0 + C000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600F0CAA600F0CAA600C08080004060600080808000808080008060 + 6000C0C0C0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA600C0C0C000F0FBFF00C0DCC000C0C0A000C0A0A000C0A0A000F0CA + A600F0CAA600F0CAA600F0CAA600F0CAA600C0A0A000F0CAA600F0CAA6008060 + 600080808000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600C0A0A000F0FBFF00000000000000000000000000C0DCC000C0A0A000C0A0 + A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + A00080606000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0C0C000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600C080 + 8000F0FBFF000000000000000000000000000000000000000000F0FBFF00C0A0 + A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00A4A0 + A00080606000C0A08000F0CAA600F0CAA600F0CAA600F0CAA600C0A0A000A4A0 + A000F0FBFF00000000000000000000000000000000000000000000000000C0DC + C000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0A0 + A000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C000C0A0 + A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600C0808000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600C0808000A4A0 + A000F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA60080606000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000C0DCC000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600806060008060 + 6000A4A0A000C0C0C000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A08000C0A0 + A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA60080606000C0C0 + C000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600C0A0A000C080 + 80008060600080606000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0A0A000C0A0 + A000F0CAA600F0CAA600F0CAA600F0CAA600F0CAA600F0CAA60080606000A4A0 + A000F0FBFF000000000000000000000000000000000000000000000000000000 + 000000000000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA60040606000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C0C0 + C000C0A0A000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600806060008080 + 8000F0FBFF000000000000000000000000000000000000000000000000000000 + 000000000000C0A0A000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA60040606000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000F0FBFF00C0A0A000C0A0A000C0A0A000F0CAA600F0CAA600C08080008060 + 6000C0DCC0000000000000000000000000000000000000000000000000000000 + 000000000000C0A0A000C0A0A000C0A0A000F0CAA600F0CAA600F0CAA600F0CA + A600F0CAA60080808000F0FBFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000F0FB + FF00C0A0A000C0A08000C0A0A000C0A0A000C0A0A000C0A0A000C08080004060 + 6000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000F0FBFF00C0A0A000C0A0A000F0CAA600C0A0A000F0CAA600C0808000C0A0 + A000F0CAA600F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0C0 + C000C0A0A000C0A08000C0808000C0808000C0808000C0808000C0808000C060 + 600040606000A4A0A000F0FBFF00000000000000000000000000000000000000 + 0000C0C0C000C0A0A000C0A08000C0808000C0808000C08080008060600080A0 + 8000F0FBFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000F0FBFF00C0A0 + A000C0A08000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 80008060600040606000A4A0A000F0FBFF00000000000000000000000000F0FB + FF00C0A0A000C0A0A000C0808000C0808000C0808000C0808000806060004060 + 6000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0A0 + A000C0A0A000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000806060004060600080808000C0C0C000C0DCC000C0DCC000A4A0 + A000C0A0A000C0808000C0808000C0808000C0808000C0808000C08080008060 + 600080606000C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000C0DC + C000C0A0A000C0A08000C0808000C0808000C0A08000C0808000C0808000C080 + 8000C0808000C0808000C060600080606000406060008060600080808000C0A0 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 800080606000C0DCC00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000F0CAA600C0DCC000C0A0A000C0A08000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000A4A0A000F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0DCC000C0A0A000C0A08000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0A08000C0808000C0808000C080 + 8000C0DCC0000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0A000C0A0A000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0A0A000C0A0A000F0FB + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0A0A000C0A08000C0808000C0808000C080 + 8000C0808000C0808000C0808000C0808000C0808000C0808000C0808000C080 + 8000C0808000C0808000C0808000C060600040606000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C000C0A0A000C0808000C0808000C060 + 8000C0808000C0A0A000C0A08000C0808000C0808000C0606000C0808000C0A0 + 8000C0808000C0608000C0808000C080800080606000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C0C0C000C0A0A000C0A08000C080 + 8000C0C0C000C0A0A000C0A08000C0606000C0606000C0606000C0808000C0A0 + A000C0A08000C0606000C0606000C0808000C0C0C000F0FBFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000F0FBFF00F0FBFF00F0FB + FF0000000000C0A0A000C0A08000C0606000C0606000C0606000C0808000C0A0 + A000C0A0A000C0808000C0A0A000F0FBFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0C0C000C0A0A000C0808000C0808000C0A08000C0C0C000F0FB + FF00F0FBFF00F0FBFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000200000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF00FFC00FFF000000000000000000000000 + FF0001FF000000000000000000000000FE00007F000000000000000000000000 + FE00003F000000000000000000000000F800003F000000000000000000000000 + F000003F000000000000000000000000F000003F000000000000000000000000 + E0000007000000000000000000000000E0000007000000000000000000000000 + E0000003000000000000000000000000E0038003000000000000000000000000 + E007C003000000000000000000000000C007E007000000000000000000000000 + C00FF003000000000000000000000000C00FF001000000000000000000000000 + C00FF001000000000000000000000000C007F801000000000000000000000000 + C007F801000000000000000000000000F007F801000000000000000000000000 + E003F003000000000000000000000000E001F007000000000000000000000000 + C000E003000000000000000000000000E0000003000000000000000000000000 + E0000003000000000000000000000000F0000003000000000000000000000000 + FE000007000000000000000000000000FE00000F000000000000000000000000 + FE00003F000000000000000000000000FE00003F000000000000000000000000 + FF00003F000000000000000000000000FF8800FF000000000000000000000000 + FFF803FF00000000000000000000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/1.7.0/EasyListview/Demos/Taskband/Unit1.pas b/official/1.7.0/EasyListview/Demos/Taskband/Unit1.pas new file mode 100644 index 0000000..56d0873 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/Taskband/Unit1.pas @@ -0,0 +1,120 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, + Dialogs, EasyListview, ExtCtrls, ImgList, StdCtrls, + MPCommonObjects, MPCommonUtilities; + +type + TForm1 = class(TForm) + EasyTaskBand1: TEasyTaskBand; + Splitter1: TSplitter; + Panel1: TPanel; + ImageList1: TImageList; + ImageList2: TImageList; + Label1: TLabel; + Label2: TLabel; + CheckBoxSpecialGroup: TCheckBox; + CheckBoxOneAtATime: TCheckBox; + procedure EasyTaskBand1ItemHotTrack(Sender: TCustomEasyListview; + Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); + procedure EasyTaskBand1GroupHotTrack(Sender: TCustomEasyListview; + Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); + procedure CheckBoxSpecialGroupClick(Sender: TObject); + procedure EasyTaskBand1ItemFocusChanged(Sender: TCustomEasyListview; + Item: TEasyItem); + procedure EasyTaskBand1ItemClick(Sender: TCustomEasyListview; + Item: TEasyItem; KeyStates: TCommonKeyStates; + HitInfo: TEasyItemHitTestInfoSet); + procedure EasyTaskBand1GroupExpand(Sender: TCustomEasyListview; + Group: TEasyGroup); + procedure EasyTaskBand1GroupCollapse(Sender: TCustomEasyListview; + Group: TEasyGroup); + procedure CheckBoxOneAtATimeClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.EasyTaskBand1ItemHotTrack(Sender: TCustomEasyListview; + Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); +begin + if State = ehsEnable then + Label2.Caption := 'Item: ' + IntToStr(Item.Index) + ' HotTracking' + else + Label2.Caption := 'Item not HotTracking' +end; + +procedure TForm1.EasyTaskBand1GroupHotTrack(Sender: TCustomEasyListview; + Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); +begin + if State = ehsEnable then + Label1.Caption := 'Group: ' + IntToStr(Group.Index) + ' HotTracking' + else + Label1.Caption := 'Group not HotTracking' +end; + +procedure TForm1.CheckBoxSpecialGroupClick(Sender: TObject); +begin + if EasyTaskBand1.Groups.Count > 0 then + EasyTaskBand1.Groups[0].Bold := CheckBoxSpecialGroup.Checked +end; + +procedure TForm1.EasyTaskBand1ItemFocusChanged(Sender: TCustomEasyListview; + Item: TEasyItem); +begin + beep; +end; + +procedure TForm1.EasyTaskBand1ItemClick(Sender: TCustomEasyListview; + Item: TEasyItem; KeyStates: TCommonKeyStates; + HitInfo: TEasyItemHitTestInfoSet); +begin + ShowMessage('clicked'); +end; + +procedure TForm1.EasyTaskBand1GroupExpand(Sender: TCustomEasyListview; + Group: TEasyGroup); +var + I : Integer; +begin + if CheckBoxOneAtATime.Checked then + begin + For I := 0 to EasyTaskBand1.Groups.Count - 1 do + if EasyTaskBand1.Groups[I] <> Group then + EasyTaskBand1.Groups[I].Expanded := False; + Group.Bold := True; + end; + + if Group.Items.Count > 0 then //<<<<< my code + begin + EasyTaskBand1.Selection.FocusedItem := Group.Items[0]; + EasyTaskBand1.Selection.FocusedItem.Bold := True; + end + +end; + +procedure TForm1.EasyTaskBand1GroupCollapse(Sender: TCustomEasyListview; + Group: TEasyGroup); +begin + if CheckBoxOneAtATime.Checked then + Group.Bold := False; +end; + +procedure TForm1.CheckBoxOneAtATimeClick(Sender: TObject); +begin + if CheckBoxOneAtATime.Checked then + EasyTaskBand1.Groups.CollapseAll +end; + +end. diff --git a/official/1.7.0/EasyListview/Demos/ThumbScroller/ThumbScrollerProject.dpr b/official/1.7.0/EasyListview/Demos/ThumbScroller/ThumbScrollerProject.dpr new file mode 100644 index 0000000..774ec4b --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/ThumbScroller/ThumbScrollerProject.dpr @@ -0,0 +1,13 @@ +program ThumbScrollerProject; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.dfm b/official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.dfm new file mode 100644 index 0000000..29b69c4 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.dfm @@ -0,0 +1,121 @@ +object Form1: TForm1 + Left = 193 + Top = 115 + Caption = 'Form1' + ClientHeight = 442 + ClientWidth = 686 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 89 + Top = 13 + Width = 597 + Height = 272 + Align = alClient + Stretch = True + ExplicitHeight = 267 + end + object Label1: TLabel + Left = 0 + Top = 0 + Width = 686 + Height = 13 + Align = alTop + Caption = + 'WARNING: This Demo is not to show off my graphics (in)abilities' + + '. It is slow so don'#39't load too many images.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [fsBold] + ParentFont = False + ExplicitWidth = 598 + end + object Panel1: TPanel + Left = 0 + Top = 285 + Width = 686 + Height = 157 + Align = alBottom + TabOrder = 0 + object EasyScrollButton2: TEasyScrollButton + Left = 1 + Top = 1 + Width = 17 + Height = 155 + Align = alLeft + AutoScroll = True + OnClick = EasyScrollButton2Click + TabOrder = 0 + end + object EasyScrollButton3: TEasyScrollButton + Left = 668 + Top = 1 + Width = 17 + Height = 155 + Align = alRight + AutoScroll = True + Direction = sbdRight + OnClick = EasyScrollButton3Click + TabOrder = 1 + end + object EasyListview1: TEasyListview + Left = 18 + Top = 1 + Width = 650 + Height = 155 + Align = alClient + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'MS Shell Dlg 2' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'MS Shell Dlg 2' + Header.Font.Style = [] + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + Scrollbars.HorzEnabled = False + Scrollbars.VertEnabled = False + Selection.MouseButtonSelRect = [cmbLeft, cmbRight] + TabOrder = 2 + View = elsFilmStrip + OnItemFreeing = EasyListview1ItemFreeing + OnItemSelectionChanged = EasyListview1ItemSelectionChanged + OnItemThumbnailDraw = EasyListview1ItemThumbnailDraw + end + end + object Panel2: TPanel + Left = 0 + Top = 13 + Width = 89 + Height = 272 + Align = alLeft + TabOrder = 1 + object Button1: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Browse...' + TabOrder = 0 + OnClick = Button1Click + end + end +end diff --git a/official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.pas b/official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.pas new file mode 100644 index 0000000..f9ef534 --- /dev/null +++ b/official/1.7.0/EasyListview/Demos/ThumbScroller/Unit1.pas @@ -0,0 +1,162 @@ +unit Unit1; + +interface + +{$WARN UNIT_PLATFORM OFF} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, + Dialogs, EasyListview, ImgList, ExtCtrls, + EasyScrollFrame, StdCtrls, FileCtrl, MPCommonUtilities, Jpeg, + MPCommonObjects; + +type + TForm1 = class(TForm) + Panel1: TPanel; + EasyScrollButton2: TEasyScrollButton; + EasyScrollButton3: TEasyScrollButton; + EasyListview1: TEasyListview; + Image1: TImage; + Panel2: TPanel; + Button1: TButton; + Label1: TLabel; + procedure EasyListview1ItemThumbnailDraw(Sender: TCustomEasyListview; + Item: TEasyItem; ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); + procedure EasyScrollButton3Click(Sender: TObject); + procedure EasyScrollButton2Click(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure EasyListview1ItemFreeing(Sender: TCustomEasyListview; + Item: TEasyItem); + procedure EasyListview1ItemSelectionChanged( + Sender: TCustomEasyListview; Item: TEasyItem); + private + { Private declarations } + public + { Public declarations } + Dir: String; + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +function IsImageFile(Filename: string): Boolean; +var + Ext: string; +begin + Ext := LowerCase(ExtractFileExt(Filename)); + Result := (Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.jif') or + (Ext = '.bmp') or (Ext = '.wmf') or (Ext = '.emf') or (Ext = '.ico'); +end; + +procedure TForm1.EasyListview1ItemThumbnailDraw( + Sender: TCustomEasyListview; Item: TEasyItem; ACanvas: TCanvas; + ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +var + Picture: TPicture; + Bitmap: TBitmap; + Stream: TMemoryStream; +begin + Bitmap := TBitmap.Create; + try + // If the item doesn't have a thumbnail bitmap create one from the file + if (Item.Tag = 0) and FileExists(Item.Captions[1]) then + begin + Stream := TMemoryStream.Create; + Picture := TPicture.Create; + try + try + Picture.LoadFromFile(Item.Captions[1]); + Bitmap.Width := RectWidth(ARect); + Bitmap.Height := RectHeight(ARect); + Bitmap.Canvas.StretchDraw(Rect(0, 0, Bitmap.Width, Bitmap.Height), Picture.Graphic); + Bitmap.SaveToStream(Stream); + Item.Tag := Integer(Stream); + Stream := nil; + except + end + finally + Stream.Free; + Picture.Free; + end + end; + + // Paint the thumbnail + if Item.Tag <> 0 then + begin + Stream := TMemoryStream(Item.Tag); + Stream.Position := 0; + Bitmap.LoadFromStream(Stream); + ACanvas.Draw(ARect.Left, ARect.Top, Bitmap); + end + finally + Bitmap.Free; + end; +end; + +procedure TForm1.EasyScrollButton3Click(Sender: TObject); +begin + EasyListview1.Scrollbars.OffsetX := EasyListview1.Scrollbars.OffsetX + EasyListview1.CellSizes.Thumbnail.Width; +end; + +procedure TForm1.EasyScrollButton2Click(Sender: TObject); +begin + EasyListview1.Scrollbars.OffsetX := EasyListview1.Scrollbars.OffsetX - EasyListview1.CellSizes.Thumbnail.Width; +end; + +procedure TForm1.Button1Click(Sender: TObject); + + procedure Add(Data: TWin32FindData); + var + Item: TEasyItem; + begin + if IsImageFile(Data.cFileName) then + begin + Item := EasyListview1.Items.Add(); + Item.Caption := ExtractFileName(Data.cFileName); + Item.Captions[1] := Dir + '\' + Data.cFileName; + end; + end; + +var + FindData: TWin32FindData; + FindHandle: THandle; +begin + if SelectDirectory('Browse for Picture Folder', '', Dir) then + begin + EasyListview1.BeginUpdate; + try + EasyListview1.Items.Clear; + FindHandle := FindFirstFile(PChar(Dir + '\*.*'), FindData); + if FindHandle <> INVALID_HANDLE_VALUE then + begin + Add(FindData); + while FindNextFile(FindHandle, FindData) do + Add(FindData); + Windows.FindClose(FindHandle); + end + finally + EasyListview1.EndUpdate(); + end + end +end; + +procedure TForm1.EasyListview1ItemFreeing(Sender: TCustomEasyListview; + Item: TEasyItem); +begin + if Item.Tag <> 0 then + TObject(Item.Tag).Free; +end; + +procedure TForm1.EasyListview1ItemSelectionChanged( + Sender: TCustomEasyListview; Item: TEasyItem); +begin + if FileExists(Item.Captions[1]) then + Image1.Picture.LoadFromFile(Item.Captions[1]) +end; + +end. diff --git a/official/1.7.0/EasyListview/Design/Compilers.inc b/official/1.7.0/EasyListview/Design/Compilers.inc new file mode 100644 index 0000000..41ff138 --- /dev/null +++ b/official/1.7.0/EasyListview/Design/Compilers.inc @@ -0,0 +1,493 @@ +//---------------------------------------------------------------------------------------------------------------------- +// Include file to determine which compiler is currently being used to build the project/component. +// This file uses ideas from Brad Stowers DFS.inc file. +// +// Portions created by Mike Lischke are +// Copyright (C) 1999-2005 Mike Lischke. All Rights Reserved. +// Portions created by Jim Kueneman are +// Copyright (C) 2005 Jim Kueneman. All Rights Reserved. +// +//---------------------------------------------------------------------------------------------------------------------- +// +// This unit is released under the MIT license: +// Copyright (c) 1999-2005 Mike Lischke (support@soft-gems.net, www.soft-gems.net). +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +// Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +// OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// You are asked to give the author(s) the due credit. This means that you acknowledge the work of the author(s) +// in the product documentation, about box, help or wherever a prominent place is. +// +//---------------------------------------------------------------------------------------------------------------------- +// +// The following symbols are defined: +// +// - COMPILER_1 : Kylix/Delphi/BCB 1.x is the compiler. +// - COMPILER_1_UP : Kylix/Delphi/BCB 1.x or higher is the compiler. +// - COMPILER_2 : Kylix/Delphi 2.x or BCB 1.x is the compiler. +// - COMPILER_2_UP : Kylix/Delphi 2.x or higher, or BCB 1.x or higher is the compiler. +// - COMPILER_3 : Kylix/Delphi/BCB 3.x is the compiler. +// - COMPILER_3_UP : Kylix/Delphi/BCB 3.x or higher is the compiler. +// - COMPILER_4 : Kylix/Delphi/BCB 4.x is the compiler. +// - COMPILER_4_UP : Kylix/Delphi/BCB 4.x or higher is the compiler. +// - COMPILER_5 : Kylix/Delphi/BCB 5.x is the compiler. +// - COMPILER_5_UP : Kylix/Delphi/BCB 5.x or higher is the compiler. +// - COMPILER_6 : Kylix/Delphi/BCB 6.x is the compiler. +// - COMPILER_6_UP : Kylix/Delphi/BCB 6.x or higher is the compiler. +// - COMPILER_7 : Kylix/Delphi/BCB 7.x is the compiler. +// - COMPILER_7_UP : Kylix/Delphi/BCB 7.x or higher is the compiler. +// - COMPILER_8 : Kylix/Delphi/BCB 8.x is the compiler. +// - COMPILER_8_UP : Kylix/Delphi/BCB 8.x or higher is the compiler. +// - COMPILER_9 : Kylix/Delphi/BCB 9.x is the compiler. +// - COMPILER_9_UP : Kylix/Delphi/BCB 9.x or higher is the compiler. +// - COMPILER_10 : Kylix/Delphi/BCB 10.x is the compiler. +// - COMPILER_10_UP : Kylix/Delphi/BCB 10.x or higher is the compiler. +// - COMPILER_11 : Kylix/Delphi/BCB 11.x is the compiler. +// - COMPILER_11_UP : Kylix/Delphi/BCB 11.x or higher is the compiler. +// +// Only defined if Windows is the target: +// - CPPB : Any version of BCB is being used. +// - CPPB_1 : BCB v1.x is being used. +// - CPPB_3 : BCB v3.x is being used. +// - CPPB_3_UP : BCB v3.x or higher is being used. +// - CPPB_4 : BCB v4.x is being used. +// - CPPB_4_UP : BCB v4.x or higher is being used. +// - CPPB_5 : BCB v5.x is being used. +// - CPPB_5_UP : BCB v5.x or higher is being used. +// - CPPB_6 : BCB v6.x is being used. +// - CPPB_6_UP : BCB v6.x or higher is being used. +// - CPPB_XXX is not used any more, use the COMPILER_XXX defines +// +// Only defined if Windows is the target: +// - DELPHI : Any version of Delphi is being used. +// - DELPHI_1 : Delphi v1.x is being used. +// - DELPHI_2 : Delphi v2.x is being used. +// - DELPHI_2_UP : Delphi v2.x or higher is being used. +// - DELPHI_3 : Delphi v3.x is being used. +// - DELPHI_3_UP : Delphi v3.x or higher is being used. +// - DELPHI_4 : Delphi v4.x is being used. +// - DELPHI_4_UP : Delphi v4.x or higher is being used. +// - DELPHI_5 : Delphi v5.x is being used. +// - DELPHI_5_UP : Delphi v5.x or higher is being used. +// - DELPHI_6 : Delphi v6.x is being used. +// - DELPHI_6_UP : Delphi v6.x or higher is being used. +// - DELPHI_7 : Delphi v7.x is being used. +// - DELPHI_7_UP : Delphi v7.x or higher is being used. +// - DELPHI_8 : Delphi v8.x is being used. +// - DELPHI_8_UP : Delphi v8.x or higher is being used. +// - DELPHI_9 : Delphi v9.x is being used. +// - DELPHI_9_UP : Delphi v9.x or higher is being used. +// - DELPHI_XXX is not used any more, use the COMPILER_XXX defines +// +// Only defined if Linux is the target: +// - KYLIX : Any version of Kylix is being used. +// - KYLIX_1 : Kylix 1.x is being used. +// - KYLIX_1_UP : Kylix 1.x or higher is being used. +// - KYLIX_2 : Kylix 2.x is being used. +// - KYLIX_2_UP : Kylix 2.x or higher is being used. +// - KYLIX_3 : Kylix 3.x is being used. +// - KYLIX_3_UP : Kylix 3.x or higher is being used. +// +// Only defined if Linux is the target: +// - QT_CLX : Trolltech's QT library is being used. +// +// Only defined if Delphi.NET is the target: +// - DELPHI.NET : Any version of Delphi.NET is being used. +// - DELPHI.NET_1 : Delphi.NET version 1.x is being used. +// - DELPHI.NET_1_UP : Delphi.NET version 1.x is being used. +//---------------------------------------------------------------------------------------------------------------------- + +{$ifdef CLR} // The common language runtime symbol is only defined for the .NET platform. + {$define DELPHI.NET} + {$ifdef VER160} + {$define DELPHI.NET_1} + {$endif VER160} + + // Compiler defines common to all .NET versions. + {$ifdef DELPHI.NET_1} + {$define DELHI.NET_1_UP} + {$endif DELPHI.NET_1} +{$endif CLR} + +{$ifdef Win32} + +// Compiler defines not specific to a particlular platform. + + // DELPHI and BCB are no longer defined, only COMPILER + {$ifdef VER190} + {$define COMPILER_11} + {$endif VER190} + + // DELPHI and BCB are no longer defined, only COMPILER + {$ifdef VER180} + {$define COMPILER_10} + {$endif VER180} + + {$ifdef VER170} + {$define COMPILER_9} + {$define DELPHI} + {$define DELPHI_9} + {$endif VER170} + + {$ifdef VER160} + {$define COMPILER_8} + {$define DELPHI} + {$define DELPHI_8} + {$endif VER160} + + {$ifdef VER150} + {$define COMPILER_7} + {$define DELPHI} + {$define DELPHI_7} + {$endif} + + {$ifdef VER140} + {$define COMPILER_6} + {$ifdef BCB} + {$define CPPB} + {$define CPPB_6} + {$else} + {$define DELPHI} + {$define DELPHI_6} + {$endif} + {$endif} + + {$ifdef VER130} + {$define COMPILER_5} + {$ifdef BCB} + {$define CPPB} + {$define CPPB_5} + {$else} + {$define DELPHI} + {$define DELPHI_5} + {$endif} + {$endif} + + {$ifdef VER125} + {$define COMPILER_4} + {$define CPPB} + {$define CPPB_4} + {$endif} + + {$ifdef VER120} + {$define COMPILER_4} + {$define DELPHI} + {$define DELPHI_4} + {$endif} + + {$ifdef VER110} + {$define COMPILER_3} + {$define CPPB} + {$define CPPB_3} + {$endif} + + {$ifdef VER100} + {$define COMPILER_3} + {$define DELPHI} + {$define DELPHI_3} + {$endif} + + {$ifdef VER93} + {$define COMPILER_2} // C++ Builder v1 compiler is really v2 + {$define CPPB} + {$define CPPB_1} + {$endif} + + {$ifdef VER90} + {$define COMPILER_2} + {$define DELPHI} + {$define DELPHI_2} + {$endif} + + {$ifdef VER80} + {$define COMPILER_1} + {$define DELPHI} + {$define DELPHI_1} + {$endif} + + {$ifdef DELPHI_2} + {$define DELPHI_2_UP} + {$endif} + + {$ifdef DELPHI_3} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$endif} + + {$ifdef DELPHI_4} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$endif} + + {$ifdef DELPHI_5} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$endif} + + {$ifdef DELPHI_6} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$endif} + + {$ifdef DELPHI_7} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$endif} + + {$ifdef DELPHI_8} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$endif} + + {$ifdef DELPHI_9} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$endif} + + {$ifdef CPPB_3} + {$define CPPB_3_UP} + {$endif} + + {$ifdef CPPB_4} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$endif} + + {$ifdef CPPB_5} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$endif} + + {$ifdef CPPB_6} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + {$endif} + + {$ifdef CPPB_3_UP} + // C++ Builder requires this if you use Delphi components in run-time packages. + {$ObjExportAll On} + {$endif} + +{$else (not Windows)} + // Linux is the target + {$define QT_CLX} + + {$define KYLIX} + + {$ifdef VER140} + {$define COMPILER_6} + {$ifdef conditionalexpressions} + {$if Declared(RTLVersion) and (RTLVersion = 14)} + {$define KYLIX_1} + {$ifend} + + {$if Declared(RTLVersion) and (RTLVersion = 14.2)} + {$define KYLIX_2} + {$ifend} + + {$if Declared(RTLVersion) and (RTLVersion = 14.5)} + {$define KYLIX_3} + {$ifend} + {$endif} + {$endif} + + {$ifdef VER150} + {$define COMPILER_7} + {$define KYLIX_3} + {$endif} + + {$ifdef VER140} + {$define COMPILER_6} + {$define KYLIX_2} + {$endif} + + {$ifdef KYLIX_1} + {$define KYLIX_1_UP} + {$endif} + + {$ifdef KYLIX_2} + {$define KYLIX_2_UP} + {$endif} + + {$ifdef KYLIX_3} + {$define KYLIX_2_UP} + {$define KYLIX_3_UP} + {$endif} + +{$endif Win32} + + +{$ifdef COMPILER_1} + {$define COMPILER_1_UP} +{$endif} + +{$ifdef COMPILER_2} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} +{$endif} + +{$ifdef COMPILER_3} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} +{$endif} + +{$ifdef COMPILER_4} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} +{$endif} + +{$ifdef COMPILER_5} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} +{$endif} + +{$ifdef COMPILER_6} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} +{$endif} + +{$ifdef COMPILER_7} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} +{$endif} + +{$ifdef COMPILER_8} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} +{$endif} + +{$ifdef COMPILER_9} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} +{$endif} + +{$ifdef COMPILER_10} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} + {$define COMPILER_10_UP} + // Backwards compatibility + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + + {$ifdef BCB} + {$define CPPB} + {$else} + {$define DELPHI} + {$endif} + +{$endif} + +{$ifdef COMPILER_11} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} + {$define COMPILER_10_UP} + {$define COMPILER_11_UP} + // Backwards compatibility + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + + {$ifdef BCB} + {$define CPPB} + {$else} + {$define DELPHI} + {$endif} + +{$endif} + +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Design/EasyCollectionEditor.dfm b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.dfm new file mode 100644 index 0000000..2f33581 --- /dev/null +++ b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.dfm @@ -0,0 +1,553 @@ +object FormEasyCollectionEditor: TFormEasyCollectionEditor + Left = 288 + Top = 356 + Width = 212 + Height = 343 + Caption = 'Easy Colleciton Editor' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [] + OldCreateOrder = False + OnClose = FormClose + PixelsPerInch = 96 + TextHeight = 13 + object ListView1: TListView + Left = 0 + Top = 24 + Width = 204 + Height = 266 + Align = alClient + Columns = < + item + Width = 200 + end> + HideSelection = False + MultiSelect = True + ReadOnly = True + PopupMenu = PopupMenu1 + ShowColumnHeaders = False + TabOrder = 0 + ViewStyle = vsReport + OnChange = ListView1Change + OnKeyDown = ListView1KeyDown + OnKeyPress = ListView1KeyPress + OnResize = ListView1Resize + end + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 204 + Height = 24 + AutoSize = True + Caption = 'ToolBar1' + Flat = True + Images = ImageList1 + TabOrder = 1 + object ToolButton6: TToolButton + Left = 0 + Top = 0 + Width = 8 + Caption = 'ToolButton6' + ImageIndex = 4 + Style = tbsSeparator + end + object ToolButton1: TToolButton + Left = 8 + Top = 0 + Action = ActionNewItem + end + object ToolButton2: TToolButton + Left = 31 + Top = 0 + Action = ActionDeleteItem + end + object ToolButton5: TToolButton + Left = 54 + Top = 0 + Width = 8 + Caption = 'ToolButton5' + ImageIndex = 4 + Style = tbsSeparator + end + object ToolButton3: TToolButton + Left = 62 + Top = 0 + Action = ActionUpItem + end + object ToolButton4: TToolButton + Left = 85 + Top = 0 + Action = ActionDownItem + end + end + object StatusBar1: TStatusBar + Left = 0 + Top = 290 + Width = 204 + Height = 19 + Panels = < + item + Text = 'Selected:' + Width = 100 + end> + end + object ImageList1: TImageList + Left = 48 + Top = 56 + Bitmap = { + 494C010104000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000B7818300B781 + 8300B7818300B7818300B7818300B7818300B7818300B7818300B7818300B781 + 8300B7818300B7818300B7818300000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000732DE000732DE000000000000000000000000000000 + 000000000000045D0900045D090005650B00066D0D0005610A0005610A000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000045D0900045D090005650B00066D0D0005610A0005610A000000 + 0000000000000000000000000000000000000000000000000000C7A79C00FEEE + D400F7E3C500F6DFBC00F5DBB400F3D7AB00F3D3A200F1CF9A00F0CF9700F0CF + 9800F0CF9800F5D49A00B781830000000000000000000732DE000732DE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000732DE000732DE00000000000000000000000000000000000667 + 0C0006670C000894130008AB170009B3190009B3190008B1190008A317000A85 + 17000A8517000000000000000000000000000000000000000000000000000667 + 0C0006670C000894130008AB170009B3190009B3190008B1190008A317000A85 + 17000A8517000000000000000000000000000000000000000000C7A79E00FDEF + D900F6E3CB00F5DFC200F4DBBA00F2D7B200F1D4A900F1D0A200EECC9900EECC + 9700EECC9700F3D19900B781830000000000000000000732DE000732DE000732 + DE00000000000000000000000000000000000000000000000000000000000000 + 00000732DE000732DE0000000000000000000000000000000000044D06000784 + 100009BA1A0009B81A0009B51A0008B419000AB41A0011B82B0010BA290014C0 + 300016AE34000F7C1F0000000000000000000000000000000000044D06000784 + 100009BA1A0009B81A0009B51A0008B419000AB41A0011B82B0010BA290014C0 + 300016AE34000F7C1F0000000000000000000000000000000000C7A9A100FEF3 + E300F8E7D300F5E3CB00F5DFC300F3DBBB00F2D7B200F1D4AB00F0D0A300EECC + 9A00EECC9700F3D19900B781830000000000000000000732DE000732DD000732 + DE000732DE000000000000000000000000000000000000000000000000000732 + DE000732DE000000000000000000000000000000000005680C000783100009BA + 1A0009B3190009B2190009B21900C2ECC600FFFFFF005BCD72001AB93E0018B7 + 36001FC1460021B649002FB15700000000000000000005680C000783100009BA + 1A0009B3190009B2190009B219006FD27900BCEAC1002EBF4C001AB93E0018B7 + 36001FC1460021B649002FB15700000000000000000000000000C9ACA500FFF7 + EB00F9EBDA00F7E7D200F6E3CA00F5DFC200F4DBB900F2D7B200F1D4AA00F0D0 + A100EFCD9900F3D19800B78183000000000000000000000000000534ED000732 + DF000732DE000732DE00000000000000000000000000000000000732DE000732 + DE00000000000000000000000000000000000000000005680C0009B91A0009B4 + 190009B2190009B2190009B21900C0EBC400FFFFFF005CCD73001EBC47001DBA + 410023BC4D0039CB6A002FB15700000000000000000005680C0009B91A0009B4 + 190009B2190009B2190058CB6300F2FBF300FFFFFF00ACE5B80020BD48001DBA + 410023BC4D0039CB6A002FB15700000000000000000000000000CEB2AA00FFFC + F400FAEFE400F8EADA00F7E7D300F5E2CB00F5DFC200F4DBBB00F1D7B200F1D3 + AA00F0D0A100F3D29B00B7818300000000000000000000000000000000000000 + 00000732DE000732DE000732DD00000000000732DD000732DE000732DE000000 + 000000000000000000000000000000000000044C06000796140009B81A0009B2 + 190009B2190009B2190009B21900BFEBC300FFFFFF005CCD76001EBC490020BB + 4A0024BE560048CB780064D4920024A34200044C06000796140009B81A0009B2 + 190009B219005ACB6500F6FCF700FFFFFF00FFFFFF00FFFFFF009FE2B10022BC + 4B0024BE560048CB780064D4920024A342000000000000000000D3B7AF00FFFF + FD00FBF4EC00FAEFE300F9EBDA00F7E7D200F5E3C900F5DFC200F4DBBA00F2D7 + B100F0D4A900F5D5A300B7818300000000000000000000000000000000000000 + 0000000000000732DD000633E6000633E6000633E9000732DC00000000000000 + 000000000000000000000000000000000000055E0A0009B1190009B4190009B2 + 190028BC360011B4200009B21900BFEBC300FFFFFF005CCE760021BD4D0045C8 + 6E0035C4690049CA7B0091E2B30043B96400055E0A0009B1190009B4190009B2 + 190063CE6D00F7FDF800FDFEFD00F8FDF900FDFEFD00FBFEFB00FFFFFF009CE2 + B2002DC2630049CA7B0091E2B30043B964000000000000000000D7BBB200FFFF + FF00FEF9F500FBF3EC00FAEFE200F9EADA00F8E7D200F5E3CA00F5DEC200F4DB + BA00F2D8B200F6D9AC00B7818300000000000000000000000000000000000000 + 000000000000000000000633E3000732E3000534EF0000000000000000000000 + 000000000000000000000000000000000000066C0C0009B3190009B3190009B2 + 1900DFF5E1009ADFA00009B21A00C4EDCC00FFFFFF0058CD79006AD38E00F7FD + F900BDECCF0044C97800A6E7C2005DC87D00066C0C0009B3190009B3190009B2 + 1900EEFAEF00FFFFFF008DDB9500C7EECF00FFFFFF0092DFA800E8F8EE00FFFF + FF00ABE6C20044C97800A6E7C2005DC87D000000000000000000DABEB300FFFF + FF00FFFEFD00FDF8F400FBF3EC00F9EFE300F8EADA00F7E7D200F6E2CA00F6DE + C100F4DBB900F8DDB400B7818300000000000000000000000000000000000000 + 0000000000000732DD000534ED000533E9000434EF000434F500000000000000 + 000000000000000000000000000000000000066C0C0009B31A0007B2160008B1 + 1700EEFAEF00FFFFFF008EDB9500C7EED200FFFFFF009AE2B400E9F9EF00FFFF + FF00AAE6C10052CC8100BAEDD10061CB8000066C0C0009B31A0007B2160008B1 + 1700DFF5E1009ADFA0000AB21900C5EED000FFFFFF0064D28C0070D69700F7FD + F900BCECCE0052CC8100BAEDD10061CB80000000000000000000DEC1B500FFFF + FF00FFFFFF00FFFEFD00FEF9F400FBF3EB00FAEFE200F9EBD900F8E6D100F6E2 + C800F7E1C200F0DAB700B7818300000000000000000000000000000000000000 + 00000434F4000534EF000533EB0000000000000000000434F4000335F8000000 + 000000000000000000000000000000000000055B090009B0180008B4180007B1 + 160063CE6D00F7FDF800FDFEFD00F9FDFA00FDFFFE00FBFEFC00FFFFFF00A4E4 + BD0031C36A006BD49300CCF2DE0052C46F00055B090009B0180008B4180007B1 + 160028BC360011B421000CB31C00C8EFD200FFFFFF0072D6990038C56F0053CD + 820039C56F006BD49300CCF2DE0052C46F000000000000000000E2C5B500FFFF + FF00FFFFFF00FFFFFF00FFFEFD00FDF9F400FBF3EB00FAEEE200FAEDDC00FCEF + D900E6D9C400C6BCA900B7818300000000000000000000000000000000000335 + FC000534EF000434F800000000000000000000000000000000000335FC000335 + FB0000000000000000000000000000000000044906000891130009B91A000BB2 + 1C000AB21F005BCC6600F6FCF700FFFFFF00FFFFFF00FFFFFF00AAE6C10031C2 + 680036C46D00AFE8C600ADE8C50032B74E00044906000891130009B91A000BB2 + 1C000AB21F000BB31B000AB21A00C7EED000FFFFFF0071D6980038C56F002FC2 + 670036C46D00AFE8C600ADE8C50032B74E000000000000000000E5C7B700FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFEFD00FDF8F300FDF6EC00F1E1D500C6A1 + 9400B5948900B08F8100B78183000000000000000000000000000335FB000335 + FB000335FC000000000000000000000000000000000000000000000000000335 + FB000335FB0000000000000000000000000000000000056009000BB61C0011B7 + 270014B730000EB425005CCC6900F4FCF600FFFFFF00B7EACB0032C36A0028C0 + 630080DAA300DBF7EA0066CD81000000000000000000056009000BB61C0011B7 + 270014B730000EB425000FB42200C9EFD300FFFFFF0072D6990030C3690028C0 + 630080DAA300DBF7EA0066CD8100000000000000000000000000E9CBB800FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFEFC00FFFEF900E3CFC900BF8C + 7600E8B27000ECA54A00C587680000000000000000000335FB000335FB000335 + FB00000000000000000000000000000000000000000000000000000000000000 + 0000000000000335FB00000000000000000000000000056009000A7F150016BD + 34001BBD40001DBB450022BD4D008ADDA800C9EFD80044C9770038C6700082DB + A400D2F4E10084D89F0066CD81000000000000000000056009000A7F150016BD + 34001BBD40001DBB450022BD4D00CDF1DA00FFFFFF006DD4950038C6700082DB + A400D2F4E10084D89F0066CD8100000000000000000000000000ECCDBA00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E4D4D200C89A + 7F00FAC57700CD93770000000000000000000335FB000335FB000335FB000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000A6A15000F85 + 220020BE49002AC65B002CC5650033C76C0042C977005FD38D009BE5BA00BCED + D20071D28C0025AE3900000000000000000000000000000000000A6A15000F85 + 220020BE49002AC65B002CC5650033C76C0042C977005FD38D009BE5BA00BCED + D20071D28C0025AE390000000000000000000000000000000000EACAB600FCF7 + F400FCF7F300FBF6F300FBF6F300FAF5F300F9F5F300F9F5F300E1D0CE00C797 + 7C00CF9B86000000000000000000000000000335FB000335FB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000B6A + 15000B6A15001B9A3A002AB65B0037C26C0058CC83006FD2930067CC830037B6 + 500037B650000000000000000000000000000000000000000000000000000B6A + 15000B6A15001B9A3A002AB65B0037C26C0058CC83006FD2930067CC830037B6 + 500037B650000000000000000000000000000000000000000000E9C6B100EBCC + B800EBCCB800EBCCB800EBCBB800EACBB800EACBB800EACCB900DABBB000B885 + 7A00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000008721000087210000F821C00138D23000F911D000F911D000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000008721000087210000F821C00138D23000F911D000F911D000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000C001FFFCF81FF81FC0019FF9E007E007 + C0018FF3C003C003C00187E780018001C001C3CF80018001C001F11F00000000 + C001F83F00000000C001FC7F00000000C001F83F00000000C001F19F00000000 + C001E3CF00000000C001C7E780018001C0018FFB80018001C0031FFFC003C003 + C0073FFFE007E007C00FFFFFF81FF81F00000000000000000000000000000000 + 000000000000} + end + object ActionList1: TActionList + Images = ImageList1 + Left = 16 + Top = 56 + object ActionNewItem: TAction + Category = 'Editing' + Caption = 'Add New Item (Ins)' + ImageIndex = 0 + OnExecute = ActionNewItemExecute + end + object ActionDeleteItem: TAction + Category = 'Editing' + Caption = 'Delete Item (Del)' + ImageIndex = 1 + OnExecute = ActionDeleteItemExecute + end + object ActionUpItem: TAction + Category = 'Moving' + Caption = 'Move Item Up' + ImageIndex = 2 + OnExecute = ActionUpItemExecute + end + object ActionDownItem: TAction + Category = 'Moving' + Caption = 'Move Item Down' + ImageIndex = 3 + OnExecute = ActionDownItemExecute + end + end + object PopupMenu1: TPopupMenu + Images = ImageList1 + Left = 16 + Top = 96 + object Add1: TMenuItem + Action = ActionNewItem + end + object Delete1: TMenuItem + Action = ActionDeleteItem + end + object N1: TMenuItem + Caption = '-' + end + object MoveUp1: TMenuItem + Action = ActionUpItem + end + object MoveDown1: TMenuItem + Action = ActionDownItem + end + end +end diff --git a/official/1.7.0/EasyListview/Design/EasyCollectionEditor.hpp b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.hpp new file mode 100644 index 0000000..bc2e0ec --- /dev/null +++ b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.hpp @@ -0,0 +1,188 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Easycollectioneditor.pas' rev: 11.00 + +#ifndef EasycollectioneditorHPP +#define EasycollectioneditorHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Easycollectioneditor +{ +//-- type declarations ------------------------------------------------------- +class DELPHICLASS TFormEasyCollectionEditor; +class PASCALIMPLEMENTATION TFormEasyCollectionEditor : public Designwindows::TDesignWindow +{ + typedef Designwindows::TDesignWindow inherited; + +__published: + Comctrls::TListView* ListView1; + Comctrls::TToolBar* ToolBar1; + Comctrls::TToolButton* ToolButton1; + Comctrls::TToolButton* ToolButton2; + Comctrls::TToolButton* ToolButton3; + Comctrls::TToolButton* ToolButton4; + Controls::TImageList* ImageList1; + Comctrls::TToolButton* ToolButton5; + Actnlist::TActionList* ActionList1; + Actnlist::TAction* ActionNewItem; + Actnlist::TAction* ActionDeleteItem; + Actnlist::TAction* ActionUpItem; + Actnlist::TAction* ActionDownItem; + Comctrls::TToolButton* ToolButton6; + Menus::TPopupMenu* PopupMenu1; + Menus::TMenuItem* Add1; + Menus::TMenuItem* Delete1; + Menus::TMenuItem* MoveUp1; + Menus::TMenuItem* MoveDown1; + Menus::TMenuItem* N1; + Comctrls::TStatusBar* StatusBar1; + void __fastcall FormClose(System::TObject* Sender, Forms::TCloseAction &Action); + void __fastcall ActionNewItemExecute(System::TObject* Sender); + void __fastcall ActionDeleteItemExecute(System::TObject* Sender); + void __fastcall ActionUpItemExecute(System::TObject* Sender); + void __fastcall ActionDownItemExecute(System::TObject* Sender); + void __fastcall ListView1Resize(System::TObject* Sender); + void __fastcall ListView1Change(System::TObject* Sender, Comctrls::TListItem* Item, Comctrls::TItemChange Change); + void __fastcall ListView1KeyDown(System::TObject* Sender, Word &Key, Classes::TShiftState Shift); + void __fastcall ListView1KeyPress(System::TObject* Sender, char &Key); + +private: + Easylistview::TEasyCollection* FCollection; + Easylistview::TCustomEasyListview* FListview; + bool FRebuilding; + +protected: + DYNAMIC void __fastcall DoShow(void); + void __fastcall Rebuild(void); + HIDESBASE void __fastcall Refresh(void); + void __fastcall HandleDelete(void); + +public: + virtual void __fastcall DesignerClosed(const Designintf::_di_IDesigner Designer, bool AGoingDormant); + virtual void __fastcall ItemDeleted(const Designintf::_di_IDesigner ADesigner, Classes::TPersistent* Item); + virtual void __fastcall ItemsModified(const Designintf::_di_IDesigner Designer); + __property Easylistview::TEasyCollection* Collection = {read=FCollection, write=FCollection}; + __property Easylistview::TCustomEasyListview* Listview = {read=FListview, write=FListview}; + __property bool Rebuilding = {read=FRebuilding, write=FRebuilding, nodefault}; +public: + #pragma option push -w-inl + /* TDesignWindow.Create */ inline __fastcall virtual TFormEasyCollectionEditor(Classes::TComponent* AOwner) : Designwindows::TDesignWindow(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TDesignWindow.Destroy */ inline __fastcall virtual ~TFormEasyCollectionEditor(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TCustomForm.CreateNew */ inline __fastcall virtual TFormEasyCollectionEditor(Classes::TComponent* AOwner, int Dummy) : Designwindows::TDesignWindow(AOwner, Dummy) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TFormEasyCollectionEditor(HWND ParentWindow) : Designwindows::TDesignWindow(ParentWindow) { } + #pragma option pop + +}; + + +struct TFormRegRec; +typedef TFormRegRec *PFormRegRec; + +#pragma pack(push,4) +struct TFormRegRec +{ + +public: + Forms::TForm* Form; + Easylistview::TEasyCollection* Collection; + Easylistview::TCustomEasyListview* Listview; +} ; +#pragma pack(pop) + +class DELPHICLASS TEditorList; +class PASCALIMPLEMENTATION TEditorList : public System::TObject +{ + typedef System::TObject inherited; + +private: + Classes::TThreadList* FFormList; + +protected: + __property Classes::TThreadList* FormList = {read=FFormList, write=FFormList}; + +public: + __fastcall TEditorList(void); + __fastcall virtual ~TEditorList(void); + bool __fastcall CollectionRegistered(Easylistview::TEasyCollection* Collection, Forms::TForm* &Form); + void __fastcall ListviewDestroying(Easylistview::TCustomEasyListview* Listview, bool DestroyAll = false); + void __fastcall RegisterEditor(Forms::TForm* Form, Easylistview::TEasyCollection* Collection, Easylistview::TCustomEasyListview* Listview); + void __fastcall UnRegister(Forms::TForm* Form, Easylistview::TEasyCollection* Collection); +}; + + +class DELPHICLASS TEasyCollectionEditor; +class PASCALIMPLEMENTATION TEasyCollectionEditor : public Designeditors::TPropertyEditor +{ + typedef Designeditors::TPropertyEditor inherited; + +public: + virtual void __fastcall Edit(void); + virtual Designintf::TPropertyAttributes __fastcall GetAttributes(void); + virtual AnsiString __fastcall GetValue(); +public: + #pragma option push -w-inl + /* TPropertyEditor.Create */ inline __fastcall virtual TEasyCollectionEditor(const Designintf::_di_IDesigner ADesigner, int APropCount) : Designeditors::TPropertyEditor(ADesigner, APropCount) { } + #pragma option pop + #pragma option push -w-inl + /* TPropertyEditor.Destroy */ inline __fastcall virtual ~TEasyCollectionEditor(void) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE TEditorList* EditorList; +extern PACKAGE void __fastcall ShowEasyCollectionEditor(Designintf::_di_IDesigner ADesigner, Easylistview::TEasyCollection* ACollection); + +} /* namespace Easycollectioneditor */ +using namespace Easycollectioneditor; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Easycollectioneditor diff --git a/official/1.7.0/EasyListview/Design/EasyCollectionEditor.obj b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.obj new file mode 100644 index 0000000000000000000000000000000000000000..4c3dcbb193874ec4601f3f8e92f84abe2afe435c GIT binary patch literal 19828 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 _tlb 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 EUoe9>0ssI2 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Design/EasyCollectionEditor.pas b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.pas new file mode 100644 index 0000000..eac512c --- /dev/null +++ b/official/1.7.0/EasyListview/Design/EasyCollectionEditor.pas @@ -0,0 +1,635 @@ +unit EasyCollectionEditor; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + Classes, + Controls, + Graphics, + {$IFDEF COMPILER_6_UP} + DesignIntf, + DesignEditors, + DesignWindows, + TreeIntf, + VCLEditors, + {$ELSE} + DsgnIntf, + DsgnWnds, + {$ENDIF} + {$IFDEF COMPILER_5} + ParentageSupport, // Sprig support in DsnIDE5.dpk What about D4? + {$ENDIF} + TypInfo, + Forms, + Dialogs, + StdCtrls, + ComCtrls, + EasyListview, + ExtCtrls, + CommCtrl, + ImgList, + ToolWin, + ActnList, Menus; + +type + TFormEasyCollectionEditor = class(TDesignWindow) + ListView1: TListView; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ImageList1: TImageList; + ToolButton5: TToolButton; + ActionList1: TActionList; + ActionNewItem: TAction; + ActionDeleteItem: TAction; + ActionUpItem: TAction; + ActionDownItem: TAction; + ToolButton6: TToolButton; + PopupMenu1: TPopupMenu; + Add1: TMenuItem; + Delete1: TMenuItem; + MoveUp1: TMenuItem; + MoveDown1: TMenuItem; + N1: TMenuItem; + StatusBar1: TStatusBar; + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure ActionNewItemExecute(Sender: TObject); + procedure ActionDeleteItemExecute(Sender: TObject); + procedure ActionUpItemExecute(Sender: TObject); + procedure ActionDownItemExecute(Sender: TObject); + procedure ListView1Resize(Sender: TObject); + procedure ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange); + procedure ListView1KeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure ListView1KeyPress(Sender: TObject; var Key: Char); + private + { Private declarations } + FCollection: TEasyCollection; + FListview: TCustomEasyListview; + FRebuilding: Boolean; + protected + procedure DoShow; override; + procedure Rebuild; + procedure Refresh; + procedure HandleDelete; + {$IFNDEF COMPILER_6_UP} + function UniqueName(Component: TComponent): string; override; + {$ENDIF} + public + { Public declarations } + {$IFDEF COMPILER_6_UP} + procedure DesignerClosed(const Designer: IDesigner; AGoingDormant: Boolean); override; + procedure ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); override; + procedure ItemsModified(const Designer: IDesigner); override; + {$ENDIF} + + {$IFNDEF COMPILER_6_UP} + procedure ComponentDeleted(Component: IPersistent); override; + procedure FormClosed(AForm: TCustomForm); override; + procedure FormModified; override; + {$ENDIF} + + property Collection: TEasyCollection read FCollection write FCollection; + property Listview: TCustomEasyListview read FListview write FListview; + property Rebuilding: Boolean read FRebuilding write FRebuilding; + end; + + PFormRegRec = ^TFormRegRec; + TFormRegRec = record + Form: TForm; + Collection: TEasyCollection; + Listview: TCustomEasyListview; + end; + + TEditorList = class + private + FFormList: TThreadList; + protected + property FormList: TThreadList read FFormList write FFormList; + public + constructor Create; + destructor Destroy; override; + function CollectionRegistered(Collection: TEasyCollection; var Form: TForm): Boolean; + procedure ListviewDestroying(Listview: TCustomEasyListview; DestroyAll: Boolean = False); + procedure RegisterEditor(Form: TForm; Collection: TEasyCollection; Listview: TCustomEasyListview); + procedure UnRegister(Form: TForm; Collection: TEasyCollection); + end; + + + TEasyCollectionEditor = class(TPropertyEditor) + public + procedure Edit; override; + function GetAttributes: TPropertyAttributes; override; + function GetValue: string; override; + end; + +procedure ShowEasyCollectionEditor(ADesigner: {$IFDEF COMPILER_6_UP}IDesigner{$ELSE}IFormDesigner{$ENDIF}; ACollection: TEasyCollection); + +var + EditorList: TEditorList; + +implementation + +{$R *.dfm} + +type + TEasyCollectionItemHack = class(TEasyCollectionItem); + +{$IFDEF COMPILER_6_UP} +// To make the transition between D5's IPersistent and D6 and D7's TPersistent +function ExtractPersistent(Inst: TPersistent): TPersistent; +begin + Result := Inst; +end; +{$ENDIF COMPILER_6_UP} + +procedure ShowEasyCollectionEditor(ADesigner: {$IFDEF COMPILER_6_UP}IDesigner{$ELSE}IFormDesigner{$ENDIF}; ACollection: TEasyCollection); +var + F: TForm; + Selections: IDesignerSelections; +begin + {$IFDEF COMPILER_6_UP} + Selections := TDesignerSelections.Create; + {$ELSE} + Selections := CreateSelectionList; + {$ENDIF COMPILER_6_UP} + + ADesigner.GetSelections(Selections); + if Selections.Count = 1 then + begin + if (ExtractPersistent( Selections[0]) is TCustomEasyListview) or + (ExtractPersistent( Selections[0]) is TEasyGroup) then + begin + if not EditorList.CollectionRegistered(ACollection, F) then + begin + F := TFormEasyCollectionEditor.Create(Application); + {$IFDEF COMPILER_9_UP} + F.FormStyle := fsStayOnTop; // bug in D2005 + {$ENDIF COMPILER_9_UP} + TFormEasyCollectionEditor(F).Collection := ACollection; + TFormEasyCollectionEditor(F).Designer := ADesigner; + if (ExtractPersistent( Selections[0]) is TCustomEasyListview) then + begin + TFormEasyCollectionEditor(F).Listview := TCustomEasyListview( Selections[0]); + EditorList.RegisterEditor(F, ACollection, TCustomEasyListview( Selections[0])) + end else + begin + TFormEasyCollectionEditor(F).Listview := (TEasyGroup( Selections[0])).OwnerListview; + EditorList.RegisterEditor(F, ACollection, (TEasyGroup( Selections[0])).OwnerListview); + end; + F.Show + end else + begin + F.Show; + SetForegroundWindow(F.Handle); + end + end + end +end; + +{ TEditorList } + +constructor TEditorList.Create; +begin + FormList := TThreadList.Create; +end; + +destructor TEditorList.Destroy; +begin + FormList.Free; + inherited Destroy; +end; + +function TEditorList.CollectionRegistered(Collection: TEasyCollection; + var Form: TForm): Boolean; +var + List: TList; + i: Integer; + RegRec: PFormRegRec; +begin + Result := False; + Form := nil; + List := FormList.LockList; + try + i := 0; + while (i < List.Count) and not Result do + begin + RegRec := PFormRegRec(List[i]); + if RegRec.Collection = Collection then + begin + Form := RegRec.Form; + Result := True; + end; + Inc(i) + end + finally + FormList.UnLockList; + end +end; + +procedure TEditorList.ListviewDestroying(Listview: TCustomEasyListview; DestroyAll: Boolean = False); +var + List: TList; + i: Integer; + RegRec: PFormRegRec; +begin + List := FormList.LockList; + try + i := List.Count - 1; + while (i > -1) do + begin + RegRec := PFormRegRec(List[i]); + if (RegRec.Listview = Listview) or DestroyAll then + begin + RegRec.Form.Hide; + RegRec.Form.Release; + Dispose( PFormRegRec(List[i])); + List.Delete(i) + end; + Dec(i) + end + finally + FormList.UnLockList; + end +end; + + +procedure TEditorList.RegisterEditor(Form: TForm; Collection: TEasyCollection; + Listview: TCustomEasyListview); +var + List: TList; + RegRec: PFormRegRec; +begin + List := FormList.LockList; + try + New(RegRec); + RegRec.Form := Form; + RegRec.Collection := Collection; + RegRec.Listview := Listview; + List.Add(RegRec); + finally + FormList.UnLockList; + end +end; + +procedure TEditorList.UnRegister(Form: TForm; Collection: TEasyCollection); +var + List: TList; + i: Integer; + RegRec: PFormRegRec; +begin + List := FormList.LockList; + try + i := List.Count - 1; + while (i > -1) do + begin + RegRec := PFormRegRec(List[i]); + if (RegRec.Form = Form) and (RegRec.Collection = Collection) then + begin + Dispose( PFormRegRec(List[i])); + List.Delete(i) + end; + Dec(i) + end + finally + FormList.UnLockList; + end +end; + +{ TEasyCollectionEditor } + +function TEasyCollectionEditor.GetAttributes: TPropertyAttributes; +begin + Result := [paDialog, paReadOnly{$IFDEF COMPILER_6_UP}, paVCL{$ENDIF COMPILER_6_UP}]; +end; + +function TEasyCollectionEditor.GetValue: string; +begin + Result := 'TEasyCollection' +end; + +procedure TEasyCollectionEditor.Edit; +begin + // WL, 2006/01/22: extracted code to separate method to be able to show + // the editor on listview doubleclick. + ShowEasyCollectionEditor( + Designer, + TEasyCollection(GetObjectProp(GetComponent(0), GetPropInfo))); +end; + +procedure TFormEasyCollectionEditor.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + Designer.ClearSelection; + EditorList.UnRegister(Self, Collection); + Action := caFree +end; + +{$IFNDEF COMPILER_6_UP} + +procedure TFormEasyCollectionEditor.ComponentDeleted(Component: IPersistent); +begin + inherited; + if ExtractPersistent(Component) = Listview then + begin + EditorList.ListviewDestroying(Listview); + Listview := nil; + Collection := nil + end +end; + +function TFormEasyCollectionEditor.UniqueName(Component: TComponent): string; +begin + Result := Designer.UniqueName(Component.ClassName); +end; + +procedure TFormEasyCollectionEditor.FormClosed(AForm: TCustomForm); +begin + inherited; + // D4 and D5 have bug in this somehow so destroy all the editor when any form + // is closed. + if Designer = Self.Designer then + begin + EditorList.ListviewDestroying(Listview, True); + Listview := nil; + Collection := nil + end +end; + +procedure TFormEasyCollectionEditor.FormModified; +begin + Refresh; +end; + +{$ENDIF} + +{$IFDEF COMPILER_6_UP} + +procedure TFormEasyCollectionEditor.DesignerClosed(const Designer: IDesigner; + AGoingDormant: Boolean); +begin + inherited; + if Designer = Self.Designer then + begin + EditorList.ListviewDestroying(Listview); + Listview := nil; + Collection := nil + end +end; + +procedure TFormEasyCollectionEditor.ItemDeleted(const ADesigner: IDesigner; + Item: TPersistent); +begin + inherited; + if Item = Listview then + begin + EditorList.ListviewDestroying(Listview); + Listview := nil; + Collection := nil + end +end; + +procedure TFormEasyCollectionEditor.ItemsModified(const Designer: IDesigner); +begin + Refresh; +end; + +{$ENDIF} + +procedure TFormEasyCollectionEditor.ActionNewItemExecute(Sender: TObject); +begin + Collection.BeginUpdate(False); + try + Collection.Add + finally + Collection.EndUpdate; + Rebuild; + InvalidateRect(Collection.OwnerListview.Handle, nil, True); + end +end; + +procedure TFormEasyCollectionEditor.ActionDeleteItemExecute( + Sender: TObject); +var + i: Integer; + SelIndex: Integer; +begin + // We are deleting items that are selected in the Designer, clear this. + Designer.SetSelections(nil); + + SelIndex := -1; + Collection.BeginUpdate(True); + try + if Assigned(Listview1.Selected) then + SelIndex := Listview1.Selected.Index; + + i := Listview1.Items.Count - 1; + while i > -1 do + begin + if Listview1.Items[i].Selected then + Collection.Delete(i); + Dec(i) + end + finally + Collection.EndUpdate(False); + Rebuild; + if (SelIndex > -1) and (Listview1.Items.Count > 0) then + begin + if SelIndex < Listview1.Items.Count then + Listview1.Items[SelIndex].Selected := True + else + Listview1.Items[Listview1.Items.Count - 1].Selected := True + end; + end +end; + +procedure TFormEasyCollectionEditor.ActionUpItemExecute(Sender: TObject); +var + SelIndex: Integer; +begin + if Listview1.SelCount = 1 then + begin + SelIndex := Listview1.Selected.Index; + if SelIndex > 0 then + begin + Collection.Exchange(SelIndex, SelIndex - 1); + Rebuild; + Dec(SelIndex); + Listview1.Items[SelIndex].Selected := True; + end + end +end; + +procedure TFormEasyCollectionEditor.ActionDownItemExecute(Sender: TObject); +var + SelIndex: Integer; +begin + if Listview1.SelCount = 1 then + begin + if Listview1.Selected.Index < Listview1.Items.Count - 1 then + begin + SelIndex := Listview1.Selected.Index; + Collection.Exchange(SelIndex, SelIndex + 1); + Rebuild; + Inc(SelIndex); + Listview1.Items[SelIndex].Selected := True; + end + end +end; + +procedure TFormEasyCollectionEditor.Rebuild; +var + i: Integer; + Item: TListItem; +begin + Rebuilding := True; + Listview1.Items.BeginUpdate; + try + Listview1.Items.Clear; + for i := 0 to Collection.Count - 1 do + begin + Item := Listview1.Items.Add; + Item.Caption := TEasyCollectionItemHack(Collection.Items[i]).GetDisplayName; + end + finally + Listview1.Items.EndUpdate; + Rebuilding := False; + end; +end; + +procedure TFormEasyCollectionEditor.ListView1Resize(Sender: TObject); +begin + Listview1.Columns[0].Width := Listview1.ClientWidth - 2 +end; + +procedure TFormEasyCollectionEditor.ListView1Change(Sender: TObject; + Item: TListItem; Change: TItemChange); +var + Selections: IDesignerSelections; + i: Integer; +begin + if not(csDestroying in ComponentState) then + begin + Statusbar1.Panels[0].Text := 'Selected: ' + IntToStr(Listview1.SelCount); + if (Change = ctState) and not Rebuilding then + begin + if Listview1.SelCount = 0 then + Designer.SelectComponent(Collection) + else + if Listview1.SelCount = 1 then + Designer.SelectComponent(Collection.Items[Listview1.Selected.Index]) + else begin + {$IFDEF COMPILER_6_UP} + Selections := TDesignerSelections.Create; + {$ELSE} + Selections := CreateSelectionList; + {$ENDIF COMPILER_6_UP} + + for i := 0 to Listview1.Items.Count - 1 do + begin + + if Listview1.Items[i].Selected then + begin + {$IFDEF COMPILER_6_UP} + Selections.Add( Collection.Items[i]) + {$ELSE} + Selections.Add( MakeIPersistent(Collection.Items[i])) + {$ENDIF COMPILER_6_UP} + end + end; + Designer.SetSelections(Selections); + end + end; + ActionDeleteItem.Enabled := Listview1.SelCount > 0; + ActionUpItem.Enabled := Listview1.SelCount > 0; + ActionDownItem.Enabled := Listview1.SelCount > 0; + end +end; + +procedure TFormEasyCollectionEditor.DoShow; +begin + inherited; + Rebuild; +end; + +procedure TFormEasyCollectionEditor.ListView1KeyDown(Sender: TObject; + var Key: Word; Shift: TShiftState); +begin + if Key = VK_DELETE then + ActionDeleteItemExecute(Self) +end; + +procedure TFormEasyCollectionEditor.HandleDelete; +begin + +end; + +procedure TFormEasyCollectionEditor.ListView1KeyPress(Sender: TObject; + var Key: Char); +begin + {$IFDEF COMPILER_6_UP} + Designer.ModalEdit(Key, Self); + {$ENDIF} +end; + +procedure TFormEasyCollectionEditor.Refresh; +var + i: Integer; +begin + if Assigned(Collection) then + begin + if Collection.Count = Listview1.Items.Count then + begin + Rebuilding := True; + Listview1.Items.BeginUpdate; + try + for i := 0 to Collection.Count - 1 do + begin + Listview1.Items[i].Caption := TEasyCollectionItemHack(Collection.Items[i]).GetDisplayName; + end + finally + Listview1.Items.EndUpdate; + Rebuilding := False; + end; + end else + Rebuild; + InvalidateRect(Collection.OwnerListview.Handle, nil, True); + end +end; + +initialization + EditorList := TEditorList.Create; + +finalization + EditorList.Free; + +end. + diff --git a/official/1.7.0/EasyListview/Design/EasyCollectionEditorD4.dfm b/official/1.7.0/EasyListview/Design/EasyCollectionEditorD4.dfm new file mode 100644 index 0000000000000000000000000000000000000000..c537799c84df5157343e1919c405da96bc764251 GIT binary patch literal 14993 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 +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} + +uses + Windows, + Messages, + SysUtils, + Classes, + Controls, + Graphics, + {$IFDEF COMPILER_6_UP} + DesignIntf, + DesignEditors, + DesignWindows, + TreeIntf, + VCLEditors, + {$ELSE} + DsgnIntf, + DsgnWnds, + {$ENDIF} + {$IFDEF COMPILER_5} + ParentageSupport, // Sprig support in DsnIDE5.dpk What about D4? + {$ENDIF} + TypInfo, + Forms, + Dialogs, + StdCtrls, + ComCtrls, + EasyListview, + ExtCtrls, + CommCtrl, + ImgList, + ToolWin, + ActnList, Menus; + +type + TFormEasyCollectionEditor = class(TDesignWindow) + ListView1: TListView; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ImageList1: TImageList; + ToolButton5: TToolButton; + ActionList1: TActionList; + ActionNewItem: TAction; + ActionDeleteItem: TAction; + ActionUpItem: TAction; + ActionDownItem: TAction; + ToolButton6: TToolButton; + PopupMenu1: TPopupMenu; + Add1: TMenuItem; + Delete1: TMenuItem; + MoveUp1: TMenuItem; + MoveDown1: TMenuItem; + N1: TMenuItem; + StatusBar1: TStatusBar; + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure ActionNewItemExecute(Sender: TObject); + procedure ActionDeleteItemExecute(Sender: TObject); + procedure ActionUpItemExecute(Sender: TObject); + procedure ActionDownItemExecute(Sender: TObject); + procedure ListView1Resize(Sender: TObject); + procedure ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange); + procedure ListView1KeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure ListView1KeyPress(Sender: TObject; var Key: Char); + private + { Private declarations } + FCollection: TEasyCollection; + FListview: TCustomEasyListview; + FRebuilding: Boolean; + protected + procedure DoShow; override; + procedure Rebuild; + procedure Refresh; + procedure HandleDelete; + {$IFNDEF COMPILER_6_UP} + function UniqueName(Component: TComponent): string; override; + {$ENDIF} + public + { Public declarations } + {$IFDEF COMPILER_6_UP} + procedure DesignerClosed(const Designer: IDesigner; AGoingDormant: Boolean); override; + procedure ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); override; + procedure ItemsModified(const Designer: IDesigner); override; + {$ENDIF} + + {$IFNDEF COMPILER_6_UP} + procedure ComponentDeleted(Component: IPersistent); override; + procedure FormClosed(AForm: TCustomForm); override; + procedure FormModified; override; + {$ENDIF} + + property Collection: TEasyCollection read FCollection write FCollection; + property Listview: TCustomEasyListview read FListview write FListview; + property Rebuilding: Boolean read FRebuilding write FRebuilding; + end; + + PFormRegRec = ^TFormRegRec; + TFormRegRec = record + Form: TForm; + Collection: TEasyCollection; + Listview: TCustomEasyListview; + end; + + TEditorList = class + private + FFormList: TThreadList; + protected + property FormList: TThreadList read FFormList write FFormList; + public + constructor Create; + destructor Destroy; override; + function CollectionRegistered(Collection: TEasyCollection; var Form: TForm): Boolean; + procedure ListviewDestroying(Listview: TCustomEasyListview; DestroyAll: Boolean = False); + procedure RegisterEditor(Form: TForm; Collection: TEasyCollection; Listview: TCustomEasyListview); + procedure UnRegister(Form: TForm; Collection: TEasyCollection); + end; + + + TEasyCollectionEditor = class(TPropertyEditor) + public + procedure Edit; override; + function GetAttributes: TPropertyAttributes; override; + function GetValue: string; override; + end; + +procedure ShowEasyCollectionEditor(ADesigner: {$IFDEF COMPILER_6_UP}IDesigner{$ELSE}IFormDesigner{$ENDIF}; ACollection: TEasyCollection); + +var + EditorList: TEditorList; + +implementation + +type + TEasyCollectionItemHack = class(TEasyCollectionItem); + +{$R *.dfm} +{$IFDEF COMPILER_4} + +function GetObjectProp(Instance: TObject; PropInfo: PPropInfo): TObject; +begin + Result := TObject(GetOrdProp(Instance, PropInfo)); +end; + +{$ENDIF} + +{$IFDEF COMPILER_6_UP} +// To make the transition between D5's IPersistent and D6 and D7's TPersistent +function ExtractPersistent(Inst: TPersistent): TPersistent; +begin + Result := Inst; +end; +{$ENDIF COMPILER_6_UP} + +procedure ShowEasyCollectionEditor(ADesigner: {$IFDEF COMPILER_6_UP}IDesigner{$ELSE}IFormDesigner{$ENDIF}; ACollection: TEasyCollection); +var + F: TForm; + Selections: IDesignerSelections; +begin + {$IFDEF COMPILER_6_UP} + Selections := TDesignerSelections.Create; + {$ELSE} + Selections := CreateSelectionList; + {$ENDIF COMPILER_6_UP} + + ADesigner.GetSelections(Selections); + if Selections.Count = 1 then + begin + if (ExtractPersistent( Selections[0]) is TCustomEasyListview) or + (ExtractPersistent( Selections[0]) is TEasyGroup) then + begin + if not EditorList.CollectionRegistered(ACollection, F) then + begin + F := TFormEasyCollectionEditor.Create(Application); + TFormEasyCollectionEditor(F).Collection := ACollection; + TFormEasyCollectionEditor(F).Designer := ADesigner; + if (ExtractPersistent( Selections[0]) is TCustomEasyListview) then + begin + TFormEasyCollectionEditor(F).Listview := TCustomEasyListview( Selections[0]); + EditorList.RegisterEditor(F, ACollection, TCustomEasyListview( Selections[0])) + end else + begin + TFormEasyCollectionEditor(F).Listview := (TEasyGroup( Selections[0])).OwnerListview; + EditorList.RegisterEditor(F, ACollection, (TEasyGroup( Selections[0])).OwnerListview); + end; + F.Show + end else + begin + F.Show; + SetForegroundWindow(F.Handle); + end + end + end +end; + +{ TEditorList } + +constructor TEditorList.Create; +begin + FormList := TThreadList.Create; +end; + +destructor TEditorList.Destroy; +begin + FormList.Free; + inherited Destroy; +end; + +function TEditorList.CollectionRegistered(Collection: TEasyCollection; + var Form: TForm): Boolean; +var + List: TList; + i: Integer; + RegRec: PFormRegRec; +begin + Result := False; + Form := nil; + List := FormList.LockList; + try + i := 0; + while (i < List.Count) and not Result do + begin + RegRec := PFormRegRec(List[i]); + if RegRec.Collection = Collection then + begin + Form := RegRec.Form; + Result := True; + end; + Inc(i) + end + finally + FormList.UnLockList; + end +end; + +procedure TEditorList.ListviewDestroying(Listview: TCustomEasyListview; DestroyAll: Boolean = False); +var + List: TList; + i: Integer; + RegRec: PFormRegRec; +begin + List := FormList.LockList; + try + i := List.Count - 1; + while (i > -1) do + begin + RegRec := PFormRegRec(List[i]); + if (RegRec.Listview = Listview) or DestroyAll then + begin + RegRec.Form.Hide; + RegRec.Form.Release; + Dispose( PFormRegRec(List[i])); + List.Delete(i) + end; + Dec(i) + end + finally + FormList.UnLockList; + end +end; + + +procedure TEditorList.RegisterEditor(Form: TForm; Collection: TEasyCollection; + Listview: TCustomEasyListview); +var + List: TList; + RegRec: PFormRegRec; +begin + List := FormList.LockList; + try + New(RegRec); + RegRec.Form := Form; + RegRec.Collection := Collection; + RegRec.Listview := Listview; + List.Add(RegRec); + finally + FormList.UnLockList; + end +end; + +procedure TEditorList.UnRegister(Form: TForm; Collection: TEasyCollection); +var + List: TList; + i: Integer; + RegRec: PFormRegRec; +begin + List := FormList.LockList; + try + i := List.Count - 1; + while (i > -1) do + begin + RegRec := PFormRegRec(List[i]); + if (RegRec.Form = Form) and (RegRec.Collection = Collection) then + begin + Dispose( PFormRegRec(List[i])); + List.Delete(i) + end; + Dec(i) + end + finally + FormList.UnLockList; + end +end; + +{ TEasyCollectionEditor } + +function TEasyCollectionEditor.GetAttributes: TPropertyAttributes; +begin + Result := [paDialog, paReadOnly{$IFDEF COMPILER_6_UP}, paVCL{$ENDIF COMPILER_6_UP}]; +end; + +function TEasyCollectionEditor.GetValue: string; +begin + Result := 'TEasyCollection' +end; + +procedure TEasyCollectionEditor.Edit; +begin + // WL, 2006/01/22: extracted code to separate method to be able to show + // the editor on listview doubleclick. + ShowEasyCollectionEditor( + Designer, + TEasyCollection(GetObjectProp(GetComponent(0), GetPropInfo))); +end; + +procedure TFormEasyCollectionEditor.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + {$IFDEF COMPILER_5_UP} + Designer.ClearSelection; + {$ENDIF} + EditorList.UnRegister(Self, Collection); + Action := caFree +end; + +{$IFNDEF COMPILER_6_UP} + +procedure TFormEasyCollectionEditor.ComponentDeleted(Component: IPersistent); +begin + inherited; + if ExtractPersistent(Component) = Listview then + EditorList.ListviewDestroying(Listview); +end; + +function TFormEasyCollectionEditor.UniqueName(Component: TComponent): string; +begin + Result := Designer.UniqueName(Component.ClassName); +end; + +procedure TFormEasyCollectionEditor.FormClosed(AForm: TCustomForm); +begin + inherited; + // D4 and D5 have bug in this somehow so destroy all the editor when any form + // is closed. + if Designer = Self.Designer then + EditorList.ListviewDestroying(Listview, True); +end; + +procedure TFormEasyCollectionEditor.FormModified; +begin + Refresh; +end; + +{$ENDIF} + +{$IFDEF COMPILER_6_UP} + +procedure TFormEasyCollectionEditor.DesignerClosed(const Designer: IDesigner; + AGoingDormant: Boolean); +begin + inherited; + if Designer = Self.Designer then + EditorList.ListviewDestroying(Listview); +end; + +procedure TFormEasyCollectionEditor.ItemDeleted(const ADesigner: IDesigner; + Item: TPersistent); +begin + inherited; + if Item = Listview then + EditorList.ListviewDestroying(Listview); +end; + +procedure TFormEasyCollectionEditor.ItemsModified(const Designer: IDesigner); +begin + Refresh; +end; + +{$ENDIF} + +procedure TFormEasyCollectionEditor.ActionNewItemExecute(Sender: TObject); +begin + Collection.BeginUpdate(False); + try + Collection.Add + finally + Collection.EndUpdate(False); + Rebuild; + InvalidateRect(Collection.OwnerListview.Handle, nil, True); + end +end; + +procedure TFormEasyCollectionEditor.ActionDeleteItemExecute( + Sender: TObject); +var + i: Integer; + SelIndex: Integer; +begin + // We are deleting items that are selected in the Designer, clear this. + Designer.SetSelections(nil); + + SelIndex := -1; + Collection.BeginUpdate(True); + try + if Assigned(Listview1.Selected) then + SelIndex := Listview1.Selected.Index; + + i := Listview1.Items.Count - 1; + while i > -1 do + begin + if Listview1.Items[i].Selected then + Collection.Delete(i); + Dec(i) + end + finally + Collection.EndUpdate(False); + Rebuild; + if (SelIndex > -1) and (Listview1.Items.Count > 0) then + begin + if SelIndex < Listview1.Items.Count then + Listview1.Items[SelIndex].Selected := True + else + Listview1.Items[Listview1.Items.Count - 1].Selected := True + end; + end +end; + +procedure TFormEasyCollectionEditor.ActionUpItemExecute(Sender: TObject); +var + SelIndex: Integer; +begin + if Listview1.SelCount = 1 then + begin + SelIndex := Listview1.Selected.Index; + if SelIndex > 0 then + begin + Collection.Exchange(SelIndex, SelIndex - 1); + Rebuild; + Dec(SelIndex); + Listview1.Items[SelIndex].Selected := True; + end + end +end; + +procedure TFormEasyCollectionEditor.ActionDownItemExecute(Sender: TObject); +var + SelIndex: Integer; +begin + if Listview1.SelCount = 1 then + begin + if Listview1.Selected.Index < Listview1.Items.Count - 1 then + begin + SelIndex := Listview1.Selected.Index; + Collection.Exchange(SelIndex, SelIndex + 1); + Rebuild; + Inc(SelIndex); + Listview1.Items[SelIndex].Selected := True; + end + end +end; + +procedure TFormEasyCollectionEditor.Rebuild; +var + i: Integer; + Item: TListItem; +begin + Rebuilding := True; + Listview1.Items.BeginUpdate; + try + Listview1.Items.Clear; + for i := 0 to Collection.Count - 1 do + begin + Item := Listview1.Items.Add; + Item.Caption := TEasyCollectionItemHack(Collection.Items[i]).GetDisplayName; + end + finally + Listview1.Items.EndUpdate; + Rebuilding := False; + end; +end; + +procedure TFormEasyCollectionEditor.ListView1Resize(Sender: TObject); +begin + Listview1.Columns[0].Width := Listview1.ClientWidth - 2 +end; + +procedure TFormEasyCollectionEditor.ListView1Change(Sender: TObject; + Item: TListItem; Change: TItemChange); +var + Selections: IDesignerSelections; + i: Integer; +begin + if not(csDestroying in ComponentState) then + begin + Statusbar1.Panels[0].Text := 'Selected: ' + IntToStr(Listview1.SelCount); + if (Change = ctState) and not Rebuilding then + begin + if Listview1.SelCount = 0 then + Designer.SelectComponent(Collection) + else + if Listview1.SelCount = 1 then + Designer.SelectComponent(Collection.Items[Listview1.Selected.Index]) + else begin + {$IFDEF COMPILER_6_UP} + Selections := TDesignerSelections.Create; + {$ELSE} + Selections := CreateSelectionList; + {$ENDIF COMPILER_6_UP} + + for i := 0 to Listview1.Items.Count - 1 do + begin + + if Listview1.Items[i].Selected then + begin + {$IFDEF COMPILER_6_UP} + Selections.Add( Collection.Items[i]) + {$ELSE} + Selections.Add( MakeIPersistent(Collection.Items[i])) + {$ENDIF COMPILER_6_UP} + end + end; + Designer.SetSelections(Selections); + end + end; + ActionDeleteItem.Enabled := Listview1.SelCount > 0; + ActionUpItem.Enabled := Listview1.SelCount > 0; + ActionDownItem.Enabled := Listview1.SelCount > 0; + end +end; + +procedure TFormEasyCollectionEditor.DoShow; +begin + inherited; + Rebuild; +end; + +procedure TFormEasyCollectionEditor.ListView1KeyDown(Sender: TObject; + var Key: Word; Shift: TShiftState); +begin + if Key = VK_DELETE then + ActionDeleteItemExecute(Self) +end; + +procedure TFormEasyCollectionEditor.HandleDelete; +begin + +end; + +procedure TFormEasyCollectionEditor.ListView1KeyPress(Sender: TObject; + var Key: Char); +begin + {$IFDEF COMPILER_6_UP} + Designer.ModalEdit(Key, Self); + {$ENDIF} +end; + +procedure TFormEasyCollectionEditor.Refresh; +var + i: Integer; +begin + if Collection.Count = Listview1.Items.Count then + begin + Rebuilding := True; + Listview1.Items.BeginUpdate; + try + for i := 0 to Collection.Count - 1 do + begin + Listview1.Items[i].Caption := TEasyCollectionItemHack(Collection.Items[i]).GetDisplayName; + end + finally + Listview1.Items.EndUpdate; + Rebuilding := False; + end; + end else + Rebuild; + InvalidateRect(Collection.OwnerListview.Handle, nil, True); +end; + +initialization + EditorList := TEditorList.Create; + +finalization + EditorList.Free; + +end. + + diff --git a/official/1.7.0/EasyListview/Design/EasyListviewReg.dcr b/official/1.7.0/EasyListview/Design/EasyListviewReg.dcr new file mode 100644 index 0000000000000000000000000000000000000000..f0cbc4a3010cd8f01d4cb3fb2696e42d6603d206 GIT binary patch literal 6836 zcmeI0O^h5z6@Z_e;NF=FW<#Wakf#) zi8>&z91@`=UZldBg+pSL0|YCvvV|0(2!WKtMix;HeOM$Xnjyp5(<2CM^S!R_o!K93 zKmrMQ-^|yq>Q&Y2*VQ%srdmYAKv^az?vS%bL_UwDEDy`P%*b(>lPBbq%%bPzYv>vI zdOhOk(bnC~;QJ}uS93_FDziP@wC>hkgs*s?6i12@W0d$#l)-O*N{|*D&|m^Y$VIGx z0SeZEhX4_B5hq~40u|>WK!m(LuR&XI;2}VST!f+o0~Q>32oNDBNC5*D9C!#2As68* zxd96fJOqf4ixt8Y1Nw2`AwYyYU79gy3l2O4h>)ktwgzp%frkJQ@-!vRpe;D?5FkRH zrpp_&1qU7iM99-r27|WXz(artd79>E&=wqc2oNE!Zh_4W+JXZQ0V3q$xqdGO^vWIR zCqRT;yb&;9!GVVW5%P4~tU+6F;2}VSJl#@f&=wqc2oNDpx0{oAZ^40w01@)E6oNrp zaNr?8ggh;iXwViMcnA<7ua=O{4cdYO4*??N61n~;1}r%65I{e9T3W`SEjaKHAVQv& zoi%6+4m<>ikf$Z-4BCPN4*??NX}NlXw&1`+fCzb7%E6#5IPef4LY|g+G-wMBJOmkh zP)e769)CPNs;@p|C;^}9c~eS%xL5kU-pygTS4Pi2-`j03in1JKQ~h1`u6(yB`>oba zKiS2*mR?&b`!{Yhei&X9S-Z2gw$LBjr@GzI%U$VQD6(!=j_ns0p6Z?}m$J3)NTaL$ z6h-G^f7I<3Yn{qm+c)1m{UX5?+1iDR+B<9PgTaxNj8m*Fsl9utv2P6qvoC+==SvG& zQD*NAwi^3j@aGp!pMK)>kxSX=CtF(+_5rdr*t)*FjCq$mwb8s;`?GLQ&#T8Jk{Hq zriQ)VMw3Us%>U~syb*{~-S(!@D&Fy_umUTOG)7Vo3`<%2- z;BmPy*J*d^fA`z_pH{2L7UyQ$D{Q5TqP1-=TCJ%w3!QeGGgBVh>Gh|Dg|^IgM?^en zFZ+v&)9tpjJDu^qOTDh#Gk;H;29Y`Tbtx~hcgx!C>BZI61?=rz_Vy}g9deRM`xMT* zCA+drWZO;*#VXD(6Ms4EZri8&y?(#DIM?nHeTzX&-Yv2|bDf>R)0En8k)Qsr_EDOD zcJ8B^{Pb9rpJuAv)MTb&z=YiPo!_B}&OEL3%L{^}I8x+sAIITw|xC$5I zHM#G~Tf|w)Z_cmFH@>hg@7;Y#zC=HjU;JfSp82+w-@oumRezB&TK^sTGY_tlEB;=U zA3C-!%h*m})3Mse7Sq)jJ)D1PUBcCMd7!qugI^W**J;u6>z{r=K1BT}V>Bl7s}z&^ z``FW*2T`B9W2+iC=sDHLCvHy5L$AEGZ(qIk=V*WW$20r3Yn#TrM8DU5&E5Io@yh3$ z!)f`{*>SyT_kVo2Y9G|?ll9{o55A5avsIs~bsx29oXyu=We!&R$@&i+yO)}ze!LN~t)9kWO*jp&;E zD5!2k?~BU6^1kmYKRO|qWZ7VOrwlTzx3qttvb*%YpeO=3LQYP$` b=jJeBPoA6O*iZ7?9JlTN)%i^8YWMLUKTlyM literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Design/EasyListviewReg.hpp b/official/1.7.0/EasyListview/Design/EasyListviewReg.hpp new file mode 100644 index 0000000..ba7086c --- /dev/null +++ b/official/1.7.0/EasyListview/Design/EasyListviewReg.hpp @@ -0,0 +1,141 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Easylistviewreg.pas' rev: 11.00 + +#ifndef EasylistviewregHPP +#define EasylistviewregHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Easylistviewreg +{ +//-- type declarations ------------------------------------------------------- +class DELPHICLASS TEasyListviewEditor; +class PASCALIMPLEMENTATION TEasyListviewEditor : public Designeditors::TDefaultEditor +{ + typedef Designeditors::TDefaultEditor inherited; + +public: + virtual void __fastcall Edit(void); +public: + #pragma option push -w-inl + /* TComponentEditor.Create */ inline __fastcall virtual TEasyListviewEditor(Classes::TComponent* AComponent, Designintf::_di_IDesigner ADesigner) : Designeditors::TDefaultEditor(AComponent, ADesigner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyListviewEditor(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyDelphiTaskFormWizard; +class PASCALIMPLEMENTATION TEasyDelphiTaskFormWizard : public Mpcommonwizardhelpers::TCommonWizardDelphiForm +{ + typedef Mpcommonwizardhelpers::TCommonWizardDelphiForm inherited; + +public: + virtual void __fastcall InitializeWizard(void); +public: + #pragma option push -w-inl + /* TCommonWizardNotifierObject.Create */ inline __fastcall TEasyDelphiTaskFormWizard(void) : Mpcommonwizardhelpers::TCommonWizardDelphiForm() { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyDelphiTaskFormWizard(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyBuilderTaskFormWizard; +class PASCALIMPLEMENTATION TEasyBuilderTaskFormWizard : public Mpcommonwizardhelpers::TCommonWizardBuilderForm +{ + typedef Mpcommonwizardhelpers::TCommonWizardBuilderForm inherited; + +public: + virtual void __fastcall InitializeWizard(void); +public: + #pragma option push -w-inl + /* TCommonWizardNotifierObject.Create */ inline __fastcall TEasyBuilderTaskFormWizard(void) : Mpcommonwizardhelpers::TCommonWizardBuilderForm() { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyBuilderTaskFormWizard(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyTaskPanelCreator; +class PASCALIMPLEMENTATION TEasyTaskPanelCreator : public Mpcommonwizardhelpers::TCommonWizardEmptyFormCreator +{ + typedef Mpcommonwizardhelpers::TCommonWizardEmptyFormCreator inherited; + +public: + virtual void __fastcall InitializeCreator(void); +public: + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Create */ inline __fastcall virtual TEasyTaskPanelCreator(void) : Mpcommonwizardhelpers::TCommonWizardEmptyFormCreator() { } + #pragma option pop + #pragma option push -w-inl + /* TCommonWizardModuleCreator.Destroy */ inline __fastcall virtual ~TEasyTaskPanelCreator(void) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +#define NEW_PAGE "New" +#define sELVColumnCategory "Column Objects" +#define sELVItemCategory "Item Objects" +#define sELVGroupCategory "Group Objects" +#define sELVIncrementalCategory "Incremental Search" +#define sELVMouseCategory "Mouse" +#define sELVHintCategory "Hint" +#define sELVOLECategory "OLE Drag Drop" +#define sImageListCategory "ImageLists" +#define sPaintInfoCategory "Paint Information" +#define sELVClipboardCategory "Clipboard" +#define sELVHeaderCategory "Header" +#define sELVPaintCategory "Paint and Drawing" +#define sAutoCategory "Auto" +#define sELVViewCategory "View" +#define sELVContextMenuCategory "ContextMenu" +extern PACKAGE void __fastcall Register(void); + +} /* namespace Easylistviewreg */ +using namespace Easylistviewreg; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Easylistviewreg diff --git a/official/1.7.0/EasyListview/Design/EasyListviewReg.obj b/official/1.7.0/EasyListview/Design/EasyListviewReg.obj new file mode 100644 index 0000000000000000000000000000000000000000..fb804891ad6aa519d347bd0675570af4a6a70265 GIT binary patch literal 10287 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 +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} + +uses + ToolsApi, + Classes, + {$IFDEF COMPILER_6_UP} + DesignIntf, + DesignEditors, + PropertyCategories, + {$ELSE} + DsgnIntf, + DsgnWnds, + {$ENDIF} + Forms, + {$IFDEF COMPILER_5_UP} + ColnEdit, + {$ENDIF COMPILER_5_UP} + SysUtils, + Controls, + EasyListview, + EasyScrollFrame, + MPCommonWizardHelpers, + MPCommonObjects, + EasyTaskPanelForm; + +const + NEW_PAGE = 'New'; + +type + TEasyListviewEditor = class(TDefaultEditor) + public + procedure Edit; override; + end; + + TEasyDelphiTaskFormWizard = class(TCommonWizardDelphiForm) + public + procedure InitializeWizard; override; + end; + + // Only used in BDS 4.0 and up + TEasyBuilderTaskFormWizard = class(TCommonWizardBuilderForm) + public + procedure InitializeWizard; override; + end; + + TEasyTaskPanelCreator = class(TCommonWizardEmptyFormCreator) + public + procedure InitializeCreator; override; + end; + +{$IFDEF COMPILER_6_UP} +const + sELVColumnCategory = 'Column Objects'; + sELVItemCategory = 'Item Objects'; + sELVGroupCategory = 'Group Objects'; + sELVIncrementalCategory = 'Incremental Search'; + sELVMouseCategory = 'Mouse'; + sELVHintCategory = 'Hint'; + sELVOLECategory = 'OLE Drag Drop'; + sImageListCategory = 'ImageLists'; + sPaintInfoCategory = 'Paint Information'; + sELVClipboardCategory = 'Clipboard'; + sELVHeaderCategory = 'Header'; + sELVPaintCategory = 'Paint and Drawing'; + sAutoCategory = 'Auto'; + sELVViewCategory = 'View'; + sELVContextMenuCategory = 'ContextMenu'; +{$ENDIF COMPILER_6_UP} + +procedure Register; + +implementation + +uses + {$IFDEF COMPILER_5_UP} + EasyCollectionEditor; + {$ELSE} + EasyCollectionEditorD4; + {$ENDIF COMPILER_5_UP} + +{$IFDEF COMPILER_8_UP} +var + DelphiCategory, BuilderCategory: IOTAGalleryCategory; +{$ENDIF} + +procedure Register; +begin + RegisterComponents('MustangPeak', [TEasyListview, TEasyTaskBand, TEasyScrollButton, TEasyTaskPanelBand]); + RegisterPropertyEditor(TypeInfo(TEasyCollection), nil, '', TEasyCollectionEditor); + RegisterComponentEditor(TEasyListview, TEasyListviewEditor); + RegisterComponentEditor(TEasyTaskPanelBand, TEasyListviewEditor); + RegisterComponentEditor(TEasyTaskBand, TEasyListviewEditor); + + RegisterCustomModule(TEasyTaskPanelForm, TCustomModule); + RegisterPackageWizard(TEasyDelphiTaskFormWizard.Create); + {$IFDEF COMPILER_10_UP} + RegisterPackageWizard(TEasyBuilderTaskFormWizard.Create); + {$ENDIF COMPILER_10_UP} + + {$IFDEF COMPILER_6_UP} + RegisterPropertyEditor(TypeInfo(TCommonImageIndexInteger), nil, '', TCommonImageIndexProperty); + + RegisterPropertiesInCategory(sELVColumnCategory, TCustomEasyListview, + ['OnColumn*']); + + RegisterPropertiesInCategory(sELVItemCategory, TCustomEasyListview, + ['OnItem*']); + + RegisterPropertiesInCategory(sELVGroupCategory, TCustomEasyListview, + ['OnGroup*'] ); + + RegisterPropertiesInCategory(sELVHintCategory, TCustomEasyListview, + ['*Hint*'] ); + + RegisterPropertiesInCategory(sELVOLECategory, TCustomEasyListview, + ['*OLE*', + 'OnGetDragImage'] ); + + RegisterPropertiesInCategory(sELVOLECategory, TCustomEasyListview, + ['*PaintInfo*'] ); + + RegisterPropertiesInCategory(sELVClipboardCategory, TCustomEasyListview, + ['*Clipboard*'] ); + + RegisterPropertiesInCategory(sELVHeaderCategory, TCustomEasyListview, + ['*Header*'] ); + + RegisterPropertiesInCategory(sELVPaintCategory, TCustomEasyListview, + ['OnAfterPaint', + 'OnPaintHeaderBkGnd', + 'OnPaintBkGnd'] ); + + RegisterPropertiesInCategory(sELVHeaderCategory, TCustomEasyListview, + ['Header*'] ); + + RegisterPropertiesInCategory(sELVViewCategory, TCustomEasyListview, + ['OnViewChange'] ); + + RegisterPropertiesInCategory(sInputCategoryName, TCustomEasyListview, + ['OnDblClick'] ); + + RegisterPropertiesInCategory(sAutoCategory, TCustomEasyListview, + ['OnAuto*'] ); + + RegisterPropertiesInCategory(sELVIncrementalCategory, TCustomEasyListview, + ['*Incremental*'] ); + + RegisterPropertiesInCategory(sELVContextMenuCategory, TCustomEasyListview, + ['OnContextMenu*'] ); + + {$ENDIF COMPILER_6_UP} + +end; + +{ TEasyListviewEditor } + +procedure TEasyListviewEditor.Edit; +begin + // Show column collection editor on listview doubleclick. + if (Component is TEasyTaskPanelBand) or (Component is TEasyTaskBand) then + ShowEasyCollectionEditor(Designer, TEasyListview(Component).Groups) + else + ShowEasyCollectionEditor(Designer, TEasyListview(Component).Header.Columns); +end; + +{ TEasyDelphiTaskForm } + +procedure TEasyDelphiTaskFormWizard.InitializeWizard; +begin + inherited; + Caption := 'EasyListview TaskPanel'; + Author := 'Mustangpeak'; + Comment := 'Creates a task band panel for the EasyTaskPanelBand component'; + GlyphResourceID := ''; // use the default icon + Page := NEW_PAGE; // use the New page for Forms + UniqueID := 'mustangpeak.easy.delphi.task.form'; + State := []; + CreatorClass := TEasyTaskPanelCreator; + {$IFDEF COMPILER_8_UP} + GalleryCategory := DelphiCategory; + {$ENDIF COMPILER_8_UP} +end; + +{ TEasyBuilderTaskForm } + +procedure TEasyBuilderTaskFormWizard.InitializeWizard; +begin + inherited; + Caption := 'EasyTaskPanel C++Builder Form'; + Author := 'Mustangpeak'; + Comment := 'Creates a task band panel for the EasyTaskPanelBand component'; + GlyphResourceID := ''; // use the default icon + Page := ''; // use the default page for Forms + UniqueID := 'mustangpeak.easy.builder.task.form'; + State := []; + CreatorClass := TEasyTaskPanelCreator; + {$IFDEF COMPILER_8_UP} + GalleryCategory := BuilderCategory; + {$ENDIF COMPILER_8_UP} +end; + +{ TEasyTaskPanelCreator } + +procedure TEasyTaskPanelCreator.InitializeCreator; +begin + inherited; + AncestorName := 'EasyTaskPanelForm'; + if IsDelphi then + IncludeIdent.Add('EasyTaskPanelForm') + else + IncludeIdent.Add('EasyTaskPanelForm.hpp') +end; + +initialization + {$IFDEF COMPILER_8_UP} + DelphiCategory := AddDelphiCategory('mustangpeak.delphi.easylistview', 'EasyListview for Delphi'); + BuilderCategory := AddBuilderCategory('mustangpeak.builder.easylistview', 'EasyListview for C++ Builder'); + {$ENDIF COMPILER_8_UP} +finalization + {$IFDEF COMPILER_8_UP} + RemoveCategory(BuilderCategory); + RemoveCategory(DelphiCategory); + {$ENDIF COMPILER_8_UP} + +end. + diff --git a/official/1.7.0/EasyListview/Docs/Licence.txt b/official/1.7.0/EasyListview/Docs/Licence.txt new file mode 100644 index 0000000..385a6b2 --- /dev/null +++ b/official/1.7.0/EasyListview/Docs/Licence.txt @@ -0,0 +1,18 @@ +EasyListview + + The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the +License at + +http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an +"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed or +implied. See the License for the specific language governing rights +and limitations under the License. + + Alternatively, you may redistribute this library, use and/or modify it under the terms of the +GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. +You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Docs/Mustangpeak.net.url b/official/1.7.0/EasyListview/Docs/Mustangpeak.net.url new file mode 100644 index 0000000..b61e619 --- /dev/null +++ b/official/1.7.0/EasyListview/Docs/Mustangpeak.net.url @@ -0,0 +1,5 @@ +[DEFAULT] +BASEURL=http://www.mustangpeak.net/ +[InternetShortcut] +URL=http://www.mustangpeak.net/ +Modified=E0B6DB54C34AC40197 diff --git a/official/1.7.0/EasyListview/Docs/Unicode Compatibility.txt b/official/1.7.0/EasyListview/Docs/Unicode Compatibility.txt new file mode 100644 index 0000000..23b1bc6 --- /dev/null +++ b/official/1.7.0/EasyListview/Docs/Unicode Compatibility.txt @@ -0,0 +1,33 @@ + +To enabled Unicode this this library open the + + ${Install}\Source\Options.inc + +file and search for the following: + + +// ----------------------------------------------------------------------------- +// Use unicode-aware inplace editors. This implementation uses Troy Wolbrink's +// TNT controls, which can be found at: www.tntware.com + +{.$DEFINE TNTSUPPORT} + + +Then uncomment the TNTSUPPORT define like this: + + +{$DEFINE TNTSUPPORT} + +Now open the package for the library and recompile. The compile will warn you to add the Tnt +package to the library. Say yes. The package will compile, save and exit. + + +************* IMPORTANT ******************* +YOU MUST ADD THE TNT PACKAGE TO THE REQIRES CLAUSE IN THE EASYLISTVIEW DPK PACKAGE FILE AND RECOMPILE THE PACKAGES. DO NOT JUST UNCOMMENT OUT THE TNTSUPPORT DEFINE AND RECOMPILE + + +You will now have access to Unicode methods and the library will be Unicode enabled. + + + +Jim diff --git a/official/1.7.0/EasyListview/Docs/Whats New.txt b/official/1.7.0/EasyListview/Docs/Whats New.txt new file mode 100644 index 0000000..19beaa8 --- /dev/null +++ b/official/1.7.0/EasyListview/Docs/Whats New.txt @@ -0,0 +1,360 @@ +Sept 3, 2007 Version 1.7.0 + - Ghosted property messed up stream. + - Added more checks to keep ELV editor from starting to edit when control being destroyed causing AV. + - Added OnAfterPaint event + - Fixed some problems with the List mode SnapHorzView + - Added a Header.ClickColumn procedure to simulate a column Click + - Added a TopItem property to get the top item in the current window + - Fixed a problem with the always show header and List mode when scrolling horizontal + - Fixed a bug in the NextVisible enumerator with multiple Groups + - Added support of the middle button, were not calling events + - Reworked how MakeVisible function in the collection items works + - Optimized the grid rebuild function. Creates items about 25% faster + - Added a new param to OnItemCompare to override the default sorting method. + - New method addded: TEasySelectionManager.FocusFirst + - Changed the was Parent Font Notification was handled. It did not work like other controls + - Reworked the way the scrollbars where handled for less flicker + - Refactored to allow descendants to override the DoDragDrop call + - OnOLEDragDrop event changed. Sorry this will cause problems in current applications. Now has a parameter to cancel the default behavior of the drop. + - Fixed bug in GridLine painting + - Fixed bug with Interfaced items and deleting the items. + - Fixed bug where OLE drop still possible with DragManager not enabled. + - Improved the item focusing, when an item is deleted the next visible item will be selected. + - Fixed problem with themed "+" button for group expanding when font <> 96 DPI + - Added AllowHiddenCheckedItems property + - Added Categories to Events at Designtime + - Added OnScroll event. + - Removed the Sort.BeginUpdate/EndUpdate within the ELV.BeginUpdate/EndUpdate I hope this does not lead to strange problems but it was sorting too much. + - Added a Selection.PopupMode to keep the selection color normal when the Listview was not Focused + - Fixed potiental AV when an IDataObject was created by EasyListview and was kept alive past the time when the EasyListview that created it was destroyed. + - Fixed bug in VCL Drag and Drop when autoscrolling during the drag, it would cancel the D&D. + - Fixed bug in TEasyHeader.FixedSingleColumn when resizing the Listview + - Added an TEasyOLEDragManager.DragTarget boolean property to track when the window is a potential drop point. + - Fixed bug with the Context Menu and dual monitors + - Refactored the Taskband classes to better override them + - Fixed bug with click Selecting + - Added test to make sure the header is large enough for the current Font + - If the image is larger then the cell size in Thumbnail View the image is StretchBlt to fit in the Cell + - The edit was not canceled when the mouse was double clicked. + - Fixed bug with Header columns with the Bold property set. Text was truncated with ... + - Selection AnchorItem not cleared if the cached Item was Freed. Caused AV + - Fixed alignment issue with Text + - Fixed Task Panels showing in design positions before becoming anchored to TaskBand window. + - Refactored the Selection Drawing Code + - Fixed bug with GroupSelection, AlphaBlending, and Gradient selection properties set. + - Fixed bug where context menu would open after a right drag select. + - Added MouseGestures event to use mouse movements with the mouse down to execute and action (some call them Strokes) + - Added ViewRect property to TEasyCollection items + - Updated Hint Demo + - Fixed bug with Context Menus + - Fixed problem with mouse wheel when switching between a horz view and a vert view + - Fixed bug in TaskBand Panels at design time. The Delphi Designer would not open the Form. + - Added support for the "DropDown Button" in the header as in Vista. Still needs to draw with the Vista Themes correctly. See the Full Demo. + - Fixed bug in the in place Editor message hook + - Fixed the way the header autosize works. Now it is a property (on by default) to automatically size the header based on the font. Also the margin above and below the font is now adjustable + - Fixed bug in the TaskPanels/TaskBand where horz scroll bar would be shown when it was not suppose to be. + - Changed the way the embedded TaskPanels in the TaskBand are destroyed. Could cause the application to not shut + - Removed some Gradient drawing functions that were not used (had been moved to common library) + - Fixed drawing problem with scrollbars (needed invalidating) + - Fixed problems with compiling without the USETHEMES conditional define + - Fixed compiling problems in D5 and earlier with property Categories. D5 and earlier will not support property Categories in the Object Inspector. + - Fixed AV with EditManager Font if using the Font editor dialog. + - A lot of changes in the Incremental Search code. Should mimic Explorer now. + - Worked on AutoSize for the List view and Small Icon View. Not quite there yet. + - Published the Color property for TEasyColumn + - Added a TEasyListview.HintAlignment property for the Popup Hints + - Added a DoEditKeyDown method for Cell Editor Classes to override + - Columns (the header portion) now take on the current Header Color when created by default. + - Fixed problem if Scrollbar was on Left size of window + - Fixed problem with Caption Indent not being used in TEasyColumns if Right Justified + - Fixed TCanvas memory leak + - Added FindLongestCaption method to TEasyGrid class + - Fixed problem with TEasyColumn clipping text if Font was bold + - Fixed designtime issue with setting the Font using the dialog box + - Fixed streaming bug, should be transparent to current users + - Changed event prototype of OnIncrementalSearch, if you just delete your event handler EasyListview will handle the search itself by default now. + - Fixed bug in reseting mouse gestures + - Fixed bug with Header.FixedSingleColumn if set in component constructor + - Fixed bug with Group band margins + - Finally found bug with EasyListview/D2007 and Vista + - Fixed bug with PaintInfo and TaskBands + + +Mar 18, 2007 Version 1.6.0 + - Fixed bug in Column Clear method. Could cause an AV + - Fixed bug that could cause AV on item deletion + - Fixed inplaced editors not Themed + - Fixed bug in autosort + - IMPORTANT: Some will hate it some will love it but I found a way to move VirtualShellUtilities into the common library so TNamespace can be used without the Shell Components. It is Unicode enabled by using TntControls and the {$DEFINE TNTSUPPORT} like most other Mustangpeak libraries. CommonLibrary, EasyListview and VSTools 2.0 all must be updated and rebuild, along with VirtualShellUtilities changed to MPShellUtilities in your projects. Also a number of the strings that went with VirtualShellUtilities in VirtualResources.pas are now found in MPResources.pas so this unit may need to be added to your projects as well. + - Fixed problem with USETHEMES define. + - Added invalidation of window for full row select. + - Added support for TileDetails to contain an index of -1 that indicates no Details string for that line. + - Modified streaming system for TEasyCollectionItem and descendants. It is not 100% foolproof that it will not have a problem with existing streams but the odds very good. + - Implemented StateImages for Details View. + - Fixed drawing bug with Details view and the headers if no images were used. + - Fixed bug where in Details view the editor for the last item would be too small and cut off the bottom of the text. + - Fixed bug with inplace string editors and showing their context menus + - Fixed compile error with D5 and the soCurrent/soFromCurrent types + - Fixed bug with DblClick and autoresizing the columns in the header. + - Fixed but on selection rect drawing with Listview in details mode and full row select + - Added support to shortcircut the drawing lockout with UpdateCount > 0 (for popup dialog that show when drawing is locked out) + - Added OnItemGetEditMenu event to show a custom menu for the Item Editor. + - Fixed bug with PageUp/Down in Report View + - Fixed bug in the inplace editor when a the app ran under XP and not with a manifest + - Added Header.ShowInAllViews to show the header in all views as in Vista. Allows sorting in any view through clicking the Header + - Added shortcut key support for Ctl + to autofit all Column + - Added OnItemStructureChange, OnGroupStructureChange, and OnColumnStructureChange to detect when an object is added, deleted, or moved in the Collection + - Fixed bug in the Groups.ItemByPoint function when the header was displayed + - Added MakeAllVisible to make all groups and items in the control Visible + - Added Header.AutoFitAllColumns to auto size all column to fit Data + - Fixed bug where scrollbars not shown after double clicking in sizing area of Header to autosize the Column + - Added support to help descendants cancel out of drag operations by clearing the ebcs{x}ButtonDown flags in the MouseDown event. + - Fixed bug where a ELV on a form with hotkeys would first the hotkey instead of selecting items if IncrementalSearch was used. + - Fixed bug with Focusing of ELV + - Fixed possible AV if ELV size was zero + - Fixed bug in header.AlwaysShowHeader and flickering of Scrollbars + - Fixed flickering in the scrollbar in Report mode when sizing the columns. + - Fixed bug with Horz scrolling and the WheelMouse in List View. + - Fixed bug in Header.Columns.VisibleCount property + - Fixed inplace text editors to support CTL-A to select all the text + - Added "Visible" enumerators to the Header.Columns + - Added support for "snapping" of the horz scrollbar on column boundaries in List mode. + - Fixed problem with view not resizing when header double clicked to autofit. + - Fixed problem with Taskband and horizontal scrollbar + - Added Edit.Color and Edit.Font to customize the Edit box. + - Fixed problem with items being painted over the Header + - Fixed problem with Taskband and not scrolling far enough when expanding/collapsing bands + - Fixed PageDown problems with Items view + - Changed TImageList to TCustomImageList to allow for 3rd party image packages to work better with ELV + - Added a Ghosted property to TEasyCollectionItem + - Fixed bug in the Vista type Blended Selection when AlphaBlend is enabled where the first and last columns of pixels were not alpha blended. + - Changed FullCellPaint to subtract 2 pixels from the edges when in Icon modes so the selection are not touching each other. + + +Nov 24, 2006 Version 1.5.0 Prerelease + - WARNING WARNING WARNING: A bug was discovered in the streaming of the Collection Items (the core class for + Items, Groups and Columns). I had to fix it to make the streaming extendable in the future.. and now. + I extended TEasyColumn in the last release so that means that all designtime AND persistent streams that + contain the ELV Header information will crash on start up. The problem is the wrong stream version was written + to the stream so there is no way to identify it on read in. It will give a stream read error when it is loaded. + I can't apologize enough for this mistake, it will be a painful upgrade. + - Fixed bug in the Collection Editor that caused a random AV in the IDE if the ELV was deleted + + +Nov 23, 2006 Version 1.5.0 Prerelease + - OnCustomView event has been renamed to OnItemCustomView and OnGroupCustomView and OnColumnCustomView added. + this will break your DFM file sorry... but it had to be changed. + - Some internal renaming of classes, for the TEasy... prefix + - Reworked the way the default views were stored. They are no longer stored a static properties they + call the new event handlers and dynamically callback everytime they are needed + - This means the way the View property works. This should fix the issue in the last SVN update + - TEAsyColumn.AutoToggleSort has been renamed to TEAsyColumn.AutoToggleSortGlyph to more accurately reflect + what it does. It should translate to the new property in the DFM without notice + - There is a new property TEasyColumn.AutoSortOnClick. This causes the Sorter to sort the list if the + header is clicked even if the ELV.Sort.AutoSort is False. + - Added TEasyBaseTaskBand.AutoScrollPanels to allow for the scroll bars of the panels to be shown or + not used if the band is smaller then the Panel + - Fixed a bug in the Theming with the TaskPanels + - Fixed bug in NavigateItemInternal, gave an AV under special conditions + - Added default parameter to DeleteSelected + procedure DeleteSelected(SelectPrevItem: Boolean = False); + - Added: + function CanMoveDown: Boolean; + function CanMoveUp: Boolean; + function MoveDown: Boolean; + function MoveUp: Boolean; + to allow selected items to be moved up or down. Make sure AutoSort is off. + +Nov 12, 2006 Version 1.5.0 Prerelease + - YOU MUST UPGRADE THE COMMON LIBRARY TO VERSION 1.5.0 FIRST.............................. + - Renamed and moved IEasyExtractObj to ICommonExtractObj in the Common Library Package + - Moved and renamed the follow to the Common Library Package + TWideStringDynArray to TCommonWideStringDynArray + TIntegerDynArray to TCommonIntegerDynArray; + TEasyFormatEtcArray to TCommonFormatEtcArray + TEasyVAlignment to TCommonVAlignment + - Number of renamings to support the above changes + - Added new component TEasyTaskPanelBand see the TaskPanel demo. + New panels are created in the File > New > Other... and the "New" tab under "EasyListview TaskPanel" + - New demo for the TEasyTaskPanelBand + - Moved the EasyDataObject into the Common Library Package (CommonDataObject) + - Added new Gradient "glass effect" (similar to vista) for item selection, see the Overview Demo. + - Added an OnPaintBkGnd event for custom painting of the background, see to Overview Demo. + - Added properties to the ELV.Background object to allow for text to be shown in the background, + see the Overview demo. + - Added OnClipboardXXXX events to handle custom clipboard actions + - Changed the way the focus rectangle was drawn to be consistent with VirtualTreevew + - Fixed issues with Column captions and fonts, caused a lot of "C..." with plenty of room for the text. + - Added option to hide the caption in Thumbnail and Filmstrip views (ELV.PaintInfoItem.HideCaption) + +Oct 8, 2006 + - Published the Tag property in the stored collection items + - Added SetSize to TEasyCellSize + - Minor fixes + - Fixed bug with ContextMenu hotkeys + - Fixed problem with Compilers.inc + - Fixed bug with context menu showing after right mouse drag/drop + - Fix for flicker if selection when drag selecting + - Added TNTSUPPORT compiler define to Options.inc to enable unicode-aware inplace editors. + - Fixed bug with context menu showing after right mouse drag/drop + - Added an ELV.Selection.SelectedToArray method to return the selected items in an array + - Added an ELV.Selection.DeleteSelected method + - Major internal change to adding/deleting items. For large data sets the speed of the control + may be significantly slower. This is because the items are reindexed for every addition + and deleting of an item for robustness under all conditions. This can be manually shutoff + with the new property ReIndexDisable. For instance: + + ELV.Items.ReIndexDisable := True; + try + // Add the items here + finally + ELV.Items.ReIndexDisable := False + end + + or + + ELV.Groups.ReIndexDisable := True; + try + // Add the items here + finally + ELV.Groups.ReIndexDisable := False + end; + + - Added SpTBX support for painting. Need to add the conditional define "SpTBX" + - Fixed bug when setting a custom PaintInfo object to an Item + - Fixed bug where drag selection would unselect item if the selection rect was (0, 0, 0, 0); + - Reworked the order for when the LosingSelection, LosingFocus, and LosingVisiblility + was being called during an item destruction. Should make it more robust. + - Fixed problem with grouping and disabling reindexing + - Added OnItemMouseDown/Up events + - Fixed some painting bugs in Thumbnail view. + - Added internal streaming versioning to update stream without invalidating older streams + - The Edit method now takes a column parameter. This will put different columns into edit mode in report view. + This is not a great solution since there is no visual feedback that you can actually put the columns into edit mode + - MakeVisible now functional for the columns in ReportMode + - Added FirstVisibleColumn, NextVisibleColumn, PrevVisibleColumn, LastVisibleColumn to the Header object + - Added support for Grid Lines in ReportView, see the PaintInfoItem.GridLines and GridLineColor. + - Added support for hilighting the columns in Report and Grid Mode + property HilightFocused: Boolean + property HilightFocusedColor: TColor + - Fixed bug with new support for grid lines + - Fixed Demos to compile with latest changes + - Fixed bug with GroupExpand and Collapse Events + - Fixed but introduced lat release with column header captions + - Added CacheDoubleBufferBits property, it is off by default (different then prev version). + If true the bitmap for the background is cached to the current window size. + Has a speed advantage at the expense of memory usage. + - Changed the sorting to have a Sort.BeginUpdate/EndUpdate to keep from sorting redundantly + - Fixed the String Editor so it is an Edit for single line caption views and TMemo for Multiline views. + - Added event to allow application to supply the text for the initial edit string + - Fixed bug that showed the wrong context menu in report view on the last item if the header was shown + - Fixed the ELV.Group.ReIndexDisable property to actually work :^) + - Gave the details view a 2 pixel margin on top to not "blend" into the Header + - Simplified the code to resize the string edit box + - Updated Main Demo to compile with new code. + - Minor enhancements (SelectFirst method added) + - Bug fixes for last column not resizing if invisible column is the last in the List + - Added default parameter to Sort.SortAll to force it to sort regardless of the update Count + - Added default value for published property Selection.MouseButtonSelRect + - Fixed bug if OLE drag and drop when dragging the headers + + +July 28, 2006 + - Complete rework of the component structure, EasyListview now requires the + new MustangPeak Common Library components to be installed first. + Most issues can in compiling existing EasyListview code can be solved by replacing + any missing unit in your compile with... + + uses + MPCommonUtilities, MPCommonObjects, MPShellTypes; + + If you are using TWideFileStream or TWideStringList I suggest you use the Tnt Unicode package + available from + + http://www.tntware.com/delphicontrols/unicode/ + + There is no point in me duplicating this work. + + Any function used in the old VirtualUtilities or VirtualWideStrings that ended with a "W" is now + like the Tnt functions and begin with "Wide" + + FileExistsW is now WideFileExists + ect... + DirExistsW is an exception it maps to WideDirectoryExists + + If any object that use to be called TVirtualXXXXX or TEasyXXXX it is likely now + called TCommonXXXXX and in the MPCommonObjects.pas file of the Mustangpeak + Common Library Package. + + Other issues that may be noticable at design time are: + + An invalid stream read on a MouseButton type. This was a misspelling so just + ignore it. You may have to reset the mouse buttons that will allow a drag + select for nondefault buttons (left, right). + + TEasyKeyStates => TCommonKeyStates + TEasyDropEffects => TCommonDropEffects + TEasyDropEffect => TCommonDropEffect + + edeCopy, edeMove, edeLink => cdeCopy, cdeMove, cdeLink + edeNone, ..... edeScroll => cdeNone, ..... cdeScroll + + THDrop => TCommonHDrop + + TEasyMouseButton => TCommonMouseButton + + +May 28, 2006 + - Added ELV.paintInfoItem.ShowBorder to not show a border + on views with Borders. + - Added TEasyAlphaBlender.BasicBlend with the same parameters + as the old blend method. + +May 27, 2006 + - Added OnItemSelectionsChanged to notify when item selection + has changed in volumn. OnItemSelectionChange is fired for + every item that changes selection state. This new event + only fires once when 1 or a block of items has changed + selection in one action (SelectAll for instance), Mantis #87 + - Finished implementing the Hot-Tracking. + - TaskBand Hot-tracking now works as in Explorer, Mantis #83 + +May 26, 2006 + - Release of version 1.0.0 Beta + - Added new component TEasySrollButton for more interesting + scrolling options. See the ThumbScroller Demo. + - Bug fixes. + - UPdated the component structure to allow descendants to more + easily hide unwanted properties. + +May 22, 2006 + - Fixed bug when deleting items and the scrollbar was not at 0. + - Added new TEasyTaskBand component that closely mimics the + ExplorerBand in Windows Explorer XP. + +May 18, 2006 + - Added to Tcolumn + - property AutoSizeOnDblClk; + - property AutoSpring; + AutoSizeOnDblClk resized the column to fit all captions if doubled clicks in + resize area of the header. + AutoSpring works like in VT. The columns try to stay in the same proportion + to other columns as the window is resized. + +May 15, 2006 + - Fixed bug in CustomDrawing TEasyAlphaBlender + - Added MergeSort to TEasySortManager, Code donated by Milan + - Fixed memory leak with AutoGroupSort + - Made Interfaced Sorting more robust to unallowed mixed item types + (with interfaced sorting ALL items must be of type TEasyInterfacedXXXX) + +May 14, 2006 + - Resizing Column would fire and AutoSort, fixed + - Image not clipped if column was at minimum width, fixed + - Added to TEasyListview + property DisabledBlendAlpha; + property DisabledBlendColor; + for blending of image when item is disabled. + - Added to TEasySelectionManager + property BlendAlphaTextRect + for blending of selection rectangles on text \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Include/AddIns.inc b/official/1.7.0/EasyListview/Include/AddIns.inc new file mode 100644 index 0000000..8274c22 --- /dev/null +++ b/official/1.7.0/EasyListview/Include/AddIns.inc @@ -0,0 +1,30 @@ + +// The packages must be rebuilt to make the changes in this file active + + + +// ----------------------------------------------------------------------------- +// +// TNT (TMS) Unicode Controls +// +// If you are using Tnt Unicode controls use this define to enable unicode support +// in the VSTools package. +// +// If using TNT you MUST include the TNT package for your specific compiler in the +// Requires section of this package. It may be possible to compile without doing +// this but you WILL eventually have strange crashes in your application that will +// be difficult to understand. The best way to do this in my opinion is to create +// a new folder in the package install directory called "Delphi_TNT" (or CBuilder_TNT) +// and copy all the files from the Delphi (or CBuilder) folder into it. Now open the +// VirtualShellToolsDx.dpk (or bpk) file in the "Delphi_TNT" (or CBuilder_TNT) based on your compiler +// version in a text editor. In the "Requires" section add "TNTUnicodeVcl_Rx0", where +// the "x" is the version of Delphi you are using. Open the dpk (bpk) file in your +// IDE. Select the menu option Projects>Options>Directories/Conditionals>Conditional +// and enter TNTSUPPORT. Compile the package, then open the VirtualShellToolsDxD.dpk (or bpk) +// and compile and press the Install button. +// Now when you update the packages you won't have to redo all this. Just install +// the update then compile the packages in the "Delphi_TNT" (or CBuilder_TNT) folders +// an you are done. +// +//{$DEFINE TNTSUPPORT} + diff --git a/official/1.7.0/EasyListview/Include/Debug.inc b/official/1.7.0/EasyListview/Include/Debug.inc new file mode 100644 index 0000000..f5f13c5 --- /dev/null +++ b/official/1.7.0/EasyListview/Include/Debug.inc @@ -0,0 +1,6 @@ + +// {$DEFINE LOG_VCL_CMDRAG} // Create a "VCL Drag.log" file for CM_DRAG + +// {$DEFINE TEST_RTL} // Tests RTL by inverting the tests for RTL, make LTR system return true for RTL and vice-versa + +//{$DEFINE MEMORYTRACK} // Tracks memory allocations and Creation/Deletion of ICoolItem and ICoolGroup objects diff --git a/official/1.7.0/EasyListview/InstallLogD11.txt b/official/1.7.0/EasyListview/InstallLogD11.txt new file mode 100644 index 0000000..6795400 --- /dev/null +++ b/official/1.7.0/EasyListview/InstallLogD11.txt @@ -0,0 +1,563 @@ +*************************************** +BEGIN: Unregistering Component Package +*************************************** + +Reading Extra Paths from Setup.ini + T:\Componentes\Mustangpeak\EasyListview\Source + +Cleaning Known Package Registry Entry + +Reading Packages: +TntUnicodeVcl_Design110.bpl +$(BDS)\bin\applet100.bpl +$(BDS)\bin\dcl31w100.bpl +$(BDS)\bin\dclstd100.bpl +$(BDS)\Bin\vclimg100.bpl +$(BDS)\bin\dclact100.bpl +$(BDS)\bin\dclbde100.bpl +$(BDS)\bin\dcldb100.bpl +$(BDS)\bin\dbx100.bpl +$(BDS)\bin\dclemacsedit100.bpl +$(BDS)\bin\dclmlwiz100.bpl +$(BDS)\bin\dclsmpedit100.bpl +$(BDS)\bin\dclmcn100.bpl +$(BDS)\Bin\dclmid100.bpl +$(BDS)\bin\dcltee7100.bpl +$(BDS)\Bin\dclib100.bpl +$(BDS)\bin\dclado100.bpl +$(BDS)\bin\dcldbx4100.bpl +$(BDS)\bin\dcldbxcds4100.bpl +$(BDS)\Bin\dclIndyCore100.bpl +$(BDS)\Bin\dclIndyProtocols100.bpl +$(BDS)\bin\dclsmp100.bpl +$(BDS)\bin\dclie100.bpl +$(BDS)\Bin\dclwbm100.bpl +$(BDS)\Bin\dclnet100.bpl +$(BDS)\bin\dclbcbsmp100.bpl +T:\Bpl_D11\MPCommonLibD11D.bpl +T:\Bpl_D11\cfpack_D2007.bpl +T:\Bpl_D11\dclcxBarEditItemD11.bpl +T:\Bpl_D11\dclcxExtEditorsD11.bpl +T:\Bpl_D11\dclcxEditorsD11.bpl +T:\Bpl_D11\dclcxLibraryD11.bpl +T:\Bpl_D11\dclcxGridD11.bpl +T:\Bpl_D11\dclcxPageControlD11.bpl +T:\Bpl_D11\dclcxSchedulerD11.bpl +T:\Bpl_D11\dclcxTreeListD11.bpl +T:\Bpl_D11\dclcxVerticalGridD11.bpl +T:\Bpl_D11\dcldxBarD11.bpl +T:\Bpl_D11\dcldxBarDBNavD11.bpl +T:\Bpl_D11\dcldxBarExtDBItemsD11.bpl +T:\Bpl_D11\dcldxBarExtItemsD11.bpl +T:\Bpl_D11\dcldxLayoutControlD11.bpl +T:\Bpl_D11\dcldxNavBarD11.bpl +T:\Bpl_D11\dcldxPSCoreD11.bpl +T:\Bpl_D11\dcldxRibbonD11.bpl +T:\Bpl_D11\cxIntl5D11.bpl +$(ProgramFiles)\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D10.bpl +T:\Bpl_D11\GUISDK_D2007.bpl +T:\Bpl_D11\dclfsTee11.bpl +T:\Bpl_D11\dclfrx11.bpl +T:\Bpl_D11\dclfrxADO11.bpl +T:\Bpl_D11\dclfrxBDE11.bpl +T:\Bpl_D11\dclfrxcs11.bpl +T:\Bpl_D11\dclfrxDB11.bpl +T:\Bpl_D11\dclfrxDBX11.bpl +T:\Bpl_D11\dclfrxe11.bpl +T:\Bpl_D11\dclfrxIBX11.bpl +T:\Bpl_D11\dclfrxTee11.bpl +T:\Bpl_D11\dclfs11.bpl +T:\Bpl_D11\dclfsADO11.bpl +T:\Bpl_D11\dclfsBDE11.bpl +T:\Bpl_D11\dclfsDB11.bpl +T:\Bpl_D11\dclfsIBX11.bpl +T:\Bpl_D11\PNG_D2007.bpl +T:\Bpl_D11\PngComponentsD2007D.bpl +T:\Bpl_D11\SpTBXLibDsgn_d11.bpl +T:\Bpl_D11\tb2kdsgn_d11.bpl +T:\Bpl_D11\tbxdsgn_d11.bpl +T:\Bpl_D11\cxIntlPrintSys3D11.bpl +$(BDS)\bin\bcbie100.bpl +T:\Bpl_D11\PluginSDK_D11D.bpl +$(ProgramFiles)\EurekaLog 6\Delphi11\ExceptionExpert11.bpl +T:\Componentes\jvcl\lib\d11\JvAppFrmD11D.bpl +T:\Componentes\jvcl\lib\d11\JvBandsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvBDED11D.bpl +T:\Componentes\jvcl\lib\d11\JvCmpD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCoreD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCryptD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCtrlsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvCustomD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDBD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDlgsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDockingD11D.bpl +T:\Componentes\jvcl\lib\d11\JvDotNetCtrlsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvEDID11D.bpl +T:\Componentes\jvcl\lib\d11\JvGlobusD11D.bpl +T:\Componentes\jvcl\lib\d11\JvHMID11D.bpl +T:\Componentes\jvcl\lib\d11\JvInterpreterD11D.bpl +T:\Componentes\jvcl\lib\d11\JvJansD11D.bpl +T:\Componentes\jvcl\lib\d11\JvManagedThreadsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvMMD11D.bpl +T:\Componentes\jvcl\lib\d11\JvNetD11D.bpl +T:\Componentes\jvcl\lib\d11\JvPageCompsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvPluginD11D.bpl +T:\Componentes\jvcl\lib\d11\JvPrintPreviewD11D.bpl +T:\Componentes\jvcl\lib\d11\JvRuntimeDesignD11D.bpl +T:\Componentes\jvcl\lib\d11\JvStdCtrlsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvSystemD11D.bpl +T:\Componentes\jvcl\lib\d11\JvTimeFrameworkD11D.bpl +T:\Componentes\jvcl\lib\d11\JvUIBD11D.bpl +T:\Componentes\jvcl\lib\d11\JvValidatorsD11D.bpl +T:\Componentes\jvcl\lib\d11\JvWizardD11D.bpl +T:\Componentes\jvcl\lib\d11\JvXPCtrlsD11D.bpl +$(BDS)\Bin\dclintraweb_90_100.bpl +$(BDS)\bin\dclwebsnap100.bpl +$(BDS)\bin\dclsoap100.bpl +$(BDS)\bin\dcloffice2k100.bpl +$(BDS)\bin\dclofficexp100.bpl +$(BDS)\bin\bcboffice2k100.bpl +$(BDS)\bin\bcbofficexp100.bpl + +Stripping off path and extension +TntUnicodeVcl_Design110 +applet100 +dcl31w100 +dclstd100 +vclimg100 +dclact100 +dclbde100 +dcldb100 +dbx100 +dclemacsedit100 +dclmlwiz100 +dclsmpedit100 +dclmcn100 +dclmid100 +dcltee7100 +dclib100 +dclado100 +dcldbx4100 +dcldbxcds4100 +dclIndyCore100 +dclIndyProtocols100 +dclsmp100 +dclie100 +dclwbm100 +dclnet100 +dclbcbsmp100 +MPCommonLibD11D +cfpack_D2007 +dclcxBarEditItemD11 +dclcxExtEditorsD11 +dclcxEditorsD11 +dclcxLibraryD11 +dclcxGridD11 +dclcxPageControlD11 +dclcxSchedulerD11 +dclcxTreeListD11 +dclcxVerticalGridD11 +dcldxBarD11 +dcldxBarDBNavD11 +dcldxBarExtDBItemsD11 +dcldxBarExtItemsD11 +dcldxLayoutControlD11 +dcldxNavBarD11 +dcldxPSCoreD11 +dcldxRibbonD11 +cxIntl5D11 +RemObjects_Everwood_D10 +GUISDK_D2007 +dclfsTee11 +dclfrx11 +dclfrxADO11 +dclfrxBDE11 +dclfrxcs11 +dclfrxDB11 +dclfrxDBX11 +dclfrxe11 +dclfrxIBX11 +dclfrxTee11 +dclfs11 +dclfsADO11 +dclfsBDE11 +dclfsDB11 +dclfsIBX11 +PNG_D2007 +PngComponentsD2007D +SpTBXLibDsgn_d11 +tb2kdsgn_d11 +tbxdsgn_d11 +cxIntlPrintSys3D11 +bcbie100 +PluginSDK_D11D +ExceptionExpert11 +JvAppFrmD11D +JvBandsD11D +JvBDED11D +JvCmpD11D +JvCoreD11D +JvCryptD11D +JvCtrlsD11D +JvCustomD11D +JvDBD11D +JvDlgsD11D +JvDockingD11D +JvDotNetCtrlsD11D +JvEDID11D +JvGlobusD11D +JvHMID11D +JvInterpreterD11D +JvJansD11D +JvManagedThreadsD11D +JvMMD11D +JvNetD11D +JvPageCompsD11D +JvPluginD11D +JvPrintPreviewD11D +JvRuntimeDesignD11D +JvStdCtrlsD11D +JvSystemD11D +JvTimeFrameworkD11D +JvUIBD11D +JvValidatorsD11D +JvWizardD11D +JvXPCtrlsD11D +dclintraweb_90_100 +dclwebsnap100 +dclsoap100 +dcloffice2k100 +dclofficexp100 +bcboffice2k100 +bcbofficexp100 + +Reading Packages to remove +EasyListviewD11 +EasyListviewD11D + +Stripping off path and extension +EasyListviewD11 +EasyListviewD11D + +Scanning for previously installed packages.... +Known Package Registry Entry Cleaned + +Cleaning Disabled Package Registry Entry + +Reading Packages: +$(BDS)\bin\bcboffice2k100.bpl +$(BDS)\bin\bcbofficexp100.bpl +$(BDS)\bin\dcloffice2k100.bpl +$(BDS)\bin\dclofficexp100.bpl +$(BDS)\Bin\dclintraweb_90_100.bpl +$(BDS)\bin\dclwebsnap100.bpl +$(BDS)\bin\dclsoap100.bpl + +Stripping off path and extension +bcboffice2k100 +bcbofficexp100 +dcloffice2k100 +dclofficexp100 +dclintraweb_90_100 +dclwebsnap100 +dclsoap100 + +Reading Packages to remove +EasyListviewD11 +EasyListviewD11D + +Stripping off path and extension +EasyListviewD11 +EasyListviewD11D + +Scanning for previously installed packages.... +Disabled Package Registry Entry Cleaned + +Cleaning Package Cache Registry Entry + +Reading Packages: + +Stripping off path and extension + +Reading Packages to remove +EasyListviewD11 +EasyListviewD11D + +Stripping off path and extension +EasyListviewD11 +EasyListviewD11D + +Scanning for previously installed packages.... +Package Cache Registry Entry Cleaned + +Reading Search Path Registry Entry +C:\Archivos de programa\EurekaLog 6\Delphi11 +C:\Archivos de programa\Borland\Delphi11\lib +$(BDSUSERDIR)\Imports +C:\Archivos de programa\Borland\Delphi11\Imports +C:\Archivos de programa\Borland\Delphi11\Lib\Indy10 +C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Dcp +T:\Bpl_D11 +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10 +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC +C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse +$(Everwood)\Bin +C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10 +C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source +C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers +C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10 +C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source +T:\Componentes\FastReport 4\LibD11 +T:\Componentes\Developer Express VCL\Lib\D11 +T:\Componentes\PngComponents\Source +T:\Componentes\jvcl\lib\D11 +T:\Componentes\jvcl\common +T:\Componentes\jvcl\Resources + + +Writing Search Path Registry Entry +Removing extra characters and blank lines +Formatting..... +$(ProgramFiles)\EurekaLog 6\Delphi11 +$(BDS)\lib +$(BDSUSERDIR)\Imports +$(BDS)\Imports +$(BDS)\Lib\Indy10 +$(BDSCOMMONDIR)\Dcp +T:\Bpl_D11 +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10 +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\RODX +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC +$(ProgramFiles)\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse +$(Everwood)\Bin +$(ProgramFiles)\RemObjects Software\Data Abstract for Delphi\Dcu\D10 +$(ProgramFiles)\RemObjects Software\Data Abstract for Delphi\Source +$(ProgramFiles)\RemObjects Software\Data Abstract for Delphi\Source\Drivers +$(ProgramFiles)\RemObjects Software\Pascal Script for Delphi\Dcu\D10 +$(ProgramFiles)\RemObjects Software\Pascal Script for Delphi\Source +T:\Componentes\FastReport 4\LibD11 +T:\Componentes\Developer Express VCL\Lib\D11 +T:\Componentes\PngComponents\Source +T:\Componentes\jvcl\lib\D11 +T:\Componentes\jvcl\common +T:\Componentes\jvcl\Resources +Writing to Key: Software\Borland\BDS\5.0\Library Value: Search Path +Search Path Registry Entry written + +Reading Browse Path Registry Entry +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\VCL +C:\Archivos de programa\Borland\Delphi11\source\Win32\rtl\common +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\RTL\SYS +C:\Archivos de programa\Borland\Delphi11\source\Win32\rtl\win +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\WEBSNAP +C:\Archivos de programa\Borland\Delphi11\source\ToolsAPI +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\IBX +C:\Archivos de programa\Borland\Delphi11\source\Win32\Internet +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\PROPERTY EDITORS +C:\Archivos de programa\Borland\Delphi11\source\Win32\soap +C:\Archivos de programa\Borland\Delphi11\SOURCE\WIN32\XML +C:\Archivos de programa\Borland\Delphi11\source\Win32\db +C:\Archivos de programa\Borland\Delphi11\source\Indy10\Core +C:\Archivos de programa\Borland\Delphi11\source\Indy10\System +C:\Archivos de programa\Borland\Delphi11\source\Indy10\Protocols +C:\Archivos de programa\Borland\Delphi11\source\database\src\pas\dbx\driver +C:\Archivos de programa\Borland\Delphi11\source\database\src\pas\dbx\vcl +T:\Componentes\jvcl\common +T:\Componentes\jvcl\run + + +Writing Browse Path Registry Entry +Removing extra characters and blank lines +Formatting..... +$(BDS)\SOURCE\WIN32\VCL +$(BDS)\source\Win32\rtl\common +$(BDS)\SOURCE\WIN32\RTL\SYS +$(BDS)\source\Win32\rtl\win +$(BDS)\SOURCE\WIN32\WEBSNAP +$(BDS)\source\ToolsAPI +$(BDS)\SOURCE\WIN32\IBX +$(BDS)\source\Win32\Internet +$(BDS)\SOURCE\WIN32\PROPERTY EDITORS +$(BDS)\source\Win32\soap +$(BDS)\SOURCE\WIN32\XML +$(BDS)\source\Win32\db +$(BDS)\source\Indy10\Core +$(BDS)\source\Indy10\System +$(BDS)\source\Indy10\Protocols +$(BDS)\source\database\src\pas\dbx\driver +$(BDS)\source\database\src\pas\dbx\vcl +T:\Componentes\jvcl\common +T:\Componentes\jvcl\run +Writing to Key: Software\Borland\BDS\5.0\Library Value: Browsing Path +Browse Path Registry Entry written + +*************************************** +END: Unregistering Component Package +*************************************** + + +*************************************** +BEGIN: Compiling Component Package +*************************************** +Validating Output Folders +Creating temp compile folder +Folder Created: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Config.ini -JP Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\EASYLI~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" EasyListviewD11.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + EasyListviewD11.dpk(1) EasyListviewD11.dpk(31) EasyListviewD11.dpk(32) EasyListviewD11.dpk(34) EasyListviewD11.dpk(34) EasyListviewD11.dpk(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(459) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(471) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(23) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(73) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(78) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(79) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(79) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(80) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(88) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(89) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(96) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(97) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(98) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(99) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(100) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(101) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(102) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(104) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(115) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyLVResources.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyLVResources.pas(41) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(117) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(118) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(119) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(120) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(120) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(121) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(483) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(10) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(23) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(44) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(52) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(53) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(54) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(55) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(56) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(57) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(59) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(302) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(125) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(494) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(1006) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(1518) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(2030) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(2542) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(3054) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(3566) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(4078) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(4590) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(5102) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(5614) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(5809) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(6126) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(6638) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(7150) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(7662) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(8174) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(8686) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(9198) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(9710) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(10222) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(10734) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(11246) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(11758) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(12270) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(12782) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(13294) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(13806) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(14318) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(14830) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(15342) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(15854) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(16366) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(16878) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(17390) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(17902) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(18414) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(18926) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(19438) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(19950) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(20462) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(20974) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(21486) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(21998) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(22510) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(23022) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(23534) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(24046) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(24558) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(25070) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(25582) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(26094) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(26606) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(27118) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(27630) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(28142) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(28654) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(29102) + EasyListviewD11.dpk(38) EasyListviewD11.dpk(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(14) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(23) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(32) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(35) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(37) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(46) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(49) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(440) + EasyListviewD11.dpk(38) EasyListviewD11.dpk(38) EasyListviewD11.dpk(40) EasyListviewD11.dpk(41) +33573 lines, 1.17 seconds, 641 bytes code, 0 bytes data. + + +Compiling C++Builder Files + +Config.ini -JL Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\EASYLI~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" EasyListviewD11.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + EasyListviewD11.dpk(1) EasyListviewD11.dpk(31) EasyListviewD11.dpk(32) EasyListviewD11.dpk(34) EasyListviewD11.dpk(34) EasyListviewD11.dpk(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(459) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(471) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(23) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(73) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(76) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(78) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(79) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(79) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(80) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(81) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(82) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(83) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(88) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(89) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(96) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(97) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(98) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(99) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(100) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(101) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(102) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(104) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(115) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyLVResources.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\Debug.inc(7) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyLVResources.pas(41) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(116) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(117) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(118) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(119) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(120) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(120) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(121) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(483) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(10) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(23) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(44) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(52) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(53) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(54) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(55) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(56) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(57) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(59) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyTaskPanelForm.pas(302) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(125) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(494) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(1006) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(1518) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(2030) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(2542) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(3054) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(3566) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(4078) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(4590) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(5102) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(5614) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(5809) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(6126) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(6638) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(7150) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(7662) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(8174) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(8686) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(9198) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(9710) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(10222) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(10734) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(11246) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(11758) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(12270) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(12782) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(13294) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(13806) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(14318) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(14830) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(15342) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(15854) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(16366) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(16878) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(17390) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(17902) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(18414) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(18926) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(19438) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(19950) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(20462) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(20974) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(21486) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(21998) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(22510) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(23022) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(23534) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(24046) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(24558) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(25070) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(25582) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(26094) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(26606) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(27118) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(27630) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(28142) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(28654) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyListview.pas(29102) + EasyListviewD11.dpk(38) EasyListviewD11.dpk(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(14) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\Options.inc(23) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Include\AddIns.inc(31) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(32) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(35) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(37) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(46) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(49) T:\COMPON~1\MUSTAN~2\EASYLI~1\Source\EasyScrollFrame.pas(440) + EasyListviewD11.dpk(38) EasyListviewD11.dpk(38) EasyListviewD11.dpk(40) EasyListviewD11.dpk(41) +33573 lines, 1.44 seconds, 326852 bytes code, 280 bytes data. + + +Found compiled BPL file: T:\Bpl_D11\EasyListviewD11.bpl + + +Config.ini -JP Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\EASYLI~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" EasyListviewD11D.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + EasyListviewD11D.dpk(1) EasyListviewD11D.dpk(32) EasyListviewD11D.dpk(33) EasyListviewD11D.dpk(34) EasyListviewD11D.dpk(35) EasyListviewD11D.dpk(36) EasyListviewD11D.dpk(37) EasyListviewD11D.dpk(39) EasyListviewD11D.dpk(39) EasyListviewD11D.dpk(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(30) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(32) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(43) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(44) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(46) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(46) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(48) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(49) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(51) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(30) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(31) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(32) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(36) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(37) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(40) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(48) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(49) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(50) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(51) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(52) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(53) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(54) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(55) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(56) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(57) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(58) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(58) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(60) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(532) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(636) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(107) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(252) + EasyListviewD11D.dpk(41) EasyListviewD11D.dpk(41) EasyListviewD11D.dpk(43) EasyListviewD11D.dpk(44) +1919 lines, 1.01 seconds, 1153 bytes code, 0 bytes data. + + +Compiling C++Builder Files + +Config.ini -JL Switch: +Config.ini -U Switch: C:\ARCHIV~1\EUREKA~1\Delphi11;C:\ARCHIV~1\Borland\Delphi11\lib;$(BDSUSERDIR)\Imports;C:\ARCHIV~1\Borland\Delphi11\Imports;C:\ARCHIV~1\Borland\Delphi11\Lib\Indy10;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Dcp;T:\Bpl_D11;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\CodeGen;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\DataSnap;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\ZLib;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODX;C:\ARCHIV~1\REMOBJ~1\REMOBJ~1\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse;$(Everwood)\Bin;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Dcu\D10;C:\ARCHIV~1\REMOBJ~1\DATAAB~1\Source;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10;C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source;T:\Componentes\FastReport 4\LibD11;T:\Componentes\Developer Express VCL\Lib\D11;T:\COMPON~1\PNGCOM~1\Source;T:\COMPON~1\jvcl\lib\D11;T:\COMPON~1\jvcl\common;T:\COMPON~1\jvcl\RESOUR~1; +Config.ini -I Switch: ..\Include +Config.ini -LE Switch: T:\Bpl_D11 +Config.ini -LN Switch: T:\Bpl_D11 +Config.ini -N Switch: C:\DOCUME~1\Usuario\CONFIG~1\Temp\ESetup + +Compiling.... + +Redirector Working Dir: T:\COMPON~1\MUSTAN~2\EASYLI~1\Delphi +Redirector CreateProcess command: "C:\ARCHIV~1\Borland\Delphi11\Bin\DCC32.exe" EasyListviewD11D.dpk + + +CodeGear Delphi for Win32 compiler version 18.5 +Copyright (c) 1983,2007 CodeGear + EasyListviewD11D.dpk(1) EasyListviewD11D.dpk(32) EasyListviewD11D.dpk(33) EasyListviewD11D.dpk(34) EasyListviewD11D.dpk(35) EasyListviewD11D.dpk(36) EasyListviewD11D.dpk(37) EasyListviewD11D.dpk(39) EasyListviewD11D.dpk(39) EasyListviewD11D.dpk(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(29) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(30) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(32) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(41) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(43) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(44) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(45) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(46) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(46) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(47) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(48) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(49) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(51) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(1) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(487) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\Compilers.inc(493) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(30) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(31) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(32) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(33) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(34) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(36) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(37) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(38) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(39) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(40) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(48) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(49) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(50) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(51) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(52) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(53) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(54) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(55) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(56) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(57) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(58) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(58) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(60) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(532) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyCollectionEditor.pas(636) + T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(107) T:\COMPON~1\MUSTAN~2\EASYLI~1\Design\EasyListviewReg.pas(252) + EasyListviewD11D.dpk(41) EasyListviewD11D.dpk(41) EasyListviewD11D.dpk(43) EasyListviewD11D.dpk(44) +1919 lines, 1.05 seconds, 13708 bytes code, 92 bytes data. + + +Found compiled BPL file: T:\Bpl_D11\EasyListviewD11D.bpl + + + +Adding Package BPL to Registry +Adding: T:\Bpl_D11\EasyListviewD11D.bpl +*************************************** +END: Compiling Component Package +*************************************** + +*************************************** +BEGIN: Registering Component Package Paths +*************************************** + +*************************************** +END: Registering Component Package Paths +*************************************** + diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyCollectionEditor.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyCollectionEditor.dcu new file mode 100644 index 0000000000000000000000000000000000000000..66781056490e128211c9485a8347e16af75c816c GIT binary patch literal 25771 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 ZJ4I=?sBj=Hw}APpj-){r>eDX^{Rde)Pb2^U literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyLVResources.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyLVResources.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f38dbeb00623827b8b5227c5124a57c276931609 GIT binary patch literal 849 zcma)(&rcIU6vto3bs=OajY2{c$q-UPf>abMgm7T{18AsQ+_osB1ee*NtZrx5-8ND@ zNHj5_CW;~P;6eQth>7vwfu!-QCdPlj6VX4wlXV6XH0XgjOySi z?7+yUukRH=ZArtgrss6(I~9*m|2fFxZbu|iNHJnpOj=M)(_((aV&v(I-Vxbt|4U2I zIa~G1v;3$$)6Gx?(RR$o@ zqoZxW(z_=g5s4nwlSuSWLXdHxi{;F1k+~;aTLbn=xods7!D=+*%>&{&Ww;#bz>6!d&4cv0yBMB`FZ2vK^Q=U_CaVi1fPQi<*@fiWq5^8#O zT8*WXTA~KSeR~-RJrK-M!Sp=G8^bY!+%EET-jHg$t47SG{8(~KiamO#VtLfZ20PGF zC8J1T1Vt`Rf(-r2zIWETQRaqkfUpn>JzLE{UZVbg?c+58LOsnw|CNAd0J)9dY_#!) z?!TT8s%_^V{}|rQuZDSGHipbi+&C$O;oXJ#d2=(gDh#aeiL38F7wZoP#VJrPg+Rf< s0PYNQp9x?EDIo<(fo`Q0ZNal3x&&ya30+2j6zK}z$K}y3*ak3u10KB)Z2$lO literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListview.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyListview.dcu new file mode 100644 index 0000000000000000000000000000000000000000..034f94a6a4135011bfec4471dc07de463be48dff GIT binary patch literal 773573 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�VW3Zcz=!Cs z1DgYWU-$q~3^G!LX|wMusyE)ncAk?$>);yAZP>k|G-Pbil3Y10;;#0!M9%IENBk{a z7wx%V3sUZ6KB2=CE=rP3d93KHkLv!Cli8nnm7(CGJ11Oems9z7ZIDW?AxIjBh%K*s z2$aG>Y(wN;9f0jR-cNwUh}#Nje4$IJ@?=f@mzhVlz%_IJ_JyFyI`G8Lpr}Km-L#Ec zyT7v%Bgx{o`D-v8+~0cJGRDWNbn3{_<5MxsN#3NyY4us zmkSMPeDik`B(bHP5A}(m0fjAT_6q*RRB2DzicQ@-18n?9ckF^e8Jfn6WKgY1ylb$n zvzGcnbSL&CU{a3((h{3jRPxHy-81D>PgwLR6npkpyS`S+Lf$*5EZebg7VfTAjHKS} zng1kVl00FG@lei8<+6C4G%dJ0+#Y|V>n@^-XUWR*Lh+??dc@s;4PeD0FM&}&(LxoZ zVoPTW!rTu@A%he+Q!z*E0iq=)ub_NVjHu-sI$re{^(w@Wc>N5Jb_T-Wj_iJTS=QYJ^No><5)G|1Po_p#RV z=GJ#cR?}x9^u_#NS;deC6;(OmN;eQTUDFK~&5^qa79S3q+ad=@D!ks3#tnR=(4))`|c0y*VOw0onIe}LNjf&0S_n98aa5CyA(axW{CtU;2*!EPZK_o`+wo8 zbI*_yJz^QUlQ5YcWO{L+z`xLE!BW*1`i!6nL=S6t;VO5zoS|b*>4k5IVvvxPS--~} zXoF|F`NXMj(kTbt3fp^$Jx~w-5R=psL;=|`PMDsny((^4AHdhMPhjEi_!ggd(&+g;hhnu3$XD zQWZK%Nc`EWovfM$v=awq1UuShr@YJnDs0MQLhikGM=cn!wsPlEMy(pEQ*^z5u@A8| zE#y{1$CSF#Aj?7IR?1jnDB%Y}lL9pYL z!p07!>ESM_JJY4>c7i^6_~b^}6lphiMuNGw=N!;10K3WUY=TIF zgg5!Wq&wAgP&GH5?+BbJOh+{+C+ReUYfJ^6OiD{>2{*#UglGgbu)g-RVT5;O#`Zj3Q#JQ2hb%t;R_i zXKdaJC!oi8&+iQDc8)TMVuXQ$!Xbt6Ktd1GqoGc+44Rb(6LLr|Bs>gILkKn6fMTc3 zkfHS<`$;6jh-A2d1hHRFnm?p&X*TcvGKxX-`wMZ5AO<(d&&b zg9MuE&fUhVBm0~~1+YBU#zhl00FWR)mk>ks2nPZMzGk|%Pa$+5Z7keK2t%{c01HVS zzJ*YR0SFXZ!rw-if%=-b%>U$YAv(>il+6eRUVQJnS&&Qz$4n$U+Og*!ewA?WXS}DW zj6LASVJz=!gcz(xRI~-rj{*60!esY{A#-%X{jun42a(YVktN^r8hi^nalVobwcSSE zXcq}Y^Tb}lXyO1P#QB5}m?8x?ASl|{N6_Q+P~K6>TIKUT6)Bkggc+umm^MN*@>#5Y0sshrs$eO6m^9zB4`~dntyG9*@$=tf z%xM7O?4byEdwBVaKU3(Z!-~994uaJ-fIM@8$p@jAA!Y@j?w zZ-ZhEVf&ffb&V!%8H`)d1iWJiWf&}q>kD{KBHVF$*6^#kqq~<7Ub9S?f--k}Og)jP z^u+e3KG=##L~A=U%dDi`-}RghI*l>u(L`|up)7a&GBb1l?rhr z3YkqL=bTk_O`8aisRPuTky-wpplN_=iLRdsG#H?I9BQgXuC3N3@?~~lux94U;QjQ< z&!6m|HMVb|ug%&CUz)XEPMWt6r*(ZHpLbt&hK*X>w==TQ4KNVRQY%M3P>H}6J_(zU ztwC>eXju%FBW&3Her^4E6hCQWh=J#Ft(gO!)?g?+dC!jJ#t|qGb7;g2S4%s>0`80i zA>!G@B$+p08f@UK=#9n3sQ~@Nnn&0NPe&ITrUC_v#@`PlMg61;7Sm+B+x3)j8dazn z`XORQi7f7D9ARaQbIGQWWT`H`SYidLKKbM!qk$1WwwPl0hl!y->ne@f9rUIv`)=KU4-Cu-A!o2 zR1LNqknoWJnuB(P`D%!IvyM=Pc@-0baINaR zx{Bn`TquO#6ih8`#KAC#H9R%tF)FMnQ$>;t?Yykgp(>81Z5qu%qu_)Oc64^sU~Sz& zD1&cM3IzzGw-N=xmFff<8gsel;f%2_Wb=G{pV2^}00nsmZ@8|1AcBH?oHwiw64i7( zK{&(gHp3tGW3~;GaQd+&;9NEr$%a|S9pFJOb6K_7m)07J)CCX;V*X{rv4M)PzTvj0 z#K)}Y@ZgAdS_ZNKgP@J+j=|rl*nb};GV*~o)s7h5)~V1Wctn`I*ma;OA&B6D(QLlNSBEt|iL_Wm23#ThrEd#tpXJpT(2)(0f*2SP|3a> ze&!eCkagQ^O?S>aktSNLA18iy#jQqsDDa%Y?PN=u$*AS3e6(~lQ^6E3TW=#F;P-q(VFvGW9EHf^JK504 zPzrUl>akgZvzN+w%R)lNvrb66Z0IJKF8iCJL>|guDO5CNV52s!#JU*cL5$w2jq>%f zY2JJnlHJc0T>mnqI}08$BWsxM35zodo58IqBi8EmFd#Hn5Dwf$sn^t zPg6(o!$_sn&xR=*%SN`gMyxTdkM%dz(EjxsqzFyH+_GKbgzs>&F2m{=g&-?@61nnE zsjR{Fn`*>%^X7g~Vx#?4UZXZ_^RNf6Y&!2Hq&8-Holoc{y>_SHp@wLqnR}^AYP8+#cd1eg^U%Ps~Vi{o!7RGk1dCRs_<%R`=wx#_s*M_0bX{r7)!FySdIDhdxp$r3|?|%0- zqA>(Py=kx*eu;>b(L#QakCqY|E!erjpoLgS0E$)F3R+e{GlocBEPZllNo82cDTfh= z%{5eVl%As=Yja23*AfNx*t9wwVfw%wk(Hua;Ta$&&oNNuXDX>(GZG4AFaj44)HH7) zb@s=!{Lm;+nkeis%IbQY%*QnkyG;jRr&?@m4`>iv@FG@POY>ZM#_lqCGzmvlXmI9I0_@%fBT1`9 zW%inS*DN}&#LgNfS38{IdJ1Ddye}6!%YmH{cq~m$tEz9V!c`dDiE-I$Sb^j!BZCzB zuE!-+9G7Ls91{poRmX4GWLfL6wydkClQH~M3uBUEwahe#k;(viHi-=Z7Vy%bA4RzjBJDzS&x3w@$;kN+wCV)q>N^1hLz|h@DB#Bp7aTsZgf% zfjUYd1UoA-*g&lpFH2W~-}YhZ9b_oL5xg69^hz_>3Cbac5(ZTui5=cHK3aYX6Ftrmy5n(?vV$^`vUYhyQdM)cyO zp;^Zb?p>VB{!Q4KJg8SeLar;>JL$f&3aGM_z%^Q{2sbY~irD z8{|wxJYmFA>gk@6qD$hiW+FLxGJ}P4w-5aBSvhfDnBO`d{;%(AD6C}j4^a|NI-2sx z66*wV+XjRy*zq*rYzsTop56UKi9A-^Hp0}Wn{T08mV;wQt=5e>W1Eo`%_+f-x2Ot3 z-GEcwukpG?BLU=7ez+9P#600>m+4>)RF64`$;VRH1iR{#wPzvA&e#r}b-_yNkg-@sGtk?w}J1uAo5FxWn_a z4m@g-GqqwgAK4doJh!}FPPA4xVCdG`cdiJ1DyLF?PJ1=GSjGl>3gN}k>~~g#_M(Ms zCil%G<8shU&W}R>qoV75wnt4{y7q`?-%l@&$G0*!~|;!mpdf;A}`$dm|Xz)8x*gPAJt4YjBQKme|Ll(d{1-Ds-7GFLjxX(M~@^9(J4`$?w3N(bZjvcwqv<9tg4WQhyJvt`yZ6rN$$Hz4j zx4P;Z>TufM-hdlo!r^laJE1NROevYlu?t#Tk@V~440xFCIxGy%_bIURR)3g+3j{&s zd(Z_-vSpNH7dBM2jNJWcyqs1?2jZ1W?{QPU>yk47!j(-Gc$>Rp8-_J4HE38T<0`I5 zA`Q9ogfn0@&WKm>H}N?8+#Y;2Hgg(n$kX5J-aB+Vt!$V*5`Zm=u_=XoN_fdxFI-?m zl2Hrf#e~FyK`Y5s$P>Yr5Oz#oEcYJVs=J9s8LO;rz7cV0A2{cHHNlmE$LK}Gxq=W_ zOEOXHUVlXRO|0m$XQU*lfht333Hq^wQ$`)f1<}A7_hNnr|3tzoEo68MNL+s5*pmpW zXikS^nVXzG)$*b=C5-D+5S1#a|C9UF38Y%*`2LCl%j%p!NCdJvEzt3j5&|1rY1oD+ zCp>ZsS}{#j9Fm#>G#n>2u>Qy|x0Bt_-$mPZeQVT>zW0wOo=WdC-EgeF_fH@irT29- z#RONh&U%^DqZ~uLjJn#;8enzPL>iSgm;%48ggn)mKzY1Lc$x;GbU1>+f_pIfQ*nNO z%TzhTNe-ELN_JF^fF5rKd+}xl@|Ns`5XySISvB=IblM&aG~(PXhA2CxiUu(lTZ{4o z;JbHDm`yI9!7JazBVSqhuu}s{#FN>u$3BwYTIKt+Mgcm=s z?g(;@yo3h-^RqABR>3n=MHS9{=^HGe7mDMO>rF3S(n1*|Vv5Pvhcj}R`;=EDW?!`N zb7Ukrn&Jo~-xb{4p9(+2iIDbrG{-ewc=92nx7z2iV|O$0r8dpdMi-i~`T6m>*_X(} zJ@eX`p7CUlxvitsjnly_qkdk~%z-$;%tdgZ#*U|Jx9r5$;X*ei*M}e{6WbERjf?h2 z=rfs?cYO7gdth-0XF)KE5Jma0D7|Lps!Y1<=HU?q;ae!H#C3fB&Mo=YA&UQYJR4~y$5d&fV33)uJ;37AjmI|+SNHZTyVW2CbC`D+ToUo2*aVDUa+$uP1o-+=4&kBu5w?qcA@|pUIO1+4+$AmWj>} zG*jO@4w$DBHReSR43JSLu)?)2_MsD#i>9xOiJ6Q(#dQbb7E67Xu6>)m=Qo%LHiWEJ zeVD=B=7f9ov`*T5@+0yfw30#|eIUE%iq&`<1wymf_5jJ8&gOhvUi3uj+d9MRzP@6g zJXBE-qF|ldxZtsKC$RpfjMhcye>p=Z68Xatma|bhQ7@(p|gcbavBS-M{_*$r~=E*5G_Vu;cCv_TB@-^x`4_ z<%sX4&qRDOhx-71rP9c-w)#BtEy2ZOzxo=do(a-`W(K(lFklM3h7b(HnRU)vv-j}( zIPS>8IQpL67JrV%n_5%vZ1v&JA%88UB}*4mR{7d+HvFEITQXz{^&GZl);kc8W4wFT z-6aok0N$q%p%`;5%th=)$Mi&y%N}t#@Mg^?s%zFLNA)BffFQz2sc~|`ZJl4x#K(P? z3Z{Szf%KdQ$8^gl^u-!4B~%cV;^ws)^P2f{Je7pT?Ag1DW)XZ=5uT33F!!m6z;7jx zcGyzEcMLKowg~v$PfHuNu3C>lMp2%QOeV5{v>9To^{=^KmiN~do7uY%k8Pbz#YXli zm1k=VxEaATA{gD5fEF5pM>UZg-#>}kl{G|ka$h3!3+y)tm*W=aRk66KC*poO0L0WC z(~lvOKv&_EL<5l^cIu^#Jl4^I&UK7h5DQT)jmJQX(AQ1q6Z_WC=f$#l#~|!;)5SxC z{is^^DxUWkBxn)#{6i#m3rMhc?Q4s$(NlWV9{3PH55$Pelo*UJHE98)j38#I zERGZL4CN8kVTbU6p0h(S`R9KvQ{w`@6DKCb@4|1NE)P)*(|~%ba{UUmlMEOdt}OfG z9d*Njw~s-Ce&RHvk4*zUobgDaF)?Qt&N=*PojO2;f5ag>aa@AxW(n~r4}bin+QUZi z$c;AnBdx6d@L1xl*tU_7E-Ps#|7g}Ym57xQXC&r*GM)(7l_&(6Mgn1a6Np0bVnzzK zmCFwRP9!R22pFlvIwIgb{@65#<2avFh(>W|Mn3ujohKffRa1=+{3N1D@ag} zPOO|GMiH%3LWt}!`?Pa(UIWg33d;*MXa7?^>F-H-JRT;>amS`)S62kr3yJn`1Q0jb zD9m31QZ`uly?tRW7%X%{lf%Th#=^5#70bhL1rd)J;5iEy-V-s~aOty}QmV6l{tH(P zvuG{kLh`8I9pESR!DyJP50o8Kdq4PL0TwfTkkLPHIRsPb1J{PnqoW^L)-Q!Rcpd|V z#}`-QrsoPhC5A^+yQSu5uK7=lr$l{}G|p3^J*W1Kr$l)`?R!s&?y%lhoZr+(GzNcWWVUC%ZG+TV(H7T~>t zsO1?9q=grfbSpr8eQ{DIgZ45yKcM~DP-mtmC&OOpYOZiJI9=6tT#0Syk?8i?z8FdR z{jY?aK`a&{o3SFKqntr7)Fb&8?d*z+IrlI88;586E;JXEmX+Ek+jA#Z6qV-|TWrO- z7JETOZn?EE-!|D|Ew!8Tmq&=@c>ls?}&1Q3vH9yyEEicP0F0z*8 zmf6b9xkZyp%|#WZ#T8~-AsA+946%8N^UC2KDZOa@?|N3H*0Q29YrZ|Vu+UtRTU-X& z%JQwHx%R@+QhRwxzOBew0ahdWu%gD&dFCFexNz74J{~Eijjqm0VSYB3MR9IojHRqe{xyAS|R994- zYo1(IIJvmUoL@4z+@LzPn9?!4Y3FaZ>KRt#7v>k*AXj;zd2(*CwUD~OT%2pQ*zCnN zd%oRPM17HA6b_2pHe~TbdPar$*5ZQlijv$4Tr z+uznBtseFL1A1N+Xj55X`Q+Sus|8(PEuNfPo)2C{wu0jF$=2cuYq1Ty2CJ>)$u=fp zk919Rk4w)jKfkavKfk0Tx3s(fHd16M$t|}P7s1@h?UO4?3+#3?H8oS^X7gdW*9N8a zobt^LdQN70fvvE>ZppQnOA1N*#ku8nOF^!ssAO_cQDJ#`aT#$M-kX!AwJjy@rs_Fb zEVilqMP`>=v;(#YbsH+~?B_9E&S3d~Ehy^c^h3 zj`3^dRu)Vq;fgGN(|4E-kPX!)$HEB?TBzrM6s4h0Tf{KvJWk z!j_Lt04L2C+58K!ln&vD3*89sk=`hJ?j$`!yS>y32UHH{MkBP;YRffa48c}PiY>)O z`DK#}3kBlgnYc#ZY0s&60104=uCg6U&iyvvU^CD!67i z>`iz~5HSXxZLl{u@%CJgL|eA|;qjAm(gX@Ca6G`#Bb^#_J$VqA|9q)*l*fy9E;Buj)>z*oRp!6(Xk5&Asx$?a>TvKjy$jGWjUMT| zFW*FwQ>jRrz6fEZoa2mAB4OLv9$+V0oITRfW%oT37c-HHrlP1GDdil0?2_z37W7`{ z=e+kazR$?X$e@aDRT3cTUbBYnAaw&#Z!(_pa1zwYOfrsfPpAX-&dHx2J#C{JR* zmHhNq0YwBJQ(R642=J1dtF8fuRPZcGk932;&KFob>PgS#uqQ%#q?-jc4D29Y1aEK5 z#x7@#xuMbl{m?cZnMq#$xX8+`I;)<_r`a)Xc1)xfZWL_DDzO zZNXSoRVxm!oxp~TlrzR)^xU%8b9{W$vqw71^4;*bm@-oDASi&s9NLOlh}RGExE#{N z;Vfc?=INzDgcuIIx6eY*sN`z@Z{SGGL>_C;Kp`FO`hA~X`D@I?!K^glc;AVVW4}K2 zu|H!b4pOm9Vu75#YtYmIu>x5c@_Y5jhuh|EijSR`!Aj~8FWuoiAt`oZIz#9Ld8Tqj zT3YPHOa?ay@#SefH)h379IC_cBj7@gcS_I79uhk-%|+a5k=3U(PE>mF<&}9OV$o^> zvn^zQC>*KAgV<52VDHkv=-7$LE?T^@ltNUB&+mw4Q*(HJMVD_4N2NvHc`Z45sYN08 z)T`1a7@8>%TOVFDHrLo3fq7#0wxb2HIjOz{$Z{ed>ko8ddMNy2*5r~{bZ$-}A*Oed zS(ON23|l{TJn&OIfuISFVQZ4mTGLwf?ja>hH;7hy13 z<~#9j0+1sFGA74_0?4WMNTUQO4%K=hEVJ4p9WQ_;(RFP4rrc>%TJ=fCo^qY0V5>{U8vjjF@b+NBT*?(nUi^3U-bpDz%L6ynjk;PP$Ll zAFu0?ydRE#*UZ|JKq&0#^hmOR#pEP2a<(beBb_h6q&tw(##oQkE`TO95kR(G)FX8W zDEtXQkyZ4`>^f(U6c(st(Z_56)!?{;KS0kqMy0O{PO+F{!LAkCU*w2-q!WW17uuPS z1g!`Lk=O5$#tCSQ7>b;l_uGTpp8L$sn9PHQakBzlKj4#m2V;`xYn>Oy_87!JUI1gL zzIkDKJ_t%5E1+>u0H8c;)g$Eyut^M9ULnuS3pL-}^yw-G*-L8&*Ux*7Z-X_gRuf=M zy&nh=nSN`B(AY-;NT$--!8g!)q)!CYBzz#Rk%iF8MdqkvVE4C28vn|O<7Nr% z&@N(ik93Lv#lY*)Y(T@G_vxc!MqN287G2_jRpZ=<2mN>DmAQA%6-@=WF`yuN1cGcB z2;}teWJ`~yDi`LN^)c@JIkfrKdhw zy2?k6pELs`737?v(&NAWa=)KUUPh%BTtY>q+s3`x&g4#GP_0F7fr-hqlIV|AmIT@TeybJdV zJ<>vf%go7SIA&}LvP&QbP8`Ct!u*L&Z&7Lg$O)6%W5o#Sjb>_1pM2AO3&^~^i^5gG z&;>ox&QFgX>13K?K>Vx^`tThAjG4$2e((P8ohi%o__=rY{k;)vD@xzkrf$5meaL0RfK78Op%?(ipR0ekQy}`dW~f za)vMx8b5qcC=}lc3hFT8%{%M|0ZkS)GF!ovBEYGFn3h33(tiasT{v-yLkv3i@3{WL zC9y(Jy|7H>_hhg7ZmAMP2umiqs5EGk^X_G_FpqFB%!Kg4k|%dp`Ia*+WvXzzjltd8 zX#yF8*+wZ;h5cj95mN*z4r(V9U9w}YaH>F<$ZrDCiB?$!jAkvsL=v2lR|piAXN0Q4 z*%w^YBFP*ALk10uICk12RSS4JhqJr?L|-T1nJ{$FYvrCYWkj@aj=&8kw;g1U>b;Blgf2)p=E!yd^kP@{Mqm92RBpX&As z_!!Zf6rkdoD&Kozh8&eP?>hUf<;oE2OMobI%7ah7zk)ogj5ugsr@xJN-Po-uC#Y-^vUHeb^e& ztiMP4hd?RI1zv>AmW6sl&p!Q=TgiWh_;wOfOSpmd`YOgO0Z=|(Hwzfe-XX-?%;#?v zz_^^j0O|x%#vER8V4O@jgFv83rQlx{cnbYO?1n~-7(%oxVD+pLkCrc4o2q1+5{xI7Z6qwHhCQez% z&{Gq1BPS|(qcNFlNJaknwY2At*)DqXUw5r#%##5XhirSKs|1*|E%`=odziFCkE!-ZFMRml=mU&-79q4#$_%?rU}J>mr*dMGM;MT!@V6rm zD9fwfXjqYNQqr7tWJUAv1RJ0H=w@M$^l;rnzprN%Go0=QRFCwiz{T)#x;tS#(&GY0 zb^xAyQqVKrAP7vnFv+C4v1bG>5o$nTO%2Zp1Q`Ml2$KlcBW)J&RJeLkfZMdna;u<7 z$24!CUu%KueCG#K*{h}anAp@d4ZLy!#R zBJemsT(s(u-W1s3Fhell3S+{(EilLNatIfdQ^w?!b_wh#-gInp;z$iGIWa=$P;ig5 zTTqNqMhQRfB`l-p-gT|(l|V}DSTPhWh^O8+e?u&E(i&zfWg#qTojBx^lQuH5NCA@F z=Vr3z3U~}Us8!c-`2rpXZ_DATT8adU455|JODe8Z;1Y9&5snT7Aq+KYzFg2GGdY< zrdaf#KTN)hyp+}LX{8=q`j*GFm2|1N8BG3yVd8|Aty`7M0|f<2&&=*wegC#t5p$^d z4L%b^rMY{q8?;@CpL=0Ng2L_^v}XscKiU_vrPvM69ND~+b!ZYm{KO#gWdcfz!uEyA zTI@Cfjf0DBUr4^FM_MIdCXp(tanJXO$r70jMNscKHm>5>1#)sLJ zBZ>t=U21}nxlIn@sohqDxf_a_;|`LS@rT3gVpBtBfS%gK+T%t0tA|8gKyo`^n0Evw zX5vV;zUXr*Qw*S)BdaDKik-+$8uU*D;|%}fvco@6NJf>=%L_Dn_eh!b@lPFL)u#}K zvWke2U`7H?^B&+LpsmHpQ>5VpE)IfO(J%eg8N&MY=6e%PJVITHmosoUy+``Rma*+u zR@oqe>7wDfKpVDieiwN1tiY>*?@eO_O_1B*U46+vvkHHu^@LwH2%B#x@czl_ zO(nQC3g-z#j97>FX$iCUFTN_;`6sml7gEdt$hl(w=H>x$l;cbxm@4OW0!~T;T-QGA zeh6G#&T+ajjsTxPeLUyfBi$s(C|w8^+CJ2+0+A?YILZ%e%^rNl*4GEbL7cFch98~R zLkN7?vJc{!n3Mp*Q1xFx$7X@KQDA6rLLb3MYman`fW?Ul`0PB-9b!5d@xhgq@hn{> z7Ck-E@?8TDBr*0FpkW+S<(v0c3$PM+E6WsNt(mz)8k69hS|ffQVxPJ@VR0H`Logon zP7*K}0$|WNR^7DsSSa9eA_!D?lmF-I$tNZy?@xvg!6$mkqstNSs)v=@r4(PEqN>y{3I5SW`W`sq-IPkvCdts)si< zAYe?>9!-D+0^VN*N)GC}DU7Gr2 ziBf_QtH&jxQvIF}YRZ*r)Wm#LvRMCdcuL&FOfDUpU|7+plyWpU(i}H2m0`q@gs8MQ z{ffPIY+~r4T4OFddUUiyk&8ulkjp)H^Rya8FRZ_?eI1p4y2I5qUD1mI)>zHneD9)0 z1+72bN2dj%(gkOoGh~*+RN48DN-u2vU7D*1Eq3vv@Lb(*xiJs(Myf}RqSAM_wT<LaL|MBJ}BtUNh z%%+0m;@4hlTS^X2kWel`pb}QRb>=c1du??g2p+1x`;q0eSH;V+A4<`R&-&{3OIO5A zq=VM9pG-Sk6l3w#APeRNo2i#N#;&A6!wGo?$b98iB?m|Jxg$SVO(R>!F`F(2xUOyXxp#>J5%$Cw1BI70swy zuyO7K8h_x~7~z-7=xO?>)OJR|yiRMWLPFbAg2^YDE4HlHS_%q2sI2tdx1ecXcI(F* z$m+NttQLy*1llt2th9|nPA=+MP$Jv)@}g$qJUZ+eoOpQsgdmz6BM zXlI;=AO7oq9*Y)09>oV0ygD8`1EeA-9{pa2B!FzB)`PdGxF<62`e8QodzGAQMeoU=~+mHMGyDovv3 z>G!VtlRFAE%OGT#yYczc2E?l)gBuYYI1u=R7jDgukB0;07+U!V%;lNySd-$h0`BEI z9$Iy?CoLZPJY;mp^)LmCGOmSZ@6C!AAz3AMkMLu20`=sgCt8M3McmQqeA!bsAHHow zJVrLhV5g;k= zD9zC+?Ohm6du2*I94;%Z;WZA;Ki&PTS#7e>4_^1d(?{)Ulh8rN(eX%P{X-75NrZ00 zZxIN&$CbWyPmNkLkbOqZKP^kDrpIGWW3nj}IuCjLk1LuQ<1wcx1brRk)!*JSW0tBN z)x8NB*5CEVnRC?|7#7v&+~XMQqHcFQ#to}ME#AvJ&RiCC`_xLn!7#!-{v%8Ms*?Kn z#=@OXq_(R{QbJWBpmfnu*8;VL{W`_RCN2D?Q?0zWYu%Ubxv@)aVL#q-%nvU=zeJU; zkApj{Y3D^t)n4k)zsZkg{k}}Czqfmv^v~;eFOSD`%@k;Kvx*JAe#+`cSEx!h(r9+r zIWzC%m8vBDIXTPnpHIFq9?Nc4*D-wD#XE1f?bdiqc>NJ+waG1WeXFQdlqb>hD56{T zE_n3YHKbJy3%{+t0*QTAU;Uu9)Tu;J@9qryD6b((d){krdLSNI9)_gH8U*6(?w7mQ z(I~HChduOx(dF{j)$5r&4Asj$T>e7iEgQ6gELAIbZu|XC??w`}&+1(e{C?4u+c%K` z&=Rq4+_>=mSH^E;}Q_X`vJG6~j!^-RYZ0qtxe{3hA7{cHxe|>ad^$xYpKEY($ zCyUS8NluHEWEVOq&JXfeJEPL3_L67bC1o&tZ%6u!X-?;EG8Dr0J7g|h6_fCh!oQy} z@z`xgUfM@4k2v&F^;h$!rSGR{if|+qyS5aS<}WMy?I6uJ3S6C@S8h7v+e7gaQ&o(e zc6mmp9$xx`B7-i9Rg5H9_;3Far4>57rufCXo~im((XY`jU;5?SCeQ{At+CFU{BUu+X<{}bAdkr6E8zKpMeoKY(#5IuBxKSoY6`v zQMAweQnPH?3)yrCMF_?SbkocF+n+l(M>(Vd2I`e3A=~jqN%8~}CI?ZTPO0^sfvR7A z>g8NYiW8MOg9sL%J$yw?fg%D!q8{D+^Vm1{Tv=j*OEVPiHU0FQaNVcnx`t|Uh+0m3 z>5Z?aC`#-#!wfuf-bZGo|N2Z$mtXvGtX&bFxfNQs3ARP~(U8L=1~@}DDxNI=yt}s6 zDCK(3NrOflx_i0_(>68A=HDujeVxLtK*aQ;W>K1I9zO@Jc~kLdL42>Pi1yF$+$?FvDE z6W33#9bL1)gh`Sbag2HEy4OZs->Dc|FB(lH8=w66=PuGasRToTu7?Gc{u*_G{QeTE zhP^ft?BMSxQA`bwB>ME@+wVJnDOJ;lhNZ;?m3^G|@G{fH6OB~th$=tp%APtB#DBg! zV)=6FCIib#{O(f)US*nxO&>w%cHZ|#>AWheyErDcx2tH@eWA2}d4-SE5NN+|o=bJu^r#suHb zN$6gjD7F`O=<$J5k2Gu`uI!{Y4F%0Y2A^HCbR!K~6{il9s)IWZZ=wpxczA+ah!z%8ZD<3#*yJ=i9-V6egF3EOFcR%>^lpQ8% zVv-6&DspOJ`(0`0NoB z) ztse8ozW4;?%0aJsi3EYz*<-FtN*IT?8%T2PwHRNhTN=MNye19B`SCwJE-KkmZmP>l z7&oTh+L`|)E9#a`y?xAgL%?Hnf0|M0qLSm4sjEgLj2q7Rsq+P+pb5QO8e*I9@Mv)2 zrxp8BM5V%xX|uBv#-(x|e0QQ-`sw638*)%Cg&Qk7n;n(1TuVF?)OPa$sFYZh{`2#> zYPjK@voFHIs2!GO0R{^URa(058b;kFCcD9wB0*! z@f1};V;zCpF8;S!l~9k1N>{zKdVxJ*++eN+=3i)8V{wQ5o^D*qdHh2MO7i)|h($>I z@H@+E62y*&5hu@6~;I}~ZJQzV#D*5j}SIei} zUV6-f4LjzdGjak-O_?hjYXZ{r9P(y zqv?k*DqVAM(Y~$(#gC{YicG)$XWZLMz=!*hUg)Sa^pC2gOB2S8K8Ai2E}sqa&shd8 z-2PN9iiS8@6!+h*N?NXtNR^Cq#71Se^z%EPJh%dk_=xOFfzz)8VrQ-FYm1`%`)`^5 zaU;t2vPFiCN=J@*rrw$`Zd5<5nTOsMJidQnd+sXm;715l8K^NTRa8p*?&}ZNs8)+t z(cJBR4^8s?p@(iMKJVW7Yr%$FZ6AWDG^aN)MsFHuz5 z=4%?cK7mbuB<;#)RxR_{n{%=K9R$d6kFtz)PH<67x%60U)~Rg%P8eaklaIw^gUY4f4idtMGwjB+T z`LXzHQ~C63<3b+8;5m))dZkyNXD6~G1Wp^8q|?YT?NB+N^f#TS8#|{TOUB(Qr<}jx zq#rD29E;UHl~w;{six4v-O`zi$?HQ6VnIJ0FCTbL0l%q1^Ynfim z)VyG~RKrkufcf6?8DVfY}>FocZzC?vw1RitMTKeswYW%*f z;^3tong(f*mSCF`fV_0WAI_M$6~caW!0}lh6G}_RM)@W^cIpG zZ>BSTCaJVP;~1NShsgPZ&_b=tQ~~-`tCl40mgA1(|If=8&oF!c8cgpb1JzBaPey)izIks;~ma^l;%3vsYop)8<{d!{X*6o*cOLO{X zudrm(-F}s2zs9MugtX`M&rWsAs;rFh4=Uq+yT*|Dr@8Lj{<*7uTBnQcF{F$EBb9lt z-#JyOp!b}5-v4hsS!zA~nkpqy&Dc}LLH2qi#x7;-doS_QD8ENfG_YUq72#C2%DCU* zsG2P}cT1P`%Xc6rQn;&bDVf9Rl)6d6okgfCSFPfMfov$(_1haV4uvN^L^f6L6RGSdkMqv}Vva>ftC_?W_}LxY=cyTV(^ zI8e*AOnJA|)3s*x4mIOo#73q2*8aP8XM&QVChQDz4NX`{Dubq99LE>rheY z*Y8$8x;sHhr4x$32h%NmdizyHAE6LWrE8d|^w%rv_U%g$DJ~5m(vM}cPy2Dd%25l! zx}|~3r@nen<)~qz(xeUZ79UbLY6!vcopC3f{zJmJbe?7+v!+VBrTp37ym(k$%aqYFd`T5xnv;)$iTV{U^%sgt;CUmHe?!=M6|y5~qYypIhODZ4=^C;uDn= zR38Eys%|`aV^X4$swV=nEnax!eSdVPp|Do7f{RLJZ;zRjm8kSPmE&)>@RG~qn4}>n z$&+wKY*f1I`jeg>VW^YN`|*-PQl1$&+EAy0Ln?mq2V1fYtyO~_UijIq=e(9cD2ktcWAxGmn(q2g;8BdN59W6! z>T9R5CW`N?4jt_>)UG0<($U2?JiH`PN$-OHr1m_j{qEQf>R@(aQ|7 zt3yUG$Qk&`rsW3NjTE^1apqU^R~Tfckt2$)%zE&(l?K^WWK?=&%IjS>8fsUEjVNBT z^4i2(4YeC7qSE=B)<3n%P&+kJ6o1|x|JWKs?J5$l$t*be+_mbMBn0k+;CDFS&XGsy zmR3Ds{^J1@R$fgp;<0VF*Yn^y)hkeWWz34&pU6o)Wjz@14S+rbQR&U;dAm0l+RsW7 z8}^7Y=Clk`+D1eBjTD&MP9Oi=Ce<^Dn#11tHCs`Pdjx=lm&M-8^rR(eJ_EfG)*0RLw|gJXLLr?cXy~YP#w%CM9+IR)H=3tiSu^1G5h%u^ z8wHM0-gV*wKD8$lIHl*hrQMcAcaKIH-V=Hpp27;;Iz2l{iEb2}>RY>|F`vIbFb9RX zUi%PWb2sz%Efe~1Q2kf8v|{6n_vZHDpc3Fd;QlXM1xZSLq*OsJtXrCLbl%G)ePkzG zRGK|;S!a2la^$wVrLi65bEfnuM>sqqcKe(pbCMEQDfMxW-YspL-{`WVB)51Y7K@OZ z7sWXGv{v<(-BR-5U*D}e-8RRc zq#PgWj}mjjLswkUj)v)53gES(a#a#%30u@Rty+D}ttgPHY$jmZML!JgeBq2$NfhgHO6=TpOT{N7&0YiAWDOXVrdOYm zxK`CPKUC8#U2^x~Cm#SQ*EEMlrQ82A*t0H4iHq5JVs`)mF3u!Xo`2Jh^(eq+ARP+t z`P}r(g&UIC#=1j2S;pQIResS&4Uj*LJX5+6T)1iUM}x_F^#`AC;_L>P6wjtTn6L8s z`px2xwt|;9I)Fn3{CuDwKrj3`!-O`2oUb<~NxTwF2hp@aC zQB=Am?O@do)oXBV>4>oNkTCg^ovJK-2=GQw(X4CURectYEETF>7rAsDsnwI^?za}Z^P{p)ae z9n1M;(jj#QR5I{t(VdsifA|L!?QrQ|Enf2J(?@>Qr0#{s zh5Gal?*3ENx%OM$DuV^DoOf_QveN&32;kIyy7cDwWaWsW5_k3?#6ImSqyLcvPCWZ_ zOv0$t_|sWa(~_B`+hbJIR9`<+MZ4~auR60-(a87lqqc$|Dy`d_deRWi=o>vBey&*M zlRfn2@god;3Ov}byqmz{&g=~uQf@=A7ZyZR=MtR;vz0gtV)!&l;m6I%HEP8GP zzh{QGORilU{nvzKB}yVVIe>RlzT1!sUfg4FXjD2pIm=s+Jf3?64$PzfbxR{=j{8GO z#+tGqSy_`7AhD~a@n|zH8O}@OB2CgE0Ag$WY;zWWxEIrgSavFl$Hb}FIBA4H&BO1us@j<1pJ`c=EcB!_nyG%&n;TwR%D8It1x1_-F@JYU!~b*6x@C-OUn~w+ z{(kYC<$OSoh*Ql6GYrj?K@6Xn%WN4dRMpYk!!c2*bA8LEmC57z)`^C|fwDGFC%q)h z329(=OKW#t*vLlJN_AAN#3)I?xiY#HZjy#dW9fsaY1a}tpfzk9tW3@r&kr8ztI%B# z>z3~Am-pC2GoDnYMwp}ny~eKzKUj(z>Q|LH11wuT$T={{D|o>vTw z0EcZV2cAJQa-as{tRF9%+PmxywJZ-VbY=OJh?j!8rH!mKHnV#de^)84tYhebY`pIv zy6^op4|d&%?&I^M9)|;yJ6=EeR&~74Nqwc%l`m{~VwKwI8YU{;^X+@?HR_nutnB}I z`}P2oRBU1;4OT3x!Ge_((j-C*5p0NH1s4qnQQ~ht=P}=NzOQ>1?e8yO z+3#oO%$YN1X3m^BfA(+5#N+gZT$B3e1`_G{OkQ|ezJpkGym@) z=cT{>hlihuX&;v3SCs8$oKH26y>2IcD1BJ#KOb^7Z~EAayO=|lTHl|4=EJ+0L;Z7V zs{T(;oa&F=Fl7A1i4&;&<^%uw)4j3luhfnE7d0%QSBYxxYFP9WXWTEpQnoktFNrd- zkxs~`Z$5}`PV|51(f#Th@f^dP+vhE;YnWY6-@Nph%IEjTzI(m=W>wWy>UoL9^XJo} z4z)A!8U{VHaB#A&VzT~WVyPD9eox>NTx(^cK_A^YJ3bq6T_he%|zt(tGKP8fqG97sZ_8v63NcZX)*abVuFX+vNic z@&SdIgU1s_R$X;R=zk80kC4tK_c4*zY0^$le%1Z3J7lV7&>EvQ!n5gmkmH=7sT$_{ z>8aQa!{)n4@UH2hE&8E*f3`#Z@GSMJrM-B5^D1;kr1lvx2hWHUI3;wrxA6AqVrO!k zbFmvrJKTR>6w3iGn^NRVPmGeCX?2`SiWmE*d1X*fm+u+qJ)7!uoWe4wX25@xmW>&D zX9}%z1zYq+nA0-kePo+Dz-7%c=c)_p@6+k;1Bs#H=kg2u?@8+?(<_~;D&j@*ae%b* zzBe1kl!}LYr#IuFYo~RnvzuI#Li}?=+WF1}`PYf`*MUT_LQOldllmXitDV@$1Yz`a z;+u)pPDMpLua|!1SUhhP{c$)xWMTUQHEHK!?4bDTbo_N+yi|IL^ndvGo_O*6&eTfv zujk@q)~WZQ{J*E;rCQhoGv`V7p9D4M(RjJ|Qq2y2^hms1d~W>c;dq6@*HHMyhvF5A zj``C}Oh2l6EvT7VNnskVsX@@zcH;ucOj@?tLyb)y(+2{e9gvNg5Lx%z@J zrh&%$u8-9;Hm16$A81o*x>H`}Twl6qIqjhG-^0tC`$@0Wnwi&;Y9q`A1rVQwnHYlK zPdir*80aS($6QTI#avnAnX%CY!wYs7=aor6JniI_T}b4OPdg*Z&RftYC3LkjvLZfI zem$EuiWVXkJ4V~{v^YHKys}|q-tDEOx?DpiCKQIyB80_^AZu?tSEGc_3++(6XPowv zizhi>1N);?H9*=KMLML}FRp0=MrYdDTXK>JBn5#{To>RWz_^*ak2}s5;9e}!V!2op zgu5;V+!X@%V$rZMffuT994Gjo%nFbv_B~u6|zCpnXilPs?sc-tjZf7qp-<|ZP^;%94As6n3ODO@scv{@KZ_4We|EMz5|4| zF(FyvQWtQwP>5;SeUzzkrhT8Ts1+S&;U6zD7E2L?v{L{cCy`6e0|C|J%o%3_5GVJ= zju-ufoX=|Kc#&b&V;2arpCM&oOfaN+(3uMCfq6$3%ma)muP_8+F6c>h_VWLb$pZ3S z>#wo7tt_C|j-6C)DmYU6Sg`Z+2I~B3QOA|0|r%2tTJ1nmivcdRp_ve4(JO+a? zmJQL^Ktm)A#wY$LlvB|lXNu|c*|fb1Mz5P#xjBoh79NsMC+OukD_Cp3V_kZrLr5=Ao8ly;sNh!1H-){_>6P#&d0ytOkcmhxK5Q>q@B8w3yC4{l+#Yp zfH1yAvV0zNn zd+8n9vNf?8^foX(DIKQgE}M*V2sD4Y{*Y%##TXK0iIzDf(ew@#AKS7s@eJra&h%s= zn(6VG$%`QN{q;vY#G>SPgygqBu^0He8D9qB5??R(7l8dOOtU>Xen)}UCl&fjw?Q}@ z)#N)=5P?HXKrT2*fb0}CzSVPdSPsFf0_?61P)<{{Il#x5F7l}$%W9{nB2Yb!ZMm2@ zhvA)I>TX42*LX?YoUtR|;DT?)3=WLRi>8jr8&NsDlBnlZ!umluO=XePdH!An>3zQW zGf3;H3{uS_L~UHjK;;Em`SwJX;@X<{#k5m#UdVC;J=~bT zrKWNkFefplsU9=wL62@SCocmuneRh&dDm8sRxF{_GMY4+l0&xM{{=Wp1drYaSj0L71~HGBtl3sf;6;}h1yk(qCrc>c?BO%_l>AX zL{1c5#Rd}c?-X7MAGVnR%`uVZ3S>IK2Hr<~=Esl_2YOOQy^Lo{T(v8(_SIj{z0%9T((siTiTIaZ(}%By3x|UEZHK3E3ACszR|~= zWyJUbw(<*du=2YrcY)hy1pETG;?9QGcBBYI+I&Pj#v|JH?xzLya^)dV-OE(v8J1DE zh^@=CAH|aLA zNN2&MGDDh-D?nf>ts!g5=-bk3Vb(AkR!OE3sWk^QSqj0%;H0!h(cAjOt^O3wKRkTlapbPIsDqTF0v%E@NB2p$uf=u z!g~TFF@<4ddfb9xn^J+#YYKdfhZq$~(-6C4Ye*I4-^teOFFs6c*F?}m?J81<8RxhE zLG-@X7qi6VdQY)|cwV!zUP~BI?oj3c*oIvKUXyQGxpH^0r8Q_~R2j7fpo+!QhKl=l zfW9F=S9r<$v3MzjBnC`Ffoyu2s7xk!h~ljTHJ!f$#V7mrmV^jsZwcJ#jg04CheF9} zJ3Da(m515=rf+gx=@8ad#`23~XEGhM&jC0%Wv%Rv2mQPe$_I@;0luygv_ zQ()%^v*Tack{#1-50xx=?Y2943B!a(vqL7_lur3|rPmQV7nvRZ9wOOcgI+Et$7|3H zUbJlwnjCTjP4Z)}s{;8^*J)GjS3KVA^FcV$uF5!b88&;D2$XIT6r*c@8Xm}`>(5h<9q`lNqMQxF_xEx=NK0Yxbjk+ zGEi{rbantwIGurb#88S6WR-$K5N^#1d_8^r-V*y`JyAiMFr`$ttiG-nv$KMcWpL*r z>m}0-{5O2~W%B>U@28#8EaB_kl4DyoUAGYw*D^)5VWH@`%j?Z_g6ePAAMlLISPIeJ z%mE^}Yh`X_8_8b-O`eClgQ_t_jFzkg!W+oF0() z6j>h6G-Umj@;$WF_4U?lnS~)b#1an;?DtB znD0}?p(wY+%}o4S+L^r19WYT)o<=-xA^q2rB*?rf7$hu5We=qwO?p%qB^-lBQ2eEj zV42Eh;SnMPttP#b0sG=8rf4aMpjfA`*kccos9HrJGVx zVjVr06HbzGl;>oMhH$h>{RPmD7yG2*RjEA|qj6VgC$%#u)a%jsFg(Obn@vYcvRA2N zhQ`&({3s8_$B$OI6gYaO(9eDnUSM8tw+jM}5Y}b;exI?Kps0*vL!L=5n!0BqHr}ET* zKLM;&gBb8|2DS$bNlxz-_w+N)Ujnt(ziZg{;M2}jqfmj|6)6TpbqS_od4oEjc?kG( zBe;$XXy6#tR@YP$ok>i`8jT&mtOK=UQPjMSS#-z%`pN30pkL4QttID=SUv|HF8F*i zS205(7FS=%J0pV4Owd}Co|xpXKy9DTH#4YdH!Ub8IZfl+SiJ$`Tf^imb;jCYW!VH` zpYa*rC|waL5~0DURe-{5Wv)g8&bKu`Wb-ISwI!*XJ>>?Y?J(K6j) zKw?wcm=jFi_1Z343r@qhLRk*Dy+eFzIW&t;AQDvCV>{-VZ)j?HI0v>%@Oe3)EG|J6 z!&#m+2Bi0F?d^U6fP>Pa2@G!SA||+y{TFkReGQ{oQ|N|LUjodzArYZeys$Y(v)Od&lId}0~8Qr{Vnj<4gw!FeVQJuXOi(P?ExDoQ^wnx`1OqQ2q@wF$J(O< zvwAXj+QZ0}{Q|PusW(eVk2;vKglp@iZ?cv#t=VHt?T~K)@5?$RCBJ^aL#DMB?9M| zfGo8Wm|f%bB>Ljt`#|h?^v2>+vqE92^QE$1&dzvd6#KtrXb;Cr8mO*DuhoO`LVZTC zkN7Sfqm900c!XfYa@{)E`JKRsx|aygFL=-^>&w7BTH+Ho58A)5o^=-%LQHpJw0A6% zDqjkUdQZQ@`tS-3yM~#xauqyXf>9j<-w#&LMzg8~hW=Oxha=V;X2`SV>=`>4SGU*b z9Ah7u^_CV?V^@5S_-BJX8nYX<_dvK?O;w76epOv}cKZPjaIpBOB|Cm7ta zu>d#K#BXD_gVJT%*mF$OvaxbRN=}ah|8g~_bZnrl5(I>;`p3b_X*47HRK}DO-3F7$ zgIG@E7}{D+#uV^!dg}KP$~2~9Ehm$Xkj+00RyGS5SeD(W9Zi)&tO8sW3Y}~>F0_2A zb!_ukGGIwYwUh)Gbn(WgxIEVj?9usDU0`8LPYM~F6~Q2~Dne=6Cjs)jk3V|^ydSGTnV*ca z0~AITc;`ed23H`3H)!K1YaP{cMSPcWz6OwQ`Pg(-HGvl+SSeANID+wHS)jsOm|E7; zjE5)w8IXw*A7&xl+G>Op-P%bFF&KZWwn1 zaaF}!SxHIzcFEJ1F)530SOEN5#o zJgGUV#|+mi+_ve5FF8-3USTWOD{PIZSJ*7@w$cHq9I(dYf`vZ@peR@f1f)sW&Jc2O zXb4fU@DY68y}sYWj!xqSRV?&V*2DC0&m;nOg@_iJn+MeNAN*4O5 z9`eWyFN5TMCMj*7K~m%i#6xQtrv_w~=C5B}YKtYfXu*xGR+nM}JkCVqreqM|I)&+= z@Z0qpJOrX7x1p2@E^oYqVVq+M_An$R&VkPakym`ei^_qMtmFd3?pk^y3?tOX9te)e zL?0&FU8jJ?M}0KhCF4qmrk+4YGpJlMS~>)ZD?^>~ib%$p3gGE|J8TKLXgf;b&x~U< zd&TH8om!yGjbJbGOb41%cVq31L}&^VlIBgbZ6E5)0=Z*RVH zNpP@$Igq}H&4H=Dw}XodKJ9hqB;;5ppvs#xddr#{SA%{l)3=q*bILOt#P|6$+aRu$ zJm{2X1JT=j<0jBs$Mj^{RgYJ>(RHBnG}&rs>I3iQ5WhzR_7bYvRw1|_oA;O#0RJZL(FI}? z+9^gGEAyIuG&VW74K7QhegxdZec!QAUHkAIn1^$WEMJ0BC55I8EM(;KUjy#JXxzM; zU>Py~aSAr0nQpvy2qVZWY(L`E@os6^mLH*_Z3 zx;jMf7-~@p-1)R1EKw(hpm&1ku~1?BI*qrzGwnQ&rBTJiLMN6r+@07TgWRn?a@zG0 z6FZ5KLx*7@V`7ixfLp`3p%bg!MbE?@k3wHYohV2i^^6`mu^Qc)*q;FVBOww|*h?7O zNILKeuYTsSFHj*MR`_0C;d_l0URHzgP}!ZhrhZy%)hPkFm$ckC_!`d(`+8t*%*V&jaA%{JzN+oTmn54MQ5)KLc`3Dos7N zI_Xtl>IeqFSEKPZFrJamHt-gri-`uj5rD5p18!zOBYkB6HnewWxSIf1pJl+0GoBHz z8+hVzWO~jJSZlIiJ;PW=NacMP@n=sH()jfi)+~rHR|P*6Z@Fex6r%2CSR?jxVbxPO z{|nq(2ZMWnam}GqeXG2hr(ehU`Jfp-%D{mPs|RyV4;uG0KVyMRifPnki@2$alR#Sp0|eY;yjPh zE@2!~mL|@uWK$~R?9Krz#aIEOldFqH_w5`;w}O!ZxI!hZO4s~*4p^%h%bZU&LZo7F zFKv$miiL2IOdCgXfh3N3Ou zpJE`>($iQC$4%?%e@MJYT|LKmrmsbKvUmADKx{4UOO}MlD=F?7=8e}@++$=6(eDS; zSF%aIoRK{I$kT!E17tRpAXw}enNrtk$x@_IjOXDDckv5aH71SBW945dSv zaee@(JNjyE{#>SNi=keV7|f#$5)7^+UH=EvNBYKwL5&qqH4No3r4mYbks0TOoUrN{ z%Ofj^MGj=f`7enyA&jdDf~zHrDh#{`3^Y=+ z7$FYo_+xXT)G+v2-M7P}upsJlep>uDVbquK=Vmmhs9TZdZvlY@V%7i>{GvFn%+PR> z3}_j6DNt6wjB^QaK`PP807gyFc*T(!LB0cor@az&r?!WIjG77Rw501DGS2V9cv!=q znseeUKDZf+X9SL+ZIQ_8gG#esBMD|5W18&9XK1CSJHQLl^v(RKxk}`xO40N1?Ki`P zv5g^26_pTL&GUf~q2@an!_S7&@&Z5vY56Yx)?8GTo)-dq&&dsC%L01%6F7gV$lV0uYsi1+LW&)-i=c1E|AhFy>q7>C` z!Vg4E!$9R#X3;9`$hz_Y_95?Py;GQqXcv%70+}s7GLcn1iJM2?Oz^`Q-dwqq54Tb+ zKg7cC_7TvB10o$+#Yh&TR;uN2G>%BMOkf;y?iEKOWg}B9M{>ZL##jNP<5bJ5(MYnV z1tSG;Wu#hulmpgc#xmEo8letfUyBA3u4*z0NT*tk<^a?h1tix)#(6ylpx!7Tooe}U zG>}NOtYx48c^j#gW6@YbOdA=?BX2YPa6B4FD8W_+G7UOSoCHEr@+W}l_wRAmQrXTp zW*UQWMB-KJ!T&__B?h>Y@k}d3crtD9MhJv9GwvC-%o_AFoN2uYPHKXV_D_Vss`CmN z>>pw*kL)Fu4EEoQMv}4qQAYBtWr?I>{h#Inb&8=prbpa+3agGla&y^T$qJ^%O3&eAD zv>-Qe7txcWe-U6a*V|ymU9^+_0PwI8%^)v2ifPHk>e8YVk#W-S-yk)gP8ux64O+&H zs3rN>{lLgTKP5aTpvK>GXc&`bsp8omJ*W=FB$ z3lk4#qrRA_SBr`VmpTbnABEexaR_XrV1O(kR~E@%L*+naiT;%S1u3^O8L##c83SH+ zGJXjZruirs(|EYDNX+`3RQx=k{yw|fiB-hQ3^WjrmuptU2lOLR%+CCT>67H-WpFYs ziW5y8oSd{cksMMb#ghDE@sheOxz4B#7*`xOGXvgP7mJd!ER+WV3)|veaT~&**0<8E zXpi!Y=}|sh>E>*zo&BVLC3w$A9=pwbJsy*ldGN-_|2+OqJT|Mnoi2K*A8dOkUfw{r z<(MO?*DpA9G49HrE@uhR&L#=$iw`yA51H(-euCe5E*=B+ymY!NMJ{jbX%fdy7Ke8} z5aNMf`F_z4A&ldZ^T7^u+SvouJIl~AE#_*t^3o3j^9U{ySo)l^fL~yWaM?W>vIEGB z<4uX&lmyvSYK#|xfG`VqKTTlt3($%1!0GFfv`W+td7-ojK9`u5^^ zm{b#W(xlg6if*S=SsQ*z-Kxaj@$)_LLV8^$g&#jB|B9bJ9nW7lgZ_Lno_{<3d^Dav z9e+L&FNUVmZcqPsI9|ALQFn^|dQ*mOYO24|dMli+{@(u%?RvLQC+~*d7H7#v`A|%(rhkf2}&QzD?#yc0F}M{U(e)D=ELg-i1j71A=BGeQHdNl znKC5z*|b$S?>98)LrhFo^>_v?ZO`-`sy?DJq1QohM``W^4KwOnQIC4GXT{spcNGPP z*ipQ@&SC$qL+=gIn{8z8t|Wcx5wHK!-}lJ;`2;M_6FfHWmLLQv@;R`=8Ry3s*j_Y? z4YydohpCV}tpQJ?J{W1agaD`l5B!wk=F1;|pC>$mUj24FCg|v3;#hp>JbIg%`giG{ zkhho?ZxYcm)4P$_clTNQF0Knt;Q@Ia5g}xDxul?vV_;Q-P+23B6KH~)nS7wxlMn6v z1XS||yCJEqf%YJ4C-{~}oZH`ym(zQs;?crcEy;UHPTTWO#*1epJ7kUE)pT3FrltAb zwpJ<zTIAlCXJ{CQX%w>s(YX0+Ws`x`$Vn4tAfETEA;c-w| z;tqk?&kuJfOs-3O5unowQI{A9N^I?B2)WT}wsd8g%}A=?-~RKUMP2$K zSR819bW*(Vyh1b1(}U)H6obpOh!@<<{5~^i^s$UCcS42kuZR0OpyyJQYAZ^XdblYJ zZz;DY*#2)|Q$d^!?F$Tzb{(Q1u8zT_VN$$PbjE8x<9q?w6Z@XBu-!=gDMac^7|6Vv zhJrYPL@(?w0_4`d=R-h5hBn0@);tl25+?S2RUq^)z`MEck}XV^t4pGoa0MgEgp4~r zt*;qpljO`6oeLzQ_0^1H%`tH%_9%J{o({9%e0)iQ)fa?}v!0%^qa!GWv(`VsiRuf< zCFNuO7HAXuww8vVZ55>)n;6Yn^BPTG!FmK>xPlb|Ca+*^V=%8qh@DctWV{(rll#`# z7TJ~A8gbOVgQ28n;|d?Q18#5W?N~0fEaPmEQd=A*wZ%eeyBN>15j0N5)5*=hlYp_1 zp^D_@UWW6ktZ*taPM-v+3*)LzaCL}b%sXq)d}wRN*$R}``Zk4$eUq5Oqm1GeyP@-6 z2Go{pI)93xEOqdfOMC-hD3=J4kt~-u$6%Jsg)Y>$_jILZ)4giE6iH9M0Pw}W$aR!A zNt=0Vm~7oe&h1qIQTc_%SRy#jmbLt%oGDt;FexI*_9M`w`U{(;-+r2jHB@_e>n{>a z&a&1uJ>Bg{y)?AXLV?LnP#Ybi15S%xyr^0Gw$#8tq?UB7D(?FqHd_6V!^=s5eQxJ< zdc@Rq>7I)ZQTd)Hjl|8PM&jlXGDee_WlMp%X5?8gi^EilSNgD-KeUajEHRKy*T3Rp z9Ho0dUcnz*nqXIrJQqf~m%p~etiIOn)2^`3*YM{-#FdZq&9JZ6@z<70DdK#H{%>JJ z-x&ElAESQ@-{T11E4t16y|pG4eZ8@XHMtuYH&cXWVfboAwlSi;z4?koz8xl$9gJYx zdWm2-;MJ!6n}-**m1_Sbj@1<^Fv^dK*VZKbZ`aCSq8NRD$5|` zy6p#G(7Mf=tSz{;=;gO6Ao@<2luG$yYu(9@^{V}D*w@4P>j2Vf(LNvc@hJY-vKW#y zui3p}!%jqf&P(=t_&jLIj^)p-CE7<$JBO%7(oXW7ecS4C^32<`i;2{N+ye{Y z1L3bY!>MB?sS{Ga~jnFw$alY$82k*`cns09|fU3~DK+T@CXZu+Jg? zW`jqT!>paWW-<}z2_awwT7M4$%Y69yh+hO+>lnz=V>(0^K1PT1#U2IH#1JI)n#v|d zvix5{B9S6w+XfKaQ?-Yy*%2YzHU_a&f9G68#AY?OHFqt?=Xv=R z&I=X0iyeBsUidKd8hwWV#{b-NRfX|zZN)o{_m7c#yvfM)6kUDB4>Ha_fsdMzG&YkH zdTs~BICR=qd@{l9GO5u>yr918-n29G>^t%N`IOO}N)1n`eUa#(`9iz|Z(*PfFC9$( zAYK9rstFt&IL)0wPM0{QC?UNSJ8RlG`CPoXSsGhXW1QYj(}PwGWlX;HV}IMh^ly<7 zHko!a!tQ(W^0B{G#*{19#N?FlQvh9sjBp?*v9>w_rnap~3iPXh`679u77Bg6j=z?9 zD3ghL@@VgDZfk0PV0L@^{S@8<*z*-7W_5k4}7ByHZ^Ed=vnm^D$MlC`C6yJMp+Pan;XYm7+?;=Bm8| zJD$PR-vjgR0HzKwj+)Q5o>uD4)|%|D?QYadenty*qNc6|{lEAW)!D7TW_Kw+Y`?p- zqH;(reMC>hH|LLZC-j;N@pAl}!P3rdk>8Rtfj{QLx3 zBfHte>~{NrkswYnoIJh?gyZFL6YxYEurR!Hj3YzNYp_Z}s)wM07 zHyWrksXj$_k7-Xx<)5Tbm}(JPFdY>YB&u4bDO;@s(_GM#>g;90H|I)tm}I49WwN;i zmv71B`50Kj3`kv`H>Z{kChyha6#by^16gAF?00uBbFQN`eUv46wDbavqgB8hCD}=f z6%5nf(Ll{Zphy1-AY3W%0`)ME+{Ss&<|qX=#*nr=E`M?m-8M;myo&phRc3gJ#Cr1y=VXobs^h<~0*#a;p_j z2H{>)qU2+#UQtC+?X1fuR%+8}T8mxP&Zhi|xJcK|r?Un9`&8MZog*;T&x}bk;gzId zY-T4eEPdL?QW15gYE4o#)OSb*w!R)4tiBRcRm@cIdTLi(ifQ>aSo)NYrLr2Y zm||c|J9-=P&m@M*e@F$brp`+AR)JPt(${tQn6Mh=B}71q7qLP!&cB13d$My=S-~b) zEs!)ZaI%srJSYGFr)oD?!t}=r56d?}^XWpcNGvpVQbQ@UYFkJV2~IlqfEPM(w$;a@ zA>Q-mR;DNWv1g&TnCed@wSG`rIY?@&nOfjXQ=mr4*-xe*kBsvlpnz1lJs>tXSl~Fj z-N2xMQ|4xiCG0-HZq4^{F0NXuxGn3-c6}0AM9drn8WpjaWF7N&KzyNhOqGQqTBazD zTm|{Y9ugBYwr3bQ&_J5u$#(%g#|zC-g-Gi3GhCqj@0c+MGE%zzJOEb)Y|sZ7Mb@fw zu2Z`VWJE-annL3psz;*tvfp+0vrcDUfAIqcjx!}GS0AOC#_oA-qPcJ-NKA{7U@aQPelPbB|OM|y%s#w!-=qYa9di-V@Y~m zNqmKF5osquIS03^yt(zpsmN*-bGnasE1!yu0iq8Ph;RdiK*oWYn@BG#UI=3xV_X+J zeHudwio9|l-R&C{PuKu~PGV4*lVkB{Wz&g`8vs@_1epzsu~3JwhLPo}^&zuMcq5=i z{1%8zTrOZN8I=TJHP%zgp;>lTQ%x!+0=FYTl1mvbM3S-tzodf8XdeX9Vq`pR4zG~E zq939l_up)OE}lheXqUeuQlaikUB|YpnA$p(hL&Ppq|NXT4JIRn-i8_HI`DAg$+BycPQSmeV`FmT8Uwt(e5pNvzO1M*o$mH~dWM39rq zI7K<&USiyEj%D&vZ0c%-7E9#FIV}CK-VAOC6LQ0h_SV*RdQqJ!j&z-W37{wTRoR=d zyH2XavB(GpmrYuO#9_eFf6E&1m}EQ)dVO0!WWE|ucq7H;)v}Szj2a@_x$WJ}>0VEhuIqu^6d>CkhLZ^apEAiG2uJI~ z0J$vyWHp1xe2x!9W{Ria`ycrBFn4(F(v;W1*D|im1P0>r7C9C0ulwL#kJCH}GfAOn zU{f|ylD66-Zw0AGyppgLXgec@?2!^t_{Z?k$*rCS*cE=S$sEEk;k3@{UY_a{UkS|> ziF4|Qg*SiT+3(b}?;BIP=z*ko(y$9hiVc*7cPb0@0=WE=7^w}Ih9euhhCb+)(az=JYG4Wiq=Jc5kDd`c9`F^o*a#DIig>E9JH zUx*Oks2+qmB9Y%vYC(J2iWTAL{V_P1hFqb&c7~xcq=Pbk^vfU&56>h?;yZ7So7!

mmq}D~+Z6R=tBofT9FcWKlBCP=L-11r?snD8>x& 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 BE)4(x literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.bpl b/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.bpl new file mode 100644 index 0000000000000000000000000000000000000000..e72d02b3040f2d0724e2bfbdc6946abdfdf79004 GIT binary patch literal 573952 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%0DS@t#=OCG?QOQ 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 HPA>ls-QU&t literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.dcp b/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.dcp new file mode 100644 index 0000000000000000000000000000000000000000..62a26c382fe10cd4c8c4bf84e9b038ad62dc383f GIT binary patch literal 781515 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

  • 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

    9LTk?rIvO$;{#?%0w~@&jVBt3=gA5L;7>r@>wl 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

      Gem8L4Eashz|2e$Ty-+P2nFK# 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℞2id6seg1}8a+6L0Zd{Tb&O#GlNiS|#&8~^xQLTj zzzD8m7=|qmpJZ!LH(l_s~Euw#_$+*Ji;`VaRE!Xgon6_2Ux^?Jj6Xb#$7zc zA`bqS)IU0K8{N2tKHS7GZeR@8F^y}uh^x4a1zf`w+{R@r;SyFckA3shKMr6H9k_sQ zoJSvKF^F>*!3@SQjai(+6-?q5>bQ#u+{ZYUFowq%#S@&w{{M>l$3YC^ForOIK}=!* z^Ei$L^y3Elu!vqPp$AWJ7zh7r>K~oxLLWLYfDR0!9iupi863bo+OUBAxP^Uqh^IrO zk0WFtVFe?2j5;3SB9?ItOSq4Rc#H=)ut5Ez2lp_7yO_ZumT(6vxQ+h*mios8 zZej*EFo)~7f@`>itGI^+JjNC5|9jLw4&oBJFpnNwL_g**hzl6Od5mKglQ@SN%-|xX zaT%v@6_dDyI__fv2me0xk6w&n5Th8wNlaq|_c4rB452MY{i72D=*4jipdZ8N!x(xo zi5{H8Va%Z$m(hhA=)_%gU>WUL!9nc*2h=}0(S~vC$1L{YDxNyHj_?Ezu!?1@U$s1*xQEBMi+%r)`o}@s!C~CSaooa5+{7eq-~z5=0oQO3 zSFwTxv@KHq=)z@;;S#Q39yf6j4>5-)xPXKIJ@t=%%;F@@VHz{IfN5ODDO|-Q?xBuH zn83b&ME#>3W9Y&t`f(B?7(pGwIENuzz#!%^fa^GpegByHM?3n^gI)}v2g5jw^XSG! zbYTUZIGCsY(T#TW;vgn*05fRA1?_TdViUgUbl6Wqiq?qCJ?@E8yA2#>LhCs@M% ze?tA^AReF-_i-5a(1*Jiz#@im2cx)+I&NVGH*p>}a1qyW8P{+XS8)RixQ#2gi_3U` zOIXG{R&WtdF^9H)O8ui9=h2N>^x_Mh|*%7z60W2)a;5C#KPX^JvFK9K>ZD zz*V&22KM7N_Tes`zD4=r30AR+wk7HxU3iQhJVHN~F^VNj;~~!D0WRV`uHYVS;4bcA z5lgs(72L+Y|AG3)0o+6vZs0JkqZijOimNz}1zf}xT*hTw#UsCUFvVjAH_m7{@t`VGg6Xf|Iz45nRVGZes{{F^C5k zz!Hw*5&E%;KI~hj{&4_3=)_?hMmKuVg?@Bm038@XJH~Jj6F7iVXu~<|#|7-eJf2>l z9PtEKv5H$*!6F{xJ|1BS%UHz{_WzI6KRWRMJ-Ckn+`~!S#RL{{4tFqz+qjHdxQ?5+ ziyK(Rbv(f}9Qc>iKRU61K3u^dE@KpzFo}7b!$r(t4wrEOH*p?|n8kgZ!!l;DifQcs z4fT(9Orjfg^kD*n7{^JBVH~44g_Agk5nRA9E@21@7{ql9;1-T!5&gK2J}jXZkI{oC zIE?lc>K|R`LLWLYgbs|N9pgBNIu76z+AxFtn8iL^z*9Td6Q1BQR+`%K<#uMB^ z+y74eqZ2pKgX`$WH4Nb@MzMf8u3#3IF^@}Fz&vi^BJN@i%ea6iIFI)KgZf7g&S3yE zIEiUY;1p&si8<791rxZ5aV%mC_c4lPoWv?d(6&bXqXR?e#UKVTfRi|m3H0L>`Y?-L zTtpA9;4p5Y8;j_|eRN_89e9j(Ji$S<{Tu2Z9caU0>_`B9_tq$J9R#;~|dY0mgA3Gq{I&+{FSGaUFMX3%9X|TX=w*c!V2xg6nAe6Y3vb zxQc!(UZr~zrV-9z50rznpBkR;ZCU6eZn87(r<2+7b4wJZwI&NYD zw=s@IjA03*c#M-+#R&HOTk0PNFoX^aq8kI~$8ijzALr4Bi|EB=^xz&2<0-n)@u$>3 z4xgLi9ZcdjW^fDVaT5!;frq$`6WUL!9leBU(`R^ z(S|PUM-TR)A5Z@(*At##6sxFX1?TV>7w`!4SjH7B;U*s94j$k>?qdn}@ECXT1dC|f zr2f%~+c=C{=)+A6;0DHU9d%s8G_K-27BG)1xPr^LhD*4KdHgZe|5txH@Z*2@qs0q9 z{=*;rc>O>8@$(=5=*K_%$qWAfkNyh({^^hZ#$S2KKgRx}=|BB@|G|&`(bA=*OW|Am zv3eycIJuG#oL&hCY*#Y^`_-(#adko9yqXtGUhVt0Fn4u8kiF^<%wHW4e_OwL`Vnki zb%=j$UG)gIuX_Frj;{Iz$5(@b%GJp~0r$1Iz;i7m@LyXLi6yQr3-oJyg55 zk@U*7fo0ge77*-RJNg$;x>gmGul0%lcy!GvIKDP4s9f_3s@MF2lWT_}OJ3KJz~|Z) zjJpbgpld@Aa_tHtuBssG%I9IrwIbMdtqFEqn}VWiN3iSK6YRN;1^ccO!GWv)pTMDO zP*8F?1!dQ;;K=0@9J>O7iYqLrx-uf3=lX)cd;L)0zdkSic5r=BaCm)LP`bVGe}V-`lo-3jJ?q#J>jKjtW9=>w?JJ#Wh%XdtZ=y zyChhA`&f{FdsDFf_WVBs{hdWY@||VD)H|z!^gA1Z%sbnHxp#I2*>}={wRgPYuzB~m zV96a4EW0NKEAA;l!96EfbuS3k+EWLXoD8IY>w;_0ARS>$dAqd~t7DR3w2qte-1koF(g4hk)9K>(f z1&JFjfqugyNZ#-ZrfviU=^GJ2=0;2~cOxgr-dGaM-$)A|Q z<5aMG!}fPz<%V5QxZx74{=dcD4_ISqeJ}8YNoEK;>`cbZx~Qp}naxUu2@seNGLUr+ zB+O)n3x3 z?k&~yDXlzSRBZ7vZCUT{drl622Bw|0^;Vz959j^;&ilUS-+TVXDK~g9!{7 ztRP}wK-Ay_F@qb#4PG#2;6TC<21&ybsvb8)FqJaQ$A}3-98;5qB}`2jl9);xwlFnq zn84JGVHHyu!!)L54H+xoM6-723rO%*fy{rZ`gSkv18B(+vxnHu#L_SA*MPX1EuG;P^dni#FXaz z4yMY^Phv`Y-hnNqJI`VjOr0MB>GLy)&77YDne&Ta_WaPhh`IAgkUgIU^XD^Q;r!6A z5w?mnU@9`eQIQ4Cibde6$N_i7Ch%0Gex2}EOo3p<$|nh~Vjb`m+aO$_MCMS121F|K zAX;Gtu?h!>S9ri!MGPb=5+GSI0mdsQJ=mG-fn|gwX+#MlTpQhC#|00~5w1m^4m; zDdP&dG;N$iua}LBV8yrsR*mam&A1J6M&*Ae){SLg!)O4TMl0Addcn4F2;_}Uuwxtp z^2!uYR!#v`Wd@X1&I5JjGSF1!Kw0G$&{pa{MYt->z+K4zPo*1pD_Ib%90F|R7~m>X zfUiu0aOEr*s$2q*${dJRYH*H=Rq8>!(gemT8IY)SgJdNO#w&+Fsxl5HDpi<0U0DXE zE4RQ*r5v$LW$HbIwrUFKs|wFnGVE5KN_8YfIu8^Bx@Lm^X@0gfsLh0dxVa8-qY zyUK+aR}}<&6%U505+G8Q2hl1eGGkR`AYL^F#;S}UQRM>3st6db%3+37)i|ams?uPx zDg&mfmO#2{8%$Tte1O=lS^@HEcY;t==YXbq_Wgve+VzWszB&aA)oEa=&H{7wB2ui? zIbf^K1EyMyn4?+?oYi^Ys@9kJk@4Qd8^$ZSZzijTg_vNs~!h@^(F{cm!dC2 z)kYAhj)G`4gBfDgTbPPhTVE!|syUFTj)G)$5{y?*fmC%COjLU@-(+~SXJ1i_oOF*RgTVJc$MfvCv}VkR$$o2EZV%$w%Hf@vKrnyeopmP~H2 zY+6O(iYbGsRnrn!GbKRIGzr#CTS(b3X)v{EnnYjJHM2ldvjoa&)`7NW3+QT;m_c8o z1%?_H7;ECdRHJMmCTfgevS!mkq-%m;rX~k6HA*m7V*=S4Cz!7(0}D0tV6kQyEY)m- ze_9fsa0Mf%4)ShTf2ZlU9ACA`r3J5s9gcZ+DXLB zwKia@bpxiB2aeh}aMqfU>8f=CcP$4zwPV0rn+Cz!6f)V`8Nk&p0lqfgMr3M}V77Jw z%+;nrwss!O*DisD+EuVvyAGCWGhn5b18cPrkgL^vgfL#5{$;{?aq6vv?V=oo%tak= zT(kn`MK^F=&n1bogO6Wa-Stqb=zQ~F7ZWTzAgn8 z>gK>=9S@f4Vqm3i3ar+xwi9KRb)dCu0i9(B=q)NYVX$a`(V_z;ixHSDR$#R_fX(6t zj3ojbmN;-)lE7t|0B%bfcr3HPYncZ@%MxHMtAMkt1KzR)!j>H{WKnex5sL;yEjkdh z7(v`(1!I;>Cy}sZLDI4a#w{x#WyygF%O;q##ff#cYVm?K3lDOZC|I{7z=mZ4Y+9zlmSqlXTY^~3 zyoColmME4;UOxkr^|L@#p9Q7$i$Gn!0yOn&psao!XzMqDu09X+^>Qqxp}rIt>-E4? zZv^IgE3no(fUVvIn0gOz)CYmHo&&D>Fra_1TsZpc<>>Bmy$!6^mx8tWGLWm+gY|k7 z*r;CwoAplgWviY8+w~e$mamV3o%$q@TgMPnS|@rRvH3&AXLtx9A2HVzIkhji*9qTfXU&;aHr7fVkw1^fomsUa9r8o+; zm&SqaQVxgV*d^^8k+@_4$xCK1erXf2iAxJ$>e32GU&@2&ODd$yTvGiOk-t<1b}s3G zyul2V4Gy4c@Pg6?9;h4QK+}){WesVdZI}hRhIycGSO$iM956O)0aL>S_Hs`{9(Wtl zfNhuqT!YF(@C|wpZeYMrLkvV3k|5eJ4Pp%oAl{GzV-3u+M4}-Gk_|&(yde!z4GUnR zVH->~l-?w!8Wz!Bx*-Rq8={{hmK!E!iIs*iOszGfL9Ss9tT$|djRq}JHXFQPt04xq z8yKuXU8C1YxEeX&ZX5!h#yIdcj)P$1Bw!oYT?E&-4fsao4IUVW78JQE0GvfzcKRCR-Ai zZ5d#-Wr5AM1Q?qhIBcuHY1;%Yn;a|4ZBqk}O$WTTAPCyxfVE`-XIlciO^Y=VwuLb@ zWHVwaVq-wm<_0kv3*xpE7_$w5gl!rmZF6AU76&QYBABqPfk|5o3pQmN2Wi_Bn6_oW zjBOcYY#Qtuvo}j>Bo|@)p>> zta=-fzpMc}mvunS7=enIOAj`~xc_s@Mm<6!NEP*A)iVkiuPO#0afIQ@rj$)FplVtHrA=Ev z-86v|P16i0Ym#GSX`AA|LrgTKz+_VzOf}7cbkh=;ZdwO3O?i-M(tMhjZ8CznCI)1i zJYc?w0}D-2u-KFYOHET?xheSD#CB5{krzrvC%@aV`JOfnCSy0-%0@TeLK+~*6 z>t)SGpl!ASU9%JDo4vr$%mZUHgBh&NZeVN91EyJpn4@_PeVJ}v1T)PmAk(}KW}COc zT(fG1$TpXO`DPPXXm)_bW)E0u=D>3E5LjuBgVpA7u+}^Ua?P6`B9wOdhY6KE3`*?@ zpth@l#-0Xc_GO^8ZvmZMHBRX5I$*E|fzdt%O!hfowyy!JJr8Vl^)C~Q-GJF0b}Ocw zb`NmbBfxF9A?C4rfY&~aVJ2pu197_tmuX{m8%Ww+VBD@pY{G5^lXeD7*~1`hkArEu z2h7-0AY)$uv-UMGXU~JIU4zQz?MAR*&kO6tuKHb?TDNn*K=6(s5O&1CkRt&ijuePG zW++f+EMkiJrWnk4|25Sx%$T@;w-4OvBjwLj- z>2QNBM-Xf~;vnx(qxBt!0mxezplk^PRZ9w#wxof&WePKBT9oLLqeTOpEjr+CF#=DE z6?j|RAlMQ_KiQTD;93%ZZh7#_I(NFMKtRQ?v3nEt>AbQ0MVpm)sekG3?GFMcX zn!U1!sq7UErsl6Cf#K>bFkYPormHM4UyT6A)i`ioT>$Z`%V6y4I!IjA_7a;{4Pfi4 z8EjwO2KlRF93gjRfzr7ORL%uZ>dXPPGY>RQRfs5aYJt{i0y?J`=$#Q@a3+D#IR#8k z4)d9v5ny#@P-t_y0ONF_b%!$uoX#+CIb*=>OahN{5_p|6An42j*0}^Y=NjOh8zAhI z-yw#aDiCo_p}jF@1|*#0VB9&6W>d~hFyWMAzDegQrly<>rqWI|W}kNQI2z5@BEWhr z{d5V3 zoFIBFg~HgiGE7Zh%VWcpUY7?5^>sbaTz7%8>tUe19tXPXDWJce0fy^Kz<7Nfn6Br6 z`MN4dSg+fF?Yavv*S)}TU4<0a^)leTUWP*Nbv+1P_r9G7w{l>pbqGXSV<6g^0I}8- zh__CGu~ruIC0b`Nm28~@8)*P5_-2^kO%3DOHRSjla zjbN@-2ePesq|CQEFtyO?28*phu+++f<<4CYJEt$Y8<# z8NgKAB4X*bJeY3FftfZhVwpB`H!<5bhpD-?Wsq%K2lH)PV4+Qgl*KkJSZZ4VvGyE@ zw{L>6_B=?mD|?7!yBdtQYeA~r04CbaV6vS7Q|&I0Zuf%eb`H$64}na349vDCz+8J6 zRnNCa!BTqyEVsMBYI_i@wWmO?J%t(8+vjm3?R6W3G0Q!L!g2R1NV%85gnI`}x}8W_ zaht)aTgemZ4n5FxxIkHl7ic@87|-+_abV~e2gZ&GVCt9!=8gqm?N|f04l7_foWRlH z1r0>F&^CD%fEJY)2mO9cskF9cD1p!GK6d7(_d)zfWX4(hM=*G5>L5wPPD> zc6ff3&~!4Otdj@YP9xBDZUSrP7&6nH<6ydT63ld#g4s?JnCsk{AeK7im|E`Cft5}J zSnc$Jwa#gf>&zi@qALPsy2e1JYaGmWO@XCh8KTUyf@RQo=7HYhMxnvO z0i!1ZOr9}d_9TJTGY4#*dBAuUfzy-5?7U|dggr}O$P+^>;)%==%bwWthtY39ma!B)vf}?&U$s8vzsEIGFS%!IXCbq`he{?ahE0Zx&>{ zi(uBf0_MCqko9hYd2b#pc-8M97QI@qiwa#W9))GT6`=KP0-dk4kI?&c zz~D0iqt6OVJ_eY5E@1U}fXx>Mj4uWpz7%l!GQj1_0=I7oczmnC>stpw-!@=<$}qwC zm;r+Km0>FEGl3zW3q*Wg5cTmO=8J&1Zw!q2#zDfj2$H@vFz!o(ly449_%^|$PuWjQ z`N}}rX8_YaGnnx?LB{6=v%WBx^F=|{mjLs=ELiYOfJNU7Sn_RyW#0~1@hyW@-x^r+ zX|O~&pAM}1Okl(32AjS#*z$2;+cyXDz7??J+W>O^Hcb70fI4YvHMQDWP#1$lo2?D&m99&iF> zfCZ{R0+a?)KpmI{nm`tm1(ty}unu&AJkSS}5yBAA0AoN4OaT)x2OPi}2m)JR2rz*- za0C*-8Atj5>`2x!4(z<`l< zD_{oO0S4p)F0d1b0eLV1l))5G1*br1a0aM@b3hYZ0%gHfpbf4AU2qHNgFCi3i5e#Yo8#DqgXa#)G z1;W87M)vfr1em_H2r{?kutH{U>9Bg{ZW%%LmKDt38UqWrQeg2`3M+Z()`GBhZ!HOH z_f`(9-ZEkhuH9ll?w08up=CWl$1VXqn*>JI228B6i7>M^U}fFF#(Dw6&LhRa>HyEi zK$vxcA(jOZHVmTd6o|3YAkJpM7|WuT1iOlG8f>#!kY`tb{Pr49-d>+2%5HA~?d=_)yRAY@ ze_I0#w{^gH+wfUpn=^wv$ABHq1>_+wP=+|53JrnMP#ma3DWC~WgR)Q-XhVxY7g_=O zP#G|XQdkssNcBa+6G~tz7@7iXXa;bh6~Kq)K{&JyhC*8)64GG4Xh;WQAtQ)~qKG9z z!8t;AhX?vQ>^Yh2%-bw7S$}7RFMG7M=JUL?hk$ZoTYfMw0R&r$oFx>LfL0CLG$s!N7@EQ`2jI2_<7E( zI3lZPP)oIT4n&5#xxjsmRt~Zw-=x}QJ;ytvBcohcChINf=xTkITA_O1_+ejn=!CO> zlFcD@8{A7ynuG1{=DvWyV^W}H znB%0#7ZEvmxw(%W8EGEo*ir5u%AWnh-ZPgEHTj{(-+P_Po4C-xFlXm>yYfF2oxjst zD%Kzr4@CcU;oBeVEoMeW_}+fHy`ukwiksPC+6-);^Xs|mq2kto{@$Ad!#$Ylr4=J= zDJ1ruaNOOSP;?DPxEE}6M;)Zo`)NuF6`@j2ppXxo?>3XjDZC5*+JK9=XzZ?4plUU*{l+2>! zl)a_7^Eol4)zQ-R85EZ8EA+H~`u;q7+szxlhr-kQ@;aPXu67AkJ|dL1dpfT=?8YDe z(A29E3R+s3F5_qZQL5c}gK6$^KI<@UQ^slgF#D2lc+g%nO2&`CpX%~hq>Xi-}u!;uj)GA*C$L?f9{|2p_5(hEbX(j6=;VvJ5{hwda^_EobPLF-;Au? zk}eDo1O1fnUgnJ1xLaL?co^ zjUvJU`CVPh5N*CDc7*R{guz61;Zu+GDuprV*08dU*7%iScJL1E<-!5e%=W*?j{N?a zy82#qmpD;Lhl6+=eW&L7*Y}EPj}eQ%PsQCm$Gh%uVXSuA1fILX1RdcgJDb{{V>&w8 zZZ>s^yZIwbQ|EIyIIgyJeHHt?3I(2aniLKfA&!HB3ciH+NyLQ%f=d1ZC8wk++B+Pb zoeujF3QNUm3Ps}Kh$2)~D4a*$>D}rIrP%R$AC;=S(bnN&TK@!PLc^YRu|zmTg)CGk zmiDn;=e}m>u_WX ztG0>lexY}GAkyFS3yrJwv=s}7I=14;F4sV0glme7jt=za*Ry?eHfWBFj1GhgNtMFk zr>m(y)BA>_BH{>o7V*crXhNDz+^4z*PBnh%TeQdSkMulG4K(-hwCiCYIE{?50~vjE zevmqO2I1H557Vy3L`DZX`FC)SA*i`8*ujlZNQ02}Ku9=G(&)tXh$*i}$`c1tgfpGE ztG?j@(RP-uCPv^-lcKTD?sBb~q8~3Nts33;ghIu*{n2~UxpSuazA?gr5u;maIPfw1!7_mky zNI9@BD86;n+NxCXvj`p75WAthqv$4*4(ySg zcLrW6bkK`n#r}mCPYs2zxB}Qdu{rF*e$4Q?{WIL8)8X(y_uCP8!~OtmZ#L3b7)giU zjrf5r<)ragJkNaSP^Gk$a9&O!aA3920ybf682K1N2aaJ1wG4DeMm~=(})fAp8%_fpUHmD5<%>kQ+h{#C?Yw?F3SXK(j$J%5S-4L;&_MrAF11MDbW z+r5H_?x+a%xlTHD3a9ZUq@CJLYaL*FxSp@05T{z<;-<2L8;Z~ss&D|V9&C^nRvK0Q z=1>IvcMbG#-$LZ{Zgn)z4LYCaP)eg?p%E$-H*XVf=P}pc9jZ@?tRwRJ-8pex%F}g( zxEjm+rM*g zSEai4#XsHfrEi5!cVTy@9?=yNcEynwUMYY5zJ;e*_5~-=$O$^*437*9|NX~2+K{RX zTj4rgv2V3){ID>I)jRmkjUOK9ZDEfRdwT;F(Qd)g1uV`B!Uf(9-7nk-3F}?#jC4j2 zf=>*TeY3EBX&`AI7>o=G<=<>s|IN^&UD)aDH0BCrvfrJ2Q=zQwMQ&Iqd&?L9&V@4S z?QY(1%^zPYl$HGEfotGJaRIL{=YB$KTqwMGhvWK$)UUAb`BdofeWjj3`@l>6 zLTvhvzx#Jo4ULe)qgX_taN?u?`wP2;QYX7!i6?3Md-`|NzW2m4e}B{gfN}9EZR!E+ zPkTopZE0bxy14$xAVPbGJ%yy1`Vql3ws`0|N2GwbT|2Q|Rb5@|?KbR(_U^y=&4Yt7 zjUZC+6SV&w3{pE%@G}S=7)Qk*H8c2G#P&uj3Ovh?@HAYFpmY0=kV3iGw=P5v9DTxJ zGK%8e1GkcDyUOvscSb`8%Y}`G?egbGlw%8j1LaB~t@OQ*XQ?IOZ&cXK4vt2KxjNe! z&%t4y)`oZ$a1Vnxb zN^DA$i1!19jraYLZ#493Dvt{N`IStPuA`2asc@%8XTvxD%6Gm&7X(M;*ayT@kq#+1 zM;vOqQn;_kTPac^j+@*?@ok!NueWHU^%&B;A4t6};-}Joc!8zE)gd8n$ z-gsn>#5>h;BnY>B_pjB;!j+i;8Rw3yf(DkCZt|mdgtkV`KDa-^j)2>_H&RY_k6PNW zxWA@z67JP{OT-R!jz(^~`;>v+NAP%QV1z@#)VF^4SKU2I9MRYdO1gFraLp&5Z0x@C zIy@I^rTfhndF~~_dq$a|B9QNW)PMy_Ry^qMnN=CV=9bg zBbUX|R;=@4o%rr=OTMu+!iyz&}m>=tJn+}lSmWQ)%eg`J}O@>6#QpQ^3>cXwnV z``qECG2{Ln{<4r*DOPJeRIT`&=l+?5c?^duKRR1%LN7M)FoR2lnELQX>jS%gf5(M; zdph~hImIY8Qh#WXkDLdyber#gUGyH=b6@=6pA~hRcVFBny3Knp4{B&ad~QNbUhFpS ze`-xrdyl63C~@~O^C*R+omnRPAXP4&nPsw%QrhmL(2r4?G~CE!U!u-Q=i}WAE%mW( z^HFDM=do_RrpxJabUep+y4u9|3wB2<<9%87y`3ML=&j4lDgEjDGhUW$iNVY%{Ual{ zN3PO{gZC;g%l_ak`LBd%4e3u%F@}bh>Hj}SC@RvQq#~SUgv04&*;mAJg}$s%F7AxN z*`*`W-!Ihnr()9a^N$Osp8fl)um#;pd6Dy7|6&ehkDY)0(J3Ryx%s{)|IeMdW9U{- zD;FAlS@wgseDW8cM^BYh@S(X>ej-P+*P;+$3 zKwB@pYwDk#pFO5O!;S7ctJ=9fmi~_j{NLZH!nKUP^g#4w+1tfH(fLOYo@7zu-#TQI zeVJoVKS3A8!ZX49_e_S86sb2h^`H9k=|5A?U|k%Yh}v}XwjT^mAA9;t<)I}&Jzx3P zFTFH;sz?22>h!Vm>O(20VZA)3ADud8DXOepQpjHX#iC9{Ib8uC*|oxjIir+?avdL# zF-7WQcL#NfPOdK$k`4Y?C$9|2-ti;dai;C1etK;od+Iyg_vB8+37PEl;HmOAKd9Ei z)ht!pOVysdZBialE7j!v_iGY&NUEuWYI@??kL|CBYTybrJYTMsE|3Qz;`R6lbNuw5 zywavfD^K5*J$XDL?2;i_@sGP-D5p#8qu0m26Bf1ENo_u5Jn@13jp|M?;tf$qR{jIs zqvF6pN6jEkUm@9Z8B8p0@tJ=+iRA=_eKR5Q$ElU)SK#0AMDI=@!BOMJO3k{Qh3P~lAZl0o&0T2%Zi@R(Z8!LD>_XLjXzvN zxHzGPJk(I5T5+(Y-P(UdwbRG=-`T5uTB`klJ4E5?i|T%s>b}Yq9jyBymm({*^VEY@ z7hSpSUQ1GA?bKM;^9S2f(hIx@cU$)Sk7&KDNHw1QH)_uvdg_^zc zBE3SUQ9O^*W~aQ!q>vdD^x4|Zu`9A-nQU-Q*)m*gRmh5O$>vMUio5f#zTs)vg_0I# zczEC?JeQTpisU8tU0FouDZV!ttsSX7Fg zC=81f`BWB>m=r0Y4i<);FDowQ5Q|H($7m%TI_hPL@8yv-CS|?uh{q3bUqI@5@DxI~D3< z_vG0^p!!7N8tltOuX+_Gq6VjJ)emDOvnc21_Ht+wElcqe zg%?(o@#J2{aXNQP8T)p~64}|k9NHaMrJVh{V~Omky(DUCO-eenGnUAn-pj6VqvGnuv{WLzn4SpZb&JQ?0dgPSr-muZSH2#ZKU+Rjj}5DvV_0x z$+x7;efxfita>kx+T50MO7Nmed?iPf)$ApGhpr5yq+%rDH65i~+)JT)b`GTA)g7hO z9Y~QM$0Y#mFDD8k8D-S(Wfa|$E2RwaFf5T>+6z+~Dk=O39fZ<5KdPj0FH89Ap1f4b z+&x@NWX~MRQcGE{qxz(EDZMVFdM_WELnF=cs4xdUMi3r`Q*zUxcjYD~+`|_x9%4pGNVlai=w z^g0zcN0j&Mp*%*)qwOKRcBRC(9ZGaaiPSerq#wJK$b5&goKhC;jl1W2$_yOJblsnc zvp;3N{ZOV`%A`dpTnkX%twVVpDeq(RMN`^~ zdugxI^_!G(f>LmCMj3baGHARTlQP67i5PU>v6n!dPDlwS3a_Xsa5Dyv;2SBt2%>n?kxWwd{w7b zX3z5f@mF<9<@{OxXaA}$uUI(C|CF!lHWiC!`Jeh#T~4udmj9W*s#{SkpXL8+U)5z5 zD`)xtZ?Ed66{~0Y|LRwDNv&vS^lSaRp(V~oaO(sUe!4j zn`illepSaPw$Abo^Qz9K*gnfY@Lku@4|=VN{8|3tU)7lvJ7@WadsSyr$j|Ywh=FO6JK3sZ`QGbVRDjFliup(n@k<5&b(y$Had~ z=S)$J@DJ%+ETS{8g8m7e<3$$~bu`gfTpu|u`^cN#M2{xur*LX|071VuRC6Guj(`dE zIG9vVgDG_uq}4evtp{j~nQ_VtnoUslUE4MZftflz95-^I@^9_%c4MZGWNneNT?MySbD5`;Xt9?0-5d zHX%HcZGD!$7!`iiN3VFhx%(f}qD+mdy4aBy+Sz`tuVrAEe&5&46+g=k^DKSgdUWM` z?~RXYdf%(#Bg0g8;YUwLg-_6D5qJdsfR=Y(L?1P8F|DN*`u*brx?S8+_;u6Kb?`f{DVhVFmB-1Ow9AN$nNVbxWxkCtmR^q{`A)5~hQL3}{?IG)&bHXU8}-fQ=x z`n~&t{-~fzc$bgOadg$i^mB#g(P8{T?WoyL*m<^Zp!Y#hydS(h+;jB2O6+V8m{a-; z@2EESeOGW)_=Nas@BtOmZ!kygeGlre!o?2K=S@ddixq(_{D69?Q{jJOJsqboefV&6 z)hAu;op(6;2_n7+Iy&VMSNpyr`KbP#VDA1K?NbwWc9a#ry*Rpw!yjlI)yz>JY#fzG zwRPPYrr)c$*nS$^=(DvWvhF-8eH7Bl-=f4LrhR{nQsVAbd!_6g{~9*hSGDK(;=WAMRl~Wy>IYrih0n-NepMm=V)4mW6!Om(pZuCa{yE{I=`-RrQ&CZe K>?1N6`~LtrqhUJ$ literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f292f26755b389e4395656df20268ee80fad2f5b GIT binary patch literal 2695 zcmeHIU29xL7@p^t?!H-%Xl zC+Q}L1Su*aQa>mn5>$$K?Uff2N^S4G@~S_ez0@C|&TKX|P0r-X%btsKhWDBGnfL2F z^9*B$Kgux{)sCO~{f}RL=8aFB;l0&4+0!dhTrR$N;#!8CP9EQ7oMzKY+0y^Uc8)yqQ_V$2DVz5#7dPC z-VxSz$nLB2-cp4}LY3mggd7T5;ECjsHg2i$za^t)eA$7L$!=at<$?|OK5(|a+C3L7 z#*UL`6z}zHI%#o{sZvQQCtMXR)AVH3;e9sY-L?!}`bM@qq9Pp zy!4`ry^_dCi^KtEN{Z{+bUJr-zF%((+t0M3WCoancXW`mZAZE@o$2ctow$0LElRH9 zmV-Pyqhz;{G}EaM*kN;c9w>`w*@4ka9BDJd4mdl#taTi@P?JwlxdI+3^R7&f))vBc z*uiUp>g-dejDg>1TuP_*%avMNC}jrUHMx(LD?9$=v@U0-`um)3jwo`?O$Z`%4Cujf z#RS=jqpeMjJP&Q}vLhq4bOmhK>g`1EW|>Du+>+GH+hf~obFyJ%nAs<6KayxOja$o= zaJVdN3EF+lX3Pr<|EcUqShz2$6c%Ly2`}g`N519t-miNcs>tIzV;bp=}!Yct@C7dR_Mwpz%G@(c+5oQCt zPM9N{CsYDd33b8(;X)s86W$@bOSl-IL1+>d3GF;C5mbPP&?O`UeE}}M&;VR(^!dC&V5xypTL->}kLHLgF1K~R1N5W45#tDb>{tXYC gIsc}8d%2u{Yq0QhzUO&k^q6;*eeQWx_9bKdU(`{#b^rhX literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.bpl b/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.bpl new file mode 100644 index 0000000000000000000000000000000000000000..6a40e90949ee100a7a32bdcecd46282ce0ae23ec GIT binary patch literal 72192 zcmeIb4SZC^^*26&KwgLt5HupKTZ)z<(tXQ&NES#mu|y&SNfk9ASx7J>>t+MNV%_p0 zfq+J&Ev3{3rIu1^5vj%)bp=FJR7#_zNHrq03j~c2AR?0IduHa|y}Nriy!h+$|9^f@ zE_`$DoH=vm%$e6a_hobM%wxS6W8rK7>*`{x5$AN+*idoO-QO_Anqpc1>$XL`^S#Ef ziSK-`zCORStjgeUR?c!3%`wcWu5uY>*bUC=3PW{8iQQ?KR#ss#UlBbbu{*W@H{gR`$sHeqp_?VF}>03hwkNps_$9g>B*-jti$C4u!IMI7J3}F`TOh z5>t8{oU}9cB%Qb!>nsE{LY8RYVF+UzBQ(s|Fg98f40Rf}lCctPx&Xm3E_;m&yjBzb zkR4_~Ed21y$vT_@=pNmol+FX;+NYb9MQsaw(olGaG-lGGt-xum6%mPlGC>2yg8 zB+ZvJPtu8!W=onWsZG)}Ns}bCN@|pJw4@^?9U-Yf(qWReNV-?jJ(BL0bf=^qNt-#% zn{D&%?&|8=fe;^Cchq^Ncu#;+w|~ipu7pKnS)q+}RYx}-Lfw1&P{a=JE|4Xj>KMUn zKi}1LEGBO~N#=Q98?1U&!7lGjk1>Qj;JB z{*`&&n{YOpNwy6EZMti`P2ebr`$?&2lB#bEr<@;wh06JIoUb1YZfc)M{B=bmhrW5< zmq?_}GqtX5${lrg$JAv-?&`x}VA!rcVMLxHVavW{Lt-S21$`a4#V24>d> zi@px4j`02*1{{l8@?mu!??SR~ch^04-Mu}A)i-gQHhn`jiSwuVdDr!=vToWXZId+o z5zzX5Wt(o#uFBrTM5x}*h? z=1ZC<=|oAhCC!x7CTW_aNs?M6HA>nlX`7^-lE&1F_7*4U2uY2Srb(JDX}+X|l9o$a zBk5vE>m}VUX^W(LCEX+GZb^4a>XEcr(nd+QNxDVS&5~}Ebc3V~lCG1qLsIsbC})hM zagvUZ)GDb>(utBzm$X3Aa!G3>T`cK3N!LiaTGDz+S4g@|Qjes2B;7CRVM*I1Jtt}8 zDq;U%Nez;YmNZGyjgoGVv_aB!lCF_-wWRfuu8_1=(#4XxC0!tCjifF~9g>zyS}JLY zq=k}Bm$X3Ad`a^pohWIxq?wZLmb69ER!Q3=9r3vEi$T(1lEz6oSkhQYVDelVp6Rq0n7?C5@3ZQqpiqnWX2W{hg9_NZKxG zo1|Vz4@=rA=|M^NOWGpoUQVZ9i-}!x7_PIi6~k=o)OT#`Z{M}Ce*&$z78(udEmzuD z+z=ZZ2^7TI*nZGh&^Tb^H8$oM3_f@bkh6hi19^Y}{6_HValR2W=_>FbzXkl=6bCS1 zBTx#N8qjvgbpj5AlMpr{O&n+>FcPRGIlzeXHJ~<7H&73h0<}Oa_zgfF&bNSifJUGI z;X+_H&i4Y@INuL60AAvOI)GLn7Wp#pB7t_m2qXa`sSKc_%Ixz@ixCcEk@=OC<>QN-rdkAhv3@*Q z?Q&ICm{tUG%=LjB%j!UmbqzSZS#-{vqFHvz%d{>~B)$QhaMo{Jv8$}Ig3D|Grw_YA zaBj2D%W>J~Y~;LH!OOIl+g)~IZ|3Y6!Jg_M))vm{FC{DIRSY)m^vD7SL1eX7H>n}?z(lnLdgJv`j&Hq&05M6&29 zt|C`;75OlV#joowPqtT;Jz&3z4IZuKPADy^m}S43tsaARr^^1= zKA(yg$M%3dP|MD9+N-L<*q^#;5OYmF6)vl&YW{@E@^U+`!>p1rSEVzG9mbS>5NHKr zuuK^N7=UvC1J4WK3V`~4L})!URE&Ha-HQ#@%LaQ0NZ;K-@wC0L4S6NSq7MLh0F5O! zKp9IqhTG8Kh4ED0MzTxGAVpiC1fzz&C3POFfuchn3lN`#=w{4DWD6Sz+W^%ToX3Hm z6o)YdSOXY=Er1Qk2J(QxXjaYF+gKsaO92N^0~`d;4O$B{02_fJ`FhsYdDg&|2>nPZ zMk7oNSyEiHE!x?+EbCld*12U_opo8AKl#bs;<|Iu&UVY2%W~V7O_lN9Ghfhk+tkvv z!<8$%tzqjMupaXM_B5`;_b%Dz>b>Y_`^v0#?@ox;O>KwPy2!5EjdfY=b+KKOhh+~~ zl7P(|%RXWtVzBq8xE8D%vKj5dyZ7_1uEn0};hNaHdF&R7-O6JJEIy6Gtjz7Go7%a4 zumk+H(6`t#V99Rq>#k@)ldOw^S+Qts-ik9_UCXjMw)U>e>hK;piJY=1;j;P`bn&{W zD0GK+6J#_w9>aCFw8zGCbQyiIbyGW*E!>Z^K2}~`ZYS8nmf5`+JC@{&^e%yNokZR_ z;QOUCA|+X~0Y)CXiq6&wbG^f{`H|;c)2_K>UJw71lc&MJm09P!lR$SI`Q$i~dh7mu zH|<4;dR@HF6^Ux}K8>i_sb8a-;hBlJu=6%U9~`i3d^oDe{ovQkHNaaBsgg(gz>jRv zPV6|Gqo$zh^3GS4P_5d+y>VbHpZc}?5H%ieFN8?Z&mt+5h7cv^b{t-o+aX%fuB?+( zOzd04N+qccV{dFws z1%+WiA`Ym3Z=v5OvT>-yRBx~Xkod1rH3Sm5OrbPibUiOxFXvJ!)N z_k2l>j?NCynMjg|Buz1Jv-hvZROV1HyK=eihc>9@FGcp!{A(bv{uN#wG;NNL|vs8B74f)c6vSG=9g zS1i~b&ZPeWZJ6n^VT)=*fd3}S%tmop?mtGAdn5NG>baxZAVne|BK)=FsOqnyXkm)K zwyD;>;IsA!1a=&G8!5E@qOok|`uz}_xh(7K%(|?z)J$1sIFo%wX$YN7;TW5}FCjgb zV7TAY)inUM7BCD`y4%GFN@JWckNW>P?$7Gmhz zsS8PA^^KM{Nm)G&TS8ML_S(QgC*(|d$}@vzzUR1TCv1~_wvG?BqONu7@F z&F3ycHwvvxDO(~KQ^yG(zs^nOz>%0EtkezP$C^qsWh#t}^^PGQD;tRiA)-cZ4Wp!K zWc4Wwt+TOPtHyZ;Aer|qj01VzBsAt7N1pbgk?c_Iz?9dntrTI0?TxGsY67Yrkq0-g z7)v*ed2Sf*4MTs$UM>c67|c0epdIsh40Dpot#jAFK<}Rrhq0w|(Sw~`Kg$S+McsN= zQ73?2<}Jk8VvlQ}Y6wM7!0^(Q%acF!n(C7|uuBya#o#{q1e4~X2Rph3JhDwF9v}P_tV^li|Ig>gHu5(y+^}VV_FQxb1jz7YY>}L}&JLia=AsUVM`!w;P zReX$c!(VDzQFQX;4>bmTgGS;TYdfZdGGf4zrCL9F`;Z~KDe?Y*9K74X%}(9_;7`;D z??1ruuEif(f#r6N^E23qW<&;$A%kg!CR>xw;2NY1W!fX)cY5-i|i$y1wXN2;&~&h6PAir z$16&-?;U*Z5zStVYn|SQkZvXBc=S}v2HusJ>+}B&#WYKHc<)CF6u2w5y?U$Kpf|y! zKy&LM2%abm?j`I$jOKShP4XU+tjzLyqoA6y_$Q)w9C?m}_-aYaVcM}rm|cr*Y1!vJ zgb5%|&C=TsLq*-*MMrxTcs+7z;A3&?6w8Op?moQi?$%{@cP`8IlGBC9r{L;J_4sMq zu*d;RK10J*RVpoc<AJMeohQsnMdo*UZ^B>q zgOR-kEct;@>29PNWdoL6t(OJvkqx7K#rl_85}$Kuq&)JOU!|$ND@nD}YeZ(=lSioh zoXP9{C29#G?9;Utx|BvXo0a1Ae!ib2n0Rj>P!WjSTHn zcn?!Wsf7sALt7VK4`kFaQg_XD&(_Q{9hW;GFaR@GF?gb&It;>CvQ{ z;#-8|o?G&!tMAW`te{DJYUlDnyoB6uab1t^fk}L5;qAR`3JolnDV1hE$Ea!MiyEnM zumOv&Rhl7hEDuv#2pSQ$z~8C+2P}CDDUf4`LFq|I(V+BwZ9Z~P9|OJAdITlRDw;byoJx?Eth0jdIMSaqc{SrXIpEK# z1G@UeIdFe9S}g09eXP;94MIDPybBiHRju=cn{4oI=wk%p=^2x47ue4*#9~7MdlA{m z*z*M43+x730WZ)FT*(*6wDU3-8IBjWQQP;!ywn3x*69C0YeP+pGl)n(;)jLg3v z^}DGY-3XAag&_(u(b9c6RwLeka=0!~j#AiI2-K&c&4AX@InW5~1>8Ubun|}TYymvL zZeTyq3A6$=fY|z?Lgp1!*vlt4?M2wOtn+MvEplHhFp`Sl2vJ0_9%!LG2>h8^`quw9qV^;+PQuMr{`8qZGVx5y~f>0;!Q^9TkpkIW1i(r%f9v7Ame?I z=Ds0~=$u@a_ikU9ba-=pVamfhmWMa5f_yWDvk=C_>OfQTK8E!St}l8o@_M}g##jP= z5^BynU*$J?-vNL9bQDzBF!C|Pe+Axb)_4#$Vl!Z6ZkyQdYHTN?cZ$f!#DK^+FuZ>d zk;cHtOp07CBBuvNmQ&;$iVSO9z#|VguHe+WGWW2|djkn&3k}UYk_>Akw%m-nQAF-l zBW23Nl(N5w>=*a4beTJjp31EdSQg+k5VfQZIcQZqqBwg*N= zV&L-LAR>U`3S%3PV%;%)mU%_F<;_gFh!7GO&2>W3zpi$_gyw;<16 zbRQ#L6nK*=u=QU(r-B~rBwl||!7)slF&j&fD#6DkJ7no*%qT7wgD{1BQbLaQ>L*p) z;;gK8@MlFy=M~^_jz*aHeZe1KWUD6-qa|$VG$d{vXDvF)< zIra)yQMuxKDwBq7m|`z-7MBX0)Mlt1RnTLwbT9vl;!97fJ1C!Rkd) zoh_zr2pS7(z=fV)8+8BWJq4w^HnQ{qSSzX|&^2H#w$m)n3|78H**^vEeKE z#ep}H3(&R|7ifV%-Q+m$HGDxSpF%r>{8wUEX2?c#-WT~I{S#!f<47I;9{V?S9hw)E zHF$0-<#}$AC$?!_3i{qJAjQKmP0bWuqJ#%G?WJ(F5{~oUshkdLio+!C3y)|TLE&3P z{PH2$2-W5p)-wwRAljH@qGT5ecqw;`LR?d zG+ElK3`GVP=1;>6YH<#lMGZ46od#E_-9TDZW#cKnxN?r8vI0#)=1o%`Ztn7W{vOWh zF?NhCl+PGDQjaO&%c(Jx!x*TY0~tCr{`}@6)t`sS30d!}{*1v2!5goH2R9ige7zEm z^F}MD!@ONBGS!HtQj(J4cR(!~5dD_@(ldoXa~>99;(`p~Ov*W6`## zZ>cO$#_2KZx}RZ@w?#tdXBR z_II4|*rhmAXRx_YvExV#Sab!m6uRBus7D^wnFD>{IE05?=?g1zvEZK@8%KR5Y7knf=&c&)x>8aydU8Opm|sM^eg!W(h|sZ4#wlXpxGMv4G7mD zyc2YdhQ9*gLWEa?mTLHcdM^~-hV->azZul6(X$R=2g1#u^%}mSuN-`vhQAo$0)(f7 zdQpyxJ*M9dKV9vUUx09@CLE|I9PxRGKZks>L1Pdu0PP@qK-)l*Kv#et8E0dQK^dqE zv>p7w<1pkKHRTA5Ux##YNFVChfOvx@elx-&HDM)PIrv^p{;Ls=)yS0~+=}>o(7hTt zCH+M38^F&5T?3j1S`TUkt<}gkBh0R`v2CE88vQ#Fjs*X5j}b`k(Bz}&IS2km=Y#M$G_;CpD0gcu052Ajypnh6FH-ZjBd@1Z03|a`f z2mA)`M>PD|H@Dy}ka1DZXBNuILFx zyRMJJt^~dRaZpk(r;Bc)N8Q7!A}pS#=plEyZ{Br%%p*cJPSSiyOC)tjxF&x+HZ=xXOtg=@vqxm3N{3DJDXysAUX+uyz_Z< zr`+-{6@*@M<)?@O6wG1aGm1 zcN=(K@K$ShTfyrDuR+8647~717~81f_4+MiG2m^}@Fs#62VT2|xAS*+Rs}ppi)VS1 zG%!{IUW|tK40sOk;xxQY@D_kKLc<%sp0Qf+wrF@~|A0peA7yN}hWErqJns!&O|8rn z#IprH0B^B|*Z*1g0K9q)uK>Ib@HS|8yTOaBN4^@~psmOkyk-rr06YVDyEVKg!5a-; zi-y+*UJ`h%8eYP4jAeq?rr|9HFAuy<4ewp>rh^y0%vZL-+ZZbaFIK~Q06Z6X!!*1W z@Z8{y)bPgqm9Z7zSv5Qtcx%90q2VoPMBRe7M#I|$-Z}6#Xn3(N!dH*MR~p`(;0*?^ zS;Jcgo&mf)8lJIT8a2FK;0*(Br-m1|9c2Y? zuZC9vo)x@<8s1*;Y~U5vG4&Yp7IcAEuHpR*yuIMnXn2RfI|$xl4bS{G`Wtxl8s0+i zI>6hj;SJvlTOLPx4ew#_Y~bNZM)mjryoum-Xm}(4hWY`Itx(0-0`N+}i_!4*fad@& zPQx?oL;ZkPpy4&NpnkzC)bKt6Zzp)A8eZJ{Xv^T~9kr_&dm7jdoCXqpfd|5XCjc){ z_)Eq%0UrUeze3r8+kjGFGq4-*0=?FtE`d^DE3g*`|26ahCBSOnd7u@DUW-oz02RO{ zU>9&0h{XJm4io?mpcbHG6KEr_3)l-B1iZj$fR5O8=$il?cY;0utdZeYKwIQ_hot>6 zAB+L$C;+ViehC}}Mm>Sg0|0A*?SL1E##}K17!TY7YzFAq3)&9!Z{R`Z0IiqjO`r$l zc{t{V5da;xfmQ%3fHvTsCy@qd20DQ;Pr)YOVc>b-BOrVO`UH>%xPfNiGoax2`0fL+ z2j~F4`!r*df#tv!;4>fwb5H`{09FG{z#)K+z8e|40muX@fW-hEn?QF1hk>j9h&lmg z0?UETz+Rvoh}{I;Ksm4)_yAykLK%QNfOUWeV4E?g01JUeAm-1E-3+V-Jiuo_|7TE# zKsoRvZ~_?o7o-EG1GT^_z)@iI7L1d?CV-ATpr6b0q0iz|5da+}pbLQ~fNhf30@@+Z zzq=LVH^5~<7t8Z!K;M<;ouF~g37PSrCGxx;bc;Mc0NN?fM{YwM0CYS8x>cTgL1X?Z z_$iGpm4}hMP=cBiyj{g z0ps68e*&HW4g$UQ3SCyvd*t~V&_;QF2(<6tgiH$Pbb0;==ri*CBcl7H9?$~d0bmpG z0TAPHA>aY%=$T`C=GdM&7UR;^o;kK>j>Wu(xwL1F6>~$+9Q!{r z$2wi*CZlo83`aTn)iz~*6&|{>l~t6v%8JVIj4Hi$KjQxTopUv@H7i)9N&%u*D&Y4BU_7d?-n2lcRub>A$itSv7DN)gpYj+h* zC@-q2(%2K6e!LxzgxE9fRW4^Wf9qT+f?C4hH2gU$JWdokjSY6r#1{Z2+h>x#8f(0? z>UwdbLoLP#muhg1%Di4m@xR;z6q8ry_&ULprIQ?-t56Dg+1 zWeKW%9&@v^at@{Cu23s%Tt!tGm}tE8 zt0GVr_115xDH~63mD_nemGc_%^Mh_jbeOD4cNYEq0l#wUcEq4GTF>wSf%o=G(MSR_ zfUwVxTv|M%#>?(=l{&aoYUK0fn3P#o@x% z%Q|gb$$LuCO#6hQ^75>jV!J~bw1b=$&_8mjxG#hk0_sH5f>gKYc;#lNo%elhtt&Q- zm{B5nmu|@@rFM|l({O3?fQ?k<+UEq^{2_4=!5F zV@k^T44GeEHO20_qo};v4sRd?&6*HdAo%0T`8Q0lyHr_RR4)1aT#X?ndZ)9)p%Ze&oRiS2LH9mMQ4$y?2R_!V)52;Cw57s35j7W`XEWc6?mSwEE%I@^}1P;NI zeD+y*D7&HrUl%T^oChD|RLsRH0bhKzW4d<*d$Rk|cWX0BFXDr34k$fu-}X?2XEr51 zSP`{#B{qM8@^q?gsza2BW-_N7Y=RdjmA<*dH=npHA#`3+-_@~cnzPJ>`3asDJvm;L z;W18Rt0_yK-C0G`aD~e@uBxhR7GK^uOv!2@pMYPw{8BvDTSCuw*k}qWzK>2RL(#j{ zZ~Fmy}EMf z4SzLa?9eM|VE@gZ?HU5H{aw^JZmX(L>tXMP4_+U)|rK6Vu zoRy)+JT*R86SXrXbw0*28Ib*6h9)`7X3;fJUXc^sXbL`?B`PP;msFlPO=i>&%9Nj1 zSti~*(bu1et}@x~D91$*o#KrOXbzWRks#mKGSmlYNG9MKlZ|!%*$Zmm?OScBe}$+(VVI zyEez)bn&lleP7C}lW7%vUZUosk(1Wb2#0MKmtB0XPpM2jNmS*{xD0gRGL?plDOdpT zX{oz3R3&AZWw}TLHeYrrzVl@Zu0ESj5@+adHtv%^E?Z{T>uqVs~PE)m2y%t z(TmT<9#ePm{1c(vVckjb8Bp%Lnv$fY;*yMCAfTdkO2}Uf6;h;J?yrR|r@cgWE0PYe z7}3uu#CC>`P0E1DFDC;=*kH?~^abU_wvQ;PPuN*wHv0w&A%nG1(Hy?Z9Gsifq8ZCW z$p|gvCTBNU=+z0jEh(MinlCn2O$jm&m8x$h+%og%2L@I2C$cz38IUP7mN$O0aUU})w5iWBGo$!TNs$Oz?n}$u438na8 z1-@7t+8Mfq(`l2c9m<4BD*2oh>^;l^$_!0XAw~{JiKQqlWV(^dth~_pfu4m0GhG8> zK~rYuV-fcMRL|dxODnMx5NzvYT-fXGA5cWdRJT>Sa6wkA-XhYiXHDHtf@NGdL@m>1 zv{++^nKjtX%u3BBZwQZOR{FMfL+J^*QL9tu>h6SY@x+cmu%#h4c$FNc6ypN593!>w z^367`WHwf&{_P=jPu0~xYbmZdr-I(p57p$gHPF4Dp!JR@>o|u4@BGW!4A>FK#+%u= zu$dWpmEe=mSt$f)%f;?@*&M7B_VYw z@j99U+V9QfMXstDAr#qUY_OW#JWQ2n_P9TgY4Y8l&vg`YHWd`tiXj^X+H83$@Wwo=oTm3$nOVM0aYA-K$@jbCnJ=&p>30588U%07q#_Ul3m9fEE0@@+ux^0JQ ze6S{dB`;IUOAxwpqT!crJ1HOBQzm!1npdPrj)smZTUJF$&`wXV)Og%Lueb=g3CbOQ zK1b^12g4|1GD_~u1m{L;6KvtA%MyLdkzI`s?gs%q3X&z| z-OM&he6XUxv3NZHiIGqyF`E*vqbXpl$Srb|g&HY%T(F9eBV;ijhcWcfH>^S^^^L-c zTyO?dV{|v#YE(vSMV9V5Vg}&bMZ6EuPRT4R$3xmgKd&iLhcF1Uf<`9Tn1DJQSJT~~ z$ZSe{u%gg5y7+CxIYkvkC`t%3$#4F0Iysc!*1)U^?3!qwU!%TI)lDs{@j41|S58T- z+$fZf)rgNZ(hyc-Rc`j`JoA;Trq7v_KTag#PkmASnv?uuZ^5$~*!;rNN%mQlxc^@> zr`)fx+6w02>cBNKq=%Gvor37;DyaWVphl2 zX_ZaAKonP-8fmpm%F_dWW+{(AsZZC4`wTkieHZmP6-tBQjZuAa$@h?fp1&M=h2uA~ zwLa7<8=p5c7TsHwQ{kw_94lHaZTKtWm)WS1%Ms@ot4j2GDc!P|NgKc+R)A{!MYf}y z61qMT+f(`~nN2GbtTu$5_NwmfRN{jb>Xv(aQI)*}We-(uHU1*?;Yp2R+>yjcN?Kib zoG6rL9m(K40!DwilCqavKsi<%V$G$I3|1aEt5Y4jie^;VL*DJsNCc}3uoVwIhMI(J zJT6#+ZVjQ`-q+1VB=r{&AFK}+(b9>&cBh?@=&lN8yATzFIaJ06D|RVib-A{DHfMjOH;>&A9lOL?wmnI7kiTzNQ3LM%aQlHFbu4bz%n2YX$60PRXa~A zHSK%CPWo4!Rdu&rtruIVO1`?jR%%>kNtdcsvNe(abnOgCgX=f`^r!!H?Ek!YKn+}! z2H%9P(?)_d5GM=IJn?%RW%>{EVP&AMgh*a}MxuNBa+Fs=GP{nfsk<`wXW8U%;d4Kv8qiH6|VCyk6Hg+A9zn^*(X+7T|TiSx2Xj`o)tPsV6x=kH2TRT(=T7 z{go=z)O5EStid`i2Fwnr_ZyBwxgl;KeqWw6kl z1vRZj-%7XPvr}r|Az@GxC{G zvsuXU9V7l@ydv&GeF>`qQl#Ew(9S{nJx6Z_3MGllCF)wCx~P~x61yqo1zVv0n6FOr zCE|i8^loafWbhEEpT`sz9?7qoA974po<44!xhrOaO@SfRd!`IU}x z`&@g-TgbGlt4Lh5PVA&~v-xVvSK@;ein<8cmA<1G56{xiUWY2WO(PMkQ~O<2-_2kf zvCDA>aW36y)Zg~*}b|*#g!gk6*tZuvW3)3nLXn*wc3;d@Y_;xODK58N8Ng-I- zP3kKCsM1V4Xlb|cwBlJLaYN4*a1SX{exyKsvSA+o2`xNMfal6Wbu8ZC%)Iruw!5q`q&Vi@(|Hnt4&h4pHNNe)YE$+R4ZC z%wuSmQtQ8n8uQl-XHKo4CtLY)>|$#@NC&N$d}SBwk;}1#^iWB^MNKFJn4;pce3FY- znZCUpIk*!@b*5bPT)tm&(53!oG*PL(y**@$*dJEhe0gmzs|K^Be7^tky)zEqRl!SF z&Tm;Ra*Y@X#kEPiDfAY&#qaJnrKA;krITM_Tu#fUty=m)#c$zHzeWCK)Q7tDbkQ{- z9+|c~C-KKdGy|%bTrR0B0lLtQ^Kc_jQE@T7I9P+WL0q1OoJ{edly7IpE#;2+rFfTx zPl`F2in5EUqu^2nJZteSwc%n4H*z%lu@}*L18nkZI2Yq*`Qr!FZD_%XySY`B^bIB# z-|(mAcQIN-hv`O1C@quib1LWJ^CIG|Klv{{A#_*o_Cc3!`a722vYgtSbXP+ta41`$ zMU?YmlyvVk-;-C$CZ~<^30pe~9n80nnG$0(9J_WXpLp65s`HKaFqd0+ut3JqBzCuIt3Nae)@#rmyfD2S6*3c^2Qq1qOT# zdx7wC_?c+nGa&UF_!syq@G;QuJYzosrUE|&o&a73jsl~*;BVm9z^lOLz*VTtd|*EC z2=FW5I%Z^}*ckR5Hky5p4Fl&|_FXoJ4Q5v|0~^Y&VR7tgq#VMAvltf5u3-IGEbGe# zvT!zl^=A>R59`e$SrqF9=f*QDv%tk8*bmuF><0ED_5)^OBiW7YdiH&m#1dFy;5E3o zl;&ODVy5f!V!Vrl=UB1LD)y;xHO^OOw2dH!21~qli@<50B`(;NeFh;eMH6*J)qMeZ z@hAs3ldiBB&L{~@S7LP}6NEAt#lRgSSq!Z`R-U3OC*)B<#(ul>E zelhj4zJu7sLz=6$_RuBriD;H@p)An~s~#^EBG$4`Y8ta zVSsz@HH|2%E*@dze-p01d`G|#JQQ1{e0V_a56CZRI*Tt~G4_GfFRTUhg-cdC**=4Q z^ZN2yJihyk0?O|X=~tNEZCEa;%&B-byu`-$aKzVq=_yS9#a@j`{<88NB;`}RvZLzC z_&yD+Cv`#FXlWc`NvdQ=BHDR1ARmh6t2o`owVWrly1Ehe-EGotj`}%M%}(!fAyjU< zvX_$CM0q9Qw*(F)M^?laJpnbLF&V(o&@U)T+D6!`BM(WCkQI}gNSAFnrlKgt+w z9Aq479Bv$CG#gWl$)-C^3r(9%ZWc%4)Wz zSjSs$wNAF)X`Nx6ZFO27ur9PNx303TwLWRxWZi0QvTnD&W!+~zU_E3#YCT~+YwZ;u z9X}|3X#DW_QSs*Zl=$)Sx5iJ7zcYSD{OovV`~&d|nXoBgYeG}P_Jp?*_9YxhIFxWS;Y7mOgkFi!iGvb{CJs*=m1s^(NgSVeYvSa@ zI}>Ll&Q5eDK9IODae3mZ#I=b}CT>dHn%I=MJ@Ku?eTfGW4<#N=Jdt=du~$-b(x9ZF zNyC#yC7F{_lEx?9nlw4-&ZHShvy+@j4HPzNt=?kCN(8(PkJk9U($i3 zLrF)IP9&X8>XjUwJScf+^6=zQ$>!vg||&11IY`MmnW}EUYq=6 z@}}gi$xX@Iliy0-mwX`kQ1a2_6Uk?jd!j@Al($m$r5s2(lyWrXM9SHeUa8Tkv8jgC5ve0n zN2eN7lTy=CZK;{5*{Ks#^HTFu3sR@27N(Y@mZp}cI#OM!HK_|y-KmRHYg1RG)~Bvc zU6Z;lwIOvw>c-T~sasOFr8cHEr+QL%rtVJNle#yxC3S!5!PM5&!>QiXw$%32j?~W7 zbEzyXJS{RUCM`B?a9Uj2urx#3h_sPuqtlFO*0iLwv@}~1l;& zC26H;UDDsr0YXzex|v z=#vqZaYe?!j3F7rGEy@#GNxxN$XJ|Fo3SFJK4W#pnv8WB4H+9Uwq?AY@n(iM14DrU zeG(+n7;7ACj57{18jK^1BaNetMx)i3WK1*KjG4x4<3wYgG2d8VoNg>MmKaNo^tl)c8x| zMq{IKzp>SL*yuI38QYB=#!lloBQu4YB26)-SkquroN1WJU`jIGZklRxnCeYyOzU9F z2Gd5230q9tOpT^ylgG5vwA-}DwAa*P+K*A<{8xLEbux_)yg3;mw>xb6=SWj9zt>N*p@k8Rj7k?8*iuCxKF-}a2FOIK> zcg4HoSHwRS|J(RK#y=y+h!5gFjQmA!RwtZ~J z*v_%%#zv;cq{pTYPESftOSh$Grst*Srx&2rmZq1dJJMb0Thh0sH>NkI?@r&7zBj!k z-J9N)-kE+bon?e)7&ELHwv5b-!iB(7vBAK5cx)_`LBI<1XX7#t)1i89y_AZai%~Z|rO8Z@S9# zUDFMwF{T7ly6I-qZKgX+_n2myDok@tKQldSdc^cg(-WqrP0yH~H@#xoWqQ~2f$1aD zXQt0hr%mTgea-#NSDC+S9%;sR8O@W-cbe}-JD+dz@!NIk*_HR1Bx!`KE* zICgRv%S-Vw3Ri^jHm-172)i`;ufUzlEH;i!VLxFLSq^AEy8|?fO~buNU)&TnflX$U zATyDTXHyZAkI-$nZ|RfC=X!pO_;HBI#NE!|xI7-0#kB~jevr&UzN9|~Lq|UTlIDIm z9|!J_@%I);?aqQWMSB)<%|U1qa*c%SIIcej z5|lUE77!;91_?TB8ozOd`o}GLs@u(Q2H+n~JRT489Q3gEx1MIqU;_#PL>L+X56}vw z3@`vVu@wStpaJjzt@u$}1{eSvfIy)eXaGDwD`f^402@#UxPb=11GM7DZ5dzyY(OF4 z1{wel&alY01wcLo97HL05+fya03m12WVwB1~Zufpnrvc8)yJLK&vR4 z!2oIl3IR9J0C<2_QEZz5)CLp+ZlD410Ik9$g$7U?Pzbnz2EYTf3U|2;pf;coa03m1 z2WS0JQ;yfE#E4JU}b20$ZyA)CLp+ZlD410Ikf8^1GP< zppq8?^sfQ%0Ii~G3us1l&La-~n1iQ)n=N+JHj94Kx5Apj9*zj{(#M6asFb0q_8=VzOy9fZBjU zzzsA29-x(ZP<{_H05+fya03kh{c9CX%U}St0fm4YXaGDwt7vvM1E>us1l&La-~n1i zlPolV+JHj94Kx5Apj9+iw*k}!6asFb0q_8=qA52RKy5%F;078156~)_xyJx%0}25* z(7@Wi?qVAt=Y~GU@Q?@ov#u^d@E4~*7dw6`_&DCy)^Q4vfybG(Yuf_(r%!ivor#D% z9>Cwg9y;B1JSxgxPsDF}&v|7|*YT4l6+K9P`gBC}$r~}xnaYZ=Qps)b5BQX zi0Jb1e{)yKhVrgC5wC7IL$*mhr%zA*&G9oEHk^KSGG|Nvi6ggfhH(8Ip z@Y`{mZ$Ix{vj*${zKBEg38|;!gzq?i;>7u=u2X^jAv1BDIezNQsnfv+`TzJC-Q&1c zJ|aS-J#+f>sY~UzMfi?0XT&*(mhBV3SY3@`vTpb&5a7eCLm1y3`l z+S(2)^MDxmKHoRb`03ZoKmSkgyP0PWYv%`L#-VwpO?R3( z)25a0nP<@H3em9&(Rt9%82TAQ5DR0#1{4BrpaJjzt&HKc=X%C~YZn_(2)Ka;zyq}6 znuP%dzy=foZlD410Iiry7+?TwKq24;8UPQ_%G_{o&pd;1nqiz~7^mTl|Ci<&x}J#= zhdSfP>zUILXKC;gv|8!JTr2VeR(b32m=RQ89KELa(XqL0#3@q02 zyN*wvJ}5exMNgjWyZ#}q>#oedG8z$#O~Lh*nBQ;>6%idhX!`Gee;4@C0sQFSBiB>N zM9Yta@(o?MI*MRS<->;4zlZWa!~U*Q8&rPe@wVf~H%y-ry#dxoA(1kFo{l&UUq{%X zDU$fz%rpOcu4lsFWA$*;U<0@X!C#zWUF7lYn<1K#M4lYPRs+qzT+csPT;u!v`g>Pp z3%fU^g&hrllHCkBI<|c^h%KnLv3LH|#KW7BhQfP5$E3C}*7^-U&q!-wYrq>19;GE2 z+v!0(4gIMsX<-e`Ep$tc9|xhAj>5Bp7@hCD$;kR39E&t$li>wn6Y0Cgg?w<3&OqCE z1pZK-q+?jeAePbezOF2leKq1;zs=H(r#P~C4&+{W4g0FU9LII;JvE5^pwt&u;@$tA zz~kFxyf!?J?13)ajpZ`UQigbBr{bG@R)l*NmB_OQDK7u`>zWq4|H9Z2+DyT59+bi_ z$?#qo?!{vn_LJdj;QrhG!OC0y$r`iPv7NB-mZ|?>?3Q(GBEpM-k-#~mCA`!d_d1Yf zH{^bF%Rg9q_B!@sP)E)>u9eb1x-JXnbg!frYrxrcz(9a}d056b4!MPgC!P_$Kr|!Y zl_N~Pq`}k5n@o}p1{nqA>KYl?z?L}!1 zX{X;tjtFr3L-DmL`1u9PE9@upy@eY4WwE#$bjn)@Svu5mttr$V8a~&o{L%1*X63I> zkI<|9Rr&u_e~NY$_?Pz041f&?W8wIVLm4PUNb}c?PK6*Q7f$dOrvTP=m}|P*-$f*2 z^XAQ~nRZ9@ylK;>$>6-DOXtli_~}dYck@fl z3NM{Iub}3ozp{uLq^zkq1NnKWh@V$Os+KODT0M7a_5IUWO)X;XAF}kPL)IkCn^zrC zTU$G?dg;=ozqynkuc{9jRgO=s<*s{0Y1_lx<+ zVQx*=qg9Ef+G({2;HY`1v$m@0_D)kx?W47|owYR&b#)D~#Me$stg5Mo(xne|b((G; z*g0@se9g}hMttY(iTBsuUsY9eKPiBGV&cHgA(s1VsuN$};iWbALuO#D62Elm{k6B7 zuCBeksu~$$t+*8W2G%USGLaM@4EvYX)ZTwJg(DuN_^!^*B?GGvbVMKnNYim8g&8SW z!o%b-xD(;ds@n$+nTL`iObNQW;3Wz=s5&Uz)rI2KQtiOuf`NF7h5%=D%4p7j5uHL> zNFXQ53rClSw+@EaL>cb4vv!~r@JP5p372}f(QFAG#(EQ4VJLJDKpxj2uMB>B!PC1d zmsPVW=E6){!Diu3ryXbaq2*_RR^g4)iL8vr&jq!!d5FmbtwLxPQn*0pAZ$R&B36u) zMc~^Rb(PqOSiG{|`2Wy|cx%+7eL_|F8q_=ZRC$f^)$@Ppe78I-=(}hSLP|+-gXUXt z;mEjmK|m&%jQxdJzW3wA!`F=c9Pb&>gUWczSDOaUs52cUcmyVrg@wVl{0~M4oZ|rP zg)4hHarx7&l}P=ld8sw?;KX8g5p~M#Xd&nj4~lHJ~Jy70TC+$Sx#rwSUSJ) zk{J)e>zi#an^o%SJuNIk zeyG3iRixM;yos-{R2YOi`+!sFjEE{OAMdKT89zlIb2EM^d<r@mE(WgcF_RpPSm_k1QX2>j`WiSf` z{3lNPvHp|FOT^b?COPq=laUdVD)c6-HBLGMg({ zR6ad8O)up{DJLfGlU|Hm(ko7SWRL2R=&(Ng=Tajgi^|2%E=Iru)pIJU`YZ0+jh1i) zeXmmeC}w0o{*!|u92H4FkvXZNe124v`tyJh(dwybAicXQlxFiE)2xb&#QPq+h`m@8 zS}Di``Lbd-5fvAGC|=D}MVrB3k{aYm=|gVXU9X zk^ihyKb|Q+P0&`B%(qvhnuk_WDCR$k)GNG?aA1sUM%5JhD1Q+?D})#I^)r!$i{veW z^%ZZ=MO-1Me6cZPVzaRDI{(D6@`X#g@-}D4^zkBnf=Dkst6#$S%P*ltWRmW0WQ;IU zykHs9K&wbQ)jw^2SwQ(lDSAY7zWNhl(dwDD-Si%=bRf02^}4dJ_-(ZQVd2zo`$mZ_ zWG_jPo+yE4s8$<|ruhiFjNGoIzT?YWbBY|%H<%gAnHUxpjxQmEW899VtNyO8STUz} zb&bzWAdNVP(yGt~7=bX%di{9V< zoDpIEh!OOT@VoJZ1JK9bkM*5%1?y83&7mi&$Ge>LZ~S2$JO6nLJM-!5?DWUY?9_+b z*vWtViJkoWlkCg)*0T2Zeg&-IIMuS2`%1~XyRs-US{h2e@2nU`h+KUoi~Q5oEb6&y zI3l0DhDAPgHH%&%pw*>4|2FC0_`?(In=k&!PJj9~JN5B)*70EzJMoXL?8}xvvM={O z$v)rnYv5NLC;#?q-SUU3Ppyri${wEEmqjd&Wl>E-SyUtN*P$$O+chkD+fX*J@kSQg z^g}k-V`Nu7V`T#t(0d8~$G1)Y#vj+S^Cv%Lo&WheJH>slgPr{FCFz4dvG%=Bq3mnB zDgVECd+yE$p~~K;G=@bil4Ykl-zu=ZZ5MyD=dO30Z0L*WEbfH_cHL_?v+q5h!+!Ma zG}Qs2(pT=A&zg_E#>TulvD@^d=*`W)XI*EGv9FFDU}yfb5AEPB*$!TmKG*~wtY=@m z^J{kUZ)^POpVIfS9!L2<4(WqXW#?&8{-_sG=csR`>_k1scJlI1f2WFlxA_+Kou+Z@ z`^~v5`R&<3@OCjf@%2fbe)GQ@nc?N^km<>Wceie0UFSO3*)I;W&ZFc5w1Y!R zUwDaqNqyn(!Ure!{U)gVq=OEnoDt@K$#D1WB77p+{VxZLHZSX4@xiOdcF6M2Mfr1> z;iX&Ih*$1l*>Bgdl9p9$#8cy$Uiv%VwzJdc&hWH&I*ilb9eS1xZ~k#mdTu2C{QZT$ zK<*p%bw?X~@TuAkPJQ~OW;}S7wPQRu_5M>K%TM~K?0qetNgP2~`<*T&M?w4C6V0M9 zzA1G-vN?eb+-BhIKrR2fbJ_P^##gL%SFreoPK@&Ywm+}hqkhtwio-QSFHKROIx|j`L9l~uTPQ>4zaJ$4m!~nPElX@ zNREm7x3bg!+}v&XNoQZnrzrQQ=oeooS?JQf`ls=r zkL3spNBP68_=&0zhp>Mri`aS;ETw=BOez2d)U`11A7_ww{5`&KZ=2fyO}Yi@hjFTG;cN3Z==l%M(wd~p6N^1(6D z4vzhkb$<3Y_+U3X^T~GBe&B_W(26pPvthq*3} zMLc^I)3)EQzB$Xj={nE8K7Wqew&C#0%(P=RyRYSOw&%o0Z1T=Z7MNc2pYO4l=Z3M} zUkLv>Kln9EdcBfOd1oO@2GyolEIRbMru@Ct3%>f7W2Wc}C)qcr z+t`<%yw7&6U(NoydKugD=+A@7Ph}IJ_ha-AMJ6z|Phk}6_xvz6@P!|+!7mtD|83W^ z>3hmp$GOworWcOB&CICxk)C4aKJXO#@XS#*^PQioYV^_%*fyNK`NiLPda8fpjntc?{8(VFD+H`SIR~7VvayLvOoHvA?&J` zt?b&DZR|TQWwGHH@0b5;Bg(KJ-dB%-v7Ix^6RC4=gR}UOmkX( z(QSINx$T`M{qoDUaJXe3+r9Q7cJ}po?48HO8&Q<*Qp-+h^p5D+L)d^N!@BRBq_M3kvGu74&uNX55JfAp>A*|{?vz)AM?X@Rq+ zPO`5gKH2*&d*fFN*n7Wu*e`FT{C>>K4D^E!2-mJnVWXbEizRL^X9ar}vC4gqvss{t z&*yQ3QvYqzAKCRRJGQ6M2lR)d3iiCn4!pF5H7|Tu+9wfnJ4VrLxL*dFMlV(pS~yP8#4W)U-R_6uj_)= z-kykzu2#xt0AABXz9g%6^vf47vCykg{d}h;omZ8_yC$*XT@w}|6Z*d*6si2WaNh`e zbq>Fur@p5&2){sVz?(z{`gJG6$efC*A8KFbVR(y6{w7<*U}1>=@2TNxL1r2BVo^7_ z4irDdB{N09FViqhrdP|idF;yTO41r%zJBit`SR?WTRB%-&=`d6BEzW;Z4rBEa=TLG z=J&&HzMKNyEDD`he_vkoYggLbdTVkUBFpCg+jnRW(fR5td778=E>QV}c%?AcUQtaI z8ID>tg?e4gCl(>9L6r=uLZ;E#>o$|xYQk>P#zatYr#e(Mel?;Mj3Pnuh$X5hx<5V3f?ew;vHjpH~D7Ja=crdgV0QT9R$D4%Vmsg0^Y|O2UuYPSu`Bl!oa03 zh&b>@as}RFz73S#R922rTt?9;-f1r8c{%u7&6P-{97cSfIZVy}4rp=mH=q?66Ml!+ zs6xq~>~wM23glfLV8IPM|A~m7#be1@2kfNM&cfGE@G>$#gq=RQd`J|r5~QQAqd4)# zb(LZ!eh-++JxS^yuTj2A87buRfbdZsWGkVq8t-nq0xZODHuG}(%LJA_uqdrqXlhc;Np4G;!;+ literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.dcp b/official/1.7.0/EasyListview/Lib/D10/EasyListviewD10D.dcp new file mode 100644 index 0000000000000000000000000000000000000000..bcfc5fcf4f460e947853add47a6c1cd1da858c15 GIT binary patch literal 36504 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyListviewReg.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyListviewReg.dcu new file mode 100644 index 0000000000000000000000000000000000000000..44dbd256d8e8a5ce611df0ae316af01f782b87d3 GIT binary patch literal 11266 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 VgwTG`91zVRibVjNUNazU{|7`(**pLM literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyScrollFrame.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyScrollFrame.dcu new file mode 100644 index 0000000000000000000000000000000000000000..85685303f6e2027e9f972559a6d88ed2311a5fe0 GIT binary patch literal 16969 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D10/EasyTaskPanelForm.dcu b/official/1.7.0/EasyListview/Lib/D10/EasyTaskPanelForm.dcu new file mode 100644 index 0000000000000000000000000000000000000000..8b84e918b2b1dcdd450e60e9a1df30bd032f9482 GIT binary patch literal 13651 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 KL$^%3`~L&Rra$5U literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyLVResources.dcu b/official/1.7.0/EasyListview/Lib/D11/EasyLVResources.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f393de11729a3d4d952af1eca1eb2a13fd5aa1ee GIT binary patch literal 849 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 z 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%0AQl?!bn@^P1fI8{Kr0`2e7W-)1t zyMVM?DZMSzUOW?MDrT>RGih?l&^}>STW61v?SBn zvUuAr=ZlXq>W$HCj5cF*8Kc)2K4T0R^W6BuQ#+Wn4f-#niv1$zK zfR-h~7>UM6H%5UmYK_rsjCNym8KcJ-ea5(IjA3Jp8e_~D6ULY_#gVkt9+(C5U=b{XRj>|1o?_zy#Dnc>Vg%vJH~woScpn%5c%@*pgD%hmeBde=26*pO zCvy>a77UQc2*@Hz0~iI1U5FnJ?Os|^iT#8_!nLVZJ#h*z}qc@2I5I~a2-?ngB8pp9SS153?Ic0aRetf@!b_CO~ijv_8Fa0jv?; zZ4Y6DjRsNx#h6k6)tI+a0FCgG0=SAf3ZwuUh?@>3pUPHV6z;t{2W6WA@Zt8M{C?ou zsQ`R1aJRNLkAA*qyT0yr2y727l9PO2<8~b>ctN6E%KrBj+Bj1)i^?sy;tu!uPZCZEbw{V2Tu?rfB;3qZEx z6B+93K9pxA9J6Bhhn^wCpDhxrMK%ktMtB|sXN2U1G;p>A=PAp>RG9RkjGir0gYX`t zAg|sXhe_{GfwpfqotYt1QlMka)MRG;GV`B==Fa?Qpf7-RXziHY5)Q0^A+QAEAE9P} zwnw6@6~d)AXR50Rag_{;0PLnAq8f%Yj9epN7@2(A$+YuMo$P&4z<-FGApTKW9cBY) z2YsMl?9c~5Js1H~VnUzC3~7Z2=mkSy8I0lA`WOlXb6^=*AEpI@0x*sL@*k$D5i&7y zcLo_C9cDnIxJSv*H84u1gudn2@pdv*aKU71nS{5?R4rj7Qz4jcruwi4XDSkRaHbM* z-0T&N<78y~?ou*gGB$yGf=o?<2{I=1cU@Y){EX$ONis4?iA|7!aY}3o_Y|4B z4yN91#_GCg7a%xeJ-7$J=C<`-l-MYIr$Jj+zPe6Et}`{5axylJdzwtmfa!OevCW;v zFRv=*s2MUcLy1j08JopDOQz<)?0eP5M*nr7H%!DXZLAnGxHp`_Ep4n0Q#y|H#~CU? zaL3VzUvS5cHcckwxDflMq=Qu9ux7I80fR{L4DLA)5GPONl3;E^K8ex! zC1k4t+yx|F3<}<@0E?Rh5Ou6<5TH~QlVCB$SKtUxhP#Z!D?r)15ulYXor7R=c`QH+ z0exV&BTrS3URLJ#BMG*E05&?laP^#)ku#O_Abp)u#T~Fc-p#I$oP(WgvHBjLQkcgT7 z(LB{af(;Zwy(2&)?nV-C28{?HMe~kYfz*KpS@2246K#MN+-)FG2TD~l2{xmFMiQ!^ z6|~@PA@Nqw@@_RSx=8?O1#8d-f%FRFpUG3LB-n}uS{x0u;cg@GcF^{21(^ISQ%~S( zU>N%XkUB7mnf}ot)lP!#2_+0MS6$fDs@Ua~`?~5Is<; zdPuN`I?(M1(2Kj5#QQ)m0?6lpEj7>ub+ZPx`&cqT*l92imccrR$YtyRxxn48Th3!U z<$k7upa4{WT2K!fK?`UHU0}OS>n%Q?3=(`2%z$#r17iq`f^l#i%z*`fx4TD#m4C8B zBt&DhB6tM?uOVmz!R1?u7gN5aMCLP51~d52=O(E>G-AJ;;XoK(s2d;u9EAqw*XOdm(Vf2;=XM~ z7b+i$^)ZroQD`4+s2_JfN*)0HJ1M&E@~^%MHzI@Vc=ln6qDL?XfGD~RvkQ!a8L$X~ z72W#jofRFAzpLmh?8QJ7T`hFX2Fwb0Zm!X*(4 zFo>dsPPws#M>Aj=O(RLurzU@^=(nTjY;_gIUS-iRh(ZSvvh}`kU>DhJA&)mwc|Vl1 zVK@1>e;0X;mC44f;~{tsQBcERXs5!eWrWzOV;_OO`78J@s$>6Ew~8|Iy17-fLz7m~ zgV_&EKcBCLQS5L+AxeF_g~e%(s{dbx}#^WA3 z4C%~9Fr_n_#vBLInfWjW!8}+6VT>LdIy2lmjT-Uz`#Ur2#XxsvLO)AqChprFHFDG_ ziXBbJL#bxexQ6>0N*)8(Q1rX{gb`mrJpqGY46Fb-`J4#KKm!;9Ghh+KKL8!HfnHES z_=bWEHHJ`QESs+(q6fuPa^0Pm_%5i|6+xeR*5#>TG&!Gg>X~M zdnXZU0%5P?zK)>N;5x!?ySLPuX1d4CU)5H!7+A9rfW4y$>|5r4YiIuWA%C z{L-_N)ieT3C!~_N*Wwf6m;b}B9hkFiT z=D{2SZM$_9d@gvD&s_4|u@BR1U8Sjc7|kbSz=W1-4tbA%xI~UX4-jhh!-ZlU!n*L` ze6>K}1yWoD3#2NMwp7E;sphCf7%kG?7ho_?c9w82!E_lcy8{KO>QPAxm6gglHAIU$*mD;jilDW+S^TT!Jk}?T8Gg(YFpbe zIV+J}&P28}ftC0+OKBx2xeyqIB<8_Hm(n)M3?oz+NkxFLx0{^B_W@IO`6>cN5s8H` z*(te5LPe5PG>9ZQQT=V#!QirshEa54DNGmxse|#j<6)Wz;$bXe+&1GtKGIYoj1m(w zU_w`%n5|N9r@%BFq`-LFwmOFHH&6D4{pFFN(qWXIm3W>aWKRWad< z6Pv(CRT=iO#1q*0X(09rgsB1*2;}_6>ei*g#vfRft12Q^B_1IX{lT637a?I^I4p;U zqrXtZ&w`Ke3q*ZTKIIEVs+z#nq)-d0NoCv3iwVZq&Dq{=^Wr*T=OjE>17SrBg&+%* z0eACa6?3k#!NvQ#RM`14a1BF?Z69$K(KnFy*ul7jPS04uVbGBqT*$tV_L+&JtY^Z zdX!q9Sb{<+09tGV?gkXx2pV=$@)Wxxzv`+xgA6jyU&oYrehNyD0HWjtXv?4gcP(fJ z!AhRTy;CLb$KO@*5cW|ZN}dop<}~IQ{5RL+cIZ-*dnBB$$vLVKr8Y8}G#Dl8pJO%R z=Plvq2dAx=Q__zNl+c}=l{MFJ~xeC!OuM+Yzz@v?J)YD~=IX3)12@uQ<#kh6MPeI|;U0aSTD<{55+pJ5_a%ct>Iy z37geM7w#?w(k=uEq1NYYwT%~vM;M3z(I9?LlIkX6H#z8n(JH?s?!n!IyEico6K%n8 z+u4VglZBi6vTkT8Ev$<`2#5s5px}ItwTjty9*MyiSO8&vh#(;Pe6s2#@m@wQN!VFg zw6*BpXLYqaqnV<@0eB8DO%s0d`}D!YaC>B5lsyWr zfw6u3W(Q1w$$g1-kcYAciS*teA3miH;?z}yx~h4XVtTBpeY#?=V61{vy+gf*ErTHo z<2slIGhi0XfqAe17QqrIE2Sp@jbMFWi5en}A<~p|hW2HvVcf%1hhf|!D0XX3f) z*6I)q&8-e=Rn&Xjb)XD1fOgOW`oS=m21~&D9ohhxBhC^?$36)?@)+$26o4ww47xxM z2*H1haDB)4wN=D%HG=RX^a3J0?MIE`9wigkz$h6J`j$PzRvGcpiEo#Ylq(D(zzeQ| zYd|tGi@7W`834cpm5sH@ZVb7JQYY2ahk{Q({!OG!5tLU61N2*U-o` z+k<_p>`p?La+}5slp75Pe%H$K)i}bBvy>e}=xYo!o3bnUe%Kl&(@SJJ{kak@Gi8B< zDW4P0==@K>VuHL+f{C5#ZT;a}^Irwc&40w2PGLg+GzsDm-8!5 z>MGXs@{`ifE@CYxKPJ`{tQF<_+LjiEwYL1IRdmWKI%5?z(F?+ZuBw~~9KXlLYjMvB zAU?W(Y%kZR>cig8A`BjqBn`h@`^|{K?z+dCFE1g2$66|v$R2A|f_f~g;uy}e;3N>G z(5B!tUS6*4DcB<_$cV>^ui#*Qjc7ThNi0aXxCi$`YKn|cp~355Y9}oQ?^wAWi+U!aZkf^228(Q#>1U%@f4~V7|kTIdUlFNtL_*r;wZP7KFCd{ zM$Hm%mel6J>`p1pRoq%3u0t~wqDalbXpYJ->!gSR*N>pUheVYrA1GJz1emAWoF~8n zsm^ z!^@9X$12Sg4V6Xu7s}n0x<>R>A|=CQC94I#)>PK$-}{bW;+!O`aGI`Untwu=%|XFf z#K3>0Qs0oVURkadkz*TuNk#q7}xWPbLDu_Gv~bH?O$0XX&!B$-O@lcQmXcuk_8n2H z@Lfge!n1{8WDVISkZGjqytM{xBl2;_sdeJ4Yri{7-j@!7LYNy46_~tkIAEinE=yZ9&FXO z%a}YTJTTq9eWAKgg&}lUQV{~nWFlKd;*LzJ1UsBLWhi-$-JfI?P3Y*PR6^^cr}0Vp z$Yll83V2k&LwvTZg><{Zr1;|*s*3PcNtuMFFHFi-)wrvPUws?#+diJDY6)MPludXO zzYcdD@#}6Qe#?^?s-E!mq+jR6Z^Yf0^tfuqZ00hwX6P*xYBT({U1)TD?AAhUh2|FO z^v4olTBurJ+LFX2)-aXsVvc($*FL7lnvjp{o*?q$C90KBtt8z_s5X*r-6`pvdwDvk z9MuNDwxkTrPo`b%xZB~|0ovg`!Kgh)Uq=&jE=!w-lBVaaYh4VOp{Q1-GlaQ{xzlA| zON4*Bmwhe3vlsM%D&PbCpdJi>2G9taK`RKpENv3^444HGAQHrbL@)Oe;wRI7H%U_6Y2bGW-HlWyES=&gIFGRgAYS{>q{xz%9` z`y8n9Q9dVB54?Mlj%(ghE23q9WU5lbCF3<*E`D6~5~7#Xdr7^I)O&YIeXAO=G~lLA zilwR#etk)WnxCY2oeS`Fipqup>s!AVLABp-%RIUXS(?`PbOq{l>F6;C%!PTX# zf#DNWpk^CXaU{82d;tdp&3d?VuO*gCQ^rmcbeb`&Xm|DnJ7WA&pkdZr}q$ApRt2 zVvd7Fa2?Eo6%c}77N`IXpbhkZey{|Fzyz2D>maP2^gscq292N{bOSHw2g6_-%z#C( z3f4jV!<0QJ2DP9C^norg4(7ou7zC@pqW(pL6i^1dU>rSh+`06s7c`e=h! zshhc&4PdN+sT5mI-lVTvwba2D&X5H04X3BRDn9s z2wFi0=mB0Z0ER&B8Dzv<2UXbXKqF`c9iRtz!4Mb)lV|c(KYdU?9hLMw(H`!pOWJD> zJQ-zAfLX8t61$`9bPx>|o;+zcbYHRt2>KAWbPSLtvE>GyWpzuIZq zI{YO0?WSBn`Nn^B-3eT;pRcZxQ=lW6Tp}9?2HKJkm+j z94Y{V_$|9@w<}%a=O_g*0EWOkSOlY=xR*(L1uT=k)R5nfO1~YIemg4tCXY&Vf3*Kr&;fdY z7Ysa~rdDY0D=cD`Y3Kd)11aGiD?OZzkw>j8thwO~z~MP;#;_gNaM&t_Ru*1rMPOEh zbK9k3R$*4-&gFTG+VDK94tIUHUV6a~Ka7Wn}I>|Fc46aNPtph=P?~si z=QMBZJkDD>=XgKoJg?!L;su;0D+PCY%p<%wbB5<^xV8T!!;ys!3yfbr# z2V@@MwV20vA?5;4!Zh&)%sJkBIl~(+XL;e}5#)N5cUms+Hp@j`TX~4rRUWja!XLD* zgK01WX2WYV(%BSF-*XJ`a2V>I3qQ$wDi85=$|;^pIm7!X5AzsGlQo2W7}^Ni!lTGP z4t)aJ6zN?j-Fax!$T5RCi+c|F7Vuw!whV2NxGT_Cp{)^T9a{RH^Sqq#7_Vhq;Ju2| zJWp}PS`Isdd5WhoPV;2OX`aJ4#RC{8c$?xZPf?uV`H8cGjuG&J!l!y`PyaFVANns{#EEN?2D<^_dEcrM`#Pa>S*0fe(W zbkM~60%v*2;4xklVBa4eBhW@;ALTWH)4Vb92(Jj7;>iGNG-d;S*JID~2*9J<`u`}m z{h#J;|1;d=f0irz&yuHeT+)A*%lIGV0{+LiasLD_);w&@Q(ulT5CbvLu!@IWtEA<8d!agClkIup*4rmDTlJOz-$BQAPW?LcF+O3KsV?C zzwS%itK?|}$P#x9(_P{&V*gEC;;th1TP<#(! z!Q4fLyQpx@?G_hrv7)%jOomysEFa`_n7eEcySqG?O<-AokUgI-yk(iN-4Y>;|@uZ))n z+YJ_JDvb6Xc25Rvoo`Ir3=Hll;F{Zw2Dh=tB%4dlh_Ka$Qt-&I)yC0wBSJhQ!ooY+ zAVL^tbLiJ-fY@p0Wv5-2w;Cj5m&F|@-pvln?e4Aw@2YIIn<6_YvWw#Gpak!p1n-z^ zH-Np>Zb|S?$yS411eHJHo-`|zm#VQw(*|~cioU17R`CRkH*pfNrVz)0O1bArRS&J6 zv9kfxGk&hISGe6`Ymg0*;4=kRaTkN_&JSI22i($vnw#^fN48Si}&z68tyI> z-3_|_f2-^~)r}synca6e%I>-6aW!zyn|5Sqf`cQNOMC2|dkP(VR4v?dz^c3FqiX3M zeu90^MZ2cRu2FXX-eb59*bgfEM1r!C4_lG<6sic!M9lc)G#=%N+3mgahy*UPF{12K z9{aSi>ui3Do9waA5c7aaPmWVr$(brQIorzBF^*YT$q80^@_rN3b;jAeO5#M%^+&Hr zPOu*-wBwVH?5^9p*J{}lZu{;Gx6dWmxtmD`?AARA_Ia*_OWtcgT4eX%nP4AIupjfN z7GaWVcjU#{9m#q2`E1o8lnlG;GukCD?)j24)DRd;<^tj5IJ?jvSK6mn5=MkRsFW{fri&IOU_NDkU}KD$glC zeoED+d`2~=d_=XGDDf%T5~VvO!=68zpnNHh+iiP1cGV*n)NsmCo&pHBb3d8t&?;@~ z>=8AQlEDr2!SoAi#&DZFo5tPgsiKO-l(Tlb=JbfNQe94&4y_PQM^$2~+;uOUTzZo# zPEEE8nq%zR_j|Ni_Wl@qsM*-799r{XkE%}1#y{2WPUTgZ#w5%*yERYQW0{$Ldwo`d zJ=vUWr=RtxhE%PTnX{%`Qe!mt6`ybxPMP39OgpSO&+bSIx61B4r>gL4BSISqruT3lqo)S!wcAqnT2=S%wFaq{ zSEXwHxoW((gs6w@#dMFbP;K{S*xj(ZdT)&CzPAuF2YQX;e*}{}q?W6GP0z+J6B@S| z-J5M)y*FWZ{oZi9Glrj)h1>Ca4nQ)ED@u*rTaLUB`V*RfK{ttALrLl6!<(9*<}@wO zo=QEeX^SbzYR#d|J2WdbS;eQBxT{XwMB)}h6P*aJA#_rkCQ8q=n<;>XG+o;#&+g}z zC0*lN(}D}PBh6IizO+DPzM6KFOUA>i@+ZDvGNPk4q($#&mDGf6ZcQ$5%YDiDAeS~Ro z%=YwS$eC|j=^2C(dpY5xSqMaiY|q(eEdDlz8G7MOaBcQw<}x=;)f0*GVTI)95LzIf1ZJ z7E$)Vhq=jQ6Kx3EV)}z>HT}HZO)bsJ%TXa23^8;)>G#EfJQbNyV%Ij)5cVXflnkk} zuDs#)QlsQ$zug{G9>v6$249zP$=`*wWw`an?W#-{)|-*z)E}4Lqy{s}?Uam6doC|o zjbsY_D-i!kGK zf8=ed!G6H5qHjvfDk7Y8pvm@$D5tq(s+Ri>*h>zZ7TB~2X?t2QqU=3GlxA@ICd=~CI3!hYbDDSXZz3;Fc z2Jf)U1zQzlnuMw{YiRzGMLe5NVs6)bj?*m86XvYb1cIB*0pf+*L%%CcNQ(0qVNa;G z%=7R*gHTc=QvIX}iNKqSr;zxa8~g&zsN4xJ#V$qum=n%4N&0`)PhLb>LzyOnV@}?t z9COz3Uv%87nE|DQWtljMSwsg*p#*E$K8^C7=#!jfF|t|Ns#wj z(~;r!)3~D4L{^Nw(44BKocv4$Iu-F#N)`7|A#w?jW)p6Qyf06#f+E=i zws()vj@TWxh;c--HXSydJStdB&jE!X4(zwB`~#S@;C%5*wYzMot)e2CB?)w=VCR0| z0BIZ$rBsvD5V>j8VkBFQ{@h64eZZdma5gl*^leVCwoSnn2-X$|)(uyga(PK)J6#UK zg1N8E1{xBXdSL{AcRM(-2zUBz0*8_X4 z=uoC^p$E1xGeuuZ2c7i-ZR5^h=&ADR!H4YhoN#OPptAlk#!d-kKA&SqR*pkDts)#! zgiCr%#XF>Um-L8A&#AQ2Lp`cEhueWb9cau+wj*+qRcnrxdG<^O%ccE15)f|Bq#V#w z&x=~jt{lW`a1ac8QE+&tTx$1Ui&2kf4_RMqI1t&Z8@m_3f^ zb<6?B9CFN2#~gReDfk;5WjnH_l1I^5l0Og3tJF+x8ggXlTQub+&FvA+E&Wkklpn=~ z=uuo3AH|LBQCylH#l7WGTpdn+bECKkF+nXkGORi#b8q{PqwI*hBY)d7nFSo8?JN%8ouj_x&?8PJ(YwFmN!tARYJ=2D(Uh#|^z zH182TN1ez!%E|R``&oWImdDSzk##sHjwxy(W)4Mv-0s!xB244F>^I08x?h&>yB3B%9gNcK5Kxg0f@C$k#q*4)KLnp!4XG(ELOW0DFOaeuis zQ|^y}o~E+y&r=2WJ435p6qwo1Xwy+u;ivDl8+h zoerhJ5Y4)sL0t7Ze%||wZ0kePFx)=kJoY>_2(KZ38jq+^zulxaPCAo>xsEw=f12&v z!7L6}5ztm3uP?1hEJwMqtjnHE+KEYEI zxJ_g9*ekdzaGOTyvDb0e;x>(wak!I>anA7x8OF7)nljNZpUpJt;f#A-HqEc zUXNXdyAQW%#2&jEcRy~^m_2qq?yI;>!}8e8xJUAt15l$z@(*K*4y6(n;g&8{ChcmB zD5ed1>^7oIlHIW89K8mg!Ot`fkKKjeJZ{r6Ja#YcCETWUcx)f;Rote9c~`|93I#~y`U+}V!%FYTlX@BLipp+gwf~qwAm^Q@J~{Sg&)Sh|>_;+~)rUqo zancBrPkSvPTt0E6t#0S`5blT*rWCsfn1-1OGBu=%U!~p{ey(3mkY6GEAJQ@fcx`sO z>2H-@61?2>a&(j0Iz88~kgJh{%XBPIY-5z^*apv;!n1B|n4wIE8tK^@^Oypq+1|!u zc5CB)y90O|DJx9zpMCBCR|E&AuvmD>WwKbvKvp2#Sh!u_VMbZ-37Sw8gKailCh}S-95261K zCV?%X2WT%zT1Uh70d89kM5b;(;Fq%OfeTjgJxA%i9-$|d8Q>@Eh6rW1L`2!G5ecMD zN7Qr)NiM?dfc9&PIKchV0fuZ&Kkz9x+ighWZDQ15O#gBkf}ln_!EV*&0q&&U(8!Zi z?*q@cQF|Xi)%J1w%T4r6F(i8caboO0^I(MAVV7dGS$%0gw_1M*4}Gse2Pschc%BM|X~Wq{X!}9%-7G zG4^a3^MFlZeJwJ_cjx+gg>wCYJT>WXv$Qhm_1GG={bH=jydC)^YC55 z{>L(R<>OD&ew;_uQjz3}Sx3`ZwTd@6RaUV!?Vci`$JkeY$2Ga&wzyJ@mr`7=&Enz= z?)WSvTsVWAWFZFqiW_a{%>vghUqw>whMwd2owjH9(xvqjGEyDJJVINFqfJFQqn(FJ z7sZJ7IAOElpK3=RlG0!f-Bg5I>>08NB33Eu7}ZwHbgwB*brkd6&$0J9rq?n1@f$3T zQbWc0YSf{PX;TCjMWm{U;=nw&ILVqQjv}AQ-~`?>S9Ry8VrJkk2s8u=-C?{?EKEhy zvhTq-DK+m8M6;Ohi(%}OTu`As9<@>|^T!N(V2^<2rcKwq*<`e#qF5z)Dy+n0I?^%Y z9Ww>Ltdb~I0LmO%l{Nzzt>q3%XWXnUNno#BGAYe~VfDE5Pk)I$)eidr>#C+>nA`zF z0fc=Z-=QDiddxt^V^nKNJ{&StSBXqUGweY!@z#*4m8ZNV=hZ+7wYh}JW0A*R>-4Bm zZKp;%w8Sotnkq4~wHaupDJM8)p<{m3G5LZ3pG5X0Hk#RvKNG4g{Yxn*nn+QSS}du- zl-wpb9fMRq{W(spI5K4+)4F3X#vXR)yox?_Uh^=8pO0M%jQx=hM5**cr&YnBzgESE z9#IvCGVSz3BerfYY|c35ajXAO`0mIEuHT7Bv;X|z-SH7$vMLT0*&|HAhVLx53l3%5 z*X-x*;zP;ygnh~GIQOzWm04-e{J{mxPuUgcUb4H`0+u~$FKI-)PuY|9WA+r2h3oJT z_cYbG_z?R~hfaWx*)z}!4zaxp&pCU)J#QD0W}07=#0d6{4&~W@o*-?l{g8hrr;VMQ z_RvexpY|N0KV>_Me$e^K>m`NhL*+qSSPmRINpoNxt)+@lL!|0GL}?!?SK~T-nzgFv ztW}aViF=)~(IWMbhy*oxC>4Ge)bycBNk+{cD&&GdHmu3zC(^h#Fx>u&1p5<(_Se#^ z*+b#>Up}msMAT&aVvb1o|MB)VFmYaKn&^DTCNbuK!2)DxLx51Y3aBz*eyWNp3>Yvt z;5H8BxCq#kqjm4l8d}3>84ayrbXi?S z%W4>1M#I(RN?a{h%j$B~td`Mzp6~mrDBS7p(fyM+Jm=>0;S#P~9-7r3DuI#mz2xmu$ST$uzzg7Ls!;jUY>0v8U z$`ajmM}?tQO>M+#66n)^jRUGMe=8Nb)X?7!Gzvc^bk6~(&Z|O=|ikuYo6SK zofvC7Ck?g-vc~qN_&!y-ZI`6aRw9z(N~PacCCrzta@dx|XmZ5%4@kaGKC_*dv$j0Z zS(l0*mM9l&)nfgzQKZEs$R)%HT`HBUHoMAn{za+?+S^2+GDmKKjOXIE%0y+$b_1h6 zPYuYoCF1seNBDpZgGlE^7#@fGKAJPng&o97g7HZ&qta?d(bJJ1Sf$8YWr-)tc>8xq z{sQ`n zrr5G2$TE9AFh{MW8puwl+{-4R)YuQhB#Lm7GM36QJC=K@yH;!+ zE0t6BbYZrmjT$g?V>3K!$M9fp5Mz#`q8Fzm3-&s>46_Ea39|zeTUjSlDobQG&|F!F zRRUI(m07Z;@`7xttd*^mZ=#qv$nyx+rZ+{6F-LkTwTkVotP;x)w6uFGuS$Pqky_z_ z%373fx16C$)E7?bhT64qPE^tqU)tN6loz3Xy94BgJud_%7oE9bEJV+yc z*(qemnX81HR+t=Na6;9#6T>~v*RcG?k<G=Aaio+HNb-w1ra^PAsj9tc8VeUX!Qe2)o9H&+7O~X)CC5vI4RgV##D_vC> z`Kzj7%B8QW6w~=p*pp>I4R6 zRisrxfTxOOz%hpE*P#9m!@f2ZP5bh7Y<|vtPCUh-bQRT3RcXrs+dj$F#ZJ{Zu~3z%w)NPP&0^wYqD;{-`{Ztz z`DBA=+Q&-852>;u4vwDHL0)rF4lUR$L2LHPX+`?RvE$5yxhLHx&x+BiMCm=*CZ1NQKd5yd4iisbRJPc*F!7Ath|AG6Pjgxxc z2``PX*E#?_2`8U-|4a#Bp6-33o~`YiL?6R9iyZ$&7M8Kqu>uRKR4k-0uq9;b2Z^_k zY6F<))nL2T>WeKdu#&}g!cTv|pNlbuCm=jewGV=^7+XyyO1waT6eIiS(Tv25XxbfU z!xyl^BRfWmU;_7zbQ{754re0_9)GFM)#IY@0&Uu=J9$c1{sU3NBhnL7#Ka~0}}NA32Bo9k|&$0wfVtSeMYTxkM8zW7mDw)#ILkZ z(Xaakbc7~Sm3mai2_2_&oYiqbPjy*$uj#m{YQ#GXy`RbAFHi$mP}Jlq zHEK#s?F{Vc_?B71bBg}ElzFlRdA6vO<aJ6e+) zRnmNvlxvZyRaM`FUpovNbiNiO3SIU z;`==5(VZU6*?Z~&e!Whd4?Kvi9NqYl@f|XF$}UG?CQji}wz}QJD)dyF9*!00sq=CX zX7yAFDkKvXkckS&L7!e zxY!lq1Etg+R)Td91%*=gI`sqTTg6GW+*V9DXXQ-YL%E=q-HKV^tXxsce?x9y6INUc z;cA50Y7=EleX3}wy&~i5acW}6inhK%xN1u=+hdE3u&Meg3=H6Go+S)J;I#a5ctv{mTLVXSfsS?>*e@Tp^f%xjPWPg1d{IEqjbV&y4 z|4z+ww*Dyc&5TgINdZj9({1XYN4}tizE3y!_TYXwg0h z*>-UMfHn5Bcq8JV=)VLhbfB*SH^+`16w3uv!m80_!+*RRB0F$<`|`vDROx7PFj+e0 zDLaraNqYG{6oW!OW*Dzq#qsBqqR4O`$`V(sa;F|m>6UONri<@!fZKq=sPhF5cO&+6 z^vnN0jLP_kZ75e_aUhzVXAv_vhtF=PQnDLLbYWAA@cD7(+|YntX~&YPP&PGWDqEQ3 z*Y83|7dDIyMsihD0CD523AC>(Lmqf;)d@;GN6l>~2v21XN`na#r`@mAW zoQa-z7DJsK2K(BED$x{|C8vNb!1;zkWxgQ+rd%#HfnRp01K9r>!y@#tdUS4gOPHovc5d2loF_*@^}}ijL;P62J4bL;6l% zko~9e^G;zdJCzRu3C~NAin`3skcp*wCYZ%<%FyXHId&Ri0H?3Z>C+d&JGE)ZV}5fu zrUf7WCint4aWW)we+Eg9(^hcDi{MTLb^*CuIfCgv6%1PK%vL*}trow^0eO}T>Eb%S=@=;wDX=psG7#bVFK1r44#z7%65{+Wq3BF2Wx!UQc_OXs| zT#W_P^u9#Y6;?Hu595=jt9~>4w3QLUWK-i&D6Vv<$}6eBa<9q5?CHSz0dl}`xL&aj z+uD5))QKyHKZ=N1+l(T+usYW#23jBZXL> z!i>WV7Pe!!uHPqoacy!C+032IlOfb-Ph6rL1NO%K7dhDo@dwy<4uY)(|5^Nu`ouF} z&{dO3hhD(y0xQdvAmVc-Ej9eeJh7y#+!aFXW_p9{}tdma2vESXCBHl81tDv=>)a{J!c-ve%Oa$A3bwj zPQX3``vP$F%z)fD^GNQ%9skNhnf*$hEC$xUG9X)D`8Trrl?$@xl?FNV%5@ofrB9B( z^0Ax(&Vgq66{GlT=)HgC4ovuLXB`1Mh!oR|f;2ys=H{Qursj`iXY+vUZhj>Dn;(ny zmvUsV`DbzhW(I!q&3$sY`CGZsd|htC9^3LzX0-H4Gq48O+VWU-!|sQDxaGPWfqfG8 z8Q>z^E3j|C?6l;`__O#CFlA>OWb4@h*?IPn^qqYw2haA&Ak5g=U&}e*(%BLyru{Qv zJ_P>rS*`Txasx585hM1;D8Y~aQZ1?T$A2zeKmJoFw>&5yNcii+P_wDqr1!_)%YM)f z!;Jm-x}1cW{&An22QC5EfSU-5IfvRf*C$Ot=efty1?-0L!vx_!cJ8U1f&UWR>*xML z?wo^MXe-J9Qw&oNny2Ud0My!sJ$ujh$pB)EoOdwB$oZ!*;Q@DA^PE2a z7|L(Mo=fL1$d&Wo%B}O)rSfXIc-kjZUd<8TUy#|a{zTed{aUuXdPkI@QthFm z!i6@btnR}~y(?GxUTqGKufA7H#pI<_l@l4?eoM5xdK2ax%ti4n1aI8ukeUVS0o>++ z5X2bH3u+$xTuqq==e}2Whtwl-=v8ZErp0bCG6N4{SPo11tYOnQ^eU&jdlA1WjBk^e zBX-BSEBbgx_7IN)u^_|nX};X3(_oKes1+N>aq3f;uHvAM!#a+rXhfJ1g8cTVxOl(` zW9rntrH16{2O&2vQ9o1WHZ~&gDH+HZi*V$f-=*M<^9R5h#zm~ zxZAMHc0$k+%%1qFa9B8RG8e5n{qugm7RCPW#5Q_|zw-aY6m~--HR4&dwxim?PP!a! ztJA;WL1?(f*1PS3_y+fu8h#7wPw?TYz=MYjjXR&m8z^-;{IRU*5Gz>pk2}wa?1sP4 z?aipyKf1C-+PokQ#rd^&8;99Qv~!7p@xv5R^z+i{lM@fay5 zz>s^PF=1m|?P9v(y6#V2K^B_KQ33xb+OQu>1}Se8K|Qp(kK}(S>JRz-P;y0bL9H9y zl&NYK-{nF1cLGe8j(w=3d~NY@Pg|grqAKo+F`Um&zn+Dvv7)TtdtyPE)^;({ z@V~0o$xwSa4utGDeWhqm_|OWxQY=Da8!SKv=t^abs}W5+LFGI6(c1&{7sQASY%wsQ zeb~AV+m1-HD__jNg988;L`!0GWsOUn@@rhYzjnPO) zgO0^II(2NifO9pZ?b6Ysqff{F3pZpyrwv|c6N6awjb6YfJ6$IyE@0;yS0bk_K*G8r zPtIPzUZJ8*e0M`UgE+~YXwx}9N3oVI#h&Am7>c`u`hjpF*2U(_S?DW?Q0#sO;p7M% z!QnC_uHx)s%hRW>f4SDp&a2YxSV&s5HFN++20s7KbpNB+>iv@##`<|U&MG(6;_x^; z4<=Q#q8fHCIArW=r84EUvoia&JQ0k$0bcYGwTjHIVZMsHj}h;ltU=fa*6G8L7MZ)N zg}1y$$py3y{8aaAkUu}|5P>dm|E^$H8+T56Un_whjtZ~jh}A3TO&H7#SoDs^4r1In81xvWo^RCV2~GDN^k=iE9d2`8fBND_gJSDBJkD8^F!i&}#N$ zo>KEqN4ao7hZP*%P5V)E7^W_2=U%P*p=|nM8;m__EYL^|$T}9xZJul;0h8k1j2t7F zFKWWbJp1FpnE!wkhH{xlf#BkSZKEv)ACbpo6?KR9Wt*i>s_)v6qc`6B&!lz^X;iQ?nv=>^@YmEOf4nks898pR@dNy|m{ zG^`QcV2{G>IP@4dV)dWKVLe8Zv^T2t-j;`F91>uzs=aA>PjAYTUR;)1!JyRxTt%gD zQ1m06lqA`kh}fzVpvLK$&M;^JS4 z&A7XA2|o%7CVHQ|$wSz+i{ORv@>Mdf%~P6=!el(nPDit)oAz2rBVm1}$^2|ytdfem z5#E&cqrv3~i1Yd(`Iq6gOOtLd)3L@~CtGy88{uBv-UGW|w-3P%L47riF&!u2Hw`oA z2JaA;lVDwO7bz={>Hn@u{0~RPe}J@rJ3QsABX|o&X~(fJOj`RnX~K_Ssmj``WerRV ze$3R1xZQ(rZ#!=Fv|FXW{gNDln_{x09cyoplWukA%)5gJ++VjV zEw3Mi`FrU`n8}SM+m6$LcOcf(o(ROV$?z}J{gZV6B>4A$RfG+G&+82^S_Py^KZsj& z;tZWQ1H?nfXb2e%z5aJH1RAaSAqrK4KRVZ-x%0<2O@ywE6qjUh1FrvV{{m1G=HX?xak znbeUh(>iLEw2q@NnP}b=PWeK|W@*6X9ZeXcL@|KI(DC=O76sUarfN+bU+sm`fNiu_Wln0p%=k7Ewr_b_p3m?mVSayE$gKRHzs(3b#KS(2fS%SO5H((mz)O4N9?2|P}k@wA=s=!;JY`J7*ZnE>z4dj?8 zyDya}-Ir34BGmLG9#vEJBtq~FKN$ni-)nh#!CA&P0i~8OG_rtkt$y=lJm!5+jO3@| zEpB{wzSs+GLywUvW)3kep4 z!T;gvhQFVObvzR&hy80gbopx_crL0NN{%l7ThKOuHV^)+pIqQMl&lSSUe2Mki>!c7 z{$Q;2QLihPArgstUB8?QNnqaE$CVt^Uu&0L?jVe!Zy5!dGQJBx2My7Oqm_)Vhf&{v zc@)8fzr!u*1ntgcijnPpht@8fqZi<~rt6%VMh|FOyEGc+73eynuA;j4C&=NhUtlGX zAVXa*$dRr$m60wB_)iu{Q$yEEdAbtnf;dw7KS03|#9q4!*$XGS{#?#>eJ2-z>s=j) zj*~La6I4gDvfh;d!=*0N4qZO4hZP|_2it>28RI#tE;f=pc{1BWMFu#$_Ed{ywC(Aq z4JuAP#Ysit1+2UZaqWgoKP*bX8}tGvv9i$EX6eEUk@$=*?9!0V7}DwX+>*VXpUOdx zLk@dPLXLRq(BP=c20X3;MD8eoJ-YE_!av*)8|8%OrfBK_!>S`kP9w27596wR0(7`) zSy3(*J&<5RVaF3nltmBjGJ7t8hTqKy!*&1x6zI;$DB$sp)^9R!#K?Fo!#@xtl46s{ z6aUGAkOsNs=}>nmlrNa%P6|7@*n%9jQO}emC|jOi$&@QrJ!kMWE}@E1rHi=KqLl_3 zYOX*Q@yY}I;u}!hz$+ds6DKytEK!sRd?;6N2B$jTTw`AZ-zHox?Hix*AryIriWz;yzX@K~~oWPL` zc0-1Es~p7+Q=|D>*e+LLdC8NkJkbjKu;&9Ygyy)8)*R?MD>g5kQ{%@LVA$z`c;S^7 zNYpfl?8vOcR~}M z#sc2}@%-7YJNPAFX1)#v`s=q*LD(jHQf2HL;flKuDLE@8E#m)m#D5X~rZ*t)`bK2% zb-uw}DOalpA+!o9+e_Nm>U?AOhi6IG8|PGBKW=fl-l&7w4a8aUZlDi48}%kB6TGAN z_Rt01Fv{Q?7$~uzfsqq%Pr=N>EWFVWK1^6pO9bU=r=MU9zYc?UucH#eh4kIxZ$yY6 zV{pF;Q>tw2A&$M;A=9qnmiE;WrTFSU>nHv>IPuSdy9$P5)nWCDTQT-J_c2{%!dF{4 z8)fTNd$?q+S1srdln-a=+LhL;2mXMG6$sp|r%dU)iW?|bHy~tt^@^Oh+AN-83ynK? zCfv6jL#M^x5jl6Y19E5Q#J8+LTrGh-xefbT8!oKIx8wf3>b9%*bLXz|er_(pcJJ(J zei!A+)r;X$ui!^z2Y9Q)D4GsIhtf+}7DCP5ix4{a9l66&obi4q`uA7iGzfwm>ZuI6Un9h9u#DoT z9mQp6j#~`dz>27>5o4+sYyJHi1N5kD^0w=#hXrUL29J{}#u(gxM0$2>!Q(xOFNXaz zHlpM-gm7)tv!_-DcZml<%!_wp?nmfl=YH=6*TFprjO`{c<^{U|-*@y1`$^H7k6dFDgUxh3A?&Mr=e?bf$E@`B!QM_3qai z;o$yc>3#EFc-Zv5NxnXR-!J)d zZ+d@}=YP~12FHr;o@*R`3im&vk%Sw{Q*;vwf0V#{06V2@tI=ipfcG$@-9lx2fZoOy zoeZh6pNed6pP2JHL=(D->rLFPd2_e#XUfSpBj0`UP2MTSY6}fj`;Ff!lW+c3KiPy{ z0hW&kv#J=aj^I8;rDv4OZ=VL-)Wh?unBNgW;2SXPzri2GCS2n{Jd8{j1(fJ?7Tzx8r?W)q27kr7P@vHh%6JIKbBuFb6|BSf@d-72n$c-la1UX%S`E%I+E0CA)|1)@{NC{8I3h!GUN!^Z+YC+zSym;CB^8Q<%xr@FyT$kF*pVK&0^7`X{BtK}WIrZ(-xJ+9R~uFX9z<%U{jJzmm{ z$mdPEp?%(@8__@8v`b*R!Owd^G3_C!x#1AOH?S$WS}ol-jM57}MgI+~h0*wfH_DYD z>~64LW3O7p)34#goq)*VD)G6FfF%ef)X{{$#Gr~TDY&;LZ~*)-HlnF8NnR^Bqs&41 z-!F2+KrKQ##K8CBn`AbF;0?VQgd4{dy%S(Z2b~lC7yrBX=4n*h3HKKWnWNSCU%U>} zB?fS~@FGqRq0*!mV#Nb>T6W|lhUX>-KY%$mnouGJaG4tYjt4gyl8hQ;=q9q|eT!Ci z1f@f(t5aKC@P^j?+T_xWNQ+y#0pZ&{HM@0VAUsQLAz~{?_SWvlYkA8k-7wy_B1?YnTik?jwD}gJ zHJAKdY7g?hh2O&OK?#~d#T%7ol^l92vWXdr#0Q&4-38oK;}0=@IpSk4jQB%);!nP% zHJ-V*%9T0T)sYjbl_3c{dLR{EM(h!w;)u(@NJHvUXARi0VA7?I}FiQ)sJKmW*?L7?by`Yz;S~ zKV!{qx-~cRl$t$(o||>D_a>4l&5?ndkxf(JW_Z)op#*N?4#4j<*f0g6Qp}X2_$kkB zHp}^&jdJy7iL!e0D2B$fXz~~LY~xmMmLjYf)v0acNT=1%>P@YNa^%j$Y{d95ktt@)ZPsHJ$0Bcwf`Jg z0>5+cdjfko?0*J)Af`)ii@8!LV=lDAG$K3?cn;<>_(Sbup#z3#h5dhue7GQmf^D_a zGk?e?AF9Gn=Glz}2D^XE*=fEb^aF+sjzoOdweh0?ov2G6k8r62jgmK_25z7|am=75 zE9OECQ~Y(bgSUqkFksb#NkYzOSn(AVSYdDQVmr`)lWl6c@oCjsE9-sj5q(khKJG`; zrORiDEYDrO=w0DQ_(aj$4BlGEQ*SN!(Wqx|JgjZmc%2LdSGRBctlGVO7joriJtDpM zh`MGCudh!fSlu_aU-9~OTPqZY`69i*@5@vCQGw7Wyc-xoU}#U^q_153PtAC_AXWSv z2NVZ>DgGHpjJq)w5nhZ7kdv4!(%R2Ne(j=NtmNp4wgNB7lsM(Kmd-UbS(y$wiPxXh2q&+_%liN5B>+eh`8w~{=J&>H1jif>O~;8tW~5x8|8n?_7#H?ce^ee#^rByP@bpcwfPg-L;^ zgs?-|&1Le|d2~03{udOfdY&eu2#?D7Terd!;QTFaW%AXlfAhC2=x1QY>-x~TRbVJ75k%=+mZ98~3N0p4X57LNV z<^vA=9)lwSOOcp+8*`Hd{7DP=>JTlW-{jk9tClYH%xvvG_=RwX-o`CyOIyTm@@*Vv zSZ+g-0-HEwHBOcG7An_+n5+f0@;21@<>5Z@eVqNjjpL(hU|y^Ce1zf3VP0D#u5#=W z#8)Bkr^bOIZ-UKp2I=EFV!iMiyZB8le6`n6jz|M& z^zqMd`+;6$%#G0CRfZ=y!kTVl!FJ~5^R#{FKG*nDc+Kn%lFq^z1JBEOYIOmFFxJP{ zcnZk7kkH?AjV}f;Yweghg!_?W*LW6y6%&wdE@R35-g2J-c0lS4Y2xQh87b4sw7Ov0 zRBd8q*|_PUmaXnNcM0;SMqUXx%g1?1=K#{ddd&96S?(AAbk9S}&ee>uECYiJniR+`fHQ#`Hwj zN?K2JBh_jq3HNQnjnw>u;W*{#LF0@x_^WDzclA{3HHj~chU@LAL&=UR-kyUr9HYEF zxK;myhGP`uxqC2$>=~m9MOqKWDSeD``XOEjnwlO6z3F2V{nC2!LGwL|QBE;SR0=9L zr$@*@k6n)R)XDLlGvSUg-UETEeH4mr1IMfIxrUdC%ESFlwc^8#lYU%k_}Dcn?*%1#Syp4Xrq z4}!uW;I1Fv5WqMMI<1j>0L`LUV-%J^L+v>|@34w#tfbuK%6QM7@f6C7dd|uXwg%L3 z_C@lic6xLM065tgE+9}6dj}Uq@8rl79kX>b>u9@E3&qG*S+BcW@8pS^?87mWkQcaF zE`Eh4kM7{KTn(iJ6Rx$w4Jjnw9iw_Rz8W@d&6q6v5u{~=bBlMhOY;HvX_;d1*8PI; z(+ZFXksOU~^p1A4IHBXzodo+{uZVWl_6@+_+Puo?&m_ z!Da7vI%E<|28;=&45kLA1;!2Ih3R<*;;q1;chnRY?)<%~9(toEOX1r}Y1z9t4tIC9 z%3~RMN1xF#^1cvl)ao8bn$KWnVCG?#-hn{hox?Fy9DQ>{psI0Tf&88Up?q4*0HJsq zLfwa9j>S0=8I$^qDdha?=j2t zbLB#BgmJN;Mk3>b5&CrI1z}!nGg~9OjF3;7a2Wtg<5Jh2MKt81$Iq> z&mlv7nRw(ZL5>1FV995^n;^&gs+94*3s4G_2LquK4329C91nMXC;n$FK+tvm>YVOd z2+DNvzi6XKx?JchQ5O2FFt>4$CRcHzgukG~j`q-n$wI`HBg=mlzo{19LqCHvSaX^E8Z0C)lA{zl6yRc`mO|CA_BwH9)fdL6Y|vB;Qr z&nq$SV$pP=l;StA7gE$F>D_iXG3-O^CE&>7Gh;I2-S5R?<m-ZG>jd~VAbugNg99{qf+0Wqq|2~%oDEo6iHu9?@7VYOdn#*t2j0@ItZ--GhFwd$nTz z-d*wAD)HMA*svR{fFRjD>^&02e*^pFs2snC=?fn7_bhVe9+hfQtR-L0-*e!g4_YG; zzIqS$lyGkWd{?=7uU(Y&cYwZ1%3;c!HWp57SHY_3fI9L_%Sz1tz@aH*2?-d;hONRhK2oyWm$if zQr2%3zb(Z6j)DMlZ*Yya=HJkT!VcRxC4wGz_>7QR%Q&?W$^$+ zabRy6$WdU>x)Om0#j_W*mPY%ZRlzH|rP-xxpjL4WKzukNH0>Io7`0veHXQ-#&ts>? zw?aoA$XB`tpyo6}+^rHj;HxF8lJyT*mHvVJD6)Q)tPZ{rGF1D$i`H%D)>f`O@VA`580GXHWf`aj|}?<@US4txI6&v1$edJC&0=deG?c- zvQ}>Dw90#0oTT@Pl%)3}agyF+oN6(DA17n)MdCpX&wEzI@E$*bnzliuI}5J}4K_od zsoABeQE3|B6-DC)jr%=ZLekQ4t29;ciqK$b{9diPG=4Ao6Z%xjO!42(DLxSYH;rCv zr)Y8Sl_-OI=m%B$3-FDkY?VRe9^69~)C(EhC4)*JRLaC2vI&*!JbWXmmCI?QHob>z zS|z&(-w2siE`V%d57~lBRt4V(nO&~FXB8-g+|*IIuep=%H!4Z@BQ>7{4)4SZXW)eQL+!=cP*)|FH1*Yo*7} znq;x?LQVTc>GM~Im)kynrsDH!`nGv0&I>LfNcPq|D1sf_FNpl~;2P`iYVnTN=uIJP zuzdYAyG!aqIfSy}bIFju8uec#C;Sc-XVe@^<$_<+#J%LV$Q9Mjl2pkx)m|kxRAk}7 z?{@H8QJFOHF!mGB^W?|NG5(`4wQ>h(#5`b0&&VWvdd8WxvstJYmVn`SP$RE~)151` zReQNKJtz%V3aps_-c)7Jx^cv!%}BW@It5Yes?beYV!C2_u=``vWz7R4D5#(vht;Xl zg+!Fsk0P=~dLLM%PtAwFFGuk`I0^%8o$y0PO%Jqo(f2WtC8{BS+g%JE44T3t-; z*1_ZhO~Nqz+u1PYE*-|Nt3?uEnm14&rvrAVnLnv!gS#Qj0#{0KagW!^G=K2>boXvJ z>ogTC9Db%~I#v&4meq8a2h(AC&(l+@dN@3s|E^opx*qL@VA7s%HT&Qkeo2vBen5T4 ziE{0M724O?)Gc!R0Te;MuW3wAd7t4qGW&g~>wRBe*;u3#!5lZ5-pA`fK(~(F?{oPA z8HV@mzz#XAyGM1LROxWx^M0nBQT^~-*!$I>Es<;QTUFdfHej-BzfTSF=YZjLP3#A( zokp4RL6M3E6)m#t0~VrD*6Zlf(fh$U_(NOW2kJm;zMr5Nz>CmcU>p8GA8&EX^L}KU z9Qhzmd{ZjoA3_1&2mF?}H2nc~br110GSK-M)`1^13p3nnAAlzbyA$@hdPi8#K69diC zOu)-T8niqtRQeOJvn*8nzYDl8{}6XhAL7g|VxZFWVYx=kX9aRKYX_`Z(vJ`|H7!K7 zHmh$D{I6M}5&TEcj6BR2SQCvvo!bbU&%(|I@f-T8bPQNP&d-qRNW|b?7z&L_T7lO9 z9>6ToGE)zwzOjm5;YQ@caJ6mmr>ivT?*h$T8UNw)e)pu|2mG8Ls;$IZn4n}tT1m@? zkyg@M7-=Q$53Onw>HZK+1W%>)A~`mZ0FX^1^dT;8z|N*I4O-GHeuzd3T>B7>6>ofP z0f&y4%b1U#5wNIKrhTOT%CwJgWe80n?W6E-GJS-mV95dl5pNBGm`$M`$R^+dvI%%U zs*?VX&^r^=w1<%vAKM%Gh5rg~z|tWXKEh}R_loYn^^sP#*nn2Hw1CCA|Zvf>8)GB_&++Cad1CfQiA4%z}Ky`&4 z3}ERUh+b0%Rbs68K&h|yv2zVz>Ai<+OeMq8dzY+QP6eX~n^c-ActvQ+rSoHTh3)(}x^A5+rMkj)g7~==cI(GQO6wl_ zR+aude4|qKAa~CmGLK4j5xx;JtLz0??;f&VmFyCHBV=|t1hSz$WJ5aHP&C=-$5nC) zWLN@Eo`~*qb00_g+zejl(O0mGA8UPX^5W9yShTi-%*(QQ5UQN9xUD7vl3J|eLdzLDy4$h1dAO4=T> zG?lChz7eu&X?|3qm>)&Ab+bxV3*QJ?m8^M$?cJkDTdz@RZo(@kNM(rM^b&ld$Wn%?qiv3eTP+H3a^#%HXW{JMKs z$MGSp9Z#$Dc=r)WVMd%s##|xIBdc#PoTkdsDSUY-Z($S@(M@Qdd?X7t~Zs?H%G_1u=sfAwK&#?FVOy%B>BHhWy_vH-l z@x^t?1-MsW)*qM1t;aVZ9>j-Cs=>dfFccp$`L8$@r2Hd zmQV*fdHO6auMG<6{Pc|C{InLjY0>iWJlCiBF;uL2vrZWW#3bg!3+$yX@QGk6Rec}b ziik2fKYfUMA^#+%52YhGEJd+{sIl2O;@3~1ak*W5uZ4Xd`F?N8A(UgW+#yFl{YpOj zv_scE4S{J~4Sx11wlMoUfO!7~_XcO;@hPxO{IpOEcR{Vmr&Y?vr#a$jmRJS##;2Kx zg-fOTb75x;P$TFisJ;2D4L>$rrhNv^&1cx>e%1iBI62b!nYwms(V+7)Ji&~mkoTbl zCQnE zLS=5aT$BxGiS1!1O+J(e_hFc`!UOl;9u#LoTC?#fPvve1fCI;k(b}a#Sc!@}J8^^V^#X{SxFRs{I?hv@@I_`7@i4 zNg2GAC;u!no?MisCw)-VmX6<5B9vpqI^j~?5G%{m+{7Z8>R#0fXtWl!+t@Dn@&1;4-{yNHd!6VFc)#O83KbUmq)o+rt&`^j0^`vgq{ z?<=XJ#~=tGD5k%!H2eg|#xLM~A(BKSU?vfH`pK_;kJQPol+f>&GC2#$73gY((WFgy z8yNy)*TNDf-{@)cp8K!mHu8)4TrHR0YLh;{j$=^m0!~tlRiwpG?g;m`pjoL~fW20Q z4i9zzyXvYT(*lhtd;N~c`p;{TPMzra9FN*W-XMS!*yj&0HsLZ$%@eSvU^@jt133lz3j8qx$=S~fRT?}TrczYJYZ)RNMG^1?hA9{(Ge!M`!aNHL% zXCe*UI4`^@{?Kc@X~8{$3YoGsSRytf@0lKf=&AZ7uk-|yVW%<$+&+W|b?5+;Y#fl% z8@#VFB60cB8{`(0wU2Se{SZ@738tVskQdQ}0(bq62u~2=TESh0B#yFzx5EhqgLz7D zPvB$_GH%FSyQG*Wma#tJ)hX8j2*_f+^23OJ{s+U){E_fK7C#k@>wA|_D-3wwU#X7Elp@@BAFugZI3@I<<@8AS;F9#0>J z3FDta4}=?n;_gNW&tJt^!9CH4tL4aKP39=^PoMj|Wly{CeXfEa8Q&&Lx}O%Rn%dEc zy|7YIJFGphQa3xS{-+K(1QUW8dy0gMB0bSK3@EG+?3zM6*iP?M_XEfZeabd85Eo?4alr_eWvU$+?# z?fd+d5Q{&^w2i`6WrWdZV5UPyHp~}WkWn-u^)fuU>u}GCoqRQr;tFjeTnM$u! z*_vKu8(*pu<}l{j*sr8Ab`&yX5I0287ct>Xeg*dLS4P#2ww>}72Kh#a_I;Hov%h+x z^kdp81I_}QzUq^1gwHf<;a=F;N*4tNy00MI@Kq)ZT4Sda^)XnVsCFw5*GOP@g>W*U z+dUzchW^lJt70OA+Hs}1%8u1VmKcOCNn9dSTVXL2ZIr=`Lx~5UeAhGwFz;m16yp%? zm~=INtt{H-QXkdAJ11XR!6OXnb^;-523D2Y z-xt1ua;tnWa!JG$-JYp>^DBJ>z~SfH>S5*1S0yqwWRWSM`&trslne5;ZVO~Upf`l~ zPuvzhI30GEOLK_A+=*iKS`LiUdTMSLgmsE z!f~0!0@DQ}l^uvcJ<1Wzc+8HNbu#c;MgX^JpA{ye@~{d<$D^IIXtrvH%ENd~adkZ^ zm|eaHZ&~<4c){dDDB25I1^Bx%7=kt;$Y^EDOc;n(grHv8k|`(P@8?^Dp~yTn6>1Pu zCF#mkD0(7W1Yu`0Y7mIlBiFT`#&<;4L#jyQHhr+2bMUvuetli0z+}UizfMrhUmsCy zFD2mC3C=UI$(oBls3g6Vs$fX{i-SsrZc7IpdS;>&`$3JfLr{r>%Kt7!cT57FEI1;X zR3G7skxC1a)85=V$Yd2hRIv2oL1jY6Ast6_WK&=`U#lPnboA>utYbZvqzv!Wu|-Fh ziXHLdi$B5g;>MpqaV_)#{fUtKZ{h!+ya4wBQTW1bI2;G>{JT&0{mGXjKN|VbY!(8y zG8YKjnahNo%qc?bOB;lgm$nFLFYORAUW&~IxL)dg0`R{yNEm!+m=JhrkR;Du>LEU_W3XYl^U#)k#>*>L#pZ^%B;zf`pB%QNm`{IAJSmlCYiC%HL3&-AO3RE+aUz z(+Kt1CPGto4WTu=n=qIidj~L+okEz+&L+%dn+fyTHo`)7Jz+81Ls-i85tg(22`kwF z!fJMqu$DbaSkImyY-CRnHnV35TiF{u0CUa`p*W|Np0=EA!g5Z`JAjp(B*JP=24OA7 zL|D%$BW&c<5H@pK2wORB!gh|Au#?k6P+s;EVqV^0n(;3$5Sm_IA+)~id<+(%#cEuGGr5`4Q9fO!A6)h)Dz|mt%P|)Ct<M%tu%|mgEN18#4$^MiZgMSVm|ywh&xKFTri>A#@u31dnlu;5CK_-NrG3 z&p1iwF-{YDjdO&4<08RtRN4W9#&|-&xK7U@;}&7qm`2Z_(L@Lt-GmWi4`I~kCyW_~ z2;;^OVZt~@m^4ljo*8Ri2TU1T2-8M4VaDhs%o_cKIb(=0ZyX~m7$*sf#%aQmagMNT zTqLX*R|u=db;6o)i?D7~IshBSV#21;N!T)`5w?v6!j7?tpqSi*7?Yn6YZ@ZNn?i&n z(-HBA!MOjCq)(+pw5G)LGpEfBU$ zON4Dx4?p9MX^5cYC-DQsx6@|}dK{Izz#biVRBU?x9}Fq>~6%;m4$2RIAT{D7JQ1EId4n9x+< zB(xN`2(1Mkf~z3*eSo_lh0s~h#OU4vH=(k^U1b@LaVX$DH z5GdFr3>EAUh701EL$IKU5Gru7@FN8t!f3$|J;w?b2;&7ygo%O`!eqf3;aR~3VX9z@ zFkP@im??;P0GKUEBFq(}5#|fB2@3^Y!eW7suvE}XST67rRtf@y)q-KdT0w}gUNB17 zC>SSf7AzCC3bI)f+XX(BbEjaNo-u`H{-XFoCn2eDiI7t0W0BGdLxhaN2|{+^48c%n zVmwn}4Z&RKA`}-+63Pl^3AVyDg0rxH08nENz6Yo`yXa~$cN1F8L4wOXMsS;_2%YA6 zg2%i}@R~OX-DZW+edZ)WkJ&)zHP;aO&2EC<>>~`C2MGc51YyWLO&B&W5Q64aLdd*H z7%?mSnWN?;!kD><8BLhYte!=)ldxoNA}pKTgcWl)Vb$DESThe3*3F}Y4f7;n)4V{~ zGOrP~%`=1@^EN@T#C`yXv7``UEe1lorHqhdsVAgZT!b`>mylr@A+%T~2(6YWg3B^T za9frLot8C%$FfcET4DzQ-Ig?h&tf9G zgrH@O5VC9$Ml62jFm4$pOjx}1oV4^3o>^i$0U5_r2-(Mr35MfNg6Vh@!F;^s5}^2a zC!y^4W(T0=xPf8y$EOHQ#}^4L$5#oh$7f06J-$fjKE6WeIle>aJ?jhEE(c=cf*zp>|`0;MS#PMt|VC#4jK`ELe z#1^^U1f&$1-T-75%@Pbnu~z}6qBKHrQ8A&c$jLBUk&ECg@)2r^0)+aaAfc(qN6MC> z5TUiGmEbCxAh?U>2%SX}r1TW6(B&Iq zD#{=%7Znp$ikb+kMFGNE(KsQtc$yGjyhunYUMHj!H+2Kjin|FJ#ePC|agbmrZsGdV zTRcYSF777u6#EIi#UVm}@g%`tyg(Q%&UgzjTUiau2&*OTmjOv9x(O*K`Uz<#f`p6{HbVA^QG($_SuVhIqKRNW zkwnk36VI56^TZsX=EMr2{=^oc>BIy{T29OmT2Cw!Tqm{(?h|QDrSn8AU7i!!1n-F& zLidTS0>HBqN+DqCL_A^oL>gh{L>XcBL=9o?L~yqhpmzVj7ewmdcjm@79E=F3;;xmdnQSSnAU=W=jfxDy zW`&usRk29eu2>=LRBZ4UDc0=cfEcTZ5NjLVDe zy#$kWkYKis5Q?p1gfi)4EL9vJNq^ZR-YM$EvXE6x%k#Vr=pBjI|}v zGv4M80D5gfLceW{;I~Z?25s|%fNhm9WZNPP+mb#81Z^fl$mS%B*jfprHVm@AP0)!P?h_Gs#AgtM@3G22+!iH^)uxU&C2(V={5w>k* zgdJNwL9x3CF?KH@*6w746nhIH&Avs*u*Wbg+wNjF4A_H&A^Rv{*gioB+C793yNxhr zZz7D_eS`_SpD=0nGnH-oFk#0&LQpCv2r-q@gxJajLVV>4A*phUkWv}Ts!OX(BV<&X z2-%fo1Vd##!BpuYm@B=6;>vioa#y8~;I2#~cq+{VZ>68mT{%MVRZbClDmMwel}ZVq zzcPd1ue1>cD_w*@f*mSrETMiFl+u^8VELLF~RAq zA=EfWNK)@?p{vR1A+$Jq39Zfm!Q~7Q+|ETpr*n(oaTc>az0Mj!w=+oizdE>E7-in| zj^jZf5Qr5B1Sdft5D1cTdT2ZQJU1}x&Mqu3`_OjY(w(P)b7;y*NJ@JU2n208Ep2H_ z69fW*Kp+qZ1OkCTAP@)y0)apv5C{ZG=lfTm{I2_Dt{IklVZ~OYBV$!*NUBLQs7oto zNIPgsF8XXqCsJGTkvdWcy3&nePm)M|DF*}T3PZ`s%RiDlFqQ%^kz|-kZJ0?5e$k$! z4VmO2tUsu^1OrS^AV)y7UZ5Mpgym_d|sAqCeK?qJRiaR?F!O2$KTmh zzKuxtZ!>s&bNwI1?;far_e1UbouB#EclA$fuHTDr``&>2_clDf_rM{B;1m;Zi8;8% z3ZBFkJmLUeaR#4g|JuecdJqsp2#N`W#2mt61rf1@s5pTnt{}t%Wa0W#8%1~^E!Mp4 z3t|tdID;wfUo_o|qrJu^L5R?Dj7<{g~@tZ3Zzf3}Yb}#RQCFDokP( zn8w;Liw$8Oo53QshGlFItJnqBF-O~G6Z60}w*6Oyerd z;$@h}8?cCXU>P65Dn5sGd<~oU9=7ol?BX}r$DMz)ImA71j9Y(i<4n}Rl{kVs@qnj9 z3p@#L#m1YE!Ivn4Khc0dq6fjm7D5Tn?`^_~5JVC=h$bo^C0Za71NM{?6OxixLppJW zTw=;tA+ZKE;o}=vBN2jTVhydt6gr6|bQ66}qJClwgTxGmi6e{>Hy9_@FiE&rFik{Z zmdL?8QGrFG4a>w3R*A|VZH|csoDzHf8dH`}P?4`tl^;-(U4LU!m;KO?L(r7VmQ72p zL0eXS+H~Y5sVjG&C-8+ip=x%FkUlRL1N$8eCBaFn-jlFx9K1y{JpE3S8yw{VkhaF<(*J>&s6k~457 zkKjtW{?^8w^uklpL(!A0^IYU)8*eSk`qvqD=?E=`m~Z~C?+3JPP%ESl9ZsD z%t0+_K|NW8MzRmhq>~0)$tP$h4=nE_eT;RJeu}+h1p3J^oeh!&(l8m|+%3Kgq5Lv| z%1ak&FLS8BY@qS7gyu^HrY{Ycy-2WlX~Xix@f(}qYY;-OJ_x_=7>m4~L4Lh~@)~8V z`6@%}RfYCzH*Rxz9l-T<47b;E!sh;Z7d8$h9J6sMX>ch~a4Q9PQYzq48sJsB;8RB6 zS2hq(&Ja`_Y#mZO5LWhV9Z}8@RRR-1OgQaWzwMy%c7f{KgmtyI z1=QbMY~6V4kj8HnUO4xA4W8cn;CWwy_x%XI_Z#@%T~V9BdjNv(0z&U9gx@O=d2c}U zeG1b162$ukRn?gMG>&*&I@CIHtUCO1T+3r*5=+O}V+1TdD!~)Dj-4GR@onwF{hS zLD7@Wfj50*oj)BS1=0}+rn?YI4% zKutHmOpn1z&!Ct-KskMfN_xZ{sUHC-e?+13Aw%^e2el6q>K`>|e6*nX(Sz2<6xtsP z=zPrn!Djohg5Adf_8%j-e4Ln~X0Bjn9$;nM&o;%37s{CcR5D?xW*$(>xW3ucGahJU z{Lsv-f4N>}58X_Qnf=TR2AKg2GZKt46&Pmrgl<$KlzXWf71HSx)^DL0RK``&67|OdLoDV`IABAW>2U32*Op#xJoZoAOmDULs%VDj0dIQtyI{Idv~&l+q$d$9W)!2WXshfg2t zj-Lfm|HrvzGx>3c=?^Ex*$)rQe*|IiLx$xK-+$P63rfevUx+}Uu!3M=523;t!i76T z3Jw-T3n7pS5fB9ll!BKj5cZ&t_Y=CK*#7P*q(ojHw=|tA1#xA!w>m zXsJ19tE+-dN8LhKJwQ)ALtnkYKz013%}{m2NcF;44ZuVV!&H@ErYbO33$RcvSgI9R zsV!KmUD&8~*s2Qc?$rVuR11!31y1S?&ZjZ31C!1`%xuQEd&9b_AhaLDpP~jiLo0 zt%V_{2`Ff3P&E}ytqhh{hoUxnw<&8KQbijRe z4!W8bdRhqjngs)`4nwU2BW(a`Wk%t1^oIQ0(vNI6VwHSbQgqmA4K#VMD;RAdIN;s0a@R(T+#cav_65HzJP+h z1yw(Qsb9d--5)kZ-4A8`L9wDg=(DOvDAx2G)O8aYdIg$#6Iyx~+WHVW`U<-G4tn|p z`uZIPx+`Nd)O|40B^c`knCMQrp6W%?Os~US@4!MI!czBUZC3h(wASaa(ND0|*Ra!f zu-C6}(48ze>OnZ^5}fq{T=X(r^#~-G3F38wjdcN5XKE;;{l4{&D*4n0OX81@ArZ+1l5>< zX+#*a33|m7!szj_QM6DG_)&_(XVWw>L zm|3>2P_Y(JwRTXmj!?He%xqXbXj%biSvz)VTWM0qDnQp#|Ho!xHDGG>U}gp5#U(gO8*rBP;3}QKUAn=>=k^<#Y1S%yJs-+^-N^Pi@deA5hp;@}HOS`n~+4z5V JfWYsp{|DyiSX}@B literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.bpl b/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.bpl new file mode 100644 index 0000000000000000000000000000000000000000..4938b7e3389b6b567d972674bf28cf4b6ee0e7cc GIT binary patch literal 574976 zcmeEv4}6_xS@v_PwsT?ap1e4&kyA2tHTFS^{l}a7HtJg3drZOSuu6bw!=T}L-?r1WKTl2h4 z8y9Eym9un*n>=0}hY!hr1j0lDW z8wBeG>jY~BYXqwWs{|_rD+J30%LGG$C4xc00zoCXj4FZlSQ1g69O!3XTh&5j-t;N-!mOQgBr8gy4waalv81 zq+miYF4!a3EjTOon-QEAoDxh6UKG5bvHjt2W_o31<>~i@P22PISo%QbpK)hw?%iKc zzUqnBsmd0$GPL!=H&Grk2fqi8r!&vM|J~`K5_2<*o8K;Je~O&#nUBKnO;77~?A__) z?U}d2{V{rF&f-d#hIlhr+oJ4v!TTc;S@K1~wI5u#e_ea#Ww?4+$?Y&4?&ogGd>*qcknT7u7P zQ4lcj%$5M*V`RSjt505EA{YXGtN>n?s>Neyf)T;6V1r=2V4YyCV2xn4 zV3lB{V1;10V3}Y@utYE@SRkkbm&6{6f(wH4f*HZ9f>#7D3(g5%5}XyB5u6sB5=;wT z6uclfDR^FRLhzj6S;29^GlHiDPYI?3PYR9-o)8=nJT5pam=sJ1#szx>y9Eym9un*n z>=0}hY!hr1j0lDW8wBeG>jY~BYczf_6MDMzchaT5^VKhYGq~+brN8qhU;Jih+n1hZ z+5ciD_%!|ReX^jc^a}-5Pi`vxLZoWblT8J0eEQzf-wi$VWLZ_|?}iH=dJ=cX3aZ{{ z%J$vqgFPR=F|4{*YP+ATT-j2B@;g-a#Op#pmE86eu|4w~isRksH$M1a_miQX-vay7 z&({413iHyNpI*6hRPs(;hbc3)f;EEGf>nZ*f)#@0f@Ojs!4kosV1b|#T(_Xj|;{H#|7&Tn)Ij>tQD*gtQM>itQ4#eEEg;j3<;J91_cWQmEf|(za+RQ zxF9$$m=U}xct!BC;GEzk!CAo>!D+!M!L;B-!3%;tB3Dvy<^f}uX~8MMwBSX-3xbn^ z=LIJO&k3Ft92Yzzcv|q3U`p_$;HcmU!4bjZg2RGI!GvI3ut%_4@UY+^!A`*r!FItm z!B)YDU|6t0uwJlEuvV}}uv)N6uu`x>uw1ZAFeF$a7!)iJRD#R*oAg-{TohaooEOXp zUKP9|cv)~x@RH!H;Edq3;FMrm@S@-a!AZgMf)j%01kVbN3!V`?EqF>WC3sSBRPco0 zh~RO-VZo$eLNG4aBiJo?Sn!Zwr(lO*yI`AOt6)ShEZ87eFIXp7D_A2~Em$R3DOe#` zE?6cQ5-br63Kj?|!DT6@OM;7n3xe~48NsW9R|GE$&Iw);oE4lAoEDrCObcEVydXF! zcwTTq@SNaT!EwPef~N&f38n;33XTe%5F8PVcbfd46g;8vi&uhZYe(c>O7M)}dBF+6 z8NoTh%MY3`=L9ba&I-;5P76*6rUfqwUJ#rVJTEvQcuw%F;JDx!!PA1L1XF@11xE!> z2#yFI7aSH$3MK^Of<1!Wf`pA;C_;4#9T8Ho;cGh+tT-L9kx1POw(6MzC72N^o58qTmI=Nx}1i6M{2>bAnej zVrHn6Yzian&Ps8KsXJ7x1rl-p}n8cfmJ>!Bsg583L1rG^!3U&y#3$_Wi z3PuFOf(?T8f^~wmf;EEGf>nZ*f)#@0f@Ojs!4kosV1b|#ToyYm2`&mQ2#yQigy59m ztl(wAjNqc6I%MqEDcB*{F4!j6Di{$A3pNPW3)TtN3f2f#3swnM3RVb~3zi9n1WN=j z3C;@62u=%538n=v3SJPL6g)3DA$U&ktl+rd8Nt(nrvy`iCk00ZPY8|(9v7S!T+(>@ z&M@YvoZpofhi%6hTu*~~u$(ZDTINc5Se?B+tR_JhLSZ#g8CLDUPEh?_VO4uuSk1%l zF!(OLJghF``YLGQ=CI1(UIX}NfhBi@)zr(vsuKM5plZ-Cc&2ZKA9zy09=H>rGR9F6 zRt0z_1NUi=x+SdYaK8dniR%ck6FjH!+&Rz)XdHA3aks(m3j8J^-zi*Q1!mx00G)yR zET{ys4nu}Co|%F>f$LF*1DuEZ5W+bQx{T{7;0$OP*Au|2z>AlKlsI-x^y$WM=|uWez5Cvy`cA zP5lE{F?*o5JJ}OKR3RizImpE|a=j{QjwX`5{e6efnMp7zaP)xi8zJ4Gwlw$0`v)2j z0+xGLdXQA^5N=f4pw3`&AlloP9PB_SJ>aTF2(_+I%2mN`C_Mpv+TeWw+PVWNRE4dv z-lILq0#sM+FkKvp={8-d+TPkf@YVxeFk8GSIzYn=fsf?kQ#YxtZ-_nKJ`j7fH})8r zj)Q^Zj_qc(V}HE6c_0=|#`e=h6ssEv6*q}x>wb&c-rhSLix0NP2KFLF#$f{(WhDsB zT(OQ+sN(ki#86^itZzs`gSR0RoocT?G&H^gq^$fXFh8^0SOQZD~iWRD~Tqv174r+Oh*uBz?9FsqOd21|W#o zlG?W-uJgV`*`l`Sywizc`7FXAS;8Wokvr7Z{e3z^!;WMMAsdq1OfOPJ`}>;Xy}`@6hq$cf1ErS$W3zd zyp*y>Vo{cRn5hamXb!d}x!HbL$2Sl?8X4$MRDwf1($7GU)Sc#_-!-K7~~@kA|R3c{1* z4&migAEhnQ|5#rQctY?exp`_SvMG^+gAAw~3?w(xE0_bobTCm5jx@9;xj9~`w(alR z*FQ8EV`O#Ung$2S&2_iUwXgrt7{i(c2g%J?CjCz4?Z{Y&1Ht)iSQZF+kth~jN>0V*`^glpQk<+^OXOPDj?XhoLS3|h6 z_+We^)5GdvsI-*n#7L$+^KY;RT|bN-V-l zF!ImLJDIPV=$sp0#Epj`H$C@iY5)H3Xl}=5OZR&cG7Ra!{KN&Ok4o;swG}xO{>ER+ z!zK^R>(mO4g_pod$;_Z5t_EN1?U4mQ2SG9$S{W5?%P`rlH)d{=!2Pd zX#4F~*uLoO!aVrCDe0si(ku!Q^UO=SBP^3m^yOIVFqd4T21T}D30Tt*$1GxtDt zcN%#3K8N05C|5~U95)!-m9h0g_Yvp zBA?r(pW`#Tdj|%SZPCGGKsk?TX2@Q7cUbM*+Hqg3E7>?O5PduZtu8>!Fb=zK6!rb9^SGpF!t;=vZIYL*eiF9!izeh1F&(2|^>?O^cv6gH~!N4$I(& zCP4+kQWE>A?g94Fdi#cAK|1ao>P_kk_I*6krw%hrqi=Ihtm~1E#}hFf8jJQJcoxC3 z_w@J0Lb0UA2YQn|2NKb)SRp)``iFyn`=Z^w{oZgdIN{Rz2a=D+O}Iq}cT$HNAKcs3 z-&cap|AAxCc$|(RILKZMyf2nO>q_sAo}pt$`l7vYdUy23W4yV$H-79ua-cWCn|lU& zyS?$(|EO&%ohJLD14n!NTDp%KDOd^Afn`VR=&@K+wCjp3#GJ069UxM;^kY%8zKIK>nESi0j?2*2DF z{@!EJqp|k>!Cnqi?bL4vTT!ehLFEg9unVF|XcHisM3c6UFYNOS+l=QAAo(J_1IQm% zsLY`gI@G~#=Bbj{V0YtSSFEqQx9{k7IMCG>mnT@1+u*Aa?sZybhPx;Jc%r8<-h0%D zOPLG65sVEUjhe*5g_hJ4&{(>i;cVC8u=sdVrwx9EvF_ylwid$u&265CQz!YX=oX6` zz3c#}+b9^e#=4N*wRZ_G5B3>{zQ4B*SYdDRFd`3j%B}Lq(A24~`T$|!hs_!!$ zO|cDWw@yxT!>e1>YoMFS&wja~+GdKJY6Z{c8%?^$9*UyQ)Z-2_MAt^IEHBvBHnKg;_5K4S@9X-nLoZ|V`S$s|pz zga)tIx0yZNcTEU18%j1p&{j7$Te^F_LXM^DUkjTUeSI=AwJF|M`Ve@;CI^!Jh%UDO z$iv7=T4-&PQmE1iu5Gcw{y`mKtUF|1x0`~y!@kjqLE!)jHF!B6fkIuR9Yd%xaZ?8J zrmXi5w)Ud@_9SE7I`o#l=#jWw@9yuyK(xD*5AE$ktrU%8DAuh*HYO3q`+Em_@swt4 z?N4?Lpe9G~s0R86oBHG3CR#Ll9jN|e$Zxp6r>B1qk$Mt!EZy^Cb{@*M#o%TdA$1Zw zn@yXo^Vy(dDA-Aj!W#tw4cC#O-Z-l?UmP=xW2aNT%=3c*KA2(H?z)A!%4&<57FWRl zJ$sU_>;m z_S7zqa%1W8*LlNxLvLTV9bOqci(|cy+=ChBXnZTKIG+=bK8~;-(TU~>t(#$)dXK8@ zi}pdl0Vi=8?qTqh#JZ0Sk^?=7qdV!)Q^b0f&!5^Cz+Y(UbbpwG0R{$}TxPtIK4!k! ziIXL74*sRFBVB`SrZ(m5hj!oRbMJH9W#pHMN8PctAEFpiVoS(mDYA_Yv~_e}Z+Vzf zChR-CccE&CcXZ!ku&p1xobGbo&=mw4CY@>I*&FDgON(h2+(DX(pR?mb14wN!8o{-7 z;X*rnU+gHlgRy~Fw-&8A+Se6}H=7wq&INnYvF0aWb5n-Mg2`8H&%w$o!#5L4@*u-; zB`=+>)TPsvxE^iC(iLI5K5^+YxS5L7!_O*jXrmlWp{S~Z=T4L^7F5;>&C#wNUyV4- zuuVUf?T0aBfDewPPvL)uY5(kTmuWfbP*hl2Dloda0vt=H8I|dG_;~ezhYzH{!l4z> zqv0}cNS|+C^pTiU_UNZF3dK(F5;zKD#~wx3v>33jx4SzYq2DDg_u1y>R>pg56oo_yG_^xVcT^mJ?MX$env-sf4rkNu^nBGX1poZe+&iS zF^>tx(q|c-)8}uDAMGE&DDjxK00SKd0~+rr#-Ux0u=|d_eza-m2%2uX=(R6~8ecoy z1NO1BYDU<%=r$AULjzcK=}SiACfS@!&6t)ENeG!5BgA8|f%}H~`cP!qh71~RxO{RS zLfC~BdBPqHFwoQqBSSMxkxPaFCk;lxX`)O<2a;@bwow31UZ6cM<+b!}?&4c9KwZ+7|Z?K5pgtXnrA zCG=ufmmNiqO0ZpZiygmdM2;d1wxKCQBr!}iiRSJi3KRupX~93 znmW!fO}@4|m)tP5!)npscWq`_0vlk8;= zjHvrlK$r^ym4PgM%XcI1${c}oe627C0}Ko{X#kHkkKp3b#?%oPBJz4LA;O~)@loA* zgBw+<8EcioVX9N(-VV1jG}{4}Yhbnw&YU7oQ(iM3aofQ3qXQITEIm(ovw6&T)wWc| z2;3zCcZsFCaz>j9??JpW*Wt2(33D*Oz*61dDc!!86%U(z%vKDJV#PMFR+b9?|$*w7=l{Nd(Tf8-s}fBbdN(^#Eb zY3H*g`q@Y&NY?YyeBRhu_X|z5;nH_y{`Ri&J)eI4YhLlbm+g9G)?+F4dOTsd?aWeWYwH~;Cy-+b8z z_ni9M?dSjCV`Ig+!WePFxTina`w;3*7LWtIeUE54zVW9ES3md3^gW+^!+SsU?oYn9 zD_0m(jt(Y_*nocaKiUJ|`P&8$N&gnaaPo*f;KZ zbQ>N`CGl)9)Y1451|E8yxaCpwI@IQ1;Q`Ee#0Ic@ptGI3rxGk`#Ng!7=wMNY!B7zW z{simfEqZlA4ZpfkMX-5?Kg|C#j_W(vJJo4}{RBu_6VaBu5&70nxH*XH2YVseaM51u z&A`|-SZFHNZLZ0Nz-B}cY(@{Zw=Wvk;&3s8dsD&-sK|h*ixO>+>n1Iio@eEHhS|tr zWGj3@WGmjH<=yIt8z_zRN6bVWH^87#Y(n=d7VXOtoQo^msWXpj6nQp}2rE4_o1|Hl(p=TR-k#gFF`~Pnp=j+UB$lVe*(E6x1^l z82^eOdF?`Z#5R$3$a1?S3uZ$(%rw^4a}!3a{3SbA60DwLYU_cX-iORY^0p4=IusOh zTDA-n+r>O9H!*b&aSsoEx_p$}3q8t357XzqHU$Lf)x)rF&JO#9DI}=>8J|_w^_cM5 zs8V|$!o5lKaKe3I)PUW_86VfvS!eAYh{f!f^47VzY8AU0S!9?uNSJ6CrBl9+(vvgT zg0|kinAI`{tlhXp6{cXMZgb4OZqTSm@pC$Luxwy)@bj8=KDWaQw%h?u{>lA}Nu8xa{oNV+&$4&Jci zA2#*dX~u1p7sPEk)6H1FdcLs-unQVbTM1=H$V3@S2M;2?>m^TUsW=g36wTjX%Asgh zXKh!pJvo_kUNczI7*F&>o8r3vXQnyacWhzV!Q(vU)JHI`yhxd?^wBcIP+a(Uo>?eh zGK$_ZY?&#rO$TiDc3U@XacDbZzt;O9%dLL09lncE9{Gm(@HZt zk33K1mA4odnhdw9#`O;%ZmSM)=9f(5&%bI)r5LWIlO7y!{^5DrFDoC~38(YXGUGDy zfu?@tTFdT%e(rmTMJ3Vlc5QOihrz&sq7D;+D#CQwAUoIoS|*Hkml-ED(g_*N9I27v zK=e`Ukomz$fO@XrLCA26uh8v^@f`gd4t2&HF!_#F>eLE%2>&&nq|zCpF z{6pz2nzN{*sW*8nnh0&a~qQQRH51}GAp`mAvMpR} ze1&U%HK^~r(sjpb!q_l5R)cb>6O8i)D^6eKmbb;Ur`Al)lX*5R{JLh=a_4X6YyLRZ z#(Y-Q<+8mV&p1`$hBMph6%>6;1;wj871Si#3(`rc|UG^6WI}XI9ir z+0Q==%F35^rZ~m$%G}|-5LtaJz07zd-#JrR-)B)}`HvyoawESJ?hB(snsG^a-N5wN z>c)rsWe*`tscX>qY+(4173`|hVXSaikB=}e$;*t3U4wPxp1@Y8e3-f!?UihqXI131 z?98FiDZ_XqO%Tt*h7Z17NC${%*p3Tm%^2%QzzIwscK z+9K{#j9coTjZLj(M{f0?G7MAd8Eb=(G2KR6@GZKpm}A>k*7}*9^)&8%=9Xw#_qcDSsQ9TFj2tzZ=0;mF1@+j(DUl+vs#&c2sLkC%QEpOV2WH z$vYdH`pSxV)rl|0$hNED7~+yPWy8~6+0m`qrmQ;YMM11dFO-`Z$|LE!p=qydSv-^B zIVZgsw>8IvxLf-W_syn`@=kMp|NW`63|s0yZ`dzPpQ^0iN!J`xT5F8Hb;rat?#XJa zJQG@Lt^BMu;YIUX6JA^lVzoU(xoAI`>BF@-)S)&U56ym+n6)&c6$@Kk4 zjTh7NN1Zy!xUbW3w@2}U8aJA+BVJWXE18WCJPgF%$`shDgNelOW|B4f*2*%ou0eiN&pwdvn6Gk2C}HIJBw;M$gZ?q?g1v!U8}@xYQeu>HOm z)$-rYG4IVpY;S^6__2bv>L=;b%v0B$9j*GkY1ht_yi*%$o1TVRb@NcJX-{orYxB@p zx_c1uA}{NBH!@&fBkC-Rs#Uhd*z(XYoLU@9FHt7T7Ft7-@_8$_wQQlb=&d;J9XTq{ zX(glzJZN3!H5vu9QjQbEsk2GQdSge{y97q!0u(Ha_;Qu@O(o{ljHaQ79*PaPGn#)A zJg{AMf12|SEIAc(6mybQVp6q3kmY)PcEkpE(E0aOvTo%D$+7eah6(*RZsj{&-X){F zxzp(G99xlVZjX^r{?t6-wnpD`kXYgLwOy|i9bsf7n(=?o1N{{tix90RO>L} zD>LzJXo@r|gXNzfHRCSwc&B-oG}Z#nCCXB+W!d-;%O}s811v^t4X}_e+8?*=zR{u2 z_Y-q!n(>-5Z8p-vtiHuEt8uZXgtIcPr+Hx$13PrS74q!RX~68$g!gRw)P|~>fNZR? zO5|!)8%rvyx3TmL;|$qxT8rBoighO!*zb?VhhjzdM+bVNeaS#!V^>!!VQ;dw^ZhA_ zI2HM6#9Ly=+tSyq@=tyHQrZp?c1tlVQ*Jl919i1fQ&$ay9R(E+pvs7j3l2F-tj2o`DRkde*s5B4{;p`W=y`D3)yTaQ{H=-S~%J z)2NpRQ{i_YK2z^f=k+dM6x*%W+N&3-vy8*mNzX5!7iRT-^Sw0WF9+Loo=5i4+o|oE zHE4yI`}G~Zx>G#@8BDo>p8n;NygeR&hr*x5uEk=Cl^d-EmDC*NHT9?^ud|%;eU*qc z7gsD4#-a#{@9&mb0x*7u$C7sB5Q6V0V?j%Z$6is)Km2 z*#?()eAy@0;*O$?!wbviD4iNYwEzbEgDB3IGRnn1fIi#=Ao;a>1TJr;Vx&Ntah zJ{!vBxm4NMB9JAbH5i_tY`1uA>|F-hP{z(FVD5z>OA^!1syhKW?7G0oSI?(L@=P=b za_z3Pau}^JmOjt8O?|tOWgK5N!$buS&RX{(4rQ(GlCn+S$SSETaOf{D1)(u zZ<%UiQUt9d2d#!Kt0u7xz|5s2s8}19x_q@coZa3$A zpf6^}hZBSNx~FWd4CI^R)rP4UMK~s(`>Z3fb zQsM3JsMTLpW?!f5NyKaFw;aoQ8)^jB-`81nk7nrv9yc zuWg$RFOB)CzpT=DO%}!|u76<+^=pQ5->l2^^I016iEh^$sqh%WHGM2!xYxd5PcSYs z&yD`S*%-Ty(hvxu+~dIB?pVPC_?}20dy;;&O8G1b183veG{A;6C$$Z6Y#Pt`JEdCN{nX2J#V&APReN7;xn*$@Q1uI>Vuj21_0hU)wb71N93)JRj6gKE1HNQ&)~BvgE;uo zjx&$l0^4*{RBuS3{|*l zA_sOJ#K$Adkqym51B3Xuj;#mN*s!q(yeBSii|$yO(GdNOLzTKvdb z`^b9nT&*h`?8K3!IKjBv$;*7bg9X63qs`2WK{NA5MNfiK7vB#(Z?Wv{=*e@z)=?nU zf1NshRj~gtl{?MaVt60WD6@8l1?6Ry;pDK1wx=#DMfv(Y!T(lCpL=_HuDrlvn40-H z=zbIP1E-?&DhwwEqRDmbs4WuS(hhUclI+q)DC+!o1#g6>YCeGQLlQoVh)I{cmCvqi zc4&M1N|Mo|yZ7I>ud$=0qj_iHzF2qf&@tXT(6MJFjYKN+^9Xwvbu_iz_p4=~)aY+F3Ra!9x~9}pr{@{U66(-npr%Lm ztgn^z@5~ErYcyL!oR{dH@17%nx2oY3)4|ARHaEDW%$qCncl~mk#)_S$8B1Sa+`Brs z5V(Qma;4u#^S>IFVeh~5ObmCe6=n3av^VyIdhnX`2O%7e70mOElWYpO- zfhiHV?VS_4G+GlvsPEE@!}JLw=AW`Bkl$Cldx9KWx) z0J;kPO7Q!?uQ+=v*6cvm_Z3_5Jio6velyOy$1~RV6-V*x@GS@f6a;^+?<n&%@mf|C6BOph?gv&< zMu>f}WBoY);xvwFbZ*ehqcCBs_rzSKhQa6ljr@|=oq#(5`=46F{t4*ewtpDzeD*&C zxqp!MzlivzKre*-jhVT;G?u3Q#O}O7^QLmyeddYu(z72A2GkRgs)D64{NYnUhs!*! z5|1l1Gc)s>2>r95FN1y+goIJGk3aN|pT3%meCEg})L(r4Yl*Mne$btyxK11QZnxi9 zI{C|C^?$%^{U+dc|4zbPf*Y;qte!?0yYf-&a00RHje`n4)~L%~C(2U~C;{TPP2=Dh z1xd z$Q~7BW}HQWfs8YdkuO2Y1 z=STla+*vE{Rz)JpEGpZ}1zJKbnpYu=qSZVZLC$Q9bK8Bg&HCJFxM}0H^6@O{R;#^e zINPY}tK+z5)d{A9Yfg`597XOM6oOfGled^{(wkRMBdr`qhyi1>k=ryD@FhR?{!z$Q zrd;0i4d75C^HrGCiKoJv-}<}YbC1JK{W>8+zC4smzhy*g=_fC@>+R!4ON@UIw&Zs+ z^fDe4X$H~xv<>LNj9(pU?Wluu+dmq{9rH_k6m2%h{d*VOmAJ8%J`LNPvfEi=+LudP zBep&}bfAo#3q7I`+};#8hqgRVr1E27gzNk|eC`IgE8!jd zX#TWWOBa(iUYQw}q>bByBAr2WTfI54SaqY*G7OuYfvp0N3BM8kZBm#f#wW=5O#-ph z%4ILl$Yy&njpL=$2&H|y6UrupQlPfWb}$~vWWL~i0emN2e2jIADiJ=OXE?~<=D;@X zVq=6Whf;DJDf=Qt&Jl0au%7&!Bp>K3aXuYkA-|ZN1qtQX!DfHVa$8h z!vqtqpeR+b+IqijtBPL@pS+1^>#77qFf#nEN8Qc_ZEFJmi$`SQ2Stwm0tsjpxB>`>+}(r~ve>{Oyv2%oX=T#IupRDz+GZFq)zPm%I?v31)y2hNHsvUB z%>QLOo#+_tW^ajOi&Fu%h>MLf6{uqUS_nVC$l_56o}`P1`F{(J>E^2=P7$vH*I5@A zJB)=A65BU^d$Srmms~txQANVTSGH&d6qJ<|GLU7bQn-U^JI_#JJ)sRj$?I`{%Eia9 zidC`2H%Ok>fM?0avsLMrzNG4*el_4K*yY4X{kC~(9fnm4t~wVNz2F!(FK$pC^AkjJwWn(&s(}cNpH+BA?%^`;2xz z=T1L<5K-rM##@w!fpRk67kcx3q0aZYGAxYZX(Cq3iTFV7nmKXPx^m*?b>u`V-!mt! zmPA|JNmTZ~Xnp6`;d9r)-3IUHQ-@C8?5#u1(8x|7?iV)GpU5YSSH?~`7${}VnlyFE zCvW*g*ii;oiz5H@Z*06C^~;Z=>+Bv^4k1&F8*>$TnJ90&mN~mk828D3+2>Bf&9oTB z^BZjw{JNOozO99w4vbUg0(_p7t_-xxTS9jI|CV8cEkpe+PUUJ^2Ar~trqOB<5-xw{ zeXmY#4i{`lz3VYetWnP zfn;3KA{;ah+jW=J+BwLN{x*THvcl1m5$;es^ye$=&jd5t2pBtEjBGfNtQURmvv5=P;|L;O9k(9YeZvVYH{U?$8{<|o zwZ;05CVLnX%Fs&M#l$ilG)!iS;vAUT!L;CF;vfJcQijA&*AMBzbO)F!Z*(-=45qC{ zcKwNUjJY*m3Hba2lWl7aOi;V6V_<^X&C}1Lg1H7JJJvTaDP2c*Fto1j;Lde)2X_e% zyMxRNov>58%bu*3uTxvi0fgLsN9_)QX~f0Elqpj?4U?|voe@(Fc>Uv!>piUoXKyZ} zqB-vh5dn_eph`?;FyFD`l++T~uK3t)R9g)jKW|5-GE`KdawkhLta2Q(fUgtx_UW(Q zO=3Q;7F=N;*G-CF{{a_1qqkavakIO@sQsNVLU(=%pSvCIYgJd7&uQ9KDaS5HP!x34 z#CVJHF=#l$qR$Jl+>Q*4xFMW391xA~t|ATk!Xg zFIVxV>?e_9vU)FgZWPa1zm)6Ry7y7sLrzoO2qRw~fO>^Lj#*id(TnvN^`TYFV4s8k zT(VD5_B@V2<8FVs0F9m%U zF>C>{h4g>5@3pv(UcTp-Hm==nKb%_u&U--oEqxYy&M%s4y0_wb7l?P(T0cy_q}g6G zvevkJ>Y7#iYnoMEb+ejyS+h!mPJ?P;`_-reyu&YTR&zg`pU?k%9iHL6>KcQsg1pz` zy7oV}5qJ43n$;A@dL{_ncwHkHgbge|;w9)BzpGhQy&N_GIr)s=JY;#{>iPtvGrdi8 z;#^0n;`?{7z4SM|UQD!{tE@P;+LeBYKrMeROt63RaJRvA5<%oEA8j2@|K6XT=MQ2* zz?Gg?;a&!X?~kYiXdH9_lmU6t^AJXCZ;q%+P(3IK8V6Op1$>}5XaZF8lM$6KJeOyh?<4p3CPm%pd-(T9&=p*jDyEH{08SA!}hZGh*b-disv0=Rdeyr^QQBg{zBMs z;OacwOv6KX_y?7SOM75PmdOpKVHnS`Ojf@kqF5#i+F(CiGY!Lg(XN1&aPRa!r1?D& zQIkM-y4D@bpRR}Tj8!&gaUG1CbWH-8u9Lv^q-z8+ux!>L z{y2!~x`<~ZAf~I?BE;mozjq)x6pf>Q!8DP*LoN@dT+T#Im4C^bhKZ-W?n7{6xVmOp zy#$+BdoKQ~>f7=@lcraIEUWeXs53!K({|h&2BqO%2Gu3JX?k`bf11vN-%8U%KZUda zv8*ltnWi;(ei%0J*SB#z$NF{x$oh5yGB8c!kYOCeH0{B&X@tWxHCyPIbmrg|ribjS zb8a%xn4H_ZW1ek#*TyCEKrW-TW`7XB5&f?Un)>72+!SzJsqb9@xx7cPsYAy39Oz)4 z<9k=V9O$GK>48p6PpcgMk!E%BN1Z4b7B&{RCSJzDvHU8BgF+PG^Bq0?*qhnS1^yF= zVZjv(cL88^#vWr2lj$TFmV8WwId%b1>@u|I=aCXF#V|b+G~1I*oYevKy*iM^!Z?GN zaOJ!GPQ)A()?rXcvN$P!vD(}bJ<6zt5!IR3I#H2ptFzB1{=dWIw||#i?hCkn22=^( zwe}NKH<&)@RJd7LW$OHoA+LS3QSWUWZG;%0iq|!(#E+wo3M%`FW;KI*$ARa7?M=-p z1v=Eyj70n{6rM+@r|^WyX->y%EKNBjuQ|7=4EG=eym>8PFAj42>^2j!0?d?nCT#1^ zi;Ca(x`S|Yq_y~w{C$A6_9Sw@TqMz~N(P%%atQXqb?r~V7NGb*vl;=_4mYdN<7ihO zZB`LrD(+`~8g_bnvkE=|e$dCX1I>UkpzaSLEf7~- zvRRq)O0Bcy#?sWW$a|A!82J^d?i)&_eD(-Wd+k#VH|4MKL zi7$KY)B*Rkwv&~QIzNs)0m_w+lIODX(V5@!+R2@dLca~0fewTG`KT6gn5hJs9mZH8g&yeLw+vGGF`T+|*JDvRluiZ|=vGQdcpLC2xzU2Hf-4Ro5bqjUe0$mFUyn zYK;S!jqZyj`UkYNsH=QeW}9Gw{Dw_VU;5KgcraGI@)- zy7HFgL6hXP*09euHGkx_RS52DU4P9!?X-iZzF_LF>a@2VTm%p6`Qy0Hdj7(f(O39G zZ~c{mpSzy#0M8kaRezm@fBl!-b(ej_2aT1YuCBVv<4L=$R(DPKY;@?4y*7)$eXVVF zb<)_Z;Zx1(B8YYVVcc`~9fF_EuJda@=e5}+p3yeL{b^jU)^~977B`ofyhS}-dCT&k zIdYonlFu%qvtB#J;ijExVC!pD$N$&mt=+wGerUKiq4O4Xb>%IOC+$+L^N_Eie;?-U z|HNyfw9kDO?*A9+uIu$43|8sxt$<@`>RXiClcvd8hc$fFYqK*x_er>`kk2YHRLGal zlD}@=%g8sLIR~Cxm zL441T{z2SHVYru1C$7Vod6+%%{v*-2mIV2%8qdo-jLU%~GWK76N%^{u*D*@bL!Jb()t$PJa2);qC_a0z!9LTf!2|C*xCVUSxNvz=adhcI+8I#DLsXYcW#>>XPE?E3kfPmkbV zc=ejUhI)czDj6PHCU}EZo;Zuk?R5tMcz+ zJ;s$EsaFqlioawliZLtr_H`T(Za4=SdB6YL{yGORsKceC`pruZ3=` zJ1!yrxpiBDyI{AstT}no?ow;@D3>cwdOfK`PW3Qv^);`4!#?+6xUZFdZP3N7AJZ-& z`qcngH#&KeU0{tsMfkaY9bfml>*1ze4anE|+W58VNS3vBy!++W zD+%`q$X(W)bhEpwS~<$)N;j`3mAC={vt|&-(wBVt)L!=LR}MGzyB2Lg3h({9^<%nC ze-85&xX(6i66mBGi*NmTnV1Jxcz{tJlIc)NA(lvCa>&+Uird4o;i$ zHjZoNN7G%V=m&5}V_aU`7)w(w=}Y@PsX|WmMt!zE0AV~5kS5?dG49)^)`P$ zFbfa7{zRL2X4nZw6gU3!gTvNa9e}Hb^Hu@!T&na`Js96W1Q!ZDT^LkQ=oC=PmTmRat--#<;cM|SS zq~BWmQ)bZ%_V*)K+iz6)ca5qZ)Co#}MnU7CS&;fxqrKl~X`xY_`VP)T0nLEg{uyH? z&?IOEGzTjG7lZ}Mw?Cx^Yp2$p6gSo{;`x7VR1F~BPa&Lk+&d2{;XTj@Xk7fQ^-?Pg z|9+!(*q{pXS3uTI5ceCMN0{7i)bnqU|34a4FasSxt`8)pXmc6o>2zb7DBgL+|QF<)8Mz#>&$zwcVyJ8Z_fj{zJ2CNv~e3qFRTC6Ka_Abogh7Ef4l$X z@nlMwFA?}^mDEK%bn_Vq_t3wqLdVV}v(sd2l(h6{mcmZ*PvSHD68BTh(%H z)!Jrn)f!8ee>=>e?BAjJuzk&o2;Bcu`iCjB@9bMtzuojL&H)dD*teL1-y&!Z?$A5X zR|L8H7PIJE=Ib90gWu{OUd43<_}RDU1hQ{&3b>K}p;`abMM*ZV;{03KTGl_^9!#Q~ zor+7ov}*qcZ`w7$9YPvji#=vj&*5y!WsJSPi?am3hcQrLlUfAL2b)y97zj%3YEq%= znp9<3lR9}rlN!0PNu9U}_ix61JX;SkQ~X?)(<-JYv&{S3H>p?7O=IYLP5X50_(!kK z^>9dP2g&ms?r&Q*Vc{n1}Vo)MiRe}Oq=m(FMAkk3Tt za)dGbml4+{!tGjVpE1VLSNys!cx_P!cNJ{0)*9{NCvvaR*8eHS z^?#21k2ToLpX6Sn4gHZ>qfLO<+H-mu;hnzJsLT<2TE)Q#WRWxX%nb^kbDa-6^!blC`-aUH)#g|{&bLi5k4#y;Hz^929&zLp&)DM<(4(lc zHtQYcSQlTJL%8nNS*c*-P_mx^vdd5j@9A-e;W16#Vc#d=T5@?d}S^9 zgp+1wp4Jk{UW-gIKB+siJSkfaq0Ld2hkOYz4TIVVkRt_m!rxB8v2^>QSMO1uI}Z2r z)%*CWdfQ7{DaPm1+xDbv>(={iYv}!cuimZy>ec(W&)p68^VNIarMEY4a=B|P&A5Dd zlO7al-RgdA4Rv4ZRu}bH{l9tjjr-gka6eyt4}H?f-(G!L-;AXhmrq}MP^5M1yP<5& zdi&qK`X2JRBXB=oeP>+y${Vv%2b(o&#$~-P>+zsa>(-c6?Yawcs(i_-Z@bT32RHRC zK$+TTUAuZYwwE|ljL%n&ZBNQ}0`X>5x=5#4pPcGHyn4)w+?SDAHY&F}ot$Qo%V1+^ z#^Y)$d6S}aB89TVO!{Ox>vN~zu7+*bYR^Z`XYV;m{kBtf%$UNe{s&WxN5&NPP0GRs zJ?L%FgF0WaK_|Hy^briW?Sx?7D}g`B&4c+pwwmI7kP%L%e8?_jWzf z9_#CdkEaWTyc>BAXDyoVZLS*6V1N;z{|jFC@2bx|1vgY$^9+CgHx$fg5pqR8mS!CC z-Gp2W6p5$$;{afH-*AiW8y3L44gc)S6&cyLHpU-|K0e69HaVHQ1xyJS6OD>@5M?rV z9N)ptl_NK)0)CsF-+^n|nXnK8=96Bp2XI&AH7qi835O>LU!@ObtA_&p_ ztAo26H`ZFi%~UkyoL9|tW<>pMO{yI<0y+=60$Ku9-`=D;LDqZBQ+G6}jys!F5_A$Y z0h$5Lg9=`Zc?3{3s1@{l)^K}Xinu`qKis6(aA#ivncyA=r9n%e5dFm8n)6w84Hq^T zf&3jW!aN6P0pT64Zc+(6UsD4&{AO_9{ZS#>TgHDTe=$LFF5n{n`_g84#hX@F;AUE- zm-E;2{~gk*?PtyWTqI@Y=g$5d=1_3W`MHAkW6uJp?E|<68vS|PM_O2Eb?z6jUoTHu zRh@F?=az7N=7VN_uJsqp{M-_-eVu7#_Pdy*aTafJ{sU|+`(6B=OePjg<*gI&{U6nc zo6he-!0R4|y9eHDrQbBxuXC+o{2b>kCVgqMO*+|+??s{ez$EbqF@TR*%3Q$yzQ~bybNmt3 z`b}UXS*(0wlPcA$*v!4ZPq&%mYzEh1U&Nc$R?V4UTT7-0m`GM|!~%64nL7H9Vw;wI zjwZQtEl;B3kngSdLeKhUE0!;=x?V-6^hKVx;#(jL$t_S2M|QC%!1LvJyx}ZNdfcno zNU<_!pk6_{ideE16t}7!-i`?M$+aGebq#4kS6h_9f!Av zKblUda=n9J>b!$L@hW|o#7gqz-b@uz+nHDqeA=`t+1ua8*bXDM?plZMm9Y0tnIK|R zxfXVI*-d9R;ifRs0h6`GH13 z?s})}L;35Si{Q7~`08Iqy#->ua|XzIXAZdDcEjxdG);pn>ZE9Q+5hSBVEW{2Fwj4q z@TFBvkuUAwMh{S>KAgYJUu%tH3hz6f|4OqenZY?Qe~fqj{t}axppmaPt3^=dUtwMA z3fzB#vDV*W-Wzo2YO`v^GmC$RcP77udOw47f%_!LoT$KQd!s7lmh%*xn^Z36mwE90 z8=s!RpjYoj_*X*jwdU}b=W@^CTkim!{;NiH5tQpat1#~S-?KW0@JjUiDn_qCq!DE+ z^4z5KIVbT`$9;O(g;Fj~!XKkH)s8_$zOnk18!^HwM->8Ez_kKy#rKc-IuH(EPMx7l zt{aTE4Pj<=N+5rz*lXJnm%9PieV_!MTx)DzvnP9O9@&i(SRTNBs|Rsj9B>*`)`>jx zlbG{XKdm-z3T)c6No^|Fv}My4)%g~bwr+67@OIl#&lAlZy@ z5PiDK3AYq(%sC+``UeVNb5ar15=+~`oOnTOlz zv&XSBuSVbRqvo8Mi?3*Mo&8t$1~Y4Ac9!uYl#&=J#xMKIT(>DDGicUyftBx=_bfB; zOl7q5%y$d|-?EK9-qCwZ_nrKiin9m-$#k?Avr6@AoE`&1!nsA#C1Uc|f}_pLfo!Rh zp8@t; zH|HlSakl8CXWwwc$_j0K>Dj&Z)gJq*g;(j>XSWD`Q1ETSfgzdeOQ*K0oFUpSeJ-i( z3VHl0JuaP67N^&%z{42Su4jMYdL#Vov#0E<58!HMCJLK80vZB62r4VZ_dh|^pkIXh zS3#cweG&A>puYlr8?*!}1kXEw?*Y9Zv>Dd-f0eZkJSYJAx91-}we-bj{&xR|PYu2G zV{cB^N8pF7uYWsyImzu;6>3x?;9c$43I95HUPcaJJ3Ui{ItX+D*Zf}V30!vq&jQbY zE`zRu=0S^~Wl+JLm>Ef8({YM_gNWiLBl89H<2%N9CTX_wB zbC4%j8@~uY>vw!7-cta%e?JR1ZMIe$f9gF>xv<{(4dI?uKQ_F(Nln8YA8k^XfWyGk zph>zxi=gT!F=q!l3>pS4pJ-AQc{o|2*!{cWb5FtD0fuu3 zBVWHQm;KJ2!T3Vj7r*_^{|e5-8^@V7AH&$@EY3g$(SCKmiZKqT;lmMi2y_ON0d2&7 zk&i@F<*!+LkxUoLWs($il)RSZNqbDdo>^-sY&_6o@~oi*wB^j4Mb`k{ZRf%NF98$D zc!!9vg^a)+Sf;xQGX>DHF}F8%T0iBUF+VGJ0gFC(JyI<}{r* zva<6=vRGdU)&l7iYF0M5hdBukTXn)#7UQBhqL1ck9vT=lUu}6kLLymA#6neST3xd0 z&QaUl*~>p%MJdAR;r&C_OaI8P=gJy!+xfL$?{(M1&3<_X>5wnaO}{R?%nsw;YI!ag z#{4((+%mAXu}K{Qod8XN3Yw7jKvtgX!F8@Ymufa;_5#pdW($72Np<6%S@YfB*5b-= z)KAuYy&g0KJHhz2f_s&v#O~KK!?}%)BM6;*^gk=JF;|A64#`rf1{XM+(au56ScRQ% zlEpcV?11kC*_?V0Q9JT)HS+JUEB}HIo$;Wyet&nY?bTtm7vY@pv7j4H7VEnaF9r*8 z-1n^L7z(=K(ye6CkAs6`aS$zu_yb>R6g_%3QzSlj5<-c!@V>z9eVPG)iFoFVPci;-_F} zuwodCWEqT10rdK9CPaB3IsoK7zQ0M0KH&7~`OGGNRv!n`go}w)%jP`w>J<2AUHq(9 z3uG$VTd!uox#;3#y}BiLy;{Bw-vFurBgvAI5pVZ=jE3S>;x5U} zwFA27k8Qf;BXboPNp9v+*SN3&erH{>kuT&az_m!ZITr^QFxMP%+AvcDsOaku7|Du^ zth+GV&_B=>i^Lv^4#kt&Fy#Gl@Xf!`$q?kdPHpFxhnlg!M}P2yd_Muc$~SrW$_yXh zB(nL!;3K)?zTWWN*Z-I!Vw=4wI^U#9^*&!CA?Ei787O*=DIFhh*_F{t7H;2p`LU=4D;nfn=X`r4MV3 zTRj~TawWiZ_>hx2h2XkP?Q(TnTxEsLzzG*KqrV+NB3tx23B;Kll3U11Rovd67)tCz z%S1!=!Jp*jxkGJb0d@lF2Ls8?^dhzEzStn{X_Wd z6oO?X@>B39SpgP6{wh^!^O(<5(a=e7kt|LOOjhp1ZXL_OjByzENEQ$A#j51spqWfz zq^ECdq>b#~jL$s@cL=^~wRP^jzSbDceIA0WiSnDbb{ogItTj=W2Sv&`B#PYbmG!vK zeHiY_=P7HV+!+s}L13PoJ>jTxWpDff9&GK!23`?x!cMT#lKj-tD>$SN0&m@WoP zB~t}Esl>Dh*!3d^0!&*H(+|IqZ(|^^Nfnwwz|`*SeOH{Jz=EyLfgJO(AH=8H2IBb0Fl@C@ z*~n+@U-cbccM06p@Lelk%|)~OP{(o48b_GD5(jjr;Yf7A&RdMn>Oc8BDH;>Yw_niN zTOaRrY8#{Cw$}cEx4L?qn3!H68DBH6kM{`<^hFco`EV9`*)?@9o|n8%RoE zsqz;&c4@$M+~ub6?t!~u9dS>Fw_M3%(y&j*!i) zPZKi9QM`=Y*X`tY$|7U&EN{w9BkuI(_?>nqH2Kqx-c*FcBfEdufMQV(RvKu@f% zNk7Rt0pucH7qEEl!SG@TNxk~U>xU{Cc#WwH#9)a%w?+F(#SkVi%#!yU+ zDsWuza*S-lo76m_kdmRSdgeD60zP86|DlHlV@X|oFu7{LmGOpx>aECdb&{hN92Lli zGzNYn{M%u1Jjj^pz|rpFAZMxBVoGl=5S(y%GXQ+F5F+#qCZYrAU!~%AHuA3hoAkL; zaI;L!ppM8lhp|?fTKXE!cz`Ho%c}L-Tvky@F@AiTnJvSrOq96?Wy)8c^jVpD%_H;d zD;_kf8kuMN-(+2V;*HkTdk)E!X9hlFx%5oB?ZTSJO)qX#F9H21=sSq~InWkdmx5^W z7fA}GjTv{h;6AGh{!qWq!WjkeHxI0MiPz@e<30FY`DL?5;L1lamkzoRGIP}hAH$h5 zxc2Xhje}^=pIM{i}r=b=&uCLz&lyNe=W6VVoouOEEr|y*!?jZB={uz#dG{MNq}hH>rkGW?p{;*!e;4ynZLbn*=R^I>4W6j*#>E z?Z4!m*FO!n>GN^kiM?VcPf<7N^Z7hyUlcNlta-$VV40|U{= zX&nAA48Tajm+E+LtH!bKNnB65++_a<+^ovi>U(#*1bf-gpJboX8q+Pj*cm5fUh4k# zWd_n>{!30{rovV|!}w)ig6lS=%-IbeZ^HH_C^ui@EPb$ZgYHdZ{Am9`Z?fkYdjg!n zOuWqDAqPHs%}MzCV(iQ62@y{8sk^*fo8)C#$awl?j;$tfJ?C;Wz-Qo&0N1kBTH{}* z9b<14eP8){O>1wTPFKb&?=@MsC>jmqOJAkh?s8;?uj+WY*Byqt2Ns)qphaCl+MPq$ zod&Y)4c!`6?QC~Jl`lfwavS_A!ixJ1!oYFRFlgcCu*%@x9B3A_!0S6AsuKM5plZ-C zc%~8FEGPx)fja?e#q;e9i(!CHgVZfyHOgmzm7pN_JHc}rcn&lI8Ykl3DCi3Pz@G+Q z0A)Z6pe4{8Xcja~e>^h_On^rDJn%el;ZA&a1J@nUaRf98n!&v^?wNgpG_yIbg!YrV z!nsK!UxERB`?}a}&$#Tpi0kTFul)<*Mo)OnJahgxv&&Z}?pb5o)1Scl>SRQf{Fb|% zG5=H`^jmc;ytl7wAa)GB-e~+lEIQEDBZZDK73F848Z&3YDr;jnMc68U*~FP{7^D!=J|84+_+8dHx&oN zFnLEmm$m!4XsgI8(XTe!$E>;rot{HrqX|v{we&6YS$_lT(|?cmxITuyDrgQ=TZFx-pm9*!IOb+Rr$84#vmb3zRcEp1 z1hn{ZEV1GF1;}v$@wH8Y53~rX{xsIEL8n1;po-r?zZW#}dGw8eOQ81OML3{Kpt1|_ z2b~19{~p2t&EmR@2rB;!GzeF6Mlb~VT3w{mh0XhYm1yz0>`hEj;`xfE=O@K0>+P_EIXAssr^3K0N*XIyF z%HU)Wr~aWl76kCUgaYdu)2v?;m=imPi!f?|%fOeYm!Gda-*~?HeDM4?SN>+@%F3od z2)n5_sqS}{srRU|fC>a+gRb0$O~p6kOMf~tN9R0Tdz59k!A<4)}P2E|{@?`b<5wyd*P zaQ*}8JJjjfUaTm)Q3>YiD{MLYy_J<`_ZH&ySbg(hw%(bwa2$S4`<)7- z7Yh+gZ;;#dxZ}BhU@T49tg)kgn+oLIHH-bfK3(cw>(#9SZt6A({n_{Ues!z-Ci>x5 zBP#rNcqb8*{J-qI4S3YW)i%B%QKLo^6$BMADk=(E6tpO)OUPnWqRU4V5EPVPPy{L) zjg`P^l1f-s@dLG1tF*RaYg_y*e$`YcLZxlAw2cKTD%FXb)>u=C8p(U#XJ&rC+0AYe zdp-a6dY}JQ+abF%_netIbLPyMGavf_-afR|WzfR7hFT9?0F@57l zvchRw0{=%!-6x!z+?G-J9;OY0A^cw(=D#+~e{Gom{WeTwJMQu$Y(;2C7_b9xZ6fHm zWc>M@y1@8cY$Vl16(+V%lD7$V1!iCy{xYo2*20$oRnGsS{O5qcUb551^>DNgwgnN~ z^aBI^aqVc~jV1Hu%qd@Be#2YdCk}$*Y*37X;wl9E7v*9tKd{f(1y@xpynZqFgO-Ed z6FEs2nxX~R0L6AK{elbTDEKH=XW`Z|79wuJ2jPTR`3>dsFPyhvP75%10~7Qyf;||7 zh&g`&-t8dh9tT8X42Kxd#g%Y9?*iz4fWkhdC_#MIv|R5^EU z`SnHfB8wlvBRi{rXK<)S2jCXCdC*CYJ}pA!W}#vgrgFT=beK7jF$Ud&ig#9E5$Mu5 z9Q(UCITg8nHvC3%h3qZVe<$j%5ZFA1BS0lGe?&3Q^4yPFFjy)C3=AAxJa6%A)OwD; zhs{GG4+6+w!K~7eDPTD@SCnSaF&=zCJo$EW#y zJQlnWRoe#ax<`w^Q{AN}1ojmVJTEEo-N;5@7~Ccd3G6MH#XLyRghU1xaAM#9x>~$V z`EXG%5Jkn>lPeZDDUeGX{a#D7u~AcG4S1{w?Xp8Q~V z0jD6D!G)a66L~3)L%ClGTsTD_PO$QtO7OJpmtac3{sl2yQD*3*^h$Ozw+dY~U91`X_OF9jNsw$Ps}9 zJ)|_F;m2?j1N2e~aAe>B4@fOd`JV-8gvRiSW))5+K^``+3XQ-D43f0cdFQo6k&XeN0DcGugtNN^td(?@zB(h&vjHthfu4(lS8~61wj5k#YtI2J>cB`D zUSz_iRKQ(6N1tvbG>-O$(cV!AY%2q{A1zCE^~bx>pwRYQ5j@nmDJ0Kjtiw)L z5Eup*1D^!ZcFqxw4&}}r9(usl){C#lP-aD%(Al{Tgp@*oeE`7^N61!I%dx@0 zn8Ci#5HUWmw{FohBZGnQsKEUx5`A7E#~w$!6isc1r7;{+8~%$je~EXYx%kXr;5-mu zU<&>d#QA~#IHOcPUk==wBi6eASnCp?8QdHf1dj4^Xej3Vd2{ELUvG}RExHhsFGfCt z&B^jE4CGzBVC-BN8ZruVz`1p(G=mG9z!Qn%W-rj^Y^Or!7I2P27-gD9Vx>4%q~Ej& zfX;f*U~uVN6gUJ3JFA!D6fV#0w!ts#-B+ z$5qT;aCP~d;6>QH1C+s~dTjDR_Jm zSOynA+ZPp!=OSzUB|&c8buzf{D>-Jgr~qDE9+^FF{yiX_3mk)sy~<~ahaHEtP$Z`; z7$^jo!ObwoCoUDoNuC?m13Lsb1{YiI*ITeCfsaBIqu!grKL!^*H*lD(w@3Q?#o9$Y z@>1wpkY{l7Tf0+7K4SNM&cuyFRA@z*cpudtWTzHTKl1OaAn zGtBcFD@v3%0+vk0t~_uIF7_I~v6E-tP(Ed$CLNfD4SYZuT==zt0k*N;&!5SjTn48@*#gMmf*1I539v7hjlfp`%i!V{`s@K- z3)-&BpqznYaIuSgJwq8VO`QOA6i5aa{Vj)?7L8VNdRh)BgA2bt(BETb0OC zhWR*b!4*(|fH1hQ8v^^8_vNUoF~>Gxer0e$Hwp;n>Zl`!0JIYT1{YLiK^NmK*8v1! z?qzU6Hwg$!PEzU%kOF|g1%2CsNNFHI?I?=D1>GFj_u>Vi1#`H5B_BO;!QS_e=Y1{Zh>XHZdDk#a7J*3ZJM0%8mQHVsMeQ99Aw8;+1zLW+>noTx^}Rh6l99Exc|KmQhgv+W}&5f#0Db zFhsp+zVNCb59W6=xZvCT8hEq(I$(2wV{oy{y>@w%{2WYUKry(;dSNK*s(;9A6>x>X zFu1rCv>T+V8i(e;R1S>}7=sIqdCfQTbHQ9_a)20I;7YGW=utC0?*euza11UsPUR!z z1M6$S+N+^r0cCLEw^Oqv!8tkiy#{(8NCp>uhu1jDpv=u3AY1|%g9}|nb!-W1s7%cj z6;Q{(GPw9VJ<{IvIba^9TF5nn3%$#$vp_}4zg_+a&;=mM;G*y5TqPCp2-|si6`HvS za0WNaJs!XPX?gy&!9Wx^1{b^9YiIJTtbkt*EQ5=`*K4OYDepoxssLkfq4#;hY27&C z`LNu9VsMf7dmM3R@2xXn9H2}uoLLa0(BmDwf!=3duFNE#`n8D5Pkk^qZ6Il72!Hb~X0B3Nse4i7gl#!AJ zqjJ__s5;;o+&mAn3FgTWKADOstqo8G7=sIagpAZsy(q?`<0GMvTY+P6v1?MWe94M* z+ks3sVqD;dXlE5zX!Ys0LI`#A5DhR^j!|B1%NTQ z&>u*8$`Jpcq`_k2&$tVbI9SC`xXZ3_g0i~1=wy`c1@H1bAh zIA9oD+!J0s{iWwNV8g&MxY(a@0u!3B*dykEL2(sSIDiZ;_~+~?0ekb;#+#tN0b_8X zzu*)?sGYv1d>d*9AO;t>j$KM1_Xdi}ub#JHGmxu*VsMd9(ju@(Ea`8C4GIW@3wz3P zi3DN#tOV{6U>IE7)3)W#qP2V{z-s|yaKX<|+eq09xHTdsE&8)$Nifg=D1!@s*4Dwy zpZ5c|4j2X(_nfVRTwOJWatpxg0c3E&zqBIdgHeTz)tHNbWN^{zZD08_bMaElaDXwm z(C2OA043ARM7|a9MSwE6@E5Fj88|%~k1T^~1dhSQzUW{@-NDf`I0~f&9D|E}$+i!4 zefwY=(5*l+xagNH>nxh)!SGtBP5>EP@UI-w{3QrI?Kj;5Ee9lni++XroShBQK3a@~ zCs05W;0$h-1}pA%LM*-&%5EPhI|LW_Yb);FoS#<%4GI*4i+t5K(6uGj0vtuz3@&&B zmujrCN7kAW!|R|*L7KtMvC+zhZ%H&_*be}V!G-?D%15#xQ47k2fHJu7O}2^N)RXre zC{&;rT;ywZm=ynrm+4-3EOMAcG73Ehl<1 zEqUEvK4%UxlmN`&W_aClIXMGHVIy*cfo5=XZ0(X`u^Ht9mP5w^&EV$vo$VLj1iBy4 zS%5LP(BIp^1*jcd1@#!?z%jVkKiCnFWG$@&dJ&KeF1pb{`y+q`Qx%X5F8U2xn!?9q zduiAT2rIA*F8)nR-TUDd&iT85UJfLKi~gf!VTz?xK4(k}69v!=ZjNns{HEkUKdnWU z`vGTgv;2t@Fm%&c*)A!@nshT(dJHb=&m83n}J|( zQB59-HWz6%0>R*--r_Rf43G{u{)1SWGq{+)a%vQeY-_XwRsslv3)@cF@?rcb8bZT> zF}TnjUQ>l)*`gsUF*AZ|3@-3(7Hu9T!))6I*k(W&T-e`8&%os3MC0w45&>dxf$um# zaY?MdBN%7^h`|N!r1CHn=}M_xg=rHQ1{e3PLvTVle27~Cd;}l{7xslnt6w)=JmfCS4Zt$E_+5rW!1Hm+b%5;zgu#XVovKTd_200(KaSZC zKn555fvLm9%JS=P!v0VMSMKS0DFIg%unaE#L#hfA$GbV>%gg6niM`&uyD|L%$KYa> zVVKZnRYu)|845dS3@)&lH5Qeumjp$8!s&ic#VwIe1{eGhxgcPHQI{x4I)e*K1adF7 zyJo8~bAbwj3uz%lZ`$Q?O#=!HF618^St4e1pcMiYfP6E!sDJt>u&w~8LM-SRT-3)b zu55vL;!vXjs11V)X=U5EXQOp{tYJd=*ns=r;Cad4^YH!ui!+_`U;V#(|Ly61oas841ov=@K>U%Kb^UwxAP zo?9k;G8lcB6BxIyZ&tso@qwx6*#|$ut#O212>KUxyx$own!R8SOi1br^BX%!Nz^Na z2=kK4f+} zy*VLnkCAtKLfjrB@Aiav-=0s1_e(k<&ZEwQS>#MdjSG7|YJBw9IBI;1JsvFn79I~ychnf?#l;V|SdJP8p2R~bICP6W ze(!`X210aj>XBde%`Aut#Ki-WZ^zkFust2+J-+uxc~9^T>GBtOSaQ0fyhA)xcSm_o z?9EZ$lWZgGxm6z1jiR-wM|p=jM|oMVbSGtp_5P&n$vvNxJ*5{XWxvt=N!j5&pOihd z$CI+B*^{zt_N8D=>QUGcJsyP}`L&P2p5Eh8*i2_!&*1X8$1|?q?D352D7piCea7`n zYBYL0>>1Zg=T^_6i$vbLPd>Mr>8#LbIhSKLRx_Oy8e@+Eb$3<>$H#H%2rdP>r81or zI>#OZ>h7%2xfVo9na&CY?Kz-s&I*mS7}Sccmvm=^irAk$o)sF`<5{6%dsZmZ5g=Sc zmq}^zyzY+xji*~h6s>G_hiAia29GR*JDr@z-2n~j;RsL(yDHC1_IR@ABC!WZvWJsB z7ke$Dn^V6*n(1Uu*gJ{=tW11z?l#lOo{1dqQe6w@)?KFKH43~MuUC?`d@>zkneMS8W!EJ0A(qR!ImD9bT*wTvh37JQJ{K}G8QR^s5IIpUr#*T) z7jgxaoOdoH({|7-qP*>(OuIa@iRy8e=SmON-7e2nz1ZcMLw)FP-(=e5DJS22Sa-WT zbEyt|XxXAn-utV2=e@7+z4w`1^Yh4#9$oX-_^57N^Vj;W`B+24lCiLr{r~R4B`Np6 zD8AF@{y*&_`>)R(w^yI}fBP+{bUyb9cr(p?3(ET3D-i!*AKCwox1cil$n-l3zQ3Ki zz`UbiBdIRv`ubtA>+9bC0oPY1S5#DL&uWnsc2lwo%IwZ+e^~mQq zPl4S}2G!m|n95-;=P1pSRWE7KDK1CpK);4(R#FAGku-d+7ayyvU` zNA&9I|G@5@Vn;eou}l~A2leC>JF1sXF?zgUU-5!|Ca2iZJv+sY`5I0!&)p?PeI}>a z;3TKm{O8i&gBM>Hs?P(%LT=sTI46?k9{lmWya#`R^*izF{*Clk+|zmFhWFkhcWTcbxzl># zksHyyM{Z=#9=X$d^vIpjlSdBTEmmBFQ^T-uhXIpn3xp5ZMokyc#E73wr6glV=h{e|PJ;o8WmqaIt#+ z>_v;qGu_@R^*kR23D;fTmFaKq`A)7LZtq>3&c~O@Zx{CJ+LPaIVlVx6zH6&Tznwgl zApGpXZ#Tu`Q_p@oc`HGPT1Q;Be!ELN_nL)w=eN7m^M85nwM>3Hc`QNd(Hpa!Ecx0V%rs7eL-5^Yslo{o8@t? z*Dk)<-MIKN-BY`gHR|0xwX4V%=RO&IRhjOo$rA|2P%V&$} z0JX@>m(L=$={;ONtF+DO&E>Nj?EM=Dj84jQ`RqnphaN7URoOcD_sPoVWV(EIla&)6 zj4EWheD-Y)6>`g;gfiU_yV(jWpfU$^b3<&2t%RL`WWLIDL#*1i&!Rb9WxBw%)QXH% z<;AxK(_Y|OW<|!EeKK9(irVtsSuN8Au3PLa7muu+)G}S*y4CX7pVMkH+{ltg64)K$ z>Zg*;bknNVw$7XUGF_gk`?{B>zGGY1Xft5CPu7W$KBrmIlPtrP)jr6|)?sCp|! zzzVlTiZWe4T4Af*WzNiW{V2w1mfTLsf$@@QziB1)YLEL(aiY8~%yg^hb`RCve$ySj z*l$|ZyZt74Ai>{6>TbX3E{-xEn)z1I-7MN%?&;=M(LJPRVBOv-TI~S4y;XECm8YS| zC0?dmMfW)byS-I(zeA7<%S^Y5zWX(A6+K`$1m(s%I+-pCeeY{t6nc;Ysh1ap9x^=e zE(&GZJ^ViF+VkC?hkM>Ve1yW?h3p*3fJJ`!T{XALuf#F1Ys>g6k#1g{uJy~l%sX!`uVQ1SWC^u z*80-6`m*-=P)97(w)?t{SXplVFUs1pUyYTuWtZi~emmmL-JdKEeYzs_Y3%PaU(G>( zNWS%xos1o^g3d{Wbq)EqxAnm<0)ZC34~sR$LhbTtbW?uaU;UIqFQt$v4M-W$P#@Z1 zG8UGA(#oG8Hdr5e>9tTRnG-8(MY0Mm+tXPeQu3``ohILQnQw#T+fGXbu|=a_U3w7z zq9ST9Np4E)#j;Q}T}dfxm@aGmYatvFWdl$^ODtzqeP~-O1oHZGW3)OqkY9`Ur~@_C zP55+|eA3&TsUeU;E`uS&?N6`khYPl2p(e zenETug7$W4?{U8%g#~TWe_nM9>SGJ~y-xgXQbBLVLV00kZ5+|C0{vIorVjb4vvYX} zP1Ol+FyT*3_@aXesG3fAlL>!j!n=|HQquXQjrDn}Izug;rR($S-T^W6AjGvZ)Y@74 zQhwcR#9YR~ksDZru`yA`Qpem_zrn*pfw}bs5Qhu0L^nY+BPHlm@dV)pm(yC|K*=hPS0RCfd__n|zuB=)7$1t;KR zyi~+D)D|1id3RLHv$}2Zp3ZQ*RN8}4>80#a*CA!PO4M>-wUS~a52T`1;XakwyJxnJ zXqY~2+MN1=iV74P5AAvZV8=A}UZvx7y-Q!8?h%NP{ty;^nnio9MrJCp38f0GsHnkr|o%d^% z6U(Wa0|tZrf|4n_A^>SWVWHyf#fl z9RXB-Sj0BniGSIqHm^;p_RUBxrVn)qk|3VT%f3V>%)O-=VqJL_c{LNiDkKus8mKNu z1l0B>=)-tOh0(?Xp1^GORMwg)yn_5=NRv99WsJ%HB_Lyy};2x%|^;L$7+s@)tZg%>SsvSwMSA-RZd{Z{=@`x zR400SMcJ3p_b@khsD8ka;!@PFLtTw;6kj`5+bloEBf;YbTk_Bam=QMXik*l$kT@hZ zETc@<@EGJtt>FghlA4Vk-G44{=xS;k`e%F8s9j8Zw*lFOnysfDXF*Ip?GUS^Hh5}= z-E7KF6K81n1Y`_PjD>P*8gjyF2-v1|;55r;FD*x>iQ?MtsVronMj(G3Y-vHP4BW|8 zPhGdCv$i238m=R;&ugKMJ}_rAIFCBg=vpcEamcgPCyckB(Z{+rYBb2{O1~D&p{`AB zzwN_Y3A8e;d7Y1_G(A^==#0Gf`tCHB9_ANKav*bw< zqdx|LZ_qjr?pQDvs-(V%Lv}?l51*G8<#{@y-OpdvF}f%>GOVV$Jy5+Ls=!Gvm&LZ* z{H#?h+KAZ&+<{Dl*#a$t?Rt1}A}Q-Qt0*rrP=91u(wYqUJpMm*t<#?#|EFsHZwlr? z4(;H%56~_hYUU_wD3@X2bg0Ab%L*7SV6@or)#}^DoR=}7wg(~?$4WaW?CqVacn1s7 zVzQ#idFmXD2$K8g`&lxW!Nro?^G*7I&dCFzEHJ~8CA1{O(zY|MsaM)EFOxFY6#feR z_R-J!Bp13xbbp7c%v>ni*s9LH9hK^_{I=Jl!&%< zz#3sQQDR$4Guy997x!%ER-?05FrtC*_rQJwJ+N-Tv4V`{Xmz)(orSt!P~!zsteNLwIssncI) z;a6KIByO1(nKEC+`XjYW3W&OMCHtzI;$=)bW$OZ^ySDtaYk_ZLQeq<~W+*VFt6Uq< zn@-gb{N_+BItsc*&0Z^WpX%pF9gHX_F_!ZBy#V6xZg!&1kYh6J@}oXk0|VL93uZi$ zhZH0AB7mO-2j*5z*IlJf!(daDw`K*Pw8opbL5PDrg?=pL4_*eQs{zMyNVe5fw*@K- z4GPx;Jye6B?j0;BlfDsypBW-DiM6R6WWHwut7%tv)zPc5T=aGH2|)Nd+RS6>^Sjx4 z{0vJ#-JU0tyZS()9KFbvz9Er8ur*q>Um((taW8vuBi>YtYWoN~*D|u8^RB@l>F~{4 z^Os_XiZ*)@4PpbVj9OhM0#DTp7#GA~v>1UF2mgV!Y_}Lv%TcBe^mJ#}GABQfsZ13? zFR@WuQSVr=1eDcHU(lXRQ@&qSb+*a2+GLaFsjDO>#%QZ=*SLO<4z-ubH!~^U!)fw4 zg*EC~TMhB+_>VMoG=1w$Z} zL1=rC8ys|uUV|n?4Li`X3el83@ z-BWlqZ)z2idIwm8@^?U+{%D7<4oy}7emXU zwj-xil3ow0lUcvIh9z@?SeaQbo72UZ)zs0Znpwa~kF>+3RXy011j4?6Gt`XISH6@{ znm7>sbRrr?ABn1b%xDc`&!tM(4`620H7q^JrK{q!JsK}ain|j9fzR592fZcB7j3I@ zjqObcWff=r!mhF7Wo>KLa+Nt4-A@TCZC?}S_Z<~`I=%JoSm3#ae`hw=yKC?-*1L{A zG)j*BW28@dwOw8GI3(0W+3pr|zz!8M=&k*AcRwFzceizx!Y*u;?sogG#cP4--jiez z+)`8B5~$4A`rwaRCnYc%-Eq*OK3I!-l(tP*X>{Yz1FDSTDnUa*Q77w=I+WEWXpJ?cV+DDlwo)@ITMdwea!Ia z6PLEHH&gk41N0*8F#O+9IqGIh=9teNy@_?EZ}&WdD!7shD@So&R~o*l*;npfO=L1&?;tDIZ^+W&$uepk2L%RI_OE{TC}-`{OYneES1_hNKDO zY+%#OwZ7i&-P-0#%x7qYIuNFh$d_*!cU|V7wcJGjv&HB)ZE@^Xzf7~Xd15D48goyf zN^llb|Ijn0`Yxs|8Aq+^hFkvQ@{`v#TR%dHZ6~utXKiz{De(kbqQ8u>&E(k9%N(zn z$!nX|$;(T3>pt+?c?8sr`p2Vv0&4i_u#`)8vprlaX`yua)IQlbIi92BM6GF9c{TZ8 zggEHe%lP?V>S`m+oLM_mt>l;rD@L6Rfi4-{wB&TgD=MudB==-&%uvazu=9Zo%W_6E zB>Jq&S|0imOY_SpSXLHoy#^)M3m%~k^%LYqy+Ztakwd$#VVTrmZkHMiaZtJjb2HXJ z#u#jAJy2>%hHAD_HY0a>WK&X@EYKPizTUKCnsBP)q;tW`ePQBvtq`5^8 zRVh|FpP6n)Ch#Vl7%gkp!FrLY=*NVAQ))BF#N8~VwPDWHn`GDO@0fdKO>+Rrohx-{ zUG`Lp{cfjBYrKQwBHY@_*YkBtvS_l3m^a|ph@dGoRV9JQwVW4&CF-s3NTp{)t9J(? zp~O(`^yrkwKJDyO@7*Bv#+ICoUWI4~Gd5Q+AqFasHRwA*2bRXNR}v0(j>hUq$CEE~ z+Eabl!s8$s;5jI`dd=_uz0#&P=>FfC+W(xw)itO_bUl79FOZ#ImknDhj$JjxzbbQ1 zTk~JQEb3h zUzjk0eYp$BPL#OC5{JRQ)sMRZaq59e;p32aXeY$40iiLhW<#Sx1P}4CBY>r~lr56b z9;obV2%m<^jt;fv-!TV!P$F^h(w#jz}>^Z065@QO^0 zZO!*e>!i9nYNhkPg+kc;NJRoe#kS?KPuTxh)?q1r2J7u7twfR@NNC0Pux*gsitCV^ z)QSSriuouHtyuOzN(&x@3}XPZ1(o~h+E15FH#6+?8YFehiBz+5`$;qMZ$AtD-Ar$R z)D-dPISPAztytZ9s09$o?%!FXyZ-~Q0~&D8=19q&&H1$t<7@K^WRZryL2_Kqwy1ks z!H_o=3quYw$xr#oHzFC0kbyz|$9*DjHAtEBQ6>k;4-<<`{_Fkx-z53(AOifhvma82fGF)h@7 zyJ*&=EFXOO%-=sL|Iy6<4CZ^CfA7rst^I^rV9xK(Ut%U16eh@AuE91-*D}lj7)Slt zrp5S7)|L#YzaTeOGO+%FJl_uWZ4Qo@&ZThfcc{l1jfxIX&w((l9^EN= z3~Alj=FObgEXLH3xK#9ehk749rT)1{WH4yr{=m3b7f9T&&dT=AN*Gd@4La1bNTC`~ zjnnL0D)A3Ve{+f;>c*%DJ?GNaK;&Lb1}Sr?Z^L`Ot=-6@Ehb-{y4sa+=3Usm+xPY9 znzx)wQ(drM!|y8Uss?9Ctj|~M*zX@pt(ENaoo)*JJ*SQoKQnrwRXv0W^*`|WiWz%y zngW}_dUAPYh5|GDd|SH60@mFm^`^f*iySC%SgW3@+iE+{+KM#5WCIs&2QVXbjJG;E zo20K@Dr5Z$F_6YFW*TBjz{SJ~Ms3Z)G^MW9;#OedCg`aP(;}DQaQY77Vtm=}5{Ht+ zp&+5%4(eD9OwvRDfxRTA(v29nVk#{#CeF{RrK&ArDxIA;Sw?{vQA<8Toqu_q3=z!c z)>JA-G@FKMYh!6J*6y9lUQ1wqL-Nf4MX9-bJ43^bwdC2t+E#)_OT%B^R!YzRmK6Rc zmgq@uU(O9+-FAEj_gk73)tDaD?_eRUXH9XJ>d4=6b&Of_CptrG^P|Y1r_H@Fb&gFe zHM!SlAUaOXZ3b7?;4l>?v?EONt$y-(NT$_36P=ovYSORt(@$XbE0eR2^OJK;_Cd^! z`BHSvv3|NzLSDoLHbrY^{v8u|eurHF2|`p0qIjgoNQ+%x_;cTxG7wT_I(6=QQJa=Y zGUwC4!4tGHl?HT~p8Wm=Qwd8jj)(l(Lrt&z=w^romT^15W1c=~ebsu#*k{>7QM`)z zwGXi0px~1hedWv_mF3}q30WRi&vZb+Fv$cx&~z09N~>EHzlQx)c`~KY5Cz;TK(g-T zXPu^YpdXAO`Z&%`iWx`qXD&GF`RaC~1uXRSZ)d^5OZW3GRD45oq7+`c514W?xcF2y zQwA6=JPa(WkcVY1m#9hWFT=hIUG{YdFFMp*lW`}$lYRX*y6n4O)+B~~QOV-94rYkU zs1j*yf07e!PFMZCA*$xg>zPqIZt}8DQ%^%64Wla1B*Uo6sK=y%s3%$RW8`v~v}uB6 z(he*Sl9}{vmf$nV<&lxoYXVQoRuBkJ)T>M*saD=S+z7j(d=gyo4F`+ciuvM`c=bE7 z?h-SG(_-7E(8pMCU};%NrDjAXNVRvN(cZVib*H{tA$nkBJoJuUNOY(h5U*Dee+a9x ziDE)njXz!7eQk*xkk7I<>mlS0*Y&Vjm+l>{{x}eM5RK91gjpjbxn!IgLCNtjXysn8 zN)net3nZrLC9lyO&HwJ~lr<2R?V?JW5TV|`T5642N!&)nv1NmNQiqTfmhqDQs7{xK zu~hbEEc;>b)AoVlzg??#XJ6Ul{gZu+CH*rk8Yz8bH|)r8VfHzjLZ3odpl8|=!_dVr z#AWXO%vTPP0uWK}9#5+>|KZT54Bg!ZUwgjpyy)&onjBeuY*u9ci1} zJ=O?DuqyerbkoS9t@btw~*0T8)!0 zN5?|yv*4+@5twR+PhrRV>J^}XkJ*a8jK{JQX>6-`r>NQ4yR-@Zo2X;;HN_!6y7 zKvk}g=nnNW;2eL$i`w4+`a-4udz^ydZ+JzdP2#d84*rJM{J4+bh2Wl4E`kg1*LL_C zUPO33tUiIZ)hl&Na|5sxp`$m25?P5OI5rNI6+ygoyBWO!F{#At%CFn9zLB&{D%_tU%7 zeIHYIF(a=>p=$Mx0Bw!KeG>2Q6rPO^eTWf|;L_NZyG2q8Mu*;KO1g&cBWqf1Zx*o8 zk^Q6rwSBeCpw*5Z7dzAVg7a$+p{v1{6`q2J5dGnHfBVUfj@-_WYJLsO#nxN%EBGrF z?NF03ziIwqv)@LZgGhDiY_crBb{XQE^YPD$(C%Sbk=$YMdo8ydhVK|yF=DSa6tfV4 zUW%0|wdozu$+}8dPX`CJ>wEArnB>Qhj6nx2nNxY034shno0*Mhp#W|WCo>=!qRwYg1NMfZo)W{RJDn5~W0 z;VJ>UPkDCVP#@U(H>tMhgkubyJe{mszD3bgOJV#e7=K%!ETz8tq5oNXl^74TLS4P| zY?Jj3_)etC!%Rd2A}HpMfEG+=l{iFl+IF}2*1oLdZ;~QgSS0Pu!6*`vPh$qtfaqU; z4zS*oQ{mI^s+$}=o#pE3bY~^H(kx4|Qtg~>aao>?Ks&5!*&fc*pYir?ao&9PcG8N> zmfOR8mgUW7$LnG^z3BPupu(>;pJn;;*=XTv@_g2{T_>lluZQzIUh&=O+Mm=%PT8+W zGcuIz(R?z=i)MM{>`|^Y?X(tiR#|HuTHVB`)6fvq zdb)ZX)doxH+-X(oU`^;x`(f3iKegZ!cFUkID}T;uZHOu9`d*f_`8HG1xw<5;4ryxj zpvI2aGF{CEnpGNmE;Okw{=4khgWxD&LyMA%7l$qUvOgUUFPRvbYBN7-Pc9Pf(g|u1 z<}^cYizki01}jOsA7~rKAG1s|zKescADRBP=Ldg;kwk{dJ)5w1*1(Lj?_G7lcbr|uDt^E!YP+Vz)Z=M*1z6HNa2H;0cSNtlvQ{QY?7qqnf0*lB2>vpY=VZ4> zG-Qch3agR<0bTsWzJ~dK6P3_f`2)WWZQfp{tb7h!QMQ}10u{pBR}LQ~#wZ=k*|uZM1PdHp2BogBEjD+hiK&G1x~+CCTgb^9JfjJl(L zKysvOKhiM-RS6)-xdu5?+W)90NvEM2?5b6$fZJ8;#@Mbh`l`)qzwjv}bLP2Zm06T? zn5&7kX4uW&#yX(KWGC?Vjbs!*BCfuO=N6F-XFGg-*ra`ltV<5+QnS7amR}(Mo`(HG zU*^}o&AvcVGuHVy(VLZD_qvJs3u4q+=kp#ye(iHQGFnoYMP;@6&km2VXTdVD*u(h; zWDMi zm|1dW%9wHLG(4qFpC;AmDa?Qw>hz2EQKurePG_g9(-)>rn?cE~lNyy$Cx0CK{N2v! zCXLQI!c;4bULJsICF$jT5J9Q=5Q}X#C5>L%MRx-9(z=5o3nD7r>1BH!Zf~>zy2q#o zdsk}bm8debNWWo$v4Ny39Upu%%|SS`r>ovTqNaqAZSL_MfHkUr4*y{wl5JA)?HJX2 zI$gD7Xis|nD6k&p-Wc5j=-Kt)mto7fY zIEzqNzsA8i-S)I~iRddI^Y_4tIHia#t5)rofxk>Wi;Z_r!kwvJ?(DUL%tn8p(|dJj&{R=p2D0}o=n1lG8I9J9_d z)ysS)fcrb-{Fk7k+nZ*O$D5D+aeNf`!!E@CF`6^=d(ZpYpQ4d0|7y;IDcj6ne_tEr znY&CPXPa=$o|Sa(GTmwl{EV|kN`Vx1^_xrC!C#|nE!ZMXWoZgL$P`$Yp+L@KB1Y~B zRGFXb-9vp#={T*1R0zuj_&!f1*Dwn}HDY$e;k6DmlrEXz1kdz1LcR~M)`)ZNqU*f( zM~*yCFI$`b4aS1<+gISPj0UYthrqnoeV$Io@8$&L(Q@t)|M;|Y`gPR?TAgcx_?OT9iK&`YN`>I>;(bwaDIW<|2n=u6!H@jjW9Jwbx--%zJ26a&;9jXq-AHzJ+AN?_iK~I~Eo8pr%o-}3bq)8WFT72=P7vZ~>5j}om!Gbhp zQLNNqEUO{8tO8YI%PQzn7Pm{hvdY3K<>aL)Cy(VkiEPgg*_qU)JavREC$CF61;|hw z8b7vd!jy3rPna+^JULX1sFd<@)08KMH8gkN`TLX0%T+(ckPsf`b}294FE2DTJochu z6qjNL!km!>*~Bq2^R=t_BnMG8ymsbi_AW+lE=QGjh9oJypoet1ex5Ern7N!o7i$_@ zg082vQ!f8T+Hn-ZunTo;3I=)JEzCZ72>aNv%@`)FZ(!OT@f#AwmFW`1$TgH_PeJn- zGX-cl%95`R0`V>bN4H;n1-!p_x?{2wsJ_WkzlAV^^*`VuNNh5SaY8r~w01Q+Rt7({`4zM4?st-Q;!*41wd%CUtl1r`k zsY88+HG$kbzmgSNg{NoC-SY^JfWuML5o?cMUm%-PNZ$;!I`7w-@ssj~HUgucPEnsT zX_!tru}H*k6Qd5(QCWQw2PK_^`_0HbomX7$+IC6xT4C#j$0|BhJHP2W@ey1x>r$^7 zEa?{wQm<_8uGSajrj%FKeR*fu^2V^dn0UGP{)?Kb9RUqEBgVmT53E8agx+B(@aidl(T(#W@Q1-Jye2~$W) zd$`g;Gdt9NppgGulouOn+V{D!vU70VscLLsBEn?|

      KAZbGO*h$GyGu%`A;LD=%` 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

      *Cu4Dy=FE){21@Kiaugmo`RM_<87Q3&2dq%hN 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 J516Pz{2%hI^s4{> literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.dcp b/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.dcp new file mode 100644 index 0000000000000000000000000000000000000000..a9219ac94a45dfede6585819ebec83244e8af8ab GIT binary patch literal 781545 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 MMV+#b$YkvQ0}3`0Z~y=R literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.dcu b/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11.dcu new file mode 100644 index 0000000000000000000000000000000000000000..328394d33bfbcd68f6f9f6fe987094095704fb16 GIT binary patch literal 2746 zcmeHIU29xL7@p^t?7mr#XC-nd>|FflKH+#XUie3^p@T>)l5K6x z=^oVSF8-zwCNj0vM2QY#Ew?N~9>_JWWE9@L+WplRSq)wcr7~!-%Kb&&5;GBR-u&b8 zH?7fK$y^xh%BX0LR~K8?Ppa2^;qDDJ-Nljqk@;DXL`$(R62^Sdm(~0@3W9RXJHp70 znsarYELM3af^rn=kbOb(JeE9ES}isH*Jap@RxBv#?B~zJlNJ~0DwSnmg=a-eH$7gpXkUnVw=I2}@yb%5WF-nM+7rGC%}k}kBhw<#d8q}P z^=d3bC1MMlDFO77C1Y(q*N5zP@PXHumwC+;kH7V zLYVej?CPL8htw&f;a3~i(hK2Msoa%EVSfHTz8@eb`p7=s--~TJ`2%m(x^c-^Zu9S=`AZr+ zGh&;`oOvzu<&$gT4wI=t-DbgX?vhp{qy1n#sKEbFfuD`dTmA2!`?q(Epz{-Rw+LGv zh6ouCPY_P#@g(7C!ZUrSb{>II@j^m8dBhCi<#Bu8EGsgJ8FNVd+ literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.bpl b/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.bpl new file mode 100644 index 0000000000000000000000000000000000000000..ffdbbc5830a7d38f99d94278a2de9b9f82aeb6c4 GIT binary patch literal 73216 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 atO$n??ngL)5W!}ducc&pgLJnf1^ypINqM0F literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.dcu b/official/1.7.0/EasyListview/Lib/D11/EasyListviewD11D.dcu new file mode 100644 index 0000000000000000000000000000000000000000..8d1d50c38487caf88580ca782344638c2a88c39a GIT binary patch literal 4575 zcmeHJYiJx*6rOLI?4E45Z8oH36f5<~`U+M|jZ!7aZqi1wb(`Hbp%m%t%*|$+*_mbb zCfyW~R$8&eN_|j7q^J}T5fPD6L_~ZcA|hIfNKp}yRzyTZib(a$Cebv`-CzF9z}cC- z-@WI3?m5?JTE{mjO*>P#=?>?Db5zq)T?1xqX4t98X-DkIu3w)$7SlEcor_ny>|p#a zeqzDeuCAR~QFF@P&V`#sM7hhhf~_Yj-7OKv15x{eh3eG^&eh4&3~3@(n5juo(X?`M z(D6*y*=tJ2_s;LCeqf0>gF~JpL$o(*Q8TtXiaOw3LQ+8Q*n<6^b6P9q9+rTWPx)IHo6S(Qtg!@oayO0wuO)n{-?i%)Fbx z@#0K%$Q$<+k~6MZs|gir_R65+Dq)TzCqpn3&6_p_W_7}`RLpZzu5@y~r#RhbNiWQ` zXt-^&aM><7uHv2#98Zcs0mlYiQx^K8dB?ZaixZ+EqS06bQ}NC2sq|Hy=#y;?hlH_; z#%Z7~Gcr&GI-Ye**Dot1$1|=|Ed_Qo>()U(s3=ah=7cw;z$oK;GVoO@Eg#AbOx9JI-jXv_E)QKACX#|Ln^$S#@s^@l zQk+aQ%rQ#^p-9kcmrkCn8$Gr($snsj4?JG{lnt}1L+;DgWCSPt;V=@d*6MkIqdW!$b{H;I=bKm-NNzv;SQE>p zt@+P3yD_D4uFPS}88i9XD48C&l*aZJUaHT1Uos)_Bsjl3ugI`d3g^Sw|qwc{|KrI5kWv*dv#4=j1$fA+wskl%Za-*byU&xZ?@imoO1>xBKfffho{z!iim z(^yBi+Q7Ah>j?(oasz3?jRtNebP;YP+(x*au)#nN;V!~P!abYOOXw$L34;bU6YeDp z6Sf%06GjL{!gj(KVMiT13HK9r5lTI<3FCwb!fpdD!81@L1O!Q#9z&h5*T4gW2YaxO z@DSku;bFofgu{eK36Bwu5}qJDML0%yn(z$aS;Fx&o+G@_gA;@od+-wBWdpAeUQOdQ z!s`a!Ae=OCitr}kEyCMryhC`G@IK)~!bgOU37-%?HSihXbHZuD83SJuzN+Ia;p;TM zC45Ktp6~zTTl?qs@~_xJI8Ku=?c-#MmE!Wu$5p~FZX)OC(xB6(=`ttS%6BXgh0 WL{iuFm9#=Xsy(jjJG3V?&HNip8H(lr literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Lib/D11/EasyListviewReg.dcu b/official/1.7.0/EasyListview/Lib/D11/EasyListviewReg.dcu new file mode 100644 index 0000000000000000000000000000000000000000..ea56edbd39a779138fff9f7b085f9280fc56eeca GIT binary patch literal 10140 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 v-SpV!?4rku&TaH~$+?>z`6D3G*Wm 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/MustangpeakComponentInstaller.dll b/official/1.7.0/EasyListview/MustangpeakComponentInstaller.dll new file mode 100644 index 0000000000000000000000000000000000000000..adf093f1d2b3d5d63b6ca960b40f72e0e85095e3 GIT binary patch literal 167936 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≥;ixE=Q=u?kw$6+!Z8 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Setup.ini b/official/1.7.0/EasyListview/Setup.ini new file mode 100644 index 0000000..ddfb8d9 --- /dev/null +++ b/official/1.7.0/EasyListview/Setup.ini @@ -0,0 +1,59 @@ +[REGKEY] +Name=Mustangpeak\EasyListview + +[EXTRAPATHS] + +[INCLUDEPATHS] +Path1=..\Include + +[REQUIREDPACKAGES] +Package1= +Package1= + +[D4_PACKAGES] +Package1=EasyListviewD4 +Package2=EasyListviewD4D + +[D5_PACKAGES] +Package1=EasyListviewD5 +Package2=EasyListviewD5D + +[D6_PACKAGES] +Package1=EasyListviewD6 +Package2=EasyListviewD6D + +[D7_PACKAGES] +Package1=EasyListviewD7 +Package2=EasyListviewD7D + +[D8_PACKAGES] +Package1= +Package2= + +[D9_PACKAGES] +Package1=EasyListviewD9 +Package2=EasyListviewD9D + +[D10_PACKAGES] +Package1=EasyListviewD10 +Package2=EasyListviewD10D + +[D11_PACKAGES] +Package1=EasyListviewD11 +Package2=EasyListviewD11D + +[C3_PACKAGES] +Package1= +Package2= + +[C4_PACKAGES] +Package1= +Package2= + +[C5_PACKAGES] +Package1=EasyListviewC5 +Package2=EasyListviewC5D + +[C6_PACKAGES] +Package1=EasyListviewC6 +Package2=EasyListviewC6D diff --git a/official/1.7.0/EasyListview/Source/Compilers.inc b/official/1.7.0/EasyListview/Source/Compilers.inc new file mode 100644 index 0000000..41ff138 --- /dev/null +++ b/official/1.7.0/EasyListview/Source/Compilers.inc @@ -0,0 +1,493 @@ +//---------------------------------------------------------------------------------------------------------------------- +// Include file to determine which compiler is currently being used to build the project/component. +// This file uses ideas from Brad Stowers DFS.inc file. +// +// Portions created by Mike Lischke are +// Copyright (C) 1999-2005 Mike Lischke. All Rights Reserved. +// Portions created by Jim Kueneman are +// Copyright (C) 2005 Jim Kueneman. All Rights Reserved. +// +//---------------------------------------------------------------------------------------------------------------------- +// +// This unit is released under the MIT license: +// Copyright (c) 1999-2005 Mike Lischke (support@soft-gems.net, www.soft-gems.net). +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +// Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +// OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// You are asked to give the author(s) the due credit. This means that you acknowledge the work of the author(s) +// in the product documentation, about box, help or wherever a prominent place is. +// +//---------------------------------------------------------------------------------------------------------------------- +// +// The following symbols are defined: +// +// - COMPILER_1 : Kylix/Delphi/BCB 1.x is the compiler. +// - COMPILER_1_UP : Kylix/Delphi/BCB 1.x or higher is the compiler. +// - COMPILER_2 : Kylix/Delphi 2.x or BCB 1.x is the compiler. +// - COMPILER_2_UP : Kylix/Delphi 2.x or higher, or BCB 1.x or higher is the compiler. +// - COMPILER_3 : Kylix/Delphi/BCB 3.x is the compiler. +// - COMPILER_3_UP : Kylix/Delphi/BCB 3.x or higher is the compiler. +// - COMPILER_4 : Kylix/Delphi/BCB 4.x is the compiler. +// - COMPILER_4_UP : Kylix/Delphi/BCB 4.x or higher is the compiler. +// - COMPILER_5 : Kylix/Delphi/BCB 5.x is the compiler. +// - COMPILER_5_UP : Kylix/Delphi/BCB 5.x or higher is the compiler. +// - COMPILER_6 : Kylix/Delphi/BCB 6.x is the compiler. +// - COMPILER_6_UP : Kylix/Delphi/BCB 6.x or higher is the compiler. +// - COMPILER_7 : Kylix/Delphi/BCB 7.x is the compiler. +// - COMPILER_7_UP : Kylix/Delphi/BCB 7.x or higher is the compiler. +// - COMPILER_8 : Kylix/Delphi/BCB 8.x is the compiler. +// - COMPILER_8_UP : Kylix/Delphi/BCB 8.x or higher is the compiler. +// - COMPILER_9 : Kylix/Delphi/BCB 9.x is the compiler. +// - COMPILER_9_UP : Kylix/Delphi/BCB 9.x or higher is the compiler. +// - COMPILER_10 : Kylix/Delphi/BCB 10.x is the compiler. +// - COMPILER_10_UP : Kylix/Delphi/BCB 10.x or higher is the compiler. +// - COMPILER_11 : Kylix/Delphi/BCB 11.x is the compiler. +// - COMPILER_11_UP : Kylix/Delphi/BCB 11.x or higher is the compiler. +// +// Only defined if Windows is the target: +// - CPPB : Any version of BCB is being used. +// - CPPB_1 : BCB v1.x is being used. +// - CPPB_3 : BCB v3.x is being used. +// - CPPB_3_UP : BCB v3.x or higher is being used. +// - CPPB_4 : BCB v4.x is being used. +// - CPPB_4_UP : BCB v4.x or higher is being used. +// - CPPB_5 : BCB v5.x is being used. +// - CPPB_5_UP : BCB v5.x or higher is being used. +// - CPPB_6 : BCB v6.x is being used. +// - CPPB_6_UP : BCB v6.x or higher is being used. +// - CPPB_XXX is not used any more, use the COMPILER_XXX defines +// +// Only defined if Windows is the target: +// - DELPHI : Any version of Delphi is being used. +// - DELPHI_1 : Delphi v1.x is being used. +// - DELPHI_2 : Delphi v2.x is being used. +// - DELPHI_2_UP : Delphi v2.x or higher is being used. +// - DELPHI_3 : Delphi v3.x is being used. +// - DELPHI_3_UP : Delphi v3.x or higher is being used. +// - DELPHI_4 : Delphi v4.x is being used. +// - DELPHI_4_UP : Delphi v4.x or higher is being used. +// - DELPHI_5 : Delphi v5.x is being used. +// - DELPHI_5_UP : Delphi v5.x or higher is being used. +// - DELPHI_6 : Delphi v6.x is being used. +// - DELPHI_6_UP : Delphi v6.x or higher is being used. +// - DELPHI_7 : Delphi v7.x is being used. +// - DELPHI_7_UP : Delphi v7.x or higher is being used. +// - DELPHI_8 : Delphi v8.x is being used. +// - DELPHI_8_UP : Delphi v8.x or higher is being used. +// - DELPHI_9 : Delphi v9.x is being used. +// - DELPHI_9_UP : Delphi v9.x or higher is being used. +// - DELPHI_XXX is not used any more, use the COMPILER_XXX defines +// +// Only defined if Linux is the target: +// - KYLIX : Any version of Kylix is being used. +// - KYLIX_1 : Kylix 1.x is being used. +// - KYLIX_1_UP : Kylix 1.x or higher is being used. +// - KYLIX_2 : Kylix 2.x is being used. +// - KYLIX_2_UP : Kylix 2.x or higher is being used. +// - KYLIX_3 : Kylix 3.x is being used. +// - KYLIX_3_UP : Kylix 3.x or higher is being used. +// +// Only defined if Linux is the target: +// - QT_CLX : Trolltech's QT library is being used. +// +// Only defined if Delphi.NET is the target: +// - DELPHI.NET : Any version of Delphi.NET is being used. +// - DELPHI.NET_1 : Delphi.NET version 1.x is being used. +// - DELPHI.NET_1_UP : Delphi.NET version 1.x is being used. +//---------------------------------------------------------------------------------------------------------------------- + +{$ifdef CLR} // The common language runtime symbol is only defined for the .NET platform. + {$define DELPHI.NET} + {$ifdef VER160} + {$define DELPHI.NET_1} + {$endif VER160} + + // Compiler defines common to all .NET versions. + {$ifdef DELPHI.NET_1} + {$define DELHI.NET_1_UP} + {$endif DELPHI.NET_1} +{$endif CLR} + +{$ifdef Win32} + +// Compiler defines not specific to a particlular platform. + + // DELPHI and BCB are no longer defined, only COMPILER + {$ifdef VER190} + {$define COMPILER_11} + {$endif VER190} + + // DELPHI and BCB are no longer defined, only COMPILER + {$ifdef VER180} + {$define COMPILER_10} + {$endif VER180} + + {$ifdef VER170} + {$define COMPILER_9} + {$define DELPHI} + {$define DELPHI_9} + {$endif VER170} + + {$ifdef VER160} + {$define COMPILER_8} + {$define DELPHI} + {$define DELPHI_8} + {$endif VER160} + + {$ifdef VER150} + {$define COMPILER_7} + {$define DELPHI} + {$define DELPHI_7} + {$endif} + + {$ifdef VER140} + {$define COMPILER_6} + {$ifdef BCB} + {$define CPPB} + {$define CPPB_6} + {$else} + {$define DELPHI} + {$define DELPHI_6} + {$endif} + {$endif} + + {$ifdef VER130} + {$define COMPILER_5} + {$ifdef BCB} + {$define CPPB} + {$define CPPB_5} + {$else} + {$define DELPHI} + {$define DELPHI_5} + {$endif} + {$endif} + + {$ifdef VER125} + {$define COMPILER_4} + {$define CPPB} + {$define CPPB_4} + {$endif} + + {$ifdef VER120} + {$define COMPILER_4} + {$define DELPHI} + {$define DELPHI_4} + {$endif} + + {$ifdef VER110} + {$define COMPILER_3} + {$define CPPB} + {$define CPPB_3} + {$endif} + + {$ifdef VER100} + {$define COMPILER_3} + {$define DELPHI} + {$define DELPHI_3} + {$endif} + + {$ifdef VER93} + {$define COMPILER_2} // C++ Builder v1 compiler is really v2 + {$define CPPB} + {$define CPPB_1} + {$endif} + + {$ifdef VER90} + {$define COMPILER_2} + {$define DELPHI} + {$define DELPHI_2} + {$endif} + + {$ifdef VER80} + {$define COMPILER_1} + {$define DELPHI} + {$define DELPHI_1} + {$endif} + + {$ifdef DELPHI_2} + {$define DELPHI_2_UP} + {$endif} + + {$ifdef DELPHI_3} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$endif} + + {$ifdef DELPHI_4} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$endif} + + {$ifdef DELPHI_5} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$endif} + + {$ifdef DELPHI_6} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$endif} + + {$ifdef DELPHI_7} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$endif} + + {$ifdef DELPHI_8} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$endif} + + {$ifdef DELPHI_9} + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$endif} + + {$ifdef CPPB_3} + {$define CPPB_3_UP} + {$endif} + + {$ifdef CPPB_4} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$endif} + + {$ifdef CPPB_5} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$endif} + + {$ifdef CPPB_6} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + {$endif} + + {$ifdef CPPB_3_UP} + // C++ Builder requires this if you use Delphi components in run-time packages. + {$ObjExportAll On} + {$endif} + +{$else (not Windows)} + // Linux is the target + {$define QT_CLX} + + {$define KYLIX} + + {$ifdef VER140} + {$define COMPILER_6} + {$ifdef conditionalexpressions} + {$if Declared(RTLVersion) and (RTLVersion = 14)} + {$define KYLIX_1} + {$ifend} + + {$if Declared(RTLVersion) and (RTLVersion = 14.2)} + {$define KYLIX_2} + {$ifend} + + {$if Declared(RTLVersion) and (RTLVersion = 14.5)} + {$define KYLIX_3} + {$ifend} + {$endif} + {$endif} + + {$ifdef VER150} + {$define COMPILER_7} + {$define KYLIX_3} + {$endif} + + {$ifdef VER140} + {$define COMPILER_6} + {$define KYLIX_2} + {$endif} + + {$ifdef KYLIX_1} + {$define KYLIX_1_UP} + {$endif} + + {$ifdef KYLIX_2} + {$define KYLIX_2_UP} + {$endif} + + {$ifdef KYLIX_3} + {$define KYLIX_2_UP} + {$define KYLIX_3_UP} + {$endif} + +{$endif Win32} + + +{$ifdef COMPILER_1} + {$define COMPILER_1_UP} +{$endif} + +{$ifdef COMPILER_2} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} +{$endif} + +{$ifdef COMPILER_3} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} +{$endif} + +{$ifdef COMPILER_4} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} +{$endif} + +{$ifdef COMPILER_5} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} +{$endif} + +{$ifdef COMPILER_6} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} +{$endif} + +{$ifdef COMPILER_7} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} +{$endif} + +{$ifdef COMPILER_8} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} +{$endif} + +{$ifdef COMPILER_9} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} +{$endif} + +{$ifdef COMPILER_10} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} + {$define COMPILER_10_UP} + // Backwards compatibility + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + + {$ifdef BCB} + {$define CPPB} + {$else} + {$define DELPHI} + {$endif} + +{$endif} + +{$ifdef COMPILER_11} + {$define COMPILER_1_UP} + {$define COMPILER_2_UP} + {$define COMPILER_3_UP} + {$define COMPILER_4_UP} + {$define COMPILER_5_UP} + {$define COMPILER_6_UP} + {$define COMPILER_7_UP} + {$define COMPILER_8_UP} + {$define COMPILER_9_UP} + {$define COMPILER_10_UP} + {$define COMPILER_11_UP} + // Backwards compatibility + {$define DELPHI_2_UP} + {$define DELPHI_3_UP} + {$define DELPHI_4_UP} + {$define DELPHI_5_UP} + {$define DELPHI_6_UP} + {$define DELPHI_7_UP} + {$define DELPHI_8_UP} + {$define DELPHI_9_UP} + {$define CPPB_3_UP} + {$define CPPB_4_UP} + {$define CPPB_5_UP} + {$define CPPB_6_UP} + + {$ifdef BCB} + {$define CPPB} + {$else} + {$define DELPHI} + {$endif} + +{$endif} + +//---------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/official/1.7.0/EasyListview/Source/EasyLVResources.hpp b/official/1.7.0/EasyListview/Source/EasyLVResources.hpp new file mode 100644 index 0000000..694d417 --- /dev/null +++ b/official/1.7.0/EasyListview/Source/EasyLVResources.hpp @@ -0,0 +1,36 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Easylvresources.pas' rev: 11.00 + +#ifndef EasylvresourcesHPP +#define EasylvresourcesHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Easylvresources +{ +//-- type declarations ------------------------------------------------------- +//-- var, const, procedure --------------------------------------------------- +#define STR_NONEXISTENTCOLUMN "ERROR: Accessing a non-existent column index" +#define STR_NONEXISTENTCOLUMNBANDROW "ERROR: Accessing a non-existent Column Band Row" +#define STR_NONEXISTENTGROUP "ERROR: Accessing a non-existent Group ID" +#define STR_BACKGROUNDALPHABLEND "Error: Background AlphaBlend mode requires an AlphaImage" + +} /* namespace Easylvresources */ +using namespace Easylvresources; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Easylvresources diff --git a/official/1.7.0/EasyListview/Source/EasyLVResources.obj b/official/1.7.0/EasyListview/Source/EasyLVResources.obj new file mode 100644 index 0000000000000000000000000000000000000000..551f9d7e498ac1e226d3e734895461abe8fe860e GIT binary patch literal 673 zcmZvYU2D@&7{~v4>1imwjCI-#QF~Fn(x4Q<%XTKyK)06Ww5~DjQ&q>;wGQxSz|Nnd5$Qj?oZC&592k(#ey*<+nN40j- z3lkga2X2U{fHCrh7aa8bV#5vh-JsZh{8WE}NCPgeNT>kOI>r~d<@Ujwx0G6;lxB}Y ztM3o>6kVUAq4zE&UrvFH!_8f;KC2sM#xbhAswTnNv~7h>wp7}*JKHuhOmS;ud8c6} zo`mo_)$P=i5WZP|X`A!4x0EQT957pkxhd}COh$uk9K1*}%K{JtCbAKjrp=$8%;k3K-s z5p4hy`O+-THn3Ll=>h%aJ`K^Wr0?=PJ{PF7^1|(R120({jM9ymlo3ln>*Q}aZuRZ~ z=*}K>kBc+U6rtE4>F~&VLK^=ilpd{K#XP<*_u)b7fj2@$-IL!Q?7p8Tj;2 o)Jas8!BpnNa}d++2#oJcK&m6kmZ^l(YoMo9A<;)efD@XC|3ba4nE(I) literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/Source/EasyLVResources.pas b/official/1.7.0/EasyListview/Source/EasyLVResources.pas new file mode 100644 index 0000000..5e829da --- /dev/null +++ b/official/1.7.0/EasyListview/Source/EasyLVResources.pas @@ -0,0 +1,40 @@ +unit EasyLVResources; + +// Version 1.7.0 +// +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ +// +// Alternatively, you may redistribute this library, use and/or modify it under the terms of the +// GNU Lesser General Public License as published by the Free Software Foundation; +// either version 2.1 of the License, or (at your option) any later version. +// You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the +// specific language governing rights and limitations under the License. +// +// The initial developer of this code is Jim Kueneman +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} +{$I ..\Include\Debug.inc} +{$I ..\Include\Addins.inc} + +{$B-} + +const + STR_NONEXISTENTCOLUMN = 'ERROR: Accessing a non-existent column index'; + STR_NONEXISTENTCOLUMNBANDROW = 'ERROR: Accessing a non-existent Column Band Row'; + STR_NONEXISTENTGROUP = 'ERROR: Accessing a non-existent Group ID'; + STR_BACKGROUNDALPHABLEND = 'Error: Background AlphaBlend mode requires an AlphaImage'; + +implementation + +end. diff --git a/official/1.7.0/EasyListview/Source/EasyListview.hpp b/official/1.7.0/EasyListview/Source/EasyListview.hpp new file mode 100644 index 0000000..0ea6652 --- /dev/null +++ b/official/1.7.0/EasyListview/Source/EasyListview.hpp @@ -0,0 +1,6934 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Easylistview.pas' rev: 11.00 + +#ifndef EasylistviewHPP +#define EasylistviewHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- +namespace Easylistview { +class DELPHICLASS TEasyItem; +class DELPHICLASS TEasyGroup; +class DELPHICLASS TEasyColumn; +struct TGroupSortInfoRec; +__interface IEasyNotificationSink; +} + +namespace Easylistview +{ +//-- type declarations ------------------------------------------------------- +typedef TMetaClass* TEasyCollectionItemClass; + +typedef TMetaClass* TEasyViewItemClass; + +typedef TMetaClass* TEasyViewColumnClass; + +typedef TMetaClass* TEasyViewGroupClass; + +typedef TMetaClass* TEasyGridGroupClass; + +typedef TMetaClass* TEasyGroupClass; + +typedef TMetaClass* TEasyItemClass; + +typedef TMetaClass* TEasyColumnClass; + +typedef TMetaClass* TEasyColumnStoredClass; + +class DELPHICLASS TEasyItem; +typedef TEasyItem* __fastcall (__closure *TItemNextEnum)(TEasyItem* Item); + +typedef TEasyItem* __fastcall (__closure *TItemEnumFirstLast)(void); + +typedef DynamicArray TRectArray; + +typedef Set TCommonMouseButtons; + +typedef DynamicArray TEasyItemArray; + +class DELPHICLASS TEasyGroup; +typedef DynamicArray TEasyGroupArray; + +class DELPHICLASS TEasyColumn; +typedef DynamicArray TEasyColumnArray; + +#pragma option push -b- +enum TEasyQueryDragResult { eqdrContinue, eqdrQuit, eqdrDrop }; +#pragma option pop + +#pragma option push -b- +enum TEasyCheckType { ectNone, ettNoneWithSpace, ectBox, ectRadio }; +#pragma option pop + +#pragma option push -b- +enum TEasyListStyle { elsIcon, elsSmallIcon, elsList, elsReport, elsThumbnail, elsTile, elsFilmStrip, elsGrid }; +#pragma option pop + +#pragma option push -b- +enum TEasyGroupMarginEdge { egmeBackground, egmeTop, egmeBottom, egmeLeft, egmeRight, egmeForeground }; +#pragma option pop + +#pragma option push -b- +enum TEasyHeaderType { ehtHeader, ehtFooter }; +#pragma option pop + +#pragma option push -b- +enum TEasyHeaderButtonStyle { ehbsThick, ehbsFlat, ehbsPlate, ehbsThemed }; +#pragma option pop + +#pragma option push -b- +enum TEasyHeaderImagePosition { ehpLeft, ehpTop, ehpRight, ehpBottom }; +#pragma option pop + +#pragma option push -b- +enum TEasySortDirection { esdNone, esdAscending, esdDescending }; +#pragma option pop + +#pragma option push -b- +enum TEasySortGlyphAlign { esgaLeft, esgaRight }; +#pragma option pop + +#pragma option push -b- +enum TEasyDragType { edtOLE, edtVCL }; +#pragma option pop + +#pragma option push -b- +enum TEasySelectionType { ecstSelect, ecstUnSelect, ecstInvert }; +#pragma option pop + +#pragma option push -b- +enum TEasyColumnHitTestInfo { ectOnCheckbox, ectOnIcon, ectOnLabel, ectOnText }; +#pragma option pop + +typedef Set TEasyColumnHitTestInfoSet; + +#pragma pack(push,1) +struct TEasyHitInfoColumn +{ + +public: + TEasyColumn* Column; + TEasyColumnHitTestInfoSet HitInfo; +} ; +#pragma pack(pop) + +#pragma option push -b- +enum TEasyGroupHitTestInfo { egtOnBand, egtOnCheckbox, egtOnExpandButton, egtOnIcon, egtOnLabel, egtOnText, egtOnHeader, egtOnFooter, egtOnLeftMargin, egtOnRightMargin }; +#pragma option pop + +typedef Set TEasyGroupHitTestInfoSet; + +#pragma option push -b- +enum TEasyDefaultWheelScroll { edwsHorz, edwsVert }; +#pragma option pop + +#pragma pack(push,1) +struct TEasyHitInfoGroup +{ + +public: + TEasyGroup* Group; + TEasyGroupHitTestInfoSet HitInfo; +} ; +#pragma pack(pop) + +#pragma option push -b- +enum TEasyItemHitTestInfo { ehtStateIcon, ehtOnIcon, ehtOnLabel, ehtOnClickSelectBounds, ehtOnDragSelectBounds, ehtOnText, ehtOnCheck, ehtOnEdit }; +#pragma option pop + +typedef Set TEasyItemHitTestInfoSet; + +#pragma pack(push,1) +struct TEasyHitInfoItem +{ + +public: + TEasyItem* Item; + TEasyGroup* Group; + TEasyColumn* Column; + TEasyItemHitTestInfoSet HitInfo; +} ; +#pragma pack(pop) + +#pragma option push -b- +enum TEasyStorageObjectState { esosChecked, esosCheckPending, esosCheckHover, esosClicking, esosCut, esosDestroying, esosHilighted, esosEnabled, esosFocused, esosInitialized, esosSelected, esosVisible, esosHotTracking, esosBold, esosDropTarget, esosGhosted }; +#pragma option pop + +typedef Set TEasyStorageObjectStates; + +#pragma option push -b- +enum TEasyGroupsState { egsRebuilding }; +#pragma option pop + +typedef Set TEasyGroupsStates; + +#pragma option push -b- +enum TEasySelectHitType { eshtClickSelect, eshtDragSelect }; +#pragma option pop + +#pragma option push -b- +enum TEasyCellRectType { ertBounds, ertIcon, ertLabel, ertClickSelectBounds, ertDragSelectBounds, ertText, ertFullText }; +#pragma option pop + +#pragma option push -b- +enum TEasyImageSize { eisSmall, eisLarge, eisExtraLarge }; +#pragma option pop + +#pragma option push -b- +enum TEasyImageKind { eikNormal, eikOverlay, eikState }; +#pragma option pop + +#pragma option push -b- +enum TEasyDragManagerState { edmsDragging, edmsAutoScrolling }; +#pragma option pop + +typedef Set TEasyDragManagerStates; + +#pragma option push -b- +enum TEasyControlState { ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown, ebcsScrollButtonDown, ebcsDragPending, ebcsDragging, ebcsVCLDrag, ebcsDragSelectPending, ebcsDragSelecting, ebcsThemesLoaded, ebcsCheckboxClickPending, ebcsGroupExpandPending, ebcsHeaderCapture, ebcsScrolling, ebcsOLERegistered, ebcsCancelContextMenu }; +#pragma option pop + +typedef Set TEasyControlStates; + +#pragma option push -b- +enum TEasyHeaderState { ehsMouseCaptured, ehsResizing, ehsDragging, ehsDragPending, ehsClickPending, ehsCheckboxClickPending, ehsResizePending, ehsLButtonDown, ehsRButtonDown, ehsMButtonDown }; +#pragma option pop + +typedef Set TEasyHeaderStates; + +#pragma option push -b- +enum TEasyItemState { eisTextRectCached }; +#pragma option pop + +typedef Set TEasyItemStates; + +#pragma pack(push,1) +struct TEasyRectArrayObject +{ + +public: + Types::TRect LabelRect; + Types::TRect IconRect; + Types::TRect TextRect; + Types::TRect CheckRect; + Types::TRect BoundsRect; + Types::TRect ClickSelectBoundsRect; + Types::TRect DragSelectBoundsRect; + Types::TRect FullTextRect; + Types::TRect SelectionRect; + Types::TRect FullFocusSelRect; + Types::TRect FocusChangeInvalidRect; + Types::TRect EditRect; + Types::TRect SortRect; + Types::TRect StateRect; + DynamicArray TextRects; + Types::TRect ExpandButtonRect; + Types::TRect BandRect; + Types::TRect BackGndRect; + Types::TRect GroupRect; + Types::TRect DropDownArrow; +} ; +#pragma pack(pop) + +typedef DynamicArray TEasyRectArrayObjectArray; + +#pragma option push -b- +enum TEasyMakeVisiblePos { emvTop, emvMiddle, emvBottom, emvAuto }; +#pragma option pop + +#pragma option push -b- +enum TEasySearchDirection { esdForward, esdBackward }; +#pragma option pop + +#pragma option push -b- +enum TEasyAdjacentCellDir { acdLeft, acdRight, acdUp, acdDown, acdPageDown, acdPageUp }; +#pragma option pop + +#pragma option push -b- +enum TEasyGridLayout { eglHorz, eglVert, eglGrid }; +#pragma option pop + +#pragma option push -b- +enum TEasyHintType { ehtText, ehtToolTip, ehtCustomDraw }; +#pragma option pop + +struct TEasyHintInfoRec; +typedef TEasyHintInfoRec *PEasyHintInfoRec; + +#pragma option push -b- +enum TEasySortAlgorithm { esaQuickSort, esaBubbleSort, esaMergeSort }; +#pragma option pop + +#pragma option push -b- +enum TEasyIncrementalSearchState { eissTimerRunning, eissSearching }; +#pragma option pop + +typedef Set TEasyIncrementalSearchStates; + +#pragma option push -b- +enum TCoolIncrementalSearchStart { eissStartOver, eissLastHit, eissFocusedNode }; +#pragma option pop + +#pragma option push -b- +enum TEasyIncrementalSearchItemType { eisiAll, eisiInitializedOnly, eisiVisible }; +#pragma option pop + +#pragma option push -b- +enum TEasyIncrementalSearchDir { eisdForward, eisdBackward }; +#pragma option pop + +#pragma option push -b- +enum TEasyNextItemType { enitAny, enitVisible, enitInitialized, enitVisibleInExpandedGroup, enitEditable }; +#pragma option pop + +#pragma option push -b- +enum TEasyScrollbarDir { esdVertical, esdHorizontal, esdBoth }; +#pragma option pop + +#pragma option push -b- +enum TEasyHotTrackState { ehsEnable, ehsDisable }; +#pragma option pop + +#pragma option push -b- +enum TEasyHotTrackRectItem { htiIcon, htiText, htiAnyWhere }; +#pragma option pop + +typedef Set TEasyHotTrackRectItems; + +#pragma option push -b- +enum TEasyHotTrackRectGroup { htgIcon, htgText, htgTopMargin, htgBottomMargin, htgLeftMargin, htgRightMargin, htgAnyWhere }; +#pragma option pop + +typedef Set TEasyHotTrackRectGroups; + +#pragma option push -b- +enum TEasyHotTrackRectColumn { htcIcon, htcText, htcAnyWhere }; +#pragma option pop + +typedef Set TEasyHotTrackRectColumns; + +__interface IEasyCaptions; +typedef System::DelphiInterface _di_IEasyCaptions; +__interface INTERFACE_UUID("{6C838C0E-22A5-48D4-80C6-E266E950D3CF}") IEasyCaptions : public IInterface +{ + +public: + virtual Variant __fastcall GetCaption(int Column) = 0 ; + __property Variant Captions[int Column] = {read=GetCaption}; +}; + +__interface IEasyCaptionsEditable; +typedef System::DelphiInterface _di_IEasyCaptionsEditable; +__interface INTERFACE_UUID("{F1403B00-7163-4FB7-804F-1A5500CD980A}") IEasyCaptionsEditable : public IEasyCaptions +{ + +public: + virtual bool __fastcall SetCaption(int Column, const Variant &Value) = 0 ; +}; + +__interface IEasyImageList; +typedef System::DelphiInterface _di_IEasyImageList; +__interface INTERFACE_UUID("{298932FB-A0AE-4A0A-BE34-A782743A0579}") IEasyImageList : public IInterface +{ + +public: + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize) = 0 ; + __property Imglist::TCustomImageList* ImageList[int Column][TEasyImageSize IconSize] = {read=GetImageList}; +}; + +__interface IEasyStateImageList; +typedef System::DelphiInterface _di_IEasyStateImageList; +__interface INTERFACE_UUID("{F0202D63-92A7-4C2F-9CA4-CBDE4DE0ED30}") IEasyStateImageList : public IInterface +{ + +public: + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column) = 0 ; + __property Imglist::TCustomImageList* ImageList[int Column] = {read=GetImageList}; +}; + +__interface IEasyImages; +typedef System::DelphiInterface _di_IEasyImages; +__interface INTERFACE_UUID("{20C419F5-F3DD-40C4-8526-88322E182C49}") IEasyImages : public IInterface +{ + +public: + virtual int __fastcall GetImageIndex(int Column, TEasyImageKind ImageKind) = 0 ; + __property int ImageIndexes[int Column][TEasyImageKind ImageKind] = {read=GetImageIndex}; +}; + +__interface IEasyImagesEditable; +typedef System::DelphiInterface _di_IEasyImagesEditable; +__interface INTERFACE_UUID("{DC580B13-1D19-46BB-885F-FC5CE9B2BE66}") IEasyImagesEditable : public IEasyImages +{ + +public: + virtual void __fastcall SetImageIndex(int Column, TEasyImageKind ImageKind, const int Value) = 0 ; + __property int ImageIndexes[int Column][TEasyImageKind ImageKind] = {read=GetImageIndex, write=SetImageIndex}; +}; + +__interface IEasyThumbnail; +typedef System::DelphiInterface _di_IEasyThumbnail; +class DELPHICLASS TEasyAlphaBlender; +__interface INTERFACE_UUID("{F9CA8297-0CB3-4C47-905F-3D1497C4FC4D}") IEasyThumbnail : public IInterface +{ + +public: + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ViewportRect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault) = 0 ; +}; + +__interface IEasyCustomImage; +typedef System::DelphiInterface _di_IEasyCustomImage; +__interface INTERFACE_UUID("{00260055-6915-43B5-9D43-379E7F61EEA9}") IEasyCustomImage : public IInterface +{ + +public: + virtual void __fastcall CustomDrawn(TEasyColumn* Column, bool &IsCustom) = 0 ; + virtual void __fastcall DrawImage(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender) = 0 ; + virtual void __fastcall GetSize(TEasyColumn* Column, int &ImageW, int &ImageH) = 0 ; +}; + +__interface IEasyDetails; +typedef System::DelphiInterface _di_IEasyDetails; +__interface INTERFACE_UUID("{AE1D21EB-BA52-4C24-9EB1-B35733299489}") IEasyDetails : public IInterface +{ + +public: + virtual int __fastcall GetDetailCount(void) = 0 ; + virtual int __fastcall GetDetail(int Line) = 0 ; + __property int Detail[int Line] = {read=GetDetail}; + __property int DetailCount = {read=GetDetailCount}; +}; + +__interface IEasyDetailsEditable; +typedef System::DelphiInterface _di_IEasyDetailsEditable; +__interface INTERFACE_UUID("{BBD853F9-D803-4478-B5A8-EE02FF47DC80}") IEasyDetailsEditable : public IEasyDetails +{ + +public: + virtual void __fastcall SetDetail(int Line, int Value) = 0 ; + virtual void __fastcall SetDetailCount(int Value) = 0 ; + __property int Detail[int Line] = {read=GetDetail, write=SetDetail}; + __property int DetailCount = {read=GetDetailCount, write=SetDetailCount}; +}; + +__interface IEasyChecks; +typedef System::DelphiInterface _di_IEasyChecks; +__interface INTERFACE_UUID("{E8820F40-2EE3-4718-B54A-39318D2D1232}") IEasyChecks : public IInterface +{ + +public: + virtual bool __fastcall GetChecked(int Column) = 0 ; + virtual void __fastcall SetChecked(int Column, const bool Value) = 0 ; + __property bool Checked[int Column] = {read=GetChecked, write=SetChecked}; +}; + +__interface IEasyGroupKey; +typedef System::DelphiInterface _di_IEasyGroupKey; +__interface INTERFACE_UUID("{2B87BB19-A133-4D43-9164-AC456747EB19}") IEasyGroupKey : public IInterface +{ + +public: + virtual unsigned __fastcall GetKey(int FocusedColumn) = 0 ; + __property unsigned Key[int FocusedColumn] = {read=GetKey}; +}; + +__interface IEasyGroupKeyEditable; +typedef System::DelphiInterface _di_IEasyGroupKeyEditable; +__interface INTERFACE_UUID("{26EFE2C6-2DE2-4795-94E3-0DB0CAA38B09}") IEasyGroupKeyEditable : public IEasyGroupKey +{ + +public: + virtual void __fastcall SetKey(int FocusedColumn, unsigned Value) = 0 ; + __property unsigned Key[int FocusedColumn] = {read=GetKey, write=SetKey}; +}; + +__interface IEasyNotificationSink; +typedef System::DelphiInterface _di_IEasyNotificationSink; +__interface INTERFACE_UUID("{E4F0D3DE-B2BD-4EC0-B24B-8A9B85B23A63}") IEasyNotificationSink : public IInterface +{ + +public: + virtual void __fastcall InvalidateItem(bool ImmediateRefresh) = 0 ; + virtual void __fastcall UnRegister(void) = 0 ; +}; + +__interface IEasyNotifier; +typedef System::DelphiInterface _di_IEasyNotifier; +__interface INTERFACE_UUID("{F10150F9-17E3-43B6-8C05-33283FF1B14E}") IEasyNotifier : public IInterface +{ + +public: + virtual void __fastcall OnRegisterNotify(const _di_IEasyNotificationSink ANotifier) = 0 ; + virtual void __fastcall OnUnRegisterNotify(const _di_IEasyNotificationSink ANotifier) = 0 ; +}; + +__interface IEasyCompare; +typedef System::DelphiInterface _di_IEasyCompare; +__interface INTERFACE_UUID("{0761D4F5-D451-4A6D-BFDC-B3000FFD0299}") IEasyCompare : public IInterface +{ + +public: + virtual int __fastcall Compare(const System::_di_IInterface Data, TEasyColumn* Column) = 0 ; +}; + +__interface IEasyCellEditor; +typedef System::DelphiInterface _di_IEasyCellEditor; +__interface INTERFACE_UUID("{A1686E7E-7F39-4BD4-BE1F-9C20D7BC6EA0}") IEasyCellEditor : public IInterface +{ + +public: + virtual bool __fastcall AcceptEdit(void) = 0 ; + virtual HWND __fastcall GetHandle(void) = 0 ; + virtual bool __fastcall GetModified(void) = 0 ; + virtual void __fastcall ControlWndHookProc(Messages::TMessage &Message) = 0 ; + virtual void __fastcall Hide(void) = 0 ; + virtual void __fastcall Initialize(TEasyItem* AnItem, TEasyColumn* Column) = 0 ; + virtual void __fastcall Finalize(void) = 0 ; + virtual bool __fastcall PtInEditControl(const Types::TPoint &WindowPt) = 0 ; + virtual void __fastcall SetEditorFocus(void) = 0 ; + virtual void __fastcall SelectAll(void) = 0 ; + virtual void __fastcall Show(void) = 0 ; + __property HWND Handle = {read=GetHandle}; + __property bool Modified = {read=GetModified}; +}; + +class DELPHICLASS TCustomEasyListview; +typedef void __fastcall (__closure *TAfterPaintEvent)(TCustomEasyListview* Sender, Graphics::TCanvas* ACanvas, const Types::TRect &ClipRect); + +class DELPHICLASS TEasyGroups; +typedef void __fastcall (__closure *TAutoGroupGetKeyEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int ColumnIndex, TEasyGroups* Groups, unsigned &Key); + +typedef void __fastcall (__closure *TAutoSortGroupCreateEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int ColumnIndex, TEasyGroups* Groups, TEasyGroup* &Group, bool &DoDefaultAction); + +typedef void __fastcall (__closure *TEasyClipboardEvent)(TCustomEasyListview* Sender, bool &Handled); + +typedef void __fastcall (__closure *TEasyClipboardCutEvent)(TCustomEasyListview* Sender, bool &MarkAsCut, bool &Handled); + +typedef void __fastcall (__closure *TColumnCheckChangeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnCheckChangingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, bool &Allow); + +typedef void __fastcall (__closure *TColumnClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton Button, const TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnContextMenuEvent)(TCustomEasyListview* Sender, const TEasyHitInfoColumn &HitInfo, const Types::TPoint &WindowPoint, Menus::TPopupMenu* &Menu); + +typedef void __fastcall (__closure *TColumnDblClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, const TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnDropDownButtonClickEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Mpcommonutilities::TCommonMouseButton Button, Classes::TShiftState ShiftState, const Types::TPoint &WindowPt, bool &DoDefault); + +typedef void __fastcall (__closure *TColumnEnableChangeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnEnableChangingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, bool &Allow); + +typedef void __fastcall (__closure *TColumnFocusChangeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnFocusChangingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, bool &Allow); + +typedef void __fastcall (__closure *TColumnFreeingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnGetCaptionEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, int Line, WideString &Caption); + +typedef void __fastcall (__closure *TColumnGetImageIndexEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, TEasyImageKind ImageKind, Mpcommonobjects::TCommonImageIndexInteger &ImageIndex); + +typedef void __fastcall (__closure *TColumnGetImageListEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Imglist::TCustomImageList* &ImageList); + +typedef void __fastcall (__closure *TColumnGetDetailCountEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, int &Count); + +typedef void __fastcall (__closure *TColumnImageDrawEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + +typedef void __fastcall (__closure *TColumnImageGetSizeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, int &ImageWidth, int &ImageHeight); + +typedef void __fastcall (__closure *TColumnImageDrawIsCustomEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, bool &IsCustom); + +typedef void __fastcall (__closure *TColumnGetDetailEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, int Line, int &Detail); + +typedef void __fastcall (__closure *TColumnInitializeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnPaintTextEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Graphics::TCanvas* ACanvas); + +typedef void __fastcall (__closure *TEasyColumnLoadFromStreamEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Classes::TStream* S, int Version); + +typedef void __fastcall (__closure *TEasyColumnSaveToStreamEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Classes::TStream* S, int Version); + +typedef void __fastcall (__closure *TColumnSelectionChangeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnSelectionChangingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, bool &Allow); + +typedef void __fastcall (__closure *TColumnSetCaptionEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, WideString Caption); + +typedef void __fastcall (__closure *TColumnSetImageIndexEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, TEasyImageKind ImageKind, int ImageIndex); + +typedef void __fastcall (__closure *TColumnSetDetailEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, int Line, const int Detail); + +typedef void __fastcall (__closure *TColumnSizeChangingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, int Width, int NewWidth, bool &Allow); + +typedef void __fastcall (__closure *TColumnSizeChangedEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnThumbnailDrawEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool &DoDefault); + +typedef void __fastcall (__closure *TColumnVisibilityChangeEvent)(TCustomEasyListview* Sender, TEasyColumn* Column); + +typedef void __fastcall (__closure *TColumnVisibilityChangingEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, bool &Allow); + +typedef void __fastcall (__closure *TContextMenuEvent)(TCustomEasyListview* Sender, const Types::TPoint &MousePt, bool &Handled); + +typedef void __fastcall (__closure *TColumnCustomViewEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, TMetaClass* &View); + +typedef void __fastcall (__closure *TCustomGridEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &Grid); + +typedef void __fastcall (__closure *TDblClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, Classes::TShiftState ShiftState); + +typedef void __fastcall (__closure *TGetDragImageEvent)(TCustomEasyListview* Sender, Graphics::TBitmap* Image, const Types::TPoint &DragStartPt, Types::TPoint &HotSpot, Graphics::TColor &TransparentColor, bool &Handled); + +typedef void __fastcall (__closure *TEasyGestureEvent)(TCustomEasyListview* Sender, WideString Gesture, bool &DoDefaultMouseAction); + +typedef void __fastcall (__closure *TGroupClickEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyGroupHitTestInfoSet HitTest); + +typedef void __fastcall (__closure *TGroupCollapseEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupCollapsingEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, bool &Allow); + +typedef int __fastcall (__closure *TGroupCompareEvent)(TCustomEasyListview* Sender, TEasyGroup* Item1, TEasyGroup* Item2); + +typedef void __fastcall (__closure *TGroupContextMenuEvent)(TCustomEasyListview* Sender, const TEasyHitInfoGroup &HitInfo, const Types::TPoint &WindowPoint, Menus::TPopupMenu* &Menu, bool &Handled); + +typedef void __fastcall (__closure *TGroupCustomViewEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &View); + +typedef void __fastcall (__closure *TGroupDblClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, const TEasyHitInfoGroup &HitInfo); + +typedef void __fastcall (__closure *TGroupExpandEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupExpandingEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, bool &Allow); + +typedef void __fastcall (__closure *TGroupFocusChangeEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupFocusChangingEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, bool &Allow); + +typedef void __fastcall (__closure *TGroupFreeingEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupGetCaptionEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, WideString &Caption); + +typedef void __fastcall (__closure *TGroupGetClassEvent)(TCustomEasyListview* Sender, TMetaClass* &GroupClass); + +typedef void __fastcall (__closure *TGroupGetImageIndexEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, TEasyImageKind ImageKind, Mpcommonobjects::TCommonImageIndexInteger &ImageIndex); + +typedef void __fastcall (__closure *TGroupGetImageListEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Imglist::TCustomImageList* &ImageList); + +typedef void __fastcall (__closure *TGroupGetDetailCountEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, int &Count); + +typedef void __fastcall (__closure *TGroupImageDrawEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + +typedef void __fastcall (__closure *TGroupImageGetSizeEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, int &ImageWidth, int &ImageHeight); + +typedef void __fastcall (__closure *TGroupImageDrawIsCustomEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, bool &IsCustom); + +typedef void __fastcall (__closure *TGroupGetDetailEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, int Line, int &Detail); + +typedef void __fastcall (__closure *TGroupInitializeEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupHotTrackEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, TEasyHotTrackState State, const Types::TPoint &MousePos); + +typedef void __fastcall (__closure *TGroupLoadFromStreamEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Classes::TStream* S, int Version); + +typedef void __fastcall (__closure *TGroupPaintTextEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Graphics::TCanvas* ACanvas); + +typedef void __fastcall (__closure *TGroupSaveToStreamEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Classes::TStream* S, int Version); + +typedef void __fastcall (__closure *TGroupSetCaptionEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, WideString Caption); + +typedef void __fastcall (__closure *TGroupSetImageIndexEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, TEasyImageKind ImageKind, int ImageIndex); + +typedef void __fastcall (__closure *TGroupSetDetailEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, int Line, const int Detail); + +typedef void __fastcall (__closure *TGroupSelectionChangeEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupSelectionChangingEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, bool &Allow); + +typedef void __fastcall (__closure *TGroupThumbnailDrawEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + +typedef void __fastcall (__closure *TGroupVisibilityChangeEvent)(TCustomEasyListview* Sender, TEasyGroup* Group); + +typedef void __fastcall (__closure *TGroupVisibilityChangingEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, bool &Allow); + +class DELPHICLASS TEasyCollectionItem; +class DELPHICLASS TEasyHintInfo; +typedef void __fastcall (__closure *THintCustomDrawEvent)(TCustomEasyListview* Sender, TEasyCollectionItem* TargetObj, const TEasyHintInfo* Info); + +typedef void __fastcall (__closure *THintCustomizeInfoEvent)(TCustomEasyListview* Sender, TEasyCollectionItem* TargetObj, TEasyHintInfo* Info); + +typedef void __fastcall (__closure *THintPauseTimeEvent)(TCustomEasyListview* Sender, bool HintWindowShown, int &PauseDelay); + +typedef void __fastcall (__closure *THintPopupEvent)(TCustomEasyListview* Sender, TEasyCollectionItem* TargetObj, TEasyHintType HintType, const Types::TPoint &MousePos, WideString &AText, int &HideTimeout, int &ReShowTimeout, bool &Allow); + +typedef void __fastcall (__closure *THeaderClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton MouseButton, TEasyColumn* Column); + +typedef void __fastcall (__closure *THeaderDblClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton MouseButton, const Types::TPoint &MousePos, Classes::TShiftState ShiftState); + +typedef void __fastcall (__closure *THeaderMouseEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton MouseButton, Classes::TShiftState Shift, int X, int Y, TEasyColumn* Column); + +typedef void __fastcall (__closure *TIncrementalSearchEvent)(TEasyCollectionItem* Item, const WideString SearchBuffer, bool &Handled, int &CompareResult); + +typedef void __fastcall (__closure *TItemCheckChangeEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemCheckChangingEvent)(TCustomEasyListview* Sender, TEasyItem* Item, bool &Allow); + +typedef void __fastcall (__closure *TItemClickEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyItemHitTestInfoSet HitInfo); + +typedef int __fastcall (__closure *TItemCompareEvent)(TCustomEasyListview* Sender, TEasyColumn* Column, TEasyGroup* Group, TEasyItem* Item1, TEasyItem* Item2, bool &DoDefault); + +typedef void __fastcall (__closure *TItemContextMenuEvent)(TCustomEasyListview* Sender, const TEasyHitInfoItem &HitInfo, const Types::TPoint &WindowPoint, Menus::TPopupMenu* &Menu, bool &Handled); + +typedef void __fastcall (__closure *TItemCreateEditorEvent)(TCustomEasyListview* Sender, TEasyItem* Item, _di_IEasyCellEditor &Editor); + +typedef void __fastcall (__closure *TItemCustomViewEvent)(TCustomEasyListview* Sender, TEasyItem* Item, TEasyListStyle ViewStyle, TMetaClass* &View); + +typedef void __fastcall (__closure *TItemLoadFromStreamEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Classes::TStream* S, int Version); + +typedef void __fastcall (__closure *TItemSaveToStreamEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Classes::TStream* S, int Version); + +typedef void __fastcall (__closure *TItemDblClickEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, const TEasyHitInfoItem &HitInfo); + +typedef void __fastcall (__closure *TItemEditBegin)(TCustomEasyListview* Sender, TEasyItem* Item, int &Column, bool &Allow); + +typedef void __fastcall (__closure *TItemEditedEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Variant &NewValue, bool &Accept); + +typedef void __fastcall (__closure *TItemEditEnd)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemEnableChangeEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemEnableChangingEvent)(TCustomEasyListview* Sender, TEasyItem* Item, bool &Allow); + +typedef void __fastcall (__closure *TItemFreeingEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemFocusChangeEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemFocusChangingEvent)(TCustomEasyListview* Sender, TEasyItem* Item, bool &Allow); + +typedef void __fastcall (__closure *TItemGetStreamingCreateClassEvent)(TCustomEasyListview* Sender, TMetaClass* &AClass); + +typedef void __fastcall (__closure *TItemGetCaptionEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Column, WideString &Caption); + +typedef void __fastcall (__closure *TEasyItemGetCaptionEvent)(TCustomEasyListview* Sender, TEasyItem* Item, TEasyColumn* Column, WideString &Caption); + +class DELPHICLASS TEasyBaseEditor; +typedef void __fastcall (__closure *TItemGetEditMenuEvent)(TCustomEasyListview* Sender, TEasyBaseEditor* Editor, Menus::TPopupMenu* &Menu); + +typedef void __fastcall (__closure *TItemGetClassEvent)(TCustomEasyListview* Sender, TMetaClass* &ItemClass); + +typedef void __fastcall (__closure *TItemGetGroupKeyEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int FocusedColumn, unsigned &GroupKey); + +typedef void __fastcall (__closure *TItemGetImageIndexEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Column, TEasyImageKind ImageKind, Mpcommonobjects::TCommonImageIndexInteger &ImageIndex); + +typedef void __fastcall (__closure *TItemGetImageListEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Column, Imglist::TCustomImageList* &ImageList); + +typedef void __fastcall (__closure *TEasyGetTaskPanelEvent)(TCustomEasyListview* Sender, TEasyGroup* Group, TMetaClass* &TaskPanel); + +typedef void __fastcall (__closure *TItemGetTileDetailCountEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int &Count); + +typedef void __fastcall (__closure *TItemImageDrawEvent)(TCustomEasyListview* Sender, TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + +typedef void __fastcall (__closure *TItemImageGetSizeEvent)(TCustomEasyListview* Sender, TEasyItem* Item, TEasyColumn* Column, int &ImageWidth, int &ImageHeight); + +typedef void __fastcall (__closure *TItemImageDrawIsCustomEvent)(TCustomEasyListview* Sender, TEasyItem* Item, TEasyColumn* Column, bool &IsCustom); + +typedef void __fastcall (__closure *TItemGetTileDetailEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Line, int &Detail); + +typedef void __fastcall (__closure *TItemHotTrackEvent)(TCustomEasyListview* Sender, TEasyItem* Item, TEasyHotTrackState State, const Types::TPoint &MousePos); + +typedef void __fastcall (__closure *TItemInitializeEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemMouseDownEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Mpcommonutilities::TCommonMouseButton Button, bool &DoDefault); + +typedef void __fastcall (__closure *TItemMouseUpEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Mpcommonutilities::TCommonMouseButton Button, bool &DoDefault); + +typedef void __fastcall (__closure *TItemPaintTextEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Position, Graphics::TCanvas* ACanvas); + +typedef void __fastcall (__closure *TItemSelectionChangeEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemSelectionChangingEvent)(TCustomEasyListview* Sender, TEasyItem* Item, bool &Allow); + +typedef void __fastcall (__closure *TEasyItemSelectionsChangedEvent)(TCustomEasyListview* Sender); + +typedef void __fastcall (__closure *TItemSetCaptionEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Column, WideString Caption); + +typedef void __fastcall (__closure *TItemSetGroupKeyEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Column, unsigned Key); + +typedef void __fastcall (__closure *TItemSetImageIndexEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Column, TEasyImageKind ImageKind, int ImageIndex); + +typedef void __fastcall (__closure *TItemSetTileDetailEvent)(TCustomEasyListview* Sender, TEasyItem* Item, int Line, const int Detail); + +typedef void __fastcall (__closure *TItemThumbnailDrawEvent)(TCustomEasyListview* Sender, TEasyItem* Item, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + +typedef void __fastcall (__closure *TItemVisibilityChangeEvent)(TCustomEasyListview* Sender, TEasyItem* Item); + +typedef void __fastcall (__closure *TItemVisibilityChangingEvent)(TCustomEasyListview* Sender, TEasyItem* Item, bool &Allow); + +typedef void __fastcall (__closure *TEasyKeyActionEvent)(TCustomEasyListview* Sender, Word &CharCode, Classes::TShiftState &Shift, bool &DoDefault); + +typedef void __fastcall (__closure *TOLEDropSourceDragEndEvent)(TCustomEasyListview* Sender, _di_IDataObject ADataObject, Mpcommonutilities::TCommonOLEDragResult DragResult, Mpcommonutilities::TCommonDropEffects ResultEffect, Mpcommonutilities::TCommonKeyStates KeyStates); + +typedef void __fastcall (__closure *TOLEDropSourceDragStartEvent)(TCustomEasyListview* Sender, _di_IDataObject ADataObject, Mpcommonutilities::TCommonDropEffects &AvailableEffects, bool &AllowDrag); + +typedef void __fastcall (__closure *TOLEDropSourceQueryContineDragEvent)(TCustomEasyListview* Sender, bool EscapeKeyPressed, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyQueryDragResult &QueryResult); + +typedef void __fastcall (__closure *TOLEDropSourceGiveFeedbackEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonDropEffects Effect, bool &UseDefaultCursors); + +typedef void __fastcall (__closure *TOLEDropTargetDragEnterEvent)(TCustomEasyListview* Sender, _di_IDataObject DataObject, Mpcommonutilities::TCommonKeyStates KeyState, const Types::TPoint &WindowPt, Mpcommonutilities::TCommonDropEffects AvailableEffects, Mpcommonutilities::TCommonDropEffect &DesiredDropEffect); + +typedef void __fastcall (__closure *TOLEDropTargetDragOverEvent)(TCustomEasyListview* Sender, Mpcommonutilities::TCommonKeyStates KeyState, const Types::TPoint &WindowPt, Mpcommonutilities::TCommonDropEffects AvailableEffects, Mpcommonutilities::TCommonDropEffect &DesiredDropEffect); + +typedef void __fastcall (__closure *TOLEDropTargetDragLeaveEvent)(TCustomEasyListview* Sender); + +typedef void __fastcall (__closure *TOLEDropTargetDragDropEvent)(TCustomEasyListview* Sender, _di_IDataObject DataObject, Mpcommonutilities::TCommonKeyStates KeyState, const Types::TPoint &WindowPt, Mpcommonutilities::TCommonDropEffects AvailableEffects, Mpcommonutilities::TCommonDropEffect &DesiredDropEffect, bool &Handled); + +typedef void __fastcall (__closure *TOLEGetCustomFormatsEvent)(TCustomEasyListview* Sender, Mpdataobject::TFormatEtcArray &Formats); + +typedef void __fastcall (__closure *TOLEGetDataEvent)(TCustomEasyListview* Sender, const tagFORMATETC &FormatEtcIn, tagSTGMEDIUM &Medium, bool &Handled); + +typedef void __fastcall (__closure *FOLEGetDataObjectEvent)(TCustomEasyListview* Sender, _di_IDataObject &DataObject); + +typedef void __fastcall (__closure *TOLEQueryDataEvent)(TCustomEasyListview* Sender, const tagFORMATETC &FormatEtcIn, bool &FormatAvailable, bool &Handled); + +typedef void __fastcall (__closure *TPaintBkGndEvent)(TCustomEasyListview* Sender, Graphics::TCanvas* ACanvas, const Types::TRect &AWindowRect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + +typedef void __fastcall (__closure *TPaintHeaderBkGndEvent)(TCustomEasyListview* Sender, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool &Handled); + +typedef void __fastcall (__closure *TViewChangingEvent)(TCustomEasyListview* Sender, TEasyListStyle View, bool &Allow); + +typedef void __fastcall (__closure *TViewChangedEvent)(TCustomEasyListview* Sender); + +typedef void __fastcall (__closure *TEasyScrollEvent)(TCustomEasyListview* Sender, int DeltaX, int DeltaY); + +typedef int __fastcall (__closure *TEasyDoGroupCompare)(TEasyColumn* Column, TEasyGroup* Group1, TEasyGroup* Group2); + +typedef int __fastcall (__closure *TEasyDoItemCompare)(TEasyColumn* Column, TEasyGroup* Group, TEasyItem* Item1, TEasyItem* Item2); + +class DELPHICLASS TEasyMemo; +class PASCALIMPLEMENTATION TEasyMemo : public Stdctrls::TMemo +{ + typedef Stdctrls::TMemo inherited; + +public: + #pragma option push -w-inl + /* TCustomMemo.Create */ inline __fastcall virtual TEasyMemo(Classes::TComponent* AOwner) : Stdctrls::TMemo(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCustomMemo.Destroy */ inline __fastcall virtual ~TEasyMemo(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyMemo(HWND ParentWindow) : Stdctrls::TMemo(ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyEdit; +class PASCALIMPLEMENTATION TEasyEdit : public Stdctrls::TEdit +{ + typedef Stdctrls::TEdit inherited; + +public: + #pragma option push -w-inl + /* TCustomEdit.Create */ inline __fastcall virtual TEasyEdit(Classes::TComponent* AOwner) : Stdctrls::TEdit(AOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyEdit(HWND ParentWindow) : Stdctrls::TEdit(ParentWindow) { } + #pragma option pop + #pragma option push -w-inl + /* TWinControl.Destroy */ inline __fastcall virtual ~TEasyEdit(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyInterfacedPersistent; +class PASCALIMPLEMENTATION TEasyInterfacedPersistent : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + int FRefCount; + +protected: + virtual int __stdcall _AddRef(void); + virtual int __stdcall _Release(void); + virtual HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj); + System::TObject* __fastcall GetObj(void); + +public: + virtual void __fastcall AfterConstruction(void); + virtual void __fastcall BeforeDestruction(void); + /* virtual class method */ virtual System::TObject* __fastcall NewInstance(TMetaClass* vmt); + __property System::TObject* Obj = {read=GetObj}; + __property int RefCount = {read=FRefCount, nodefault}; +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyInterfacedPersistent(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyInterfacedPersistent(void) : Classes::TPersistent() { } + #pragma option pop + +private: + void *__ICommonExtractObj; /* Mpcommonobjects::ICommonExtractObj */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Mpcommonobjects::_di_ICommonExtractObj() + { + Mpcommonobjects::_di_ICommonExtractObj intf; + GetInterface(intf); + return intf; + } + #else + operator ICommonExtractObj*(void) { return (ICommonExtractObj*)&__ICommonExtractObj; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator System::_di_IInterface() + { + System::_di_IInterface intf; + GetInterface(intf); + return intf; + } + #else + operator IInterface*(void) { return (IInterface*)&__ICommonExtractObj; } + #endif + +}; + + +class DELPHICLASS TEasyOwnedInterfacedPersistent; +class PASCALIMPLEMENTATION TEasyOwnedInterfacedPersistent : public TEasyInterfacedPersistent +{ + typedef TEasyInterfacedPersistent inherited; + +private: + TCustomEasyListview* FOwner; + +public: + __fastcall virtual TEasyOwnedInterfacedPersistent(TCustomEasyListview* AnOwner); + __property TCustomEasyListview* Owner = {read=FOwner}; +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyOwnedInterfacedPersistent(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPersistent; +class PASCALIMPLEMENTATION TEasyPersistent : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +public: + __fastcall virtual TEasyPersistent(void); + __fastcall virtual ~TEasyPersistent(void); + virtual void __fastcall Assign(Classes::TPersistent* Source); +}; + + +class DELPHICLASS TEasyOwnedPersistent; +class PASCALIMPLEMENTATION TEasyOwnedPersistent : public TEasyPersistent +{ + typedef TEasyPersistent inherited; + +private: + TCustomEasyListview* FOwnerListview; + +protected: + DYNAMIC Classes::TPersistent* __fastcall GetOwner(void); + +public: + __fastcall virtual TEasyOwnedPersistent(TCustomEasyListview* AnOwner); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x5); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property TCustomEasyListview* OwnerListview = {read=FOwnerListview}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyOwnedPersistent(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCanvasStore; +class PASCALIMPLEMENTATION TEasyCanvasStore : public System::TObject +{ + typedef System::TObject inherited; + +protected: + Graphics::TBrush* FBrush; + Graphics::TFont* FFont; + Graphics::TPen* FPen; + +public: + __fastcall virtual ~TEasyCanvasStore(void); + void __fastcall RestoreCanvasState(Graphics::TCanvas* Canvas); + void __fastcall StoreCanvasState(Graphics::TCanvas* Canvas); + __property Graphics::TBrush* Brush = {read=FBrush, write=FBrush}; + __property Graphics::TFont* Font = {read=FFont, write=FFont}; + __property Graphics::TPen* Pen = {read=FPen, write=FPen}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyCanvasStore(void) : System::TObject() { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyOwnedPersistentView; +class PASCALIMPLEMENTATION TEasyOwnedPersistentView : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + TEasyCanvasStore* FCanvasStore; + TEasyCanvasStore* __fastcall GetCanvasStore(void); + +protected: + void __fastcall PaintCheckboxCore(TEasyCheckType CheckType, TCustomEasyListview* OwnerListView, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool IsEnabled, bool IsChecked, bool IsHot, bool IsFlat, bool IsHovering, bool IsPending, TEasyCollectionItem* Obj, int Size); + __property TEasyCanvasStore* CanvasStore = {read=GetCanvasStore, write=FCanvasStore}; + +public: + __fastcall virtual ~TEasyOwnedPersistentView(void); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistent.Create */ inline __fastcall virtual TEasyOwnedPersistentView(TCustomEasyListview* AnOwner) : TEasyOwnedPersistent(AnOwner) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyAlphaBlender : public TEasyPersistent +{ + typedef TEasyPersistent inherited; + +public: + __fastcall virtual ~TEasyAlphaBlender(void); + virtual void __fastcall BasicBlend(TCustomEasyListview* Listview, Graphics::TCanvas* ACanvas, const Types::TRect &ViewportRect, Graphics::TColor Color, Byte Alpha = (Byte)(0x80), bool UseScrollPostion = true); + virtual void __fastcall Blend(TCustomEasyListview* Listview, TEasyCollectionItem* Obj, Graphics::TCanvas* ACanvas, const Types::TRect &ViewportRect, Graphics::TBitmap* Image); + void __fastcall GetBlendParams(TCustomEasyListview* Listview, TEasyCollectionItem* Obj, Byte &BlendAlpha, Graphics::TColor &BlendColor, bool &DoBlend); +public: + #pragma option push -w-inl + /* TEasyPersistent.Create */ inline __fastcall virtual TEasyAlphaBlender(void) : TEasyPersistent() { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyOwnedPersistentGroupItem; +class PASCALIMPLEMENTATION TEasyOwnedPersistentGroupItem : public TEasyOwnedPersistentView +{ + typedef TEasyOwnedPersistentView inherited; + +private: + TEasyGroup* FOwnerGroup; + +public: + __fastcall virtual TEasyOwnedPersistentGroupItem(TEasyGroup* AnOwner); + __property TEasyGroup* OwnerGroup = {read=FOwnerGroup}; +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyOwnedPersistentGroupItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasySelectionGroupList; +class PASCALIMPLEMENTATION TEasySelectionGroupList : public System::TObject +{ + typedef System::TObject inherited; + +public: + TEasyItem* operator[](int Index) { return Items[Index]; } + +private: + Types::TRect FDisplayRect; + TEasyItem* FFirstItem; + Classes::TList* FList; + int FRefCount; + +protected: + TEasyItem* __fastcall GetItems(int Index); + void __fastcall SetItems(int Index, TEasyItem* Value); + __property Classes::TList* List = {read=FList, write=FList}; + __property int RefCount = {read=FRefCount, write=FRefCount, nodefault}; + +public: + __fastcall TEasySelectionGroupList(void); + __fastcall virtual ~TEasySelectionGroupList(void); + int __fastcall Count(void); + void __fastcall Add(TEasyItem* Item); + void __fastcall Clear(void); + void __fastcall DecRef(void); + void __fastcall IncRef(void); + __property Types::TRect DisplayRect = {read=FDisplayRect, write=FDisplayRect}; + __property TEasyItem* FirstItem = {read=FFirstItem, write=FFirstItem}; + __property TEasyItem* Items[int Index] = {read=GetItems, write=SetItems/*, default*/}; +}; + + +class DELPHICLASS TEasyMargin; +class PASCALIMPLEMENTATION TEasyMargin : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + int FSize; + bool FVisible; + void __fastcall SetSize(int Value); + void __fastcall SetVisible(bool Value); + +protected: + int __fastcall RuntimeSize(void); + +public: + __fastcall virtual TEasyMargin(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyMargin(void); + virtual void __fastcall Assign(Classes::TPersistent* Source); + +__published: + __property int Size = {read=FSize, write=SetSize, default=30}; + __property bool Visible = {read=FVisible, write=SetVisible, default=0}; +}; + + +class DELPHICLASS TEasyHeaderMargin; +class PASCALIMPLEMENTATION TEasyHeaderMargin : public TEasyMargin +{ + typedef TEasyMargin inherited; + +public: + __fastcall virtual TEasyHeaderMargin(TCustomEasyListview* AnOwner); + +__published: + __property Visible = {default=1}; +public: + #pragma option push -w-inl + /* TEasyMargin.Destroy */ inline __fastcall virtual ~TEasyHeaderMargin(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCustomEasyFooterMargin; +class DELPHICLASS TEasyPaintInfoBaseGroup; +class DELPHICLASS TEasyPaintInfoBasic; +class PASCALIMPLEMENTATION TEasyPaintInfoBasic : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + Classes::TAlignment FAlignment; + int FBorder; + Graphics::TColor FBorderColor; + int FCaptionIndent; + int FCaptionLines; + bool FCheckFlat; + int FCheckIndent; + int FCheckSize; + TEasyCheckType FCheckType; + int FImageIndent; + bool FShowBorder; + Mpcommonutilities::TCommonVAlignment FVAlignment; + void __fastcall SetAlignment(Classes::TAlignment Value); + void __fastcall SetBorder(int Value); + void __fastcall SetBorderColor(Graphics::TColor Value); + void __fastcall SetCaptionIndent(int Value); + void __fastcall SetCaptionLines(int Value); + void __fastcall SetCheckFlat(bool Value); + void __fastcall SetCheckIndent(int Value); + void __fastcall SetCheckSize(int Value); + void __fastcall SetCheckType(TEasyCheckType Value); + void __fastcall SetImageIndent(int Value); + void __fastcall SetShowBorder(const bool Value); + void __fastcall SetVAlignment(Mpcommonutilities::TCommonVAlignment Value); + +protected: + virtual void __fastcall Invalidate(bool ImmediateUpdate); + __property Classes::TAlignment Alignment = {read=FAlignment, write=SetAlignment, default=0}; + __property int Border = {read=FBorder, write=SetBorder, default=4}; + __property Graphics::TColor BorderColor = {read=FBorderColor, write=SetBorderColor, default=-16777203}; + __property int CaptionIndent = {read=FCaptionIndent, write=SetCaptionIndent, default=4}; + __property int CaptionLines = {read=FCaptionLines, write=SetCaptionLines, default=1}; + __property bool CheckFlat = {read=FCheckFlat, write=SetCheckFlat, default=0}; + __property int CheckIndent = {read=FCheckIndent, write=SetCheckIndent, default=2}; + __property int CheckSize = {read=FCheckSize, write=SetCheckSize, default=12}; + __property TEasyCheckType CheckType = {read=FCheckType, write=SetCheckType, default=0}; + __property int ImageIndent = {read=FImageIndent, write=SetImageIndent, default=2}; + __property bool ShowBorder = {read=FShowBorder, write=SetShowBorder, default=1}; + __property Mpcommonutilities::TCommonVAlignment VAlignment = {read=FVAlignment, write=SetVAlignment, default=2}; + +public: + __fastcall virtual TEasyPaintInfoBasic(TCustomEasyListview* AnOwner); + virtual void __fastcall Assign(Classes::TPersistent* Source); +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoBasic(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyPaintInfoBaseGroup : public TEasyPaintInfoBasic +{ + typedef TEasyPaintInfoBasic inherited; + +private: + bool FBandBlended; + Graphics::TColor FBandColor; + Graphics::TColor FBandColorFade; + bool FBandEnabled; + bool FBandFullWidth; + int FBandIndent; + int FBandLength; + int FBandMargin; + Byte FBandRadius; + int FBandThickness; + bool FExpandable; + bool FExpanded; + int FExpandImageIndent; + TCustomEasyFooterMargin* FMarginBottom; + TEasyMargin* FMarginLeft; + TEasyMargin* FMarginRight; + TEasyHeaderMargin* FMarginTop; + TCustomEasyFooterMargin* __fastcall GetMarginBottom(void); + TEasyMargin* __fastcall GetMarginLeft(void); + TEasyMargin* __fastcall GetMarginRight(void); + TEasyHeaderMargin* __fastcall GetMarginTop(void); + void __fastcall SetBandBlended(bool Value); + void __fastcall SetBandColor(Graphics::TColor Value); + void __fastcall SetBandColorFade(Graphics::TColor Value); + void __fastcall SetBandEnabled(bool Value); + void __fastcall SetBandFullWidth(bool Value); + void __fastcall SetBandIndent(int Value); + void __fastcall SetBandLength(int Value); + void __fastcall SetBandMargin(int Value); + void __fastcall SetBandRadius(Byte Value); + void __fastcall SetBandThickness(int Value); + void __fastcall SetExpandable(bool Value); + void __fastcall SetExpandImageIndent(int Value); + void __fastcall SetMarginBottom(TCustomEasyFooterMargin* Value); + void __fastcall SetMarginLeft(TEasyMargin* Value); + void __fastcall SetMarginRight(TEasyMargin* Value); + void __fastcall SetMarginTop(TEasyHeaderMargin* Value); + +protected: + __property bool BandBlended = {read=FBandBlended, write=SetBandBlended, default=1}; + __property Graphics::TColor BandColor = {read=FBandColor, write=SetBandColor, default=16711680}; + __property Graphics::TColor BandColorFade = {read=FBandColorFade, write=SetBandColorFade, default=-16777211}; + __property bool BandEnabled = {read=FBandEnabled, write=SetBandEnabled, default=1}; + __property bool BandFullWidth = {read=FBandFullWidth, write=SetBandFullWidth, default=0}; + __property int BandIndent = {read=FBandIndent, write=SetBandIndent, default=0}; + __property int BandLength = {read=FBandLength, write=SetBandLength, default=300}; + __property int BandMargin = {read=FBandMargin, write=SetBandMargin, default=2}; + __property Byte BandRadius = {read=FBandRadius, write=SetBandRadius, default=4}; + __property int BandThickness = {read=FBandThickness, write=SetBandThickness, default=3}; + __property bool Expandable = {read=FExpandable, write=SetExpandable, default=1}; + __property int ExpandImageIndent = {read=FExpandImageIndent, write=SetExpandImageIndent, default=4}; + __property TCustomEasyFooterMargin* MarginBottom = {read=GetMarginBottom, write=SetMarginBottom}; + __property TEasyMargin* MarginLeft = {read=GetMarginLeft, write=SetMarginLeft}; + __property TEasyMargin* MarginRight = {read=GetMarginRight, write=SetMarginRight}; + __property TEasyHeaderMargin* MarginTop = {read=GetMarginTop, write=SetMarginTop}; + +public: + __fastcall virtual TEasyPaintInfoBaseGroup(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyPaintInfoBaseGroup(void); + virtual void __fastcall Assign(Classes::TPersistent* Source); +}; + + +class PASCALIMPLEMENTATION TCustomEasyFooterMargin : public TEasyMargin +{ + typedef TEasyMargin inherited; + +private: + WideString FCaption; + Mpcommonobjects::TCommonImageIndexInteger FImageIndex; + Mpcommonobjects::TCommonImageIndexInteger FImageOverlayIndex; + TEasyPaintInfoBaseGroup* FPaintInfo; + Classes::TAlignment __fastcall GetAlignment(void); + int __fastcall GetCaptionIndent(void); + int __fastcall GetCaptionLines(void); + int __fastcall GetImageIndent(void); + TEasyPaintInfoBaseGroup* __fastcall GetPaintInfo(void); + Mpcommonutilities::TCommonVAlignment __fastcall GetVAlignment(void); + void __fastcall SetAlignment(Classes::TAlignment Value); + void __fastcall SetCaption(WideString Value); + void __fastcall SetCaptionIndent(int Value); + void __fastcall SetCaptionLines(int Value); + void __fastcall SetImageIndent(int Value); + void __fastcall SetImageIndex(const Mpcommonobjects::TCommonImageIndexInteger Value); + void __fastcall SetImageOveralyIndex(const Mpcommonobjects::TCommonImageIndexInteger Value); + void __fastcall SetPaintInfo(const TEasyPaintInfoBaseGroup* Value); + void __fastcall SetVAlignment(Mpcommonutilities::TCommonVAlignment Value); + +protected: + __property Classes::TAlignment Alignment = {read=GetAlignment, write=SetAlignment, default=0}; + __property WideString Caption = {read=FCaption, write=SetCaption}; + __property int CaptionIndent = {read=GetCaptionIndent, write=SetCaptionIndent, default=2}; + __property int CaptionLines = {read=GetCaptionLines, write=SetCaptionLines, default=1}; + __property int ImageIndent = {read=GetImageIndent, write=SetImageIndent, default=2}; + __property Mpcommonobjects::TCommonImageIndexInteger ImageIndex = {read=FImageIndex, write=SetImageIndex, default=-1}; + __property Mpcommonobjects::TCommonImageIndexInteger ImageOverlayIndex = {read=FImageOverlayIndex, write=SetImageOveralyIndex, default=-1}; + __property TEasyPaintInfoBaseGroup* PaintInfo = {read=GetPaintInfo, write=SetPaintInfo}; + __property Size = {default=30}; + __property Mpcommonutilities::TCommonVAlignment VAlignment = {read=GetVAlignment, write=SetVAlignment, default=2}; + +public: + __fastcall virtual TCustomEasyFooterMargin(TCustomEasyListview* AnOwner); + __fastcall virtual ~TCustomEasyFooterMargin(void); + virtual void __fastcall Assign(Classes::TPersistent* Source); +}; + + +typedef TMetaClass* TEasyFooterMarginCustomClass; + +class DELPHICLASS TEasyFooterMargin; +class PASCALIMPLEMENTATION TEasyFooterMargin : public TCustomEasyFooterMargin +{ + typedef TCustomEasyFooterMargin inherited; + +__published: + __property Alignment = {default=0}; + __property Caption ; + __property CaptionIndent = {default=2}; + __property CaptionLines = {default=1}; + __property ImageIndent = {default=2}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property Size = {default=30}; + __property VAlignment = {default=2}; +public: + #pragma option push -w-inl + /* TCustomEasyFooterMargin.Create */ inline __fastcall virtual TEasyFooterMargin(TCustomEasyListview* AnOwner) : TCustomEasyFooterMargin(AnOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCustomEasyFooterMargin.Destroy */ inline __fastcall virtual ~TEasyFooterMargin(void) { } + #pragma option pop + +}; + + +typedef TMetaClass* TEasyPaintInfoBasicClass; + +class DELPHICLASS TEasyPaintInfoBaseItem; +class PASCALIMPLEMENTATION TEasyPaintInfoBaseItem : public TEasyPaintInfoBasic +{ + typedef TEasyPaintInfoBasic inherited; + +private: + Graphics::TColor FGridLineColor; + bool FGridLines; + bool FHideCaption; + int FTileDetailCount; + void __fastcall SetGridLineColor(const Graphics::TColor Value); + void __fastcall SetGridLines(const bool Value); + void __fastcall SetHideCaption(const bool Value); + void __fastcall SetTileDetailCount(int Value); + +protected: + __property Graphics::TColor GridLineColor = {read=FGridLineColor, write=SetGridLineColor, default=-16777201}; + __property bool GridLines = {read=FGridLines, write=SetGridLines, default=0}; + __property bool HideCaption = {read=FHideCaption, write=SetHideCaption, default=0}; + __property int TileDetailCount = {read=FTileDetailCount, write=SetTileDetailCount, default=1}; + +public: + __fastcall virtual TEasyPaintInfoBaseItem(TCustomEasyListview* AnOwner); +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoBaseItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoItem; +class PASCALIMPLEMENTATION TEasyPaintInfoItem : public TEasyPaintInfoBaseItem +{ + typedef TEasyPaintInfoBaseItem inherited; + +__published: + __property Border = {default=4}; + __property BorderColor = {default=-16777203}; + __property CaptionIndent = {default=4}; + __property CaptionLines = {default=1}; + __property CheckFlat = {default=0}; + __property CheckIndent = {default=2}; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property GridLineColor = {default=-16777201}; + __property GridLines = {default=0}; + __property HideCaption = {default=0}; + __property ImageIndent = {default=2}; + __property ShowBorder = {default=1}; + __property TileDetailCount = {default=1}; + __property VAlignment = {default=2}; +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseItem.Create */ inline __fastcall virtual TEasyPaintInfoItem(TCustomEasyListview* AnOwner) : TEasyPaintInfoBaseItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoTaskBandItem; +class PASCALIMPLEMENTATION TEasyPaintInfoTaskBandItem : public TEasyPaintInfoBaseItem +{ + typedef TEasyPaintInfoBaseItem inherited; + +__published: + __property CaptionIndent = {default=4}; + __property CheckFlat = {default=0}; + __property CheckIndent = {default=2}; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property VAlignment = {default=2}; +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseItem.Create */ inline __fastcall virtual TEasyPaintInfoTaskBandItem(TCustomEasyListview* AnOwner) : TEasyPaintInfoBaseItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoTaskBandItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoBaseColumn; +class PASCALIMPLEMENTATION TEasyPaintInfoBaseColumn : public TEasyPaintInfoBasic +{ + typedef TEasyPaintInfoBasic inherited; + +private: + Graphics::TColor FColor; + bool FHilightFocused; + Graphics::TColor FHilightFocusedColor; + bool FHotTrack; + TEasyHeaderImagePosition FImagePosition; + TEasySortGlyphAlign FSortGlyphAlign; + int FSortGlyphIndent; + TEasyHeaderButtonStyle FStyle; + void __fastcall SetColor(Graphics::TColor Value); + void __fastcall SetHilightFocused(const bool Value); + void __fastcall SetHilightFocusedColor(const Graphics::TColor Value); + void __fastcall SetImagePosition(TEasyHeaderImagePosition Value); + void __fastcall SetSortGlpyhAlign(TEasySortGlyphAlign Value); + void __fastcall SetSortGlyphIndent(int Value); + void __fastcall SetStyle(TEasyHeaderButtonStyle Value); + +protected: + __property Graphics::TColor Color = {read=FColor, write=SetColor, default=-16777201}; + __property bool HilightFocused = {read=FHilightFocused, write=SetHilightFocused, default=0}; + __property Graphics::TColor HilightFocusedColor = {read=FHilightFocusedColor, write=SetHilightFocusedColor, default=16250871}; + __property bool HotTrack = {read=FHotTrack, write=FHotTrack, default=1}; + __property TEasyHeaderImagePosition ImagePosition = {read=FImagePosition, write=SetImagePosition, default=0}; + __property TEasySortGlyphAlign SortGlyphAlign = {read=FSortGlyphAlign, write=SetSortGlpyhAlign, default=1}; + __property int SortGlyphIndent = {read=FSortGlyphIndent, write=SetSortGlyphIndent, default=2}; + __property TEasyHeaderButtonStyle Style = {read=FStyle, write=SetStyle, default=0}; + +public: + __fastcall virtual TEasyPaintInfoBaseColumn(TCustomEasyListview* AnOwner); +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoBaseColumn(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TCustomEasyPaintInfoBaseColumn; +class PASCALIMPLEMENTATION TCustomEasyPaintInfoBaseColumn : public TEasyPaintInfoBaseColumn +{ + typedef TEasyPaintInfoBaseColumn inherited; + +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseColumn.Create */ inline __fastcall virtual TCustomEasyPaintInfoBaseColumn(TCustomEasyListview* AnOwner) : TEasyPaintInfoBaseColumn(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TCustomEasyPaintInfoBaseColumn(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoColumn; +class PASCALIMPLEMENTATION TEasyPaintInfoColumn : public TCustomEasyPaintInfoBaseColumn +{ + typedef TCustomEasyPaintInfoBaseColumn inherited; + +__published: + __property Border = {default=4}; + __property BorderColor = {default=-16777203}; + __property CaptionIndent = {default=4}; + __property CaptionLines = {default=1}; + __property CheckFlat = {default=0}; + __property CheckIndent = {default=2}; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property Color = {default=-16777201}; + __property HilightFocused = {default=0}; + __property HilightFocusedColor = {default=16250871}; + __property HotTrack = {default=1}; + __property ImageIndent = {default=2}; + __property ImagePosition = {default=0}; + __property SortGlyphAlign = {default=1}; + __property SortGlyphIndent = {default=2}; + __property Style = {default=0}; + __property VAlignment = {default=2}; +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseColumn.Create */ inline __fastcall virtual TEasyPaintInfoColumn(TCustomEasyListview* AnOwner) : TCustomEasyPaintInfoBaseColumn(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoColumn(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoTaskBandColumn; +class PASCALIMPLEMENTATION TEasyPaintInfoTaskBandColumn : public TCustomEasyPaintInfoBaseColumn +{ + typedef TCustomEasyPaintInfoBaseColumn inherited; + +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseColumn.Create */ inline __fastcall virtual TEasyPaintInfoTaskBandColumn(TCustomEasyListview* AnOwner) : TCustomEasyPaintInfoBaseColumn(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyPaintInfoTaskBandColumn(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoGroup; +class PASCALIMPLEMENTATION TEasyPaintInfoGroup : public TEasyPaintInfoBaseGroup +{ + typedef TEasyPaintInfoBaseGroup inherited; + +__published: + __property Alignment = {default=0}; + __property BandBlended = {default=1}; + __property BandColor = {default=16711680}; + __property BandColorFade = {default=-16777211}; + __property BandEnabled = {default=1}; + __property BandFullWidth = {default=0}; + __property BandIndent = {default=0}; + __property BandLength = {default=300}; + __property BandMargin = {default=2}; + __property BandRadius = {default=4}; + __property BandThickness = {default=3}; + __property Border = {default=4}; + __property BorderColor = {default=-16777203}; + __property CaptionIndent = {default=4}; + __property CaptionLines = {default=1}; + __property CheckFlat = {default=0}; + __property CheckIndent = {default=2}; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property Expandable = {default=1}; + __property ExpandImageIndent = {default=4}; + __property ImageIndent = {default=2}; + __property MarginBottom ; + __property MarginLeft ; + __property MarginRight ; + __property MarginTop ; + __property VAlignment = {default=2}; +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseGroup.Create */ inline __fastcall virtual TEasyPaintInfoGroup(TCustomEasyListview* AnOwner) : TEasyPaintInfoBaseGroup(AnOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyPaintInfoBaseGroup.Destroy */ inline __fastcall virtual ~TEasyPaintInfoGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyPaintInfoTaskbandGroup; +class PASCALIMPLEMENTATION TEasyPaintInfoTaskbandGroup : public TEasyPaintInfoBaseGroup +{ + typedef TEasyPaintInfoBaseGroup inherited; + +__published: + __property Alignment = {default=0}; + __property CaptionIndent = {default=4}; + __property CheckFlat = {default=0}; + __property CheckIndent = {default=2}; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property Expandable = {default=1}; + __property MarginBottom ; + __property MarginLeft ; + __property MarginRight ; + __property MarginTop ; + __property VAlignment = {default=2}; +public: + #pragma option push -w-inl + /* TEasyPaintInfoBaseGroup.Create */ inline __fastcall virtual TEasyPaintInfoTaskbandGroup(TCustomEasyListview* AnOwner) : TEasyPaintInfoBaseGroup(AnOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyPaintInfoBaseGroup.Destroy */ inline __fastcall virtual ~TEasyPaintInfoTaskbandGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyDynamicDataHelper; +class PASCALIMPLEMENTATION TEasyDynamicDataHelper : public System::TObject +{ + typedef System::TObject inherited; + +private: + DynamicArray FCaptionArray; + DynamicArray FDetailArray; + DynamicArray FGroupKeyArray; + DynamicArray FImageIndexArray; + DynamicArray FOverlayIndexArray; + WideString __fastcall GetCaptions(int Index); + int __fastcall GetDetails(int Index); + int __fastcall GetImageIndexes(int Index); + int __fastcall GetImageOverlayIndexes(int Index); + void __fastcall LoadIntArrayFromStream(Classes::TStream* S, Mpcommonutilities::TCommonIntegerDynArray &AnArray); + void __fastcall LoadWideStrArrayFromStream(Classes::TStream* S, Mpcommonutilities::TCommonWideStringDynArray &AnArray); + void __fastcall SaveIntArrayToStream(Classes::TStream* S, Mpcommonutilities::TCommonIntegerDynArray &AnArray); + void __fastcall SaveWideStrArrayToStream(Classes::TStream* S, Mpcommonutilities::TCommonWideStringDynArray &AnArray); + void __fastcall SetCaptions(int Index, WideString Value); + void __fastcall SetDetails(int Index, int Value); + void __fastcall SetImageIndexes(int Index, int Value); + void __fastcall SetImageOverlayIndexes(int Index, int Value); + __property Mpcommonutilities::TCommonWideStringDynArray CaptionArray = {read=FCaptionArray, write=FCaptionArray}; + __property Mpcommonutilities::TCommonIntegerDynArray DetailArray = {read=FDetailArray, write=FDetailArray}; + __property Mpcommonutilities::TCommonIntegerDynArray GroupKeyArray = {read=FGroupKeyArray, write=FGroupKeyArray}; + __property Mpcommonutilities::TCommonIntegerDynArray ImageIndexArray = {read=FImageIndexArray, write=FImageIndexArray}; + __property Mpcommonutilities::TCommonIntegerDynArray OverlayIndexArray = {read=FOverlayIndexArray, write=FOverlayIndexArray}; + +public: + void __fastcall Clear(void); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version); + __property WideString Captions[int Index] = {read=GetCaptions, write=SetCaptions}; + __property int Details[int Index] = {read=GetDetails, write=SetDetails}; + __property int ImageIndexes[int Index] = {read=GetImageIndexes, write=SetImageIndexes}; + __property int ImageOverlayIndexes[int Index] = {read=GetImageOverlayIndexes, write=SetImageOverlayIndexes}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyDynamicDataHelper(void) : System::TObject() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyDynamicDataHelper(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyItemDynamicDataHelper; +class PASCALIMPLEMENTATION TEasyItemDynamicDataHelper : public TEasyDynamicDataHelper +{ + typedef TEasyDynamicDataHelper inherited; + +private: + DynamicArray FStateImageArray; + unsigned __fastcall GetGroupKey(int Index); + Mpcommonobjects::TCommonImageIndexInteger __fastcall GetStateImageIndexes(int Index); + void __fastcall SetGroupKey(int Index, unsigned Value); + void __fastcall SetStateImageIndexes(int Index, Mpcommonobjects::TCommonImageIndexInteger Value); + +protected: + __property Mpcommonutilities::TCommonIntegerDynArray StateImageArray = {read=FStateImageArray, write=FStateImageArray}; + +public: + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version); + __property unsigned GroupKey[int Index] = {read=GetGroupKey, write=SetGroupKey}; + __property Mpcommonobjects::TCommonImageIndexInteger StateImageIndexes[int Index] = {read=GetStateImageIndexes, write=SetStateImageIndexes}; +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyItemDynamicDataHelper(void) : TEasyDynamicDataHelper() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyItemDynamicDataHelper(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCollection; +class PASCALIMPLEMENTATION TEasyCollection : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +public: + TEasyCollectionItem* operator[](int Index) { return Items[Index]; } + +private: + bool FHideFromDFM; + Classes::TList* FList; + int FReIndexCount; + int FTag; + Classes::TList* FVisibleList; + int __fastcall GetCount(void); + TEasyCollectionItem* __fastcall GetItem(int Index); + TCustomEasyListview* __fastcall GetOwnerListview(void); + bool __fastcall GetReIndexDisable(void); + int __fastcall GetVisibleCount(void); + void __fastcall SetItem(int Index, TEasyCollectionItem* Value); + void __fastcall SetReIndexDisable(const bool Value); + +protected: + TMetaClass* FItemClass; + DYNAMIC bool __fastcall DoStore(void); + DYNAMIC Classes::TPersistent* __fastcall GetOwner(void); + virtual void __fastcall DefineProperties(Classes::TFiler* Filer); + virtual void __fastcall DoItemAdd(TEasyCollectionItem* Item, int Index); + virtual void __fastcall DoStructureChange(void); + __property Classes::TList* List = {read=FList, write=FList}; + __property int ReIndexCount = {read=FReIndexCount, write=FReIndexCount, nodefault}; + __property Classes::TList* VisibleList = {read=FVisibleList, write=FVisibleList}; + +public: + __fastcall virtual TEasyCollection(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyCollection(void); + TEasyCollectionItem* __fastcall Add(System::TObject* Data = (System::TObject*)(0x0)); + virtual TEasyColumn* __fastcall FirstVisible(void); + virtual TEasyColumn* __fastcall LastVisible(void); + virtual TEasyColumn* __fastcall NextVisible(TEasyColumn* Column); + virtual TEasyColumn* __fastcall PrevVisible(TEasyColumn* Column); + virtual void __fastcall BeginUpdate(bool ReIndex); + virtual void __fastcall Clear(bool FreeItems = true); + void __fastcall Delete(int Index); + virtual void __fastcall EndUpdate(bool Invalidate = true); + TEasyCollectionItem* __fastcall Insert(int Index, System::TObject* Data = (System::TObject*)(0x0)); + void __fastcall Exchange(int Index1, int Index2); + virtual void __fastcall MakeAllVisible(void); + virtual void __fastcall ReadItems(Classes::TStream* Stream); + void __fastcall ReIndexItems(void); + virtual void __fastcall WriteItems(Classes::TStream* Stream); + __property int Count = {read=GetCount, nodefault}; + __property bool HideFromDFM = {read=FHideFromDFM, write=FHideFromDFM, default=0}; + __property TMetaClass* ItemClass = {read=FItemClass}; + __property TEasyCollectionItem* Items[int Index] = {read=GetItem, write=SetItem/*, default*/}; + __property TCustomEasyListview* OwnerListview = {read=GetOwnerListview}; + __property bool ReIndexDisable = {read=GetReIndexDisable, write=SetReIndexDisable, nodefault}; + __property int VisibleCount = {read=GetVisibleCount, nodefault}; + +__published: + __property int Tag = {read=FTag, write=FTag, default=0}; +}; + + +class PASCALIMPLEMENTATION TEasyCollectionItem : public TEasyPersistent +{ + typedef TEasyPersistent inherited; + +private: + TEasyCollection* FCollection; + System::TObject* FData; + System::_di_IInterface FDataInf; + Types::TRect FDisplayRect; + int FIndex; + bool FOwnsPaintInfo; + TEasyPaintInfoBasic* FPaintInfo; + int FRefCount; + TEasyStorageObjectStates FState; + int FTag; + int FVisibleIndex; + Classes::TAlignment __fastcall GetAlignment(void); + bool __fastcall GetBold(void); + int __fastcall GetBorder(void); + Graphics::TColor __fastcall GetBorderColor(void); + int __fastcall GetCaptionIndent(void); + bool __fastcall GetCheckFlat(void); + bool __fastcall GetCheckHovering(void); + int __fastcall GetCheckIndent(void); + bool __fastcall GetCheckPending(void); + int __fastcall GetCheckSize(void); + TEasyCheckType __fastcall GetCheckType(void); + bool __fastcall GetClicking(void); + bool __fastcall GetCut(void); + System::_di_IInterface __fastcall GetDataInf(); + bool __fastcall GetDestroying(void); + bool __fastcall GetGhosted(void); + bool __fastcall GetHilighted(void); + bool __fastcall GetEnabled(void); + bool __fastcall GetFocused(void); + bool __fastcall GetHotTracking(const Types::TPoint &MousePos); + int __fastcall GetImageIndent(void); + bool __fastcall GetInitialized(void); + TCustomEasyListview* __fastcall GetOwnerListview(void); + TEasyPaintInfoBasic* __fastcall GetPaintInfo(void); + bool __fastcall GetSelected(void); + Mpcommonutilities::TCommonVAlignment __fastcall GetVAlignment(void); + Types::TRect __fastcall GetViewRect(); + bool __fastcall GetVisible(void); + void __fastcall SetAlignment(Classes::TAlignment Value); + void __fastcall SetBold(const bool Value); + void __fastcall SetBorder(int Value); + void __fastcall SetBorderColor(Graphics::TColor Value); + void __fastcall SetCaptionIndent(int Value); + void __fastcall SetCheckFlat(bool Value); + void __fastcall SetCheckHovering(bool Value); + void __fastcall SetCheckIndent(int Value); + void __fastcall SetCheckPending(bool Value); + void __fastcall SetCheckSize(int Value); + void __fastcall SetCheckType(TEasyCheckType Value); + void __fastcall SetClicking(bool Value); + void __fastcall SetCut(bool Value); + virtual void __fastcall SetData(System::TObject* Value); + void __fastcall SetDataInf(const System::_di_IInterface Value); + void __fastcall SetGhosted(const bool Value); + void __fastcall SetHilighted(bool Value); + void __fastcall SetEnabled(bool Value); + void __fastcall SetFocused(bool Value); + void __fastcall SetHotTracking(const Types::TPoint &MousePos, bool Value); + void __fastcall SetImageIndent(int Value); + virtual void __fastcall SetInitialized(bool Value); + void __fastcall SetPaintInfo(TEasyPaintInfoBasic* Value); + void __fastcall SetSelected(bool Value); + void __fastcall SetVAlignment(Mpcommonutilities::TCommonVAlignment Value); + void __fastcall SetVisible(bool Value); + +protected: + virtual bool __fastcall AllowDrag(const Types::TPoint &ViewportPt); + virtual int __stdcall _AddRef(void); + virtual int __stdcall _Release(void); + virtual HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj); + virtual bool __fastcall CanChangeBold(bool NewValue) = 0 ; + virtual bool __fastcall CanChangeCheck(bool NewValue) = 0 ; + virtual bool __fastcall CanChangeEnable(bool NewValue) = 0 ; + virtual bool __fastcall CanChangeFocus(bool NewValue) = 0 ; + virtual bool __fastcall CanChangeHotTracking(bool NewValue) = 0 ; + virtual bool __fastcall CanChangeSelection(bool NewValue) = 0 ; + virtual bool __fastcall CanChangeVisibility(bool NewValue) = 0 ; + virtual Imglist::TCustomImageList* __fastcall DefaultImageList(TEasyImageSize ImageSize); + virtual bool __fastcall GetChecked(void); + virtual WideString __fastcall GetDisplayName(); + virtual TEasyPaintInfoBasic* __fastcall LocalPaintInfo(void) = 0 ; + virtual void __fastcall Freeing(void) = 0 ; + virtual void __fastcall GainingBold(void) = 0 ; + virtual void __fastcall GainingCheck(void) = 0 ; + virtual void __fastcall GainingEnable(void) = 0 ; + virtual void __fastcall GainingFocus(void) = 0 ; + virtual void __fastcall GainingGhosted(void) = 0 ; + virtual void __fastcall GainingHilight(void) = 0 ; + virtual void __fastcall GainingHotTracking(const Types::TPoint &MousePos) = 0 ; + virtual void __fastcall GainingSelection(void) = 0 ; + virtual void __fastcall GainingVisibility(void) = 0 ; + virtual WideString __fastcall GetCaption(); + virtual WideString __fastcall GetCaptions(int Column) = 0 ; + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndex(void); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column) = 0 ; + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndex(void); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column) = 0 ; + DYNAMIC Classes::TPersistent* __fastcall GetOwner(void); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize) = 0 ; + virtual int __fastcall GetIndex(void); + virtual int __fastcall GetDetailCount(void) = 0 ; + virtual int __fastcall GetDetails(int Line) = 0 ; + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender) = 0 ; + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH) = 0 ; + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom) = 0 ; + void __fastcall InvalidateItem(bool ImmediateRefresh); + virtual void __fastcall LosingBold(void) = 0 ; + virtual void __fastcall LosingGhosted(void) = 0 ; + virtual void __fastcall LosingHotTracking(void) = 0 ; + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault) = 0 ; + virtual void __fastcall Initialize(void) = 0 ; + virtual void __fastcall LosingCheck(void) = 0 ; + virtual void __fastcall LosingEnable(void) = 0 ; + virtual void __fastcall LosingFocus(void) = 0 ; + virtual void __fastcall LosingHilight(void) = 0 ; + virtual void __fastcall LosingSelection(void) = 0 ; + virtual void __fastcall LosingVisibility(void) = 0 ; + virtual void __fastcall SetCaptions(int Column, WideString Value) = 0 ; + virtual void __fastcall SetCaption(WideString Value); + virtual void __fastcall SetChecked(bool Value); + void __fastcall SetDestroyFlags(void); + virtual void __fastcall SetDetailCount(int Value) = 0 ; + virtual void __fastcall SetDetails(int Line, int Value) = 0 ; + virtual void __fastcall SetImageIndex(const Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value) = 0 ; + virtual void __fastcall SetImageOverlayIndex(const Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value) = 0 ; + void __fastcall UnRegister(void); + __property Classes::TAlignment Alignment = {read=GetAlignment, write=SetAlignment, default=0}; + __property bool Bold = {read=GetBold, write=SetBold, default=0}; + __property int Border = {read=GetBorder, write=SetBorder, default=0}; + __property Graphics::TColor BorderColor = {read=GetBorderColor, write=SetBorderColor, default=-16777211}; + __property int CaptionIndent = {read=GetCaptionIndent, write=SetCaptionIndent, default=2}; + __property bool Checked = {read=GetChecked, write=SetChecked, default=0}; + __property bool CheckFlat = {read=GetCheckFlat, write=SetCheckFlat, default=0}; + __property bool CheckHovering = {read=GetCheckHovering, write=SetCheckHovering, nodefault}; + __property int CheckIndent = {read=GetCheckIndent, write=SetCheckIndent, default=2}; + __property bool CheckPending = {read=GetCheckPending, write=SetCheckPending, nodefault}; + __property int CheckSize = {read=GetCheckSize, write=SetCheckSize, default=12}; + __property TEasyCheckType CheckType = {read=GetCheckType, write=SetCheckType, default=0}; + __property bool Clicking = {read=GetClicking, write=SetClicking, default=0}; + __property TEasyCollection* Collection = {read=FCollection, write=FCollection}; + __property bool Cut = {read=GetCut, write=SetCut, default=0}; + __property System::_di_IInterface DataInf = {read=GetDataInf, write=SetDataInf}; + __property bool Destroying = {read=GetDestroying, nodefault}; + __property Types::TRect DisplayRect = {read=FDisplayRect, write=FDisplayRect}; + __property bool Enabled = {read=GetEnabled, write=SetEnabled, default=1}; + __property bool Focused = {read=GetFocused, write=SetFocused, default=0}; + __property bool Ghosted = {read=GetGhosted, write=SetGhosted, default=0}; + __property bool Hilighted = {read=GetHilighted, write=SetHilighted, default=0}; + __property int ImageIndent = {read=GetImageIndent, write=SetImageIndent, default=2}; + __property bool Initialized = {read=GetInitialized, write=SetInitialized, nodefault}; + __property bool OwnsPaintInfo = {read=FOwnsPaintInfo, write=FOwnsPaintInfo, default=0}; + __property TEasyPaintInfoBasic* PaintInfo = {read=GetPaintInfo, write=SetPaintInfo}; + __property bool Selected = {read=GetSelected, write=SetSelected, default=0}; + __property TEasyStorageObjectStates State = {read=FState, write=FState, nodefault}; + __property Mpcommonutilities::TCommonVAlignment VAlignment = {read=GetVAlignment, write=SetVAlignment, nodefault}; + __property bool Visible = {read=GetVisible, write=SetVisible, default=1}; + +public: + __fastcall virtual TEasyCollectionItem(TEasyCollection* ACollection); + __fastcall virtual ~TEasyCollectionItem(void); + virtual bool __fastcall EditAreaHitPt(const Types::TPoint &ViewportPoint) = 0 ; + virtual bool __fastcall SelectionHit(const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType) = 0 ; + virtual bool __fastcall SelectionHitPt(const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType) = 0 ; + virtual void __fastcall Invalidate(bool ImmediateUpdate); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall MakeVisible(TEasyMakeVisiblePos Position); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property WideString Caption = {read=GetCaption, write=SetCaption}; + __property WideString Captions[int Column] = {read=GetCaptions, write=SetCaptions}; + __property System::TObject* Data = {read=FData, write=SetData}; + __property int DetailCount = {read=GetDetailCount, write=SetDetailCount, nodefault}; + __property int Details[int Line] = {read=GetDetails, write=SetDetails}; + __property bool HotTracking[Types::TPoint MousePos] = {read=GetHotTracking, write=SetHotTracking}; + __property Mpcommonobjects::TCommonImageIndexInteger ImageIndex = {read=GetImageIndex, write=SetImageIndex, default=-1}; + __property Mpcommonobjects::TCommonImageIndexInteger ImageIndexes[int Column] = {read=GetImageIndexes, write=SetImageIndexes}; + __property Imglist::TCustomImageList* ImageList[int Column][TEasyImageSize IconSize] = {read=GetImageList}; + __property Mpcommonobjects::TCommonImageIndexInteger ImageOverlayIndex = {read=GetImageOverlayIndex, write=SetImageOverlayIndex, default=-1}; + __property Mpcommonobjects::TCommonImageIndexInteger ImageOverlayIndexes[int Column] = {read=GetImageOverlayIndexes, write=SetImageOverlayIndexes}; + __property int Index = {read=GetIndex, nodefault}; + __property TCustomEasyListview* OwnerListview = {read=GetOwnerListview}; + __property int RefCount = {read=FRefCount, nodefault}; + __property int Tag = {read=FTag, write=FTag, default=0}; + __property Types::TRect ViewRect = {read=GetViewRect}; + __property int VisibleIndex = {read=FVisibleIndex, nodefault}; +private: + void *__IEasyNotificationSink; /* Easylistview::IEasyNotificationSink */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IEasyNotificationSink() + { + _di_IEasyNotificationSink intf; + GetInterface(intf); + return intf; + } + #else + operator IEasyNotificationSink*(void) { return (IEasyNotificationSink*)&__IEasyNotificationSink; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator System::_di_IInterface() + { + System::_di_IInterface intf; + GetInterface(intf); + return intf; + } + #else + operator IInterface*(void) { return (IInterface*)&__IEasyNotificationSink; } + #endif + +}; + + +class DELPHICLASS TEasyViewItem; +class PASCALIMPLEMENTATION TEasyViewItem : public TEasyOwnedPersistentGroupItem +{ + typedef TEasyOwnedPersistentGroupItem inherited; + +private: + void __fastcall PaintAlphaBlendedRoundRect(Graphics::TCanvas* ACanvas, Graphics::TColor AlphaColor, Graphics::TColor GradientBottom, Graphics::TColor GradientTop, Types::TRect &LocalSelWindowClippedRect, HRGN &Rgn); + void __fastcall PaintAlphaBlendedSelection(Graphics::TCanvas* ACanvas, Graphics::TColor AlphaColor, const Types::TRect &HeaderClippedWindowRect, const Types::TRect &LocalSelRect); + void __fastcall PaintAlphaBlendedGradientFill(Graphics::TCanvas* ACanvas, Graphics::TColor GradientBottom, Graphics::TColor GradientTop, const Types::TRect &LocalSelRect, const Types::TRect &LocalSelWindowClippedRect, const Types::TRect &LocalSelClippedRect); + void __fastcall PaintNonAlphaBlendedSelection(Graphics::TCanvas* ACanvas, const Types::TRect &LocalSelRect); + +protected: + virtual bool __fastcall AllowDrag(TEasyItem* Item, const Types::TPoint &ViewportPoint); + virtual bool __fastcall PaintStateImage(void); + int __fastcall ValidateColumnIndex(TEasyColumn* Column); + +public: + virtual void __fastcall AfterSelRectCalc(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Types::TRect &LocalSelRect); + void __fastcall CalculateTextRect(TEasyItem* Item, TEasyColumn* Column, Types::TRect &TextR, Controls::TControlCanvas* ACanvas); + virtual bool __fastcall EditAreaHitPt(TEasyItem* Item, const Types::TPoint &ViewportPoint); + virtual Types::TRect __fastcall ExpandIconR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual Types::TRect __fastcall ExpandTextR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual bool __fastcall FullRowSelect(void); + virtual Imglist::TCustomImageList* __fastcall GetImageList(TEasyColumn* Column, TEasyItem* Item, TEasyImageKind Image); + virtual void __fastcall GetImageSize(TEasyItem* Item, TEasyColumn* Column, int &ImageW, int &ImageH, TEasyImageKind Image); + virtual Imglist::TCustomImageList* __fastcall GetStateImageList(TEasyColumn* Column, TEasyItem* Item); + virtual Types::TRect __fastcall ItemRect(TEasyItem* Item, TEasyColumn* Column, TEasyCellRectType RectType); + virtual void __fastcall ItemRectArray(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const WideString Caption, TEasyRectArrayObject &RectArray); + virtual void __fastcall LoadTextFont(TEasyItem* Item, int Position, Graphics::TCanvas* ACanvas, bool Hilightable); + virtual bool __fastcall OverlappedFocus(void); + virtual void __fastcall Paint(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const Types::TRect &ViewportClipRect, bool ForceSelectionRectDraw); + virtual void __fastcall PaintAfter(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, bool &Handled); + virtual void __fastcall PaintCheckBox(TEasyItem* Item, TEasyColumn* Column, const TEasyRectArrayObject &RectArray, Graphics::TCanvas* ACanvas); + virtual void __fastcall PaintFocusRect(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, const TEasyRectArrayObject &RectArray, Graphics::TCanvas* ACanvas); + virtual void __fastcall PaintImage(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, const TEasyRectArrayObject &RectArray, TEasyImageSize ImageSize, Graphics::TCanvas* ACanvas); + virtual TEasyImageSize __fastcall PaintImageSize(void); + virtual void __fastcall PaintSelectionRect(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, const TEasyRectArrayObject &RectArray, Graphics::TCanvas* ACanvas, const Types::TRect &ViewportClipRect, bool ForceSelectionRectDraw); + virtual void __fastcall PaintText(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, const TEasyRectArrayObject &RectArray, Graphics::TCanvas* ACanvas, int LinesToDraw); + virtual Classes::TAlignment __fastcall PaintTextAlignment(TEasyItem* Item, TEasyColumn* Column); + virtual int __fastcall PaintTextLineCount(TEasyItem* Item, TEasyColumn* Column); + virtual Mpcommonutilities::TCommonVAlignment __fastcall PaintTextVAlignment(TEasyItem* Item, TEasyColumn* Column); + virtual int __fastcall PtInRect(TEasyItem* Item, TEasyColumn* Column, const Types::TPoint &Pt); + virtual void __fastcall ReSizeRectArray(TEasyRectArrayObjectArray &RectArray); + virtual bool __fastcall SelectionHit(TEasyItem* Item, const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(TEasyItem* Item, const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); + void __fastcall TestAndClipImage(Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, HRGN &Rgn); + void __fastcall TestAndUnClipImage(Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, HRGN Rgn); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewItem(TEasyGroup* AnOwner) : TEasyOwnedPersistentGroupItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyItems; +class PASCALIMPLEMENTATION TEasyItem : public TEasyCollectionItem +{ + typedef TEasyCollectionItem inherited; + +private: + TEasySelectionGroupList* FSelectionGroup; + TEasyViewItem* FView; + int FVisibleIndexInGroup; + int __fastcall GetColumnPos(void); + TEasyGroup* __fastcall GetOwnerGroup(void); + TEasyItems* __fastcall GetOwnerItems(void); + HIDESBASE TEasyPaintInfoItem* __fastcall GetPaintInfo(void); + int __fastcall GetRowPos(void); + TEasyViewItem* __fastcall GetView(void); + TMetaClass* __fastcall GetViewClass(void); + HIDESBASE void __fastcall SetPaintInfo(const TEasyPaintInfoItem* Value); + void __fastcall SetSelectionGroup(TEasySelectionGroupList* Value); + +protected: + virtual bool __fastcall AllowDrag(const Types::TPoint &ViewportPt); + virtual bool __fastcall CanChangeBold(bool NewValue); + virtual bool __fastcall CanChangeCheck(bool NewValue); + virtual bool __fastcall CanChangeEnable(bool NewValue); + virtual bool __fastcall CanChangeFocus(bool NewValue); + virtual bool __fastcall CanChangeHotTracking(bool NewValue); + virtual bool __fastcall CanChangeSelection(bool NewValue); + virtual bool __fastcall CanChangeVisibility(bool NewValue); + Imglist::TCustomImageList* __fastcall DefaultStateImageList(void); + virtual TMetaClass* __fastcall GetDefaultViewClass(void); + virtual unsigned __fastcall GetGroupKey(int FocusedColumn); + virtual int __fastcall GetIndex(void); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetStateImageIndex(void); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetStateImageIndexes(int Column) = 0 ; + virtual Imglist::TCustomImageList* __fastcall GetStateImageList(int Column) = 0 ; + virtual TEasyPaintInfoBasic* __fastcall LocalPaintInfo(void); + virtual void __fastcall Freeing(void); + virtual void __fastcall GainingBold(void); + virtual void __fastcall GainingCheck(void); + virtual void __fastcall GainingEnable(void); + virtual void __fastcall GainingFocus(void); + virtual void __fastcall GainingGhosted(void); + virtual void __fastcall GainingHilight(void); + virtual void __fastcall GainingHotTracking(const Types::TPoint &MousePos); + virtual void __fastcall GainingSelection(void); + virtual void __fastcall GainingVisibility(void); + virtual void __fastcall Initialize(void); + virtual void __fastcall LosingBold(void); + virtual void __fastcall LosingCheck(void); + virtual void __fastcall LosingEnable(void); + virtual void __fastcall LosingFocus(void); + virtual void __fastcall LosingGhosted(void); + virtual void __fastcall LosingHilight(void); + virtual void __fastcall LosingHotTracking(void); + virtual void __fastcall LosingSelection(void); + virtual void __fastcall LosingVisibility(void); + void __fastcall ReleaseSelectionGroup(void); + virtual void __fastcall SetStateImageIndex(const Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetStateImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value) = 0 ; + __property TEasySelectionGroupList* SelectionGroup = {read=FSelectionGroup, write=SetSelectionGroup}; + virtual void __fastcall SetGroupKey(int FocusedColumn, unsigned Value); + +public: + __fastcall virtual TEasyItem(TEasyCollection* ACollection); + __fastcall virtual ~TEasyItem(void); + virtual bool __fastcall EditAreaHitPt(const Types::TPoint &ViewportPoint); + bool __fastcall HitTestAt(const Types::TPoint &ViewportPoint, TEasyItemHitTestInfoSet &HitInfo); + virtual bool __fastcall SelectionHit(const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); + void __fastcall Edit(TEasyColumn* Column = (TEasyColumn*)(0x0)); + virtual void __fastcall Invalidate(bool ImmediateUpdate); + void __fastcall ItemRectArray(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyRectArrayObject &RectArray); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall MakeVisible(TEasyMakeVisiblePos Position); + virtual void __fastcall Paint(Graphics::TCanvas* ACanvas, const Types::TRect &ViewportClipRect, TEasyColumn* Column, bool ForceSelectionRectDraw); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property Alignment = {default=0}; + __property Bold = {default=0}; + __property Border = {default=0}; + __property BorderColor = {default=-16777211}; + __property Caption ; + __property CaptionIndent = {default=2}; + __property Captions ; + __property Checked = {default=0}; + __property CheckFlat = {default=0}; + __property CheckHovering ; + __property CheckIndent = {default=2}; + __property CheckPending ; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property int ColumnPos = {read=GetColumnPos, nodefault}; + __property Cut = {default=0}; + __property Destroying ; + __property DetailCount ; + __property Details ; + __property Enabled = {default=1}; + __property Focused = {default=0}; + __property unsigned GroupKey[int FocusedColumn] = {read=GetGroupKey, write=SetGroupKey}; + __property Hilighted = {default=0}; + __property ImageIndent = {default=2}; + __property ImageIndex = {default=-1}; + __property ImageIndexes ; + __property ImageList ; + __property ImageOverlayIndex = {default=-1}; + __property ImageOverlayIndexes ; + __property Initialized ; + __property TEasyGroup* OwnerGroup = {read=GetOwnerGroup}; + __property TEasyItems* OwnerItems = {read=GetOwnerItems}; + __property OwnsPaintInfo = {default=0}; + __property TEasyPaintInfoItem* PaintInfo = {read=GetPaintInfo, write=SetPaintInfo}; + __property int RowPos = {read=GetRowPos, nodefault}; + __property Selected = {default=0}; + __property State ; + __property Mpcommonobjects::TCommonImageIndexInteger StateImageIndex = {read=GetStateImageIndex, write=SetStateImageIndex, default=-1}; + __property Mpcommonobjects::TCommonImageIndexInteger StateImageIndexes[int Column] = {read=GetStateImageIndexes, write=SetStateImageIndexes}; + __property Imglist::TCustomImageList* StateImageList[int Column] = {read=GetStateImageList}; + __property VAlignment ; + __property TEasyViewItem* View = {read=GetView}; + __property TMetaClass* ViewClass = {read=GetViewClass}; + __property Visible = {default=1}; + __property int VisibleIndexInGroup = {read=FVisibleIndexInGroup, nodefault}; +}; + + +class DELPHICLASS TEasyItemInterfaced; +class PASCALIMPLEMENTATION TEasyItemInterfaced : public TEasyItem +{ + typedef TEasyItem inherited; + +private: + Mpcommonobjects::TCommonImageIndexInteger __fastcall GetCommonImageIndex(int Column, TEasyImageKind Kind); + void __fastcall SetCommonImageIndex(int Column, TEasyImageKind Kind, Mpcommonobjects::TCommonImageIndexInteger Value); + +protected: + virtual WideString __fastcall GetCaptions(int Column); + virtual bool __fastcall GetChecked(void); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual unsigned __fastcall GetGroupKey(int FocusedColumn); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetStateImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetStateImageList(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetChecked(bool Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetGroupKey(int FocusedColumn, unsigned Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetStateImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + +public: + System::TObject* __fastcall ExtractObject(void); + __property DataInf ; +public: + #pragma option push -w-inl + /* TEasyItem.Create */ inline __fastcall virtual TEasyItemInterfaced(TEasyCollection* ACollection) : TEasyItem(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyItem.Destroy */ inline __fastcall virtual ~TEasyItemInterfaced(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyItemVirtual; +class PASCALIMPLEMENTATION TEasyItemVirtual : public TEasyItem +{ + typedef TEasyItem inherited; + +protected: + virtual WideString __fastcall GetCaptions(int Column); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual unsigned __fastcall GetGroupKey(int FocusedColumn); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetStateImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetStateImageList(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetGroupKey(int FocusedColumn, unsigned Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetStateImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); +public: + #pragma option push -w-inl + /* TEasyItem.Create */ inline __fastcall virtual TEasyItemVirtual(TEasyCollection* ACollection) : TEasyItem(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyItem.Destroy */ inline __fastcall virtual ~TEasyItemVirtual(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyItemStored; +class PASCALIMPLEMENTATION TEasyItemStored : public TEasyItem +{ + typedef TEasyItem inherited; + +private: + TEasyItemDynamicDataHelper* FDataHelper; + +protected: + virtual WideString __fastcall GetCaptions(int Column); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual unsigned __fastcall GetGroupKey(int FocusedColumn); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetStateImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetStateImageList(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Column, int Value); + virtual void __fastcall SetGroupKey(int FocusedColumn, unsigned Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetStateImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + __property TEasyItemDynamicDataHelper* DataHelper = {read=FDataHelper, write=FDataHelper}; + +public: + __fastcall virtual TEasyItemStored(TEasyCollection* ACollection); + __fastcall virtual ~TEasyItemStored(void); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + +__published: + __property Bold = {default=0}; + __property Caption ; + __property Checked = {default=0}; + __property Enabled = {default=1}; + __property Ghosted = {default=0}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property Selected = {default=0}; + __property StateImageIndex = {default=-1}; + __property Tag = {default=0}; + __property Visible = {default=1}; +}; + + +typedef TMetaClass* TEasyItemStoredClass; + +typedef TMetaClass* TEasyCollectionClass; + +class DELPHICLASS TEasyViewIconItem; +class PASCALIMPLEMENTATION TEasyViewIconItem : public TEasyViewItem +{ + typedef TEasyViewItem inherited; + +public: + virtual Types::TRect __fastcall ExpandIconR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual bool __fastcall OverlappedFocus(void); + virtual TEasyImageSize __fastcall PaintImageSize(void); + virtual int __fastcall PaintTextLineCount(TEasyItem* Item, TEasyColumn* Column); + virtual void __fastcall AfterSelRectCalc(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Types::TRect &LocalSelRect); + virtual void __fastcall ItemRectArray(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const WideString Caption, TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, bool &Handled); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewIconItem(TEasyGroup* AnOwner) : TEasyViewItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewIconItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewSmallIconItem; +class PASCALIMPLEMENTATION TEasyViewSmallIconItem : public TEasyViewItem +{ + typedef TEasyViewItem inherited; + +public: + virtual Types::TRect __fastcall CalculateDisplayRect(TEasyItem* Item, TEasyColumn* Column); + virtual Types::TRect __fastcall ExpandIconR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual Types::TRect __fastcall ExpandTextR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual void __fastcall ItemRectArray(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const WideString Caption, TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, bool &Handled); + virtual Classes::TAlignment __fastcall PaintTextAlignment(TEasyItem* Item, TEasyColumn* Column); + virtual int __fastcall PaintTextLineCount(TEasyItem* Item, TEasyColumn* Column); + virtual Mpcommonutilities::TCommonVAlignment __fastcall PaintTextVAlignment(TEasyItem* Item, TEasyColumn* Column); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewSmallIconItem(TEasyGroup* AnOwner) : TEasyViewItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewSmallIconItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewListItem; +class PASCALIMPLEMENTATION TEasyViewListItem : public TEasyViewSmallIconItem +{ + typedef TEasyViewSmallIconItem inherited; + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewListItem(TEasyGroup* AnOwner) : TEasyViewSmallIconItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewListItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewReportItem; +class PASCALIMPLEMENTATION TEasyViewReportItem : public TEasyViewSmallIconItem +{ + typedef TEasyViewSmallIconItem inherited; + +protected: + virtual bool __fastcall AllowDrag(TEasyItem* Item, const Types::TPoint &ViewportPoint); + virtual bool __fastcall PaintStateImage(void); + +public: + virtual Types::TRect __fastcall CalculateDisplayRect(TEasyItem* Item, TEasyColumn* Column); + virtual Types::TRect __fastcall ExpandTextR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual bool __fastcall FullRowSelect(void); + virtual bool __fastcall SelectionHit(TEasyItem* Item, const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(TEasyItem* Item, const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewReportItem(TEasyGroup* AnOwner) : TEasyViewSmallIconItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewReportItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewGridItem; +class PASCALIMPLEMENTATION TEasyViewGridItem : public TEasyViewSmallIconItem +{ + typedef TEasyViewSmallIconItem inherited; + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewGridItem(TEasyGroup* AnOwner) : TEasyViewSmallIconItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewGridItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewThumbnailItem; +class PASCALIMPLEMENTATION TEasyViewThumbnailItem : public TEasyViewItem +{ + typedef TEasyViewItem inherited; + +public: + virtual Types::TRect __fastcall ExpandTextR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual Imglist::TCustomImageList* __fastcall GetImageList(TEasyColumn* Column, TEasyItem* Item, TEasyImageKind Image); + virtual TEasyImageSize __fastcall PaintImageSize(void); + virtual void __fastcall AfterSelRectCalc(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Types::TRect &LocalSelRect); + virtual void __fastcall ItemRectArray(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const WideString Caption, TEasyRectArrayObject &RectArray); + virtual bool __fastcall OverlappedFocus(void); + virtual void __fastcall PaintAfter(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, bool &Handled); + virtual int __fastcall PaintTextLineCount(TEasyItem* Item, TEasyColumn* Column); + virtual Mpcommonutilities::TCommonVAlignment __fastcall PaintTextVAlignment(TEasyItem* Item, TEasyColumn* Column); + virtual bool __fastcall SelectionHit(TEasyItem* Item, const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(TEasyItem* Item, const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewThumbnailItem(TEasyGroup* AnOwner) : TEasyViewItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewThumbnailItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewTileItem; +class PASCALIMPLEMENTATION TEasyViewTileItem : public TEasyViewItem +{ + typedef TEasyViewItem inherited; + +public: + virtual Types::TRect __fastcall ExpandIconR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual Types::TRect __fastcall ExpandTextR(TEasyItem* Item, const TEasyRectArrayObject &RectArray, TEasySelectHitType SelectType); + virtual Imglist::TCustomImageList* __fastcall GetImageList(TEasyColumn* Column, TEasyItem* Item, TEasyImageKind Image); + virtual TEasyImageSize __fastcall PaintImageSize(void); + virtual Classes::TAlignment __fastcall PaintTextAlignment(TEasyItem* Item, TEasyColumn* Column); + virtual void __fastcall AfterSelRectCalc(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Types::TRect &LocalSelRect); + virtual void __fastcall ItemRectArray(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const WideString Caption, TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, bool &Handled); + virtual void __fastcall PaintText(TEasyItem* Item, TEasyColumn* Column, const WideString Caption, const TEasyRectArrayObject &RectArray, Graphics::TCanvas* ACanvas, int LinesToDraw); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewTileItem(TEasyGroup* AnOwner) : TEasyViewItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewTileItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewFilmStripItem; +class PASCALIMPLEMENTATION TEasyViewFilmStripItem : public TEasyViewThumbnailItem +{ + typedef TEasyViewThumbnailItem inherited; + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewFilmStripItem(TEasyGroup* AnOwner) : TEasyViewThumbnailItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewFilmStripItem(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewTaskBandItem; +class PASCALIMPLEMENTATION TEasyViewTaskBandItem : public TEasyViewSmallIconItem +{ + typedef TEasyViewSmallIconItem inherited; + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewTaskBandItem(TEasyGroup* AnOwner) : TEasyViewSmallIconItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewTaskBandItem(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyItems : public TEasyCollection +{ + typedef TEasyCollection inherited; + +public: + TEasyItem* operator[](int Index) { return Items[Index]; } + +private: + TEasyGroup* FOwnerGroup; + HIDESBASE TEasyItem* __fastcall GetItem(int Index); + HIDESBASE void __fastcall SetItem(int Index, TEasyItem* Value); + +protected: + virtual void __fastcall DoStructureChange(void); + +public: + __fastcall virtual TEasyItems(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + __fastcall virtual ~TEasyItems(void); + HIDESBASE TEasyItem* __fastcall Add(System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemInterfaced* __fastcall AddInterfaced(const System::_di_IInterface DataInf, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemVirtual* __fastcall AddVirtual(System::TObject* Data = (System::TObject*)(0x0)); + TEasyItem* __fastcall AddCustom(TMetaClass* CustomItem, System::TObject* Data = (System::TObject*)(0x0)); + virtual void __fastcall Clear(bool FreeItems = true); + HIDESBASE void __fastcall Delete(int Index); + HIDESBASE void __fastcall Exchange(int Index1, int Index2); + HIDESBASE TEasyItem* __fastcall Insert(int Index, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItem* __fastcall InsertCustom(int Index, TMetaClass* CustomItem, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemInterfaced* __fastcall InsertInterfaced(int Index, const System::_di_IInterface DataInf, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemVirtual* __fastcall InsertVirtual(int Index, System::TObject* Data = (System::TObject*)(0x0)); + __property TEasyItem* Items[int Index] = {read=GetItem, write=SetItem/*, default*/}; + __property TEasyGroup* OwnerGroup = {read=FOwnerGroup}; +}; + + +class DELPHICLASS TEasyGlobalItems; +class PASCALIMPLEMENTATION TEasyGlobalItems : public System::TObject +{ + typedef System::TObject inherited; + +public: + TEasyItem* operator[](int Index) { return Items[Index]; } + +private: + TCustomEasyListview* FOwner; + int __fastcall GetCount(void); + TEasyItem* __fastcall GetItem(int Index); + TEasyItem* __fastcall GetItemInternal(int Index); + TEasyGroup* __fastcall GetLastGroup(void); + void __fastcall EnsureFirstGroup(void); + void __fastcall IndexError(int Index); + void __fastcall SetItem(int Index, const TEasyItem* Value); + void __fastcall SetReIndexDisable(const bool Value); + +public: + __fastcall TEasyGlobalItems(TCustomEasyListview* AnOwner); + TEasyItem* __fastcall Add(System::TObject* Data = (System::TObject*)(0x0)); + TEasyItem* __fastcall AddCustom(TMetaClass* CustomItem, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemInterfaced* __fastcall AddInterfaced(const System::_di_IInterface DataInf, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemVirtual* __fastcall AddVirtual(System::TObject* Data = (System::TObject*)(0x0)); + int __fastcall IndexOf(TEasyItem* Item); + TEasyItem* __fastcall Insert(int Index, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItem* __fastcall InsertCustom(int Index, TMetaClass* CustomItem, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemInterfaced* __fastcall InsertInterfaced(int Index, const System::_di_IInterface DataInf, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItemVirtual* __fastcall InsertVirtual(int Index, System::TObject* Data = (System::TObject*)(0x0)); + void __fastcall Clear(void); + void __fastcall Delete(int Index, bool ReIndex = true); + void __fastcall Exchange(int Index1, int Index2); + __property int Count = {read=GetCount, nodefault}; + __property TEasyItem* Items[int Index] = {read=GetItem, write=SetItem/*, default*/}; + __property TCustomEasyListview* OwnerListview = {read=FOwner}; + __property bool ReIndexDisable = {write=SetReIndexDisable, nodefault}; +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyGlobalItems(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGlobalImageManager; +class PASCALIMPLEMENTATION TEasyGlobalImageManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + Graphics::TBitmap* FGroupExpandButton; + Graphics::TBitmap* FGroupCollapseButton; + Graphics::TBitmap* FColumnSortUp; + Graphics::TBitmap* FColumnSortDown; + Graphics::TBitmap* __fastcall GetColumnSortDown(void); + Graphics::TBitmap* __fastcall GetColumnSortUp(void); + Graphics::TBitmap* __fastcall GetGroupCollapseImage(void); + Graphics::TBitmap* __fastcall GetGroupExpandImage(void); + void __fastcall SetColumnSortDown(Graphics::TBitmap* Value); + void __fastcall SetColumnSortUp(Graphics::TBitmap* Value); + void __fastcall SetGroupCollapseImage(const Graphics::TBitmap* Value); + void __fastcall SetGroupExpandImage(const Graphics::TBitmap* Value); + +protected: + void __fastcall MakeTransparent(Graphics::TBitmap* Bits, Graphics::TColor TransparentColor); + +public: + __fastcall virtual TEasyGlobalImageManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyGlobalImageManager(void); + +__published: + __property Graphics::TBitmap* GroupExpandButton = {read=GetGroupExpandImage, write=SetGroupExpandImage}; + __property Graphics::TBitmap* GroupCollapseButton = {read=GetGroupCollapseImage, write=SetGroupCollapseImage}; + __property Graphics::TBitmap* ColumnSortUp = {read=GetColumnSortUp, write=SetColumnSortUp}; + __property Graphics::TBitmap* ColumnSortDown = {read=GetColumnSortDown, write=SetColumnSortDown}; +}; + + +class DELPHICLASS TEasyGridGroup; +class DELPHICLASS TEasyCellSize; +class PASCALIMPLEMENTATION TEasyGridGroup : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + int FColumnCount; + TEasyGridLayout FLayout; + TEasyGroup* FOwnerGroup; + int FRowCount; + TEasyGroups* __fastcall GetOwnerGroups(void); + +protected: + virtual TEasyItem* __fastcall AdjacentItem(TEasyItem* Item, TEasyAdjacentCellDir Direction); + virtual TEasyCellSize* __fastcall GetCellSize(void) = 0 ; + virtual int __fastcall GetMaxColumns(TEasyGroup* Group, int WindowWidth); + TEasyItem* __fastcall LastItemInNColumn(TEasyGroup* Group, int N); + TEasyGroup* __fastcall NextVisibleGroupWithNItems(TEasyGroup* StartGroup, int N); + TEasyGroup* __fastcall PrevVisibleGroupWithNItems(TEasyGroup* StartGroup, int N); + TEasyItem* __fastcall SearchForHitRight(int ColumnPos, const Types::TPoint &Pt); + virtual int __fastcall StaticTopItemMargin(void); + virtual int __fastcall StaticTopMargin(void); + virtual void __fastcall AutoSizeCells(void); + void __fastcall FindLongestCaption(TEasyColumn* Column, TEasyItem* &Item); + virtual void __fastcall SetCellSize(TEasyCellSize* Value) = 0 ; + +public: + __fastcall virtual TEasyGridGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + __fastcall virtual ~TEasyGridGroup(void); + virtual void __fastcall FindInsertPosition(const Types::TPoint &ViewportPoint, TEasyGroup* &Group, int &Index); + virtual void __fastcall Rebuild(TEasyGroup* PrevGroup, int &NextVisibleItemIndex); + __property TEasyCellSize* CellSize = {read=GetCellSize, write=SetCellSize}; + __property int ColumnCount = {read=FColumnCount, nodefault}; + __property TEasyGridLayout Layout = {read=FLayout, nodefault}; + __property TEasyGroup* OwnerGroup = {read=FOwnerGroup}; + __property TEasyGroups* OwnerGroups = {read=GetOwnerGroups}; + __property int RowCount = {read=FRowCount, nodefault}; +}; + + +class DELPHICLASS TEasyGridIconGroup; +class PASCALIMPLEMENTATION TEasyGridIconGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall AutoSizeCells(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Create */ inline __fastcall virtual TEasyGridIconGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup) : TEasyGridGroup(AnOwner, AnOwnerGroup) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridIconGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridSmallIconGroup; +class PASCALIMPLEMENTATION TEasyGridSmallIconGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Create */ inline __fastcall virtual TEasyGridSmallIconGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup) : TEasyGridGroup(AnOwner, AnOwnerGroup) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridSmallIconGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridListGroup; +class PASCALIMPLEMENTATION TEasyGridListGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyItem* __fastcall AdjacentItem(TEasyItem* Item, TEasyAdjacentCellDir Direction); + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + +public: + __fastcall virtual TEasyGridListGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + virtual void __fastcall FindInsertPosition(const Types::TPoint &ViewportPoint, TEasyGroup* &Group, int &Index); + virtual void __fastcall Rebuild(TEasyGroup* PrevGroup, int &NextVisibleItemIndex); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridListGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridReportGroup; +class PASCALIMPLEMENTATION TEasyGridReportGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyItem* __fastcall AdjacentItem(TEasyItem* Item, TEasyAdjacentCellDir Direction); + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + +public: + __fastcall virtual TEasyGridReportGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + virtual void __fastcall FindInsertPosition(const Types::TPoint &ViewportPoint, TEasyGroup* &Group, int &Index); + virtual void __fastcall Rebuild(TEasyGroup* PrevGroup, int &NextVisibleItemIndex); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridReportGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridThumbnailGroup; +class PASCALIMPLEMENTATION TEasyGridThumbnailGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall AutoSizeCells(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Create */ inline __fastcall virtual TEasyGridThumbnailGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup) : TEasyGridGroup(AnOwner, AnOwnerGroup) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridThumbnailGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridTileGroup; +class PASCALIMPLEMENTATION TEasyGridTileGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + +public: + virtual void __fastcall FindInsertPosition(const Types::TPoint &ViewportPoint, TEasyGroup* &Group, int &Index); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Create */ inline __fastcall virtual TEasyGridTileGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup) : TEasyGridGroup(AnOwner, AnOwnerGroup) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridTileGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridFilmStripGroup; +class PASCALIMPLEMENTATION TEasyGridFilmStripGroup : public TEasyGridListGroup +{ + typedef TEasyGridListGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall AutoSizeCells(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); +public: + #pragma option push -w-inl + /* TEasyGridListGroup.Create */ inline __fastcall virtual TEasyGridFilmStripGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup) : TEasyGridListGroup(AnOwner, AnOwnerGroup) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridFilmStripGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridGridGroup; +class PASCALIMPLEMENTATION TEasyGridGridGroup : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + +public: + __fastcall virtual TEasyGridGridGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + virtual void __fastcall Rebuild(TEasyGroup* PrevGroup, int &NextVisibleItemIndex); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridGridGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridSingleColumn; +class PASCALIMPLEMENTATION TEasyGridSingleColumn : public TEasyGridGroup +{ + typedef TEasyGridGroup inherited; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual int __fastcall GetMaxColumns(TEasyGroup* Group, int WindowWidth); + virtual void __fastcall AutoSizeCells(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + +public: + virtual void __fastcall FindInsertPosition(const Types::TPoint &ViewportPoint, TEasyGroup* &Group, int &Index); +public: + #pragma option push -w-inl + /* TEasyGridGroup.Create */ inline __fastcall virtual TEasyGridSingleColumn(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup) : TEasyGridGroup(AnOwner, AnOwnerGroup) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGridGroup.Destroy */ inline __fastcall virtual ~TEasyGridSingleColumn(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGridTaskBandGroup; +class PASCALIMPLEMENTATION TEasyGridTaskBandGroup : public TEasyGridSingleColumn +{ + typedef TEasyGridSingleColumn inherited; + +private: + TEasyCellSize* FCellSize; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual int __fastcall StaticTopItemMargin(void); + virtual int __fastcall StaticTopMargin(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + __property TEasyCellSize* CellSize = {read=FCellSize, write=FCellSize}; + +public: + __fastcall virtual TEasyGridTaskBandGroup(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + __fastcall virtual ~TEasyGridTaskBandGroup(void); +}; + + +class DELPHICLASS TEasyGridGroupTaskPanel; +class PASCALIMPLEMENTATION TEasyGridGroupTaskPanel : public TEasyGridSingleColumn +{ + typedef TEasyGridSingleColumn inherited; + +private: + TEasyCellSize* FCellSize; + +protected: + virtual TEasyCellSize* __fastcall GetCellSize(void); + virtual int __fastcall StaticTopMargin(void); + virtual void __fastcall SetCellSize(TEasyCellSize* Value); + +public: + __fastcall virtual TEasyGridGroupTaskPanel(TCustomEasyListview* AnOwner, TEasyGroup* AnOwnerGroup); + __fastcall virtual ~TEasyGridGroupTaskPanel(void); + virtual void __fastcall Rebuild(TEasyGroup* PrevGroup, int &NextVisibleItemIndex); +}; + + +class DELPHICLASS TEasyViewGroup; +class PASCALIMPLEMENTATION TEasyViewGroup : public TEasyOwnedPersistentGroupItem +{ + typedef TEasyOwnedPersistentGroupItem inherited; + +protected: + bool __fastcall CustomExpandImages(void); + void __fastcall GetCollapseExpandImages(Graphics::TBitmap* &Expand, Graphics::TBitmap* &Collapse); + +public: + virtual bool __fastcall EditAreaHitPt(TEasyGroup* Group, const Types::TPoint &ViewportPoint); + Imglist::TCustomImageList* __fastcall GetImageList(TEasyGroup* Group); + virtual void __fastcall GetExpandImageSize(TEasyGroup* Group, int &ImageW, int &ImageH); + virtual void __fastcall GetImageSize(TEasyGroup* Group, int &ImageW, int &ImageH); + virtual void __fastcall GroupRectArray(TEasyGroup* Group, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, TEasyRectArrayObject &RectArray); + virtual void __fastcall LoadTextFont(TEasyGroup* Group, Graphics::TCanvas* ACanvas); + virtual void __fastcall Paint(TEasyGroup* Group, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, Graphics::TCanvas* ACanvas); + virtual void __fastcall PaintAfter(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBackground(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBand(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintCheckBox(TEasyGroup* Group, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintExpandButton(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintFocusRect(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintImage(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintSelectionRect(TEasyGroup* Group, Graphics::TCanvas* ACanvas, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintText(TEasyGroup* Group, TEasyGroupMarginEdge MarginEdge, Graphics::TCanvas* ACanvas, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual bool __fastcall SelectionHit(TEasyGroup* Group, const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(TEasyGroup* Group, const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewGroup(TEasyGroup* AnOwner) : TEasyOwnedPersistentGroupItem(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewGroup(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyGroup : public TEasyCollectionItem +{ + typedef TEasyCollectionItem inherited; + +public: + TEasyItem* operator[](int Index) { return Item[Index]; } + +private: + bool FExpanded; + TEasyGridGroup* FGrid; + TEasyItems* FItems; + unsigned FKey; + TEasyViewGroup* FView; + Classes::TList* FVisibleItems; + bool __fastcall GetBandBlended(void); + Graphics::TColor __fastcall GetBandColor(void); + Graphics::TColor __fastcall GetBandColorFade(void); + bool __fastcall GetBandEnabled(void); + bool __fastcall GetBandFullWidth(void); + int __fastcall GetBandIndent(void); + int __fastcall GetBandLength(void); + int __fastcall GetBandMargin(void); + Byte __fastcall GetBandRadius(void); + int __fastcall GetBandThickness(void); + Types::TRect __fastcall GetClientRect(); + bool __fastcall GetExpandable(void); + int __fastcall GetExpandImageIndent(void); + TEasyGridGroup* __fastcall GetGrid(void); + TMetaClass* __fastcall GetGridClass(void); + TEasyItem* __fastcall GetItem(int Index); + int __fastcall GetItemCount(void); + TEasyFooterMargin* __fastcall GetMarginBottom(void); + TEasyMargin* __fastcall GetMarginLeft(void); + TEasyMargin* __fastcall GetMarginRight(void); + TEasyHeaderMargin* __fastcall GetMarginTop(void); + TEasyGroups* __fastcall GetOwnerGroups(void); + HIDESBASE TCustomEasyListview* __fastcall GetOwnerListview(void); + HIDESBASE TEasyPaintInfoBaseGroup* __fastcall GetPaintInfo(void); + TEasyViewGroup* __fastcall GetView(void); + TMetaClass* __fastcall GetViewClass(void); + int __fastcall GetVisibleCount(void); + TEasyItem* __fastcall GetVisibleItem(int Index); + void __fastcall SetBandBlended(bool Value); + void __fastcall SetBandColor(Graphics::TColor Value); + void __fastcall SetBandColorFade(Graphics::TColor Value); + void __fastcall SetBandEnabled(bool Value); + void __fastcall SetBandFullWidth(bool Value); + void __fastcall SetBandIndent(int Value); + void __fastcall SetBandLength(int Value); + void __fastcall SetBandMargin(int Value); + void __fastcall SetBandRadius(Byte Value); + void __fastcall SetBandThickness(int Value); + void __fastcall SetExpandable(bool Value); + virtual void __fastcall SetExpanded(bool Value); + void __fastcall SetExpandImageIndent(int Value); + void __fastcall SetItem(int Index, TEasyItem* Value); + void __fastcall SetMarginBottom(TEasyFooterMargin* Value); + void __fastcall SetMarginLeft(TEasyMargin* Value); + void __fastcall SetMarginRight(TEasyMargin* Value); + void __fastcall SetMarginTop(TEasyHeaderMargin* Value); + HIDESBASE void __fastcall SetPaintInfo(const TEasyPaintInfoBaseGroup* Value); + +protected: + virtual bool __fastcall CanChangeBold(bool NewValue); + virtual bool __fastcall CanChangeCheck(bool NewValue); + virtual bool __fastcall CanChangeEnable(bool NewValue); + virtual bool __fastcall CanChangeFocus(bool NewValue); + virtual bool __fastcall CanChangeHotTracking(bool NewValue); + virtual bool __fastcall CanChangeSelection(bool NewValue); + virtual bool __fastcall CanChangeVisibility(bool NewValue); + virtual Imglist::TCustomImageList* __fastcall DefaultImageList(TEasyImageSize ImageSize); + virtual TMetaClass* __fastcall GetDefaultGridClass(void); + virtual TMetaClass* __fastcall GetDefaultViewClass(void); + virtual TEasyPaintInfoBasic* __fastcall LocalPaintInfo(void); + virtual void __fastcall Freeing(void); + virtual void __fastcall GainingBold(void); + virtual void __fastcall GainingCheck(void); + virtual void __fastcall GainingEnable(void); + virtual void __fastcall GainingFocus(void); + virtual void __fastcall GainingGhosted(void); + virtual void __fastcall GainingHilight(void); + virtual void __fastcall GainingHotTracking(const Types::TPoint &MousePos); + virtual void __fastcall GainingSelection(void); + virtual void __fastcall GainingVisibility(void); + virtual void __fastcall Initialize(void); + virtual void __fastcall LosingBold(void); + virtual void __fastcall LosingCheck(void); + virtual void __fastcall LosingEnable(void); + virtual void __fastcall LosingFocus(void); + virtual void __fastcall LosingGhosted(void); + virtual void __fastcall LosingHilight(void); + virtual void __fastcall LosingHotTracking(void); + virtual void __fastcall LosingSelection(void); + virtual void __fastcall LosingVisibility(void); + __property Alignment = {default=0}; + __property bool BandBlended = {read=GetBandBlended, write=SetBandBlended, default=1}; + __property Graphics::TColor BandColor = {read=GetBandColor, write=SetBandColor, default=16711680}; + __property Graphics::TColor BandColorFade = {read=GetBandColorFade, write=SetBandColorFade, default=-16777211}; + __property bool BandEnabled = {read=GetBandEnabled, write=SetBandEnabled, default=1}; + __property bool BandFullWidth = {read=GetBandFullWidth, write=SetBandFullWidth, default=0}; + __property int BandIndent = {read=GetBandIndent, write=SetBandIndent, default=0}; + __property int BandLength = {read=GetBandLength, write=SetBandLength, default=300}; + __property int BandMargin = {read=GetBandMargin, write=SetBandMargin, default=0}; + __property Byte BandRadius = {read=GetBandRadius, write=SetBandRadius, default=4}; + __property int BandThickness = {read=GetBandThickness, write=SetBandThickness, default=3}; + __property CaptionIndent = {default=2}; + __property CheckFlat = {default=0}; + __property CheckIndent = {default=2}; + __property CheckSize = {default=12}; + __property CheckType = {default=0}; + __property bool Expandable = {read=GetExpandable, write=SetExpandable, default=1}; + __property int ExpandImageIndent = {read=GetExpandImageIndent, write=SetExpandImageIndent, default=4}; + __property ImageIndent = {default=2}; + __property unsigned Key = {read=FKey, write=FKey, nodefault}; + __property TEasyFooterMargin* MarginBottom = {read=GetMarginBottom, write=SetMarginBottom}; + __property TEasyMargin* MarginLeft = {read=GetMarginLeft, write=SetMarginLeft}; + __property TEasyMargin* MarginRight = {read=GetMarginRight, write=SetMarginRight}; + __property TEasyHeaderMargin* MarginTop = {read=GetMarginTop, write=SetMarginTop}; + __property OwnsPaintInfo = {default=0}; + __property TEasyPaintInfoBaseGroup* PaintInfo = {read=GetPaintInfo, write=SetPaintInfo}; + __property VAlignment = {default=2}; + __property TEasyItem* VisibleItem[int Index] = {read=GetVisibleItem}; + __property Classes::TList* VisibleItems = {read=FVisibleItems, write=FVisibleItems}; + +public: + __fastcall virtual TEasyGroup(TEasyCollection* ACollection); + __fastcall virtual ~TEasyGroup(void); + Types::TRect __fastcall BoundsRectBkGnd(); + Types::TRect __fastcall BoundsRectBottomMargin(); + Types::TRect __fastcall BoundsRectLeftMargin(); + Types::TRect __fastcall BoundsRectRightMargin(); + Types::TRect __fastcall BoundsRectTopMargin(); + virtual bool __fastcall EditAreaHitPt(const Types::TPoint &ViewportPoint); + bool __fastcall HitTestAt(const Types::TPoint &ViewportPoint, TEasyGroupHitTestInfoSet &HitInfo); + TEasyItem* __fastcall ItemByPoint(const Types::TPoint &ViewportPoint); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + void __fastcall Paint(TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, Graphics::TCanvas* ACanvas); + void __fastcall Rebuild(TEasyGroup* PrevGroup, int &NextVisibleItemIndex); + virtual bool __fastcall SelectionHit(const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property Bold = {default=0}; + __property Caption ; + __property Checked = {default=0}; + __property Types::TRect ClientRect = {read=GetClientRect}; + __property Cut = {default=0}; + __property Enabled = {default=1}; + __property bool Expanded = {read=FExpanded, write=SetExpanded, default=1}; + __property Focused = {default=0}; + __property TEasyGridGroup* Grid = {read=GetGrid}; + __property TMetaClass* GridClass = {read=GetGridClass}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property TEasyItem* Item[int Index] = {read=GetItem, write=SetItem/*, default*/}; + __property int ItemCount = {read=GetItemCount, nodefault}; + __property TEasyItems* Items = {read=FItems, write=FItems}; + __property TCustomEasyListview* OwnerListview = {read=GetOwnerListview}; + __property TEasyGroups* OwnerGroups = {read=GetOwnerGroups}; + __property TEasyViewGroup* View = {read=GetView}; + __property TMetaClass* ViewClass = {read=GetViewClass}; + __property Visible = {default=1}; + __property int VisibleCount = {read=GetVisibleCount, nodefault}; +}; + + +class DELPHICLASS TEasyGroupInterfaced; +class PASCALIMPLEMENTATION TEasyGroupInterfaced : public TEasyGroup +{ + typedef TEasyGroup inherited; + +protected: + virtual WideString __fastcall GetCaptions(int Line); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + +public: + __property DataInf ; +public: + #pragma option push -w-inl + /* TEasyGroup.Create */ inline __fastcall virtual TEasyGroupInterfaced(TEasyCollection* ACollection) : TEasyGroup(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGroup.Destroy */ inline __fastcall virtual ~TEasyGroupInterfaced(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyBaseGroupStored; +class PASCALIMPLEMENTATION TEasyBaseGroupStored : public TEasyGroup +{ + typedef TEasyGroup inherited; + +private: + TEasyDynamicDataHelper* FDataHelper; + +protected: + virtual WideString __fastcall GetCaptions(int Line); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + __property TEasyDynamicDataHelper* DataHelper = {read=FDataHelper, write=FDataHelper}; + +public: + __fastcall virtual TEasyBaseGroupStored(TEasyCollection* ACollection); + __fastcall virtual ~TEasyBaseGroupStored(void); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); +}; + + +class DELPHICLASS TEasyGroupStored; +class PASCALIMPLEMENTATION TEasyGroupStored : public TEasyBaseGroupStored +{ + typedef TEasyBaseGroupStored inherited; + +__published: + __property Caption ; + __property Bold = {default=0}; + __property Checked = {default=0}; + __property Cut = {default=0}; + __property Enabled = {default=1}; + __property Expanded = {default=1}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property Items ; + __property Tag = {default=0}; + __property Visible = {default=1}; +public: + #pragma option push -w-inl + /* TEasyBaseGroupStored.Create */ inline __fastcall virtual TEasyGroupStored(TEasyCollection* ACollection) : TEasyBaseGroupStored(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyBaseGroupStored.Destroy */ inline __fastcall virtual ~TEasyGroupStored(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyGroupTaskPanel; +class PASCALIMPLEMENTATION TEasyGroupTaskPanel : public TEasyBaseGroupStored +{ + typedef TEasyBaseGroupStored inherited; + +private: + int FHeight; + Easytaskpanelform::TEasyTaskPanelForm* FTaskPanel; + bool __fastcall GetTaskWindowCreated(void); + virtual void __fastcall SetExpanded(bool Value); + void __fastcall SetHeight(const int Value); + virtual void __fastcall SetInitialized(bool Value); + +protected: + void __fastcall CreateTaskWindow(void); + +public: + __fastcall virtual TEasyGroupTaskPanel(TEasyCollection* ACollection); + __fastcall virtual ~TEasyGroupTaskPanel(void); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property Easytaskpanelform::TEasyTaskPanelForm* TaskPanel = {read=FTaskPanel}; + +__published: + __property Caption ; + __property Bold = {default=0}; + __property Checked = {default=0}; + __property Cut = {default=0}; + __property Enabled = {default=1}; + __property Expanded = {default=1}; + __property int Height = {read=FHeight, write=SetHeight, default=100}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property Tag = {default=0}; + __property bool TaskWindowCreated = {read=GetTaskWindowCreated, nodefault}; + __property Visible = {default=1}; +}; + + +class DELPHICLASS TEasyGroupVirtual; +class PASCALIMPLEMENTATION TEasyGroupVirtual : public TEasyGroup +{ + typedef TEasyGroup inherited; + +protected: + virtual WideString __fastcall GetCaptions(int Line); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); +public: + #pragma option push -w-inl + /* TEasyGroup.Create */ inline __fastcall virtual TEasyGroupVirtual(TEasyCollection* ACollection) : TEasyGroup(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyGroup.Destroy */ inline __fastcall virtual ~TEasyGroupVirtual(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewTaskBandGroup; +class PASCALIMPLEMENTATION TEasyViewTaskBandGroup : public TEasyViewGroup +{ + typedef TEasyViewGroup inherited; + +protected: + virtual bool __fastcall DrawThemed(void); + virtual void __fastcall PaintTextTopThemed(Graphics::TCanvas* ACanvas, TEasyGroup* Group, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + +public: + virtual void __fastcall GetExpandImageSize(TEasyGroup* Group, int &ImageW, int &ImageH); + virtual void __fastcall GroupRectArray(TEasyGroup* Group, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, TEasyRectArrayObject &RectArray); + virtual void __fastcall LoadTextFont(TEasyGroup* Group, Graphics::TCanvas* ACanvas); + virtual void __fastcall PaintBackground(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBand(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintExpandButton(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintText(TEasyGroup* Group, TEasyGroupMarginEdge MarginEdge, Graphics::TCanvas* ACanvas, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewTaskBandGroup(TEasyGroup* AnOwner) : TEasyViewGroup(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewTaskBandGroup(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewTaskPanelGroup; +class PASCALIMPLEMENTATION TEasyViewTaskPanelGroup : public TEasyViewTaskBandGroup +{ + typedef TEasyViewTaskBandGroup inherited; + +public: + virtual void __fastcall PaintBefore(TEasyGroup* Group, Graphics::TCanvas* ACanvas, TEasyGroupMarginEdge MarginEdge, const Types::TRect &ObjRect, const TEasyRectArrayObject &RectArray); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentGroupItem.Create */ inline __fastcall virtual TEasyViewTaskPanelGroup(TEasyGroup* AnOwner) : TEasyViewTaskBandGroup(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewTaskPanelGroup(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyGroups : public TEasyCollection +{ + typedef TEasyCollection inherited; + +public: + TEasyGroup* operator[](int Index) { return Groups[Index]; } + +private: + TEasyGroupsStates FGroupsState; + bool FStreamGroups; + int __fastcall GetCellHeight(void); + int __fastcall GetCellWidth(void); + TEasyGroup* __fastcall GetGroup(int Index); + int __fastcall GetItemCount(void); + Types::TRect __fastcall GetViewRect(); + TEasyGroup* __fastcall GetVisibleGroup(int Index); + void __fastcall SetCellHeight(int Value); + void __fastcall SetCellWidth(int Value); + void __fastcall SetGroup(int Index, TEasyGroup* Value); + +protected: + TEasyGroup* __fastcall FirstGroupInternal(bool VisibleOnly); + TEasyItem* __fastcall FirstInGroupInternal(TEasyGroup* Group, bool VisibleOnly); + TEasyItem* __fastcall FirstItemInternal(TEasyNextItemType NextItemType); + TEasyGroup* __fastcall LastGroupInternal(bool VisibleOnly); + TEasyItem* __fastcall LastInGroupInternal(TEasyGroup* Group, bool VisibleOnly); + TEasyItem* __fastcall LastItemInternal(TEasyNextItemType NextItemType); + TEasyGroup* __fastcall NavigateGroupInternal(TEasyGroup* Group, bool VisibleOnly, TEasySearchDirection Direction); + TEasyItem* __fastcall NavigateInGroupInternal(TEasyGroup* Group, TEasyItem* Item, bool VisibleOnly, TEasySearchDirection Direction); + TEasyItem* __fastcall NavigateItemInternal(TEasyItem* Item, TEasyNextItemType NextItemType, TEasySearchDirection Direction); + virtual void __fastcall DoStructureChange(void); + __property TEasyGroupsStates GroupsState = {read=FGroupsState, write=FGroupsState, nodefault}; + __property TEasyGroup* VisibleGroup[int Index] = {read=GetVisibleGroup}; + +public: + __fastcall virtual TEasyGroups(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyGroups(void); + HIDESBASE TEasyGroup* __fastcall Add(System::TObject* Data = (System::TObject*)(0x0)); + TEasyGroupInterfaced* __fastcall AddInterfaced(const System::_di_IInterface DataInf, System::TObject* Data = (System::TObject*)(0x0)); + TEasyGroupVirtual* __fastcall AddVirtual(System::TObject* Data = (System::TObject*)(0x0)); + TEasyGroup* __fastcall AddCustom(TMetaClass* CustomGroup, System::TObject* Data = (System::TObject*)(0x0)); + TEasyItem* __fastcall AdjacentItem(TEasyItem* Item, TEasyAdjacentCellDir Direction); + bool __fastcall CanMoveDown(void); + bool __fastcall CanMoveUp(void); + virtual void __fastcall Clear(bool FreeItems = true); + void __fastcall CollapseAll(void); + void __fastcall DeleteGroup(TEasyGroup* Group); + void __fastcall DeleteItem(TEasyItem* Item); + void __fastcall DeleteItems(TEasyItemArray ItemArray); + void __fastcall ExpandAll(void); + TEasyGroup* __fastcall FirstGroup(void); + TEasyGroup* __fastcall FirstGroupInRect(const Types::TRect &ViewportRect); + TEasyItem* __fastcall FirstInGroup(TEasyGroup* Group); + TEasyItem* __fastcall FirstInitializedItem(void); + TEasyItem* __fastcall FirstItem(void); + TEasyItem* __fastcall FirstItemInRect(const Types::TRect &ViewportRect); + TEasyGroup* __fastcall FirstVisibleGroup(void); + TEasyItem* __fastcall FirstVisibleInGroup(TEasyGroup* Group); + TEasyItem* __fastcall FirstVisibleItem(void); + TEasyGroup* __fastcall GroupByPoint(const Types::TPoint &ViewportPoint); + HIDESBASE TEasyGroup* __fastcall Insert(int Index, System::TObject* Data = (System::TObject*)(0x0)); + TEasyGroup* __fastcall InsertCustom(int Index, TMetaClass* CustomGroup, System::TObject* Data = (System::TObject*)(0x0)); + TEasyGroupInterfaced* __fastcall InsertInterfaced(int Index, const System::_di_IInterface DataInf, System::TObject* Data); + TEasyGroupVirtual* __fastcall InsertVirtual(int Index, System::TObject* Data = (System::TObject*)(0x0)); + void __fastcall InitializeAll(void); + void __fastcall InvalidateItem(TEasyCollectionItem* Item, bool ImmediateUpdate); + TEasyGroup* __fastcall LastGroup(void); + TEasyItem* __fastcall LastInGroup(TEasyGroup* Group); + TEasyItem* __fastcall LastInitializedItem(void); + TEasyItem* __fastcall LastItem(void); + TEasyGroup* __fastcall LastVisibleGroup(void); + TEasyItem* __fastcall LastVisibleInGroup(TEasyGroup* Group); + TEasyItem* __fastcall LastVisibleItem(void); + TEasyItem* __fastcall ItemByPoint(const Types::TPoint &ViewportPoint); + bool __fastcall MoveDown(void); + bool __fastcall MoveUp(void); + TEasyItem* __fastcall NextEditableItem(TEasyItem* Item); + TEasyGroup* __fastcall NextGroup(TEasyGroup* Group); + TEasyGroup* __fastcall NextGroupInRect(TEasyGroup* Group, const Types::TRect &ViewportRect); + TEasyItem* __fastcall NextInitializedItem(TEasyItem* Item); + TEasyItem* __fastcall NextInGroup(TEasyGroup* Group, TEasyItem* Item); + TEasyItem* __fastcall NextItem(TEasyItem* Item); + TEasyItem* __fastcall NextItemInRect(TEasyItem* Item, const Types::TRect &ViewportRect); + TEasyGroup* __fastcall NextVisibleGroup(TEasyGroup* Group); + TEasyGroup* __fastcall NextVisibleGroupWithVisibleItems(TEasyGroup* Group); + TEasyItem* __fastcall NextVisibleInGroup(TEasyGroup* Group, TEasyItem* Item); + TEasyItem* __fastcall NextVisibleItem(TEasyItem* Item); + TEasyItem* __fastcall PrevEditableItem(TEasyItem* Item); + TEasyGroup* __fastcall PrevGroup(TEasyGroup* Group); + TEasyItem* __fastcall PrevInGroup(TEasyGroup* Group, TEasyItem* Item); + TEasyItem* __fastcall PrevInitializedItem(TEasyItem* Item); + TEasyItem* __fastcall PrevItem(TEasyItem* Item); + TEasyGroup* __fastcall PrevVisibleGroup(TEasyGroup* Group); + TEasyGroup* __fastcall PrevVisibleGroupWithVisibleItems(TEasyGroup* Group); + TEasyItem* __fastcall PrevVisibleInGroup(TEasyGroup* Group, TEasyItem* Item); + TEasyItem* __fastcall PrevVisibleItem(TEasyItem* Item); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x5); + virtual void __fastcall MakeAllVisible(void); + void __fastcall Move(TEasyItem* Item, TEasyGroup* NewGroup); + virtual void __fastcall Rebuild(bool Force = false); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + void __fastcall UnInitializeAll(void); + __property int CellHeight = {read=GetCellHeight, write=SetCellHeight, nodefault}; + __property int CellWidth = {read=GetCellWidth, write=SetCellWidth, nodefault}; + __property TEasyGroup* Groups[int Index] = {read=GetGroup, write=SetGroup/*, default*/}; + __property int ItemCount = {read=GetItemCount, nodefault}; + __property bool StreamGroups = {read=FStreamGroups, write=FStreamGroups, default=1}; + __property Types::TRect ViewRect = {read=GetViewRect}; +}; + + +class DELPHICLASS TEasyGroupsTaskPanel; +class PASCALIMPLEMENTATION TEasyGroupsTaskPanel : public TEasyGroups +{ + typedef TEasyGroups inherited; + +public: + TEasyGroupTaskPanel* operator[](int Index) { return Groups[Index]; } + +private: + HIDESBASE TEasyGroupTaskPanel* __fastcall GetGroup(int Index); + HIDESBASE void __fastcall SetGroup(int Index, TEasyGroupTaskPanel* Value); + +public: + __fastcall virtual TEasyGroupsTaskPanel(TCustomEasyListview* AnOwner); + __property TEasyGroupTaskPanel* Groups[int Index] = {read=GetGroup, write=SetGroup/*, default*/}; +public: + #pragma option push -w-inl + /* TEasyGroups.Destroy */ inline __fastcall virtual ~TEasyGroupsTaskPanel(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyCellSize : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FAutoSize; + int FAutoSizeHeight; + int FAutoSizeWidth; + int FHeight; + int FWidth; + int __fastcall GetHeight(void); + int __fastcall GetWidth(void); + void __fastcall SetAutoSize(const bool Value); + void __fastcall SetHeight(int Value); + void __fastcall SetWidth(int Value); + +protected: + __property int AutoSizeHeight = {read=FAutoSizeHeight, write=FAutoSizeHeight, nodefault}; + __property int AutoSizeWidth = {read=FAutoSizeWidth, write=FAutoSizeWidth, nodefault}; + +public: + __fastcall virtual TEasyCellSize(TCustomEasyListview* AnOwner); + virtual void __fastcall Assign(Classes::TPersistent* Source); + void __fastcall SetSize(int AWidth, int AHeight); + +__published: + __property bool AutoSize = {read=FAutoSize, write=SetAutoSize, default=0}; + __property int Height = {read=GetHeight, write=SetHeight, default=75}; + __property int Width = {read=GetWidth, write=SetWidth, default=75}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSize(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeIcon; +class PASCALIMPLEMENTATION TEasyCellSizeIcon : public TEasyCellSize +{ + typedef TEasyCellSize inherited; + +public: + #pragma option push -w-inl + /* TEasyCellSize.Create */ inline __fastcall virtual TEasyCellSizeIcon(TCustomEasyListview* AnOwner) : TEasyCellSize(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeIcon(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeSmallIcon; +class PASCALIMPLEMENTATION TEasyCellSizeSmallIcon : public TEasyCellSize +{ + typedef TEasyCellSize inherited; + +public: + __fastcall virtual TEasyCellSizeSmallIcon(TCustomEasyListview* AnOwner); + +__published: + __property Width = {default=200}; + __property Height = {default=17}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeSmallIcon(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeThumbnail; +class PASCALIMPLEMENTATION TEasyCellSizeThumbnail : public TEasyCellSize +{ + typedef TEasyCellSize inherited; + +public: + __fastcall virtual TEasyCellSizeThumbnail(TCustomEasyListview* AnOwner); + +__published: + __property Width = {default=125}; + __property Height = {default=143}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeThumbnail(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeTile; +class PASCALIMPLEMENTATION TEasyCellSizeTile : public TEasyCellSize +{ + typedef TEasyCellSize inherited; + +public: + __fastcall virtual TEasyCellSizeTile(TCustomEasyListview* AnOwner); + +__published: + __property Width = {default=218}; + __property Height = {default=58}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeTile(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeList; +class PASCALIMPLEMENTATION TEasyCellSizeList : public TEasyCellSize +{ + typedef TEasyCellSize inherited; + +public: + __fastcall virtual TEasyCellSizeList(TCustomEasyListview* AnOwner); + +__published: + __property Width = {default=200}; + __property Height = {default=17}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeList(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeReport; +class PASCALIMPLEMENTATION TEasyCellSizeReport : public TEasyCellSize +{ + typedef TEasyCellSize inherited; + +public: + __fastcall virtual TEasyCellSizeReport(TCustomEasyListview* AnOwner); + +__published: + __property Width = {default=75}; + __property Height = {default=17}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeReport(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizeFilmStrip; +class PASCALIMPLEMENTATION TEasyCellSizeFilmStrip : public TEasyCellSizeThumbnail +{ + typedef TEasyCellSizeThumbnail inherited; + +public: + #pragma option push -w-inl + /* TEasyCellSizeThumbnail.Create */ inline __fastcall virtual TEasyCellSizeFilmStrip(TCustomEasyListview* AnOwner) : TEasyCellSizeThumbnail(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellSizeFilmStrip(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellGrid; +class PASCALIMPLEMENTATION TEasyCellGrid : public TEasyCellSizeReport +{ + typedef TEasyCellSizeReport inherited; + +public: + #pragma option push -w-inl + /* TEasyCellSizeReport.Create */ inline __fastcall virtual TEasyCellGrid(TCustomEasyListview* AnOwner) : TEasyCellSizeReport(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCellGrid(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyCellSizes; +class PASCALIMPLEMENTATION TEasyCellSizes : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + TEasyCellSize* FFilmStrip; + TEasyCellSize* FIcon; + TEasyCellSize* FList; + TEasyCellSize* FReport; + TEasyCellSize* FSmallIcon; + TEasyCellSize* FGrid; + TEasyCellSize* FThumbnail; + TEasyCellSize* FTile; + +public: + __fastcall virtual TEasyCellSizes(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyCellSizes(void); + +__published: + __property TEasyCellSize* FilmStrip = {read=FFilmStrip, write=FFilmStrip}; + __property TEasyCellSize* Icon = {read=FIcon, write=FIcon}; + __property TEasyCellSize* SmallIcon = {read=FSmallIcon, write=FSmallIcon}; + __property TEasyCellSize* Grid = {read=FGrid, write=FGrid}; + __property TEasyCellSize* Thumbnail = {read=FThumbnail, write=FThumbnail}; + __property TEasyCellSize* Tile = {read=FTile, write=FTile}; + __property TEasyCellSize* List = {read=FList, write=FList}; + __property TEasyCellSize* Report = {read=FReport, write=FReport}; +}; + + +#pragma option push -b- +enum TEasyColumnDropDownButtonState { cdbsHovering, cdbsDown, cdbsClickPending }; +#pragma option pop + +typedef Set TEasyColumnDropDownButtonStates; + +class DELPHICLASS TEasyColumnDropDownButton; +class PASCALIMPLEMENTATION TEasyColumnDropDownButton : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + bool FAlwaysShow; + bool FEnabled; + Menus::TPopupMenu* FMenu; + TEasyColumn* FOwner; + TEasyColumnDropDownButtonStates FState; + bool FVisible; + void __fastcall SetAlwaysShow(const bool Value); + void __fastcall SetEnabled(const bool Value); + void __fastcall SetVisible(const bool Value); + +public: + __property TEasyColumnDropDownButtonStates State = {read=FState, write=FState, nodefault}; + +__published: + __fastcall TEasyColumnDropDownButton(TEasyColumn* AnOwner); + __property bool AlwaysShow = {read=FAlwaysShow, write=SetAlwaysShow, default=0}; + __property bool Enabled = {read=FEnabled, write=SetEnabled, default=1}; + __property Menus::TPopupMenu* Menu = {read=FMenu, write=FMenu}; + __property TEasyColumn* Owner = {read=FOwner}; + __property bool Visible = {read=FVisible, write=SetVisible, default=0}; +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyColumnDropDownButton(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyViewColumn; +class PASCALIMPLEMENTATION TEasyViewColumn : public TEasyOwnedPersistentView +{ + typedef TEasyOwnedPersistentView inherited; + +public: + virtual bool __fastcall EditAreaHitPt(TEasyColumn* Column, const Types::TPoint &ViewportPoint); + Imglist::TCustomImageList* __fastcall GetImageList(TEasyColumn* Column); + virtual void __fastcall CalculateTextRect(TEasyColumn* Column, Controls::TControlCanvas* Canvas, Types::TRect &TextR); + void __fastcall GetImageSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual Types::TRect __fastcall ItemRect(TEasyColumn* Column, TEasyCellRectType RectType); + virtual void __fastcall ItemRectArray(TEasyColumn* Column, TEasyRectArrayObject &RectArray); + virtual void __fastcall LoadTextFont(TEasyColumn* Column, Graphics::TCanvas* ACanvas); + virtual void __fastcall Paint(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType); + virtual void __fastcall PaintAfter(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBefore(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintBkGnd(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintCheckBox(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintDropDownArrow(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintDropGlyph(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintFocusRect(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintImage(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray, TEasyImageSize ImageSize); + virtual TEasyImageSize __fastcall PaintImageSize(TEasyColumn* Column, TEasyHeaderType HeaderType); + virtual void __fastcall PaintSortGlyph(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray); + virtual void __fastcall PaintText(TEasyColumn* Column, Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType, const TEasyRectArrayObject &RectArray, int LinesToDraw); + virtual void __fastcall ReSizeRectArray(TEasyRectArrayObjectArray &RectArray); + virtual bool __fastcall SelectionHit(TEasyColumn* Column, const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(TEasyColumn* Column, const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); +public: + #pragma option push -w-inl + /* TEasyOwnedPersistentView.Destroy */ inline __fastcall virtual ~TEasyViewColumn(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyOwnedPersistent.Create */ inline __fastcall virtual TEasyViewColumn(TCustomEasyListview* AnOwner) : TEasyOwnedPersistentView(AnOwner) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyColumns; +class DELPHICLASS TEasyHeader; +class PASCALIMPLEMENTATION TEasyColumn : public TEasyCollectionItem +{ + typedef TEasyCollectionItem inherited; + +private: + Classes::TAlignment FAlignment; + bool FAutoSizeOnDblClk; + bool FAutoSortOnClick; + bool FAutoSpring; + bool FAutoToggleSortGlyph; + bool FClickable; + TEasyColumnDropDownButton* FDropDownButton; + int FPosition; + TEasySortDirection FSortDirection; + float FSpringRest; + TEasyHeaderButtonStyle FStyle; + TEasyViewColumn* FView; + int FWidth; + HIDESBASE Classes::TAlignment __fastcall GetAlignment(void); + Graphics::TColor __fastcall GetColor(void); + bool __fastcall GetHotTrack(void); + TEasyHeaderImagePosition __fastcall GetImagePosition(void); + TEasyColumns* __fastcall GetOwnerColumns(void); + TEasyHeader* __fastcall GetOwnerHeader(void); + HIDESBASE TEasyPaintInfoColumn* __fastcall GetPaintInfo(void); + TEasySortGlyphAlign __fastcall GetSortGlyphAlign(void); + int __fastcall GetSortGlyphIndent(void); + TEasyHeaderButtonStyle __fastcall GetStyle(void); + TEasyViewColumn* __fastcall GetView(void); + TMetaClass* __fastcall GetViewClass(void); + HIDESBASE void __fastcall SetAlignment(Classes::TAlignment Value); + void __fastcall SetAutoSpring(const bool Value); + void __fastcall SetColor(Graphics::TColor Value); + void __fastcall SetHotTrack(bool Value); + void __fastcall SetImagePosition(TEasyHeaderImagePosition Value); + HIDESBASE void __fastcall SetPaintInfo(TEasyPaintInfoColumn* Value); + void __fastcall SetPosition(int Value); + void __fastcall SetSortDirection(TEasySortDirection Value); + void __fastcall SetSortGlpyhAlign(TEasySortGlyphAlign Value); + void __fastcall SetSortGlyphIndent(int Value); + void __fastcall SetStyle(TEasyHeaderButtonStyle Value); + void __fastcall SetWidth(int Value); + +protected: + virtual bool __fastcall CanChangeBold(bool NewValue); + virtual bool __fastcall CanChangeCheck(bool NewValue); + virtual bool __fastcall CanChangeEnable(bool NewValue); + virtual bool __fastcall CanChangeFocus(bool NewValue); + virtual bool __fastcall CanChangeHotTracking(bool NewValue); + virtual bool __fastcall CanChangeSelection(bool NewValue); + virtual bool __fastcall CanChangeVisibility(bool NewValue); + virtual Imglist::TCustomImageList* __fastcall DefaultImageList(TEasyImageSize ImageSize); + virtual TMetaClass* __fastcall GetDefaultViewClass(void); + virtual TEasyPaintInfoBasic* __fastcall LocalPaintInfo(void); + virtual void __fastcall AutoSizeToFit(void); + virtual void __fastcall Freeing(void); + virtual void __fastcall GainingBold(void); + virtual void __fastcall GainingCheck(void); + virtual void __fastcall GainingEnable(void); + virtual void __fastcall GainingFocus(void); + virtual void __fastcall GainingGhosted(void); + virtual void __fastcall GainingHilight(void); + virtual void __fastcall GainingHotTracking(const Types::TPoint &MousePos); + virtual void __fastcall GainingSelection(void); + virtual void __fastcall GainingVisibility(void); + virtual void __fastcall Initialize(void); + virtual void __fastcall LosingBold(void); + virtual void __fastcall LosingCheck(void); + virtual void __fastcall LosingEnable(void); + virtual void __fastcall LosingFocus(void); + virtual void __fastcall LosingGhosted(void); + virtual void __fastcall LosingHilight(void); + virtual void __fastcall LosingHotTracking(void); + virtual void __fastcall LosingSelection(void); + virtual void __fastcall LosingVisibility(void); + __property Graphics::TColor Color = {read=GetColor, write=SetColor, nodefault}; + __property bool HotTrack = {read=GetHotTrack, write=SetHotTrack, nodefault}; + __property TEasyHeaderImagePosition ImagePosition = {read=GetImagePosition, write=SetImagePosition, nodefault}; + __property TEasySortGlyphAlign SortGlyphAlign = {read=GetSortGlyphAlign, write=SetSortGlpyhAlign, nodefault}; + __property int SortGlyphIndent = {read=GetSortGlyphIndent, write=SetSortGlyphIndent, nodefault}; + __property float SpringRest = {read=FSpringRest, write=FSpringRest}; + __property TEasyHeaderButtonStyle Style = {read=GetStyle, write=SetStyle, nodefault}; + +public: + __fastcall virtual TEasyColumn(TEasyCollection* ACollection); + __fastcall virtual ~TEasyColumn(void); + virtual bool __fastcall EditAreaHitPt(const Types::TPoint &ViewportPoint); + bool __fastcall HitTestAt(const Types::TPoint &ViewportPoint, TEasyColumnHitTestInfoSet &HitInfo); + bool __fastcall PaintMouseHovering(void); + virtual void __fastcall Invalidate(bool ImmediateUpdate); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall MakeVisible(TEasyMakeVisiblePos Position); + void __fastcall Paint(Graphics::TCanvas* ACanvas, TEasyHeaderType HeaderType); + virtual bool __fastcall SelectionHit(const Types::TRect &SelectViewportRect, TEasySelectHitType SelectType); + virtual bool __fastcall SelectionHitPt(const Types::TPoint &ViewportPoint, TEasySelectHitType SelectType); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property Classes::TAlignment Alignment = {read=GetAlignment, write=SetAlignment, default=0}; + __property bool AutoSizeOnDblClk = {read=FAutoSizeOnDblClk, write=FAutoSizeOnDblClk, default=1}; + __property bool AutoSortOnClick = {read=FAutoSortOnClick, write=FAutoSortOnClick, default=0}; + __property bool AutoSpring = {read=FAutoSpring, write=SetAutoSpring, default=0}; + __property bool AutoToggleSortGlyph = {read=FAutoToggleSortGlyph, write=FAutoToggleSortGlyph, default=1}; + __property Bold = {default=0}; + __property Caption ; + __property Checked = {default=0}; + __property bool Clickable = {read=FClickable, write=FClickable, default=1}; + __property Clicking = {default=0}; + __property TEasyColumnDropDownButton* DropDownButton = {read=FDropDownButton, write=FDropDownButton}; + __property Enabled = {default=1}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property TEasyColumns* OwnerColumns = {read=GetOwnerColumns}; + __property TEasyHeader* OwnerHeader = {read=GetOwnerHeader}; + __property OwnsPaintInfo = {default=0}; + __property TEasyPaintInfoColumn* PaintInfo = {read=GetPaintInfo, write=SetPaintInfo}; + __property int Position = {read=FPosition, write=SetPosition, nodefault}; + __property Selected = {default=0}; + __property TEasySortDirection SortDirection = {read=FSortDirection, write=SetSortDirection, default=0}; + __property Tag = {default=0}; + __property TEasyViewColumn* View = {read=GetView}; + __property TMetaClass* ViewClass = {read=GetViewClass}; + __property Visible = {default=1}; + __property int Width = {read=FWidth, write=SetWidth, default=50}; +}; + + +class DELPHICLASS TEasyColumnInterfaced; +class PASCALIMPLEMENTATION TEasyColumnInterfaced : public TEasyColumn +{ + typedef TEasyColumn inherited; + +protected: + virtual WideString __fastcall GetCaptions(int Line); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + +public: + __property DataInf ; +public: + #pragma option push -w-inl + /* TEasyColumn.Create */ inline __fastcall virtual TEasyColumnInterfaced(TEasyCollection* ACollection) : TEasyColumn(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyColumn.Destroy */ inline __fastcall virtual ~TEasyColumnInterfaced(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyColumnStored; +class PASCALIMPLEMENTATION TEasyColumnStored : public TEasyColumn +{ + typedef TEasyColumn inherited; + +private: + TEasyDynamicDataHelper* FDataHelper; + +protected: + virtual WideString __fastcall GetCaptions(int Line); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + __property TEasyDynamicDataHelper* DataHelper = {read=FDataHelper, write=FDataHelper}; + +public: + __fastcall virtual TEasyColumnStored(TEasyCollection* ACollection); + __fastcall virtual ~TEasyColumnStored(void); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int &Version); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + +__published: + __property Alignment = {default=0}; + __property AutoSizeOnDblClk = {default=1}; + __property AutoSortOnClick = {default=0}; + __property AutoSpring = {default=0}; + __property AutoToggleSortGlyph = {default=1}; + __property Bold = {default=0}; + __property Caption ; + __property Checked = {default=0}; + __property Clickable = {default=1}; + __property Color ; + __property DropDownButton ; + __property Enabled = {default=1}; + __property ImageIndex = {default=-1}; + __property ImageOverlayIndex = {default=-1}; + __property Position ; + __property Selected = {default=0}; + __property SortDirection = {default=0}; + __property Width = {default=50}; + __property Visible = {default=1}; +}; + + +class DELPHICLASS TEasyColumnVirtual; +class PASCALIMPLEMENTATION TEasyColumnVirtual : public TEasyColumn +{ + typedef TEasyColumn inherited; + +protected: + virtual WideString __fastcall GetCaptions(int Line); + virtual int __fastcall GetDetailCount(void); + virtual int __fastcall GetDetails(int Line); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageIndexes(int Column); + virtual Imglist::TCustomImageList* __fastcall GetImageList(int Column, TEasyImageSize IconSize); + virtual Mpcommonobjects::TCommonImageIndexInteger __fastcall GetImageOverlayIndexes(int Column); + virtual void __fastcall ImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall ImageDrawGetSize(TEasyColumn* Column, int &ImageW, int &ImageH); + virtual void __fastcall ImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall SetCaptions(int Column, WideString Value); + virtual void __fastcall SetDetailCount(int Value); + virtual void __fastcall SetDetails(int Line, int Value); + virtual void __fastcall SetImageIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall SetImageOverlayIndexes(int Column, Mpcommonobjects::TCommonImageIndexInteger Value); + virtual void __fastcall ThumbnailDraw(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); +public: + #pragma option push -w-inl + /* TEasyColumn.Create */ inline __fastcall virtual TEasyColumnVirtual(TEasyCollection* ACollection) : TEasyColumn(ACollection) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyColumn.Destroy */ inline __fastcall virtual ~TEasyColumnVirtual(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyColumns : public TEasyCollection +{ + typedef TEasyCollection inherited; + +public: + TEasyColumn* operator[](int Index) { return Columns[Index]; } + +private: + TEasyColumn* __fastcall GetColumns(int Index); + TEasyHeader* __fastcall GetOwnerHeader(void); + void __fastcall SetColumns(int Index, TEasyColumn* Value); + +protected: + virtual void __fastcall DoItemAdd(TEasyCollectionItem* Item, int Index); + virtual void __fastcall DoStructureChange(void); + +public: + __fastcall virtual TEasyColumns(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyColumns(void); + HIDESBASE TEasyColumn* __fastcall Add(System::TObject* Data = (System::TObject*)(0x0)); + TEasyColumnInterfaced* __fastcall AddInterfaced(const System::_di_IInterface DataInf, System::TObject* Data); + TEasyColumnVirtual* __fastcall AddVirtual(System::TObject* Data = (System::TObject*)(0x0)); + TEasyColumn* __fastcall AddCustom(TMetaClass* CustomItem, System::TObject* Data = (System::TObject*)(0x0)); + TEasyColumn* __fastcall ColumnByPoint(const Types::TPoint &ViewportPoint); + HIDESBASE TEasyColumn* __fastcall Insert(int Index, System::TObject* Data = (System::TObject*)(0x0)); + TEasyColumn* __fastcall InsertCustom(int Index, TMetaClass* CustomColumn, System::TObject* Data = (System::TObject*)(0x0)); + TEasyColumnInterfaced* __fastcall InsertInterfaced(int Index, const System::_di_IInterface DataInf, System::TObject* Data = (System::TObject*)(0x0)); + TEasyColumnVirtual* __fastcall InsertVirtual(int Index, System::TObject* Data = (System::TObject*)(0x0)); + virtual void __fastcall Clear(bool FreeItems = true); + __property TEasyColumn* Columns[int Index] = {read=GetColumns, write=SetColumns/*, default*/}; + __property TEasyHeader* OwnerHeader = {read=GetOwnerHeader}; +}; + + +class DELPHICLASS TColumnPos; +class PASCALIMPLEMENTATION TColumnPos : public Classes::TList +{ + typedef Classes::TList inherited; + +public: + TEasyColumn* operator[](int Index) { return Items[Index]; } + +private: + HIDESBASE TEasyColumn* __fastcall Get(int Index); + HIDESBASE void __fastcall Put(int Index, TEasyColumn* Item); + +public: + __property TEasyColumn* Items[int Index] = {read=Get, write=Put/*, default*/}; +public: + #pragma option push -w-inl + /* TList.Destroy */ inline __fastcall virtual ~TColumnPos(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TColumnPos(void) : Classes::TList() { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyHeaderDragManager; +class DELPHICLASS TCustomEasyDragManagerBase; +class PASCALIMPLEMENTATION TCustomEasyDragManagerBase : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FAutoScroll; + int FAutoScrollDelay; + bool FAutoScrollDelayMet; + int FAutoScrollTime; + _di_IDataObject FDataObject; + TCommonMouseButtons FMouseButton; + bool FRegistered; + Extctrls::TTimer* FTimer; + TEasyDragManagerStates FDragState; + Mpcommonutilities::TCommonKeyStates FLastKeyState; + bool FEnabled; + Byte FAutoScrollAccelerator; + int FAutoScrollMargin; + bool __fastcall GetAutoScrolling(void); + bool __fastcall GetDragging(void); + Extctrls::TTimer* __fastcall GetTimer(void); + void __fastcall SetRegistered(bool Value); + +protected: + virtual void __fastcall AutoScrollWindow(void); + virtual void __fastcall DoAfterAutoScroll(void); + virtual void __fastcall DoBeforeAutoScroll(void); + virtual void __fastcall DoAutoScroll(int DeltaX, int DeltaY); + virtual void __fastcall DoDrag(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragBegin(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall DoDragDrop(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragEnd(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall DoDragEnter(const _di_IDataObject DataObject, Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoGetDragImage(Graphics::TBitmap* Bitmap, const Types::TPoint &DragStartPt, Types::TPoint &HotSpot, Graphics::TColor &TransparentColor, bool &Handled); + virtual void __fastcall DoOLEDragEnd(const _di_IDataObject ADataObject, Mpcommonutilities::TCommonOLEDragResult DragResult, Mpcommonutilities::TCommonDropEffects ResultEffect, Mpcommonutilities::TCommonKeyStates KeyStates); + virtual void __fastcall DoOLEDragStart(const _di_IDataObject ADataObject, Mpcommonutilities::TCommonDropEffects &AvailableEffects, bool &AllowDrag); + virtual bool __fastcall DoPtInAutoScrollDownRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollLeftRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollRightRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollUpRegion(const Types::TPoint &WindowPoint); + virtual void __fastcall DoEnable(bool Enable); + bool __fastcall PtInAutoScrollDownRegion(const Types::TPoint &WindowPoint); + bool __fastcall PtInAutoScrollLeftRegion(const Types::TPoint &WindowPoint); + bool __fastcall PtInAutoScrollRegion(const Types::TPoint &WindowPoint); + bool __fastcall PtInAutoScrollRightRegion(const Types::TPoint &WindowPoint); + bool __fastcall PtInAutoScrollUpRegion(const Types::TPoint &WindowPoint); + virtual int __fastcall ScrollDeltaDown(const Types::TPoint &WindowPoint); + virtual int __fastcall ScrollDeltaLeft(const Types::TPoint &WindowPoint); + virtual int __fastcall ScrollDeltaRight(const Types::TPoint &WindowPoint); + virtual int __fastcall ScrollDeltaUp(const Types::TPoint &WindowPoint); + void __fastcall RegisterOLEDragDrop(bool DoRegister); + virtual void __fastcall SetEnabled(const bool Value); + virtual void __fastcall UpdateAfterAutoScroll(void); + virtual void __fastcall VCLDragStart(void); + __property _di_IDataObject DataObject = {read=FDataObject, write=FDataObject}; + __property Mpcommonutilities::TCommonKeyStates LastKeyState = {read=FLastKeyState, write=FLastKeyState, nodefault}; + +public: + __fastcall virtual TCustomEasyDragManagerBase(TCustomEasyListview* AnOwner); + __fastcall virtual ~TCustomEasyDragManagerBase(void); + virtual void __fastcall BeginDrag(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + void __fastcall Drag(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + void __fastcall DragEnd(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + void __fastcall DragEnter(const _di_IDataObject ADataObject, Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + void __fastcall DragDrop(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall HandleTimer(System::TObject* Sender); + virtual void __fastcall WMKeyDown(Messages::TWMKey &Msg); + __property bool AutoScroll = {read=FAutoScroll, write=FAutoScroll, default=1}; + __property Byte AutoScrollAccelerator = {read=FAutoScrollAccelerator, write=FAutoScrollAccelerator, default=2}; + __property int AutoScrollDelay = {read=FAutoScrollDelay, write=FAutoScrollDelay, default=500}; + __property bool AutoScrollDelayMet = {read=FAutoScrollDelayMet, nodefault}; + __property bool AutoScrolling = {read=GetAutoScrolling, nodefault}; + __property int AutoScrollMargin = {read=FAutoScrollMargin, write=FAutoScrollMargin, default=15}; + __property int AutoScrollTime = {read=FAutoScrollTime, write=FAutoScrollTime, default=50}; + __property bool Dragging = {read=GetDragging, nodefault}; + __property TEasyDragManagerStates DragState = {read=FDragState, write=FDragState, nodefault}; + __property bool Enabled = {read=FEnabled, write=SetEnabled, nodefault}; + __property TCommonMouseButtons MouseButton = {read=FMouseButton, write=FMouseButton, default=2}; + __property Extctrls::TTimer* Timer = {read=GetTimer, write=FTimer}; + __property bool Registered = {read=FRegistered, write=SetRegistered, nodefault}; +}; + + +class PASCALIMPLEMENTATION TEasyHeaderDragManager : public TCustomEasyDragManagerBase +{ + typedef TCustomEasyDragManagerBase inherited; + +private: + bool FAllowDrop; + TEasyColumn* FColumn; + TGetDragImageEvent FDefaultImageEvent; + int FDragImageHeight; + int FDragImageWidth; + Controls::TDragMode FDragMode; + TEasyDragType FDragType; + bool FEnableDragImage; + TEasyHeader* FHeader; + TEasyColumn* FTargetColumn; + Controls::TCursor __fastcall GetDragCursor(void); + Controls::TDragMode __fastcall GetDragMode(void); + void __fastcall SetDragCursor(Controls::TCursor Value); + void __fastcall SetDragMode(Controls::TDragMode Value); + void __fastcall SetDragType(TEasyDragType Value); + +protected: + virtual bool __fastcall DoPtInAutoScrollDownRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollUpRegion(const Types::TPoint &WindowPoint); + virtual void __fastcall DefaultImage(TCustomEasyListview* Sender, Graphics::TBitmap* Image, const Types::TPoint &DragStartPt, Types::TPoint &HotSpot, Graphics::TColor &TransparentColor, bool &Handled); + virtual void __fastcall DoDrag(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragBegin(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyStates); + virtual void __fastcall DoDragDrop(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragEnd(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall DoDragEnter(const _di_IDataObject DataObject, Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoOLEDragEnd(const _di_IDataObject ADataObject, Mpcommonutilities::TCommonOLEDragResult DragResult, Mpcommonutilities::TCommonDropEffects ResultEffect, Mpcommonutilities::TCommonKeyStates KeyStates); + virtual void __fastcall DoOLEDragStart(const _di_IDataObject ADataObject, Mpcommonutilities::TCommonDropEffects &AvailableEffects, bool &AllowDrag); + virtual bool __fastcall DoPtInAutoScrollLeftRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollRightRegion(const Types::TPoint &WindowPoint); + virtual void __fastcall ImageSize(int &Width, int &Height); + __property bool AllowDrop = {read=FAllowDrop, write=FAllowDrop, nodefault}; + __property TEasyColumn* Column = {read=FColumn, write=FColumn}; + __property TGetDragImageEvent DefaultImageEvent = {read=FDefaultImageEvent, write=FDefaultImageEvent}; + __property int DragImageHeight = {read=FDragImageHeight, write=FDragImageHeight, default=300}; + __property int DragImageWidth = {read=FDragImageWidth, write=FDragImageWidth, default=200}; + __property Controls::TDragMode DragMode = {read=GetDragMode, write=SetDragMode, default=0}; + __property TEasyDragType DragType = {read=FDragType, write=SetDragType, default=0}; + __property TEasyHeader* Header = {read=FHeader, write=FHeader}; + __property TEasyColumn* TargetColumn = {read=FTargetColumn, write=FTargetColumn}; + +public: + __fastcall virtual TEasyHeaderDragManager(TCustomEasyListview* AnOwner); + +__published: + __property AutoScroll = {default=1}; + __property AutoScrollAccelerator = {default=2}; + __property AutoScrollDelay = {default=500}; + __property AutoScrollMargin = {default=15}; + __property AutoScrollTime = {default=50}; + __property Controls::TCursor DragCursor = {read=GetDragCursor, write=SetDragCursor, default=-12}; + __property bool EnableDragImage = {read=FEnableDragImage, write=FEnableDragImage, default=1}; + __property MouseButton = {default=2}; +public: + #pragma option push -w-inl + /* TCustomEasyDragManagerBase.Destroy */ inline __fastcall virtual ~TEasyHeaderDragManager(void) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyHeader : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FAutoSizeHeight; + int FAutoSizeHeightMargin; + TEasyCanvasStore* FCanvasStore; + Graphics::TColor FColor; + TEasyColumns* FColumns; + Types::TRect FDisplayRect; + TEasyHeaderDragManager* FDragManager; + TEasyColumn* FDropDownHoverColumn; + bool FFixedSingleColumn; + Graphics::TFont* FFont; + int FHeight; + TEasyColumn* FHotTrackedColumn; + Imglist::TCustomImageList* FImages; + int FLastWidth; + TColumnPos* FPositions; + TEasyColumn* FPressColumn; + TEasyColumn* FResizeColumn; + bool FShowInAllViews; + bool FSizeable; + TEasyHeaderStates FState; + bool FStreamColumns; + Types::TRect FViewRect; + bool FVisible; + TEasyCanvasStore* __fastcall GetCanvasStore(void); + Types::TRect __fastcall GetDisplayRect(); + bool __fastcall GetDraggable(void); + bool __fastcall GetFixedSingleColumn(void); + int __fastcall GetHeight(void); + bool __fastcall GetMouseCaptured(void); + int __fastcall GetRuntimeHeight(void); + void __fastcall SetAutoSizeHeight(const bool Value); + void __fastcall SetAutoSizeHeightMargin(const int Value); + void __fastcall SetColor(Graphics::TColor Value); + void __fastcall SetDraggable(bool Value); + void __fastcall SetDropDownHoverColumn(const TEasyColumn* Value); + void __fastcall SetFixedSingleColumn(const bool Value); + void __fastcall SetFont(Graphics::TFont* Value); + void __fastcall SetHeight(int Value); + void __fastcall SetHotTrackedColumn(const TEasyColumn* Value); + void __fastcall SetImages(Imglist::TCustomImageList* Value); + void __fastcall SetShowInAllViews(const bool Value); + void __fastcall SetVisible(bool Value); + int __fastcall GetViewWidth(void); + +protected: + bool __fastcall InCheckZone(const Types::TPoint &ViewportPt, TEasyColumn* &Column); + bool __fastcall InDropDownButtonZone(const Types::TPoint &ViewportPt, TEasyColumn* &Column); + bool __fastcall InHotTrackZone(const Types::TPoint &ViewportPt, TEasyColumn* &Column); + bool __fastcall InPressZone(const Types::TPoint &ViewportPt, TEasyColumn* &Column); + bool __fastcall InResizeZone(const Types::TPoint &ViewportPt, TEasyColumn* &Column); + bool __fastcall IsFontStored(void); + void __fastcall CaptureMouse(void); + void __fastcall ClearStates(void); + void __fastcall DoMouseDown(Messages::TWMMouse &Message, Mpcommonutilities::TCommonMouseButton Button, Classes::TShiftState Shift, TEasyColumn* Column); + void __fastcall DoMouseMove(Messages::TWMMouse &Message, Classes::TShiftState Shift); + void __fastcall DoMouseUp(Messages::TWMMouse &Message, Mpcommonutilities::TCommonMouseButton Button, Classes::TShiftState Shift, TEasyColumn* Column); + void __fastcall HandleHotTrack(const Messages::TWMMouse &Msg, bool ForceClear); + void __fastcall ReleaseMouse(void); + void __fastcall SizeFixedSingleColumn(int NewWidth); + void __fastcall SpringColumns(int NewWidth); + MESSAGE void __fastcall WMContextMenu(Messages::TMessage &Msg); + MESSAGE void __fastcall WMLButtonDblClk(Messages::TWMMouse &Msg); + MESSAGE void __fastcall WMLButtonDown(Messages::TWMMouse &Msg); + MESSAGE void __fastcall WMLButtonUp(Messages::TWMMouse &Msg); + MESSAGE void __fastcall WMMouseMove(Messages::TWMMouse &Msg); + MESSAGE void __fastcall WMRButtonDown(Messages::TWMMouse &Msg); + MESSAGE void __fastcall WMRButtonUp(Messages::TWMMouse &Msg); + MESSAGE void __fastcall WMSize(Messages::TWMSize &Msg); + __property TEasyCanvasStore* CanvasStore = {read=GetCanvasStore, write=FCanvasStore}; + __property TEasyColumn* DropDownHoverColumn = {read=FDropDownHoverColumn, write=SetDropDownHoverColumn}; + __property TEasyColumn* HotTrackedColumn = {read=FHotTrackedColumn, write=SetHotTrackedColumn}; + __property int LastWidth = {read=FLastWidth, write=FLastWidth, nodefault}; + __property TColumnPos* Positions = {read=FPositions, write=FPositions}; + __property TEasyColumn* PressColumn = {read=FPressColumn, write=FPressColumn}; + __property TEasyColumn* ResizeColumn = {read=FResizeColumn, write=FResizeColumn}; + __property int RuntimeHeight = {read=GetRuntimeHeight, nodefault}; + __property TEasyHeaderStates State = {read=FState, write=FState, nodefault}; + +public: + __fastcall virtual TEasyHeader(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyHeader(void); + TEasyColumn* __fastcall FirstColumn(void); + TEasyColumn* __fastcall FirstColumnByPosition(void); + TEasyColumn* __fastcall FirstColumnInRect(const Types::TRect &ViewportRect); + TEasyColumn* __fastcall FirstVisibleColumn(void); + TEasyColumn* __fastcall LastColumn(void); + TEasyColumn* __fastcall LastVisibleColumn(void); + TEasyColumn* __fastcall NextColumn(TEasyColumn* AColumn); + TEasyColumn* __fastcall NextColumnByPosition(TEasyColumn* AColumn); + TEasyColumn* __fastcall NextVisibleColumn(TEasyColumn* Column); + TEasyColumn* __fastcall PrevColumn(TEasyColumn* AColumn); + TEasyColumn* __fastcall PrevColumnByPosition(TEasyColumn* AColumn); + TEasyColumn* __fastcall PrevVisibleColumn(TEasyColumn* Column); + void __fastcall ClickColumn(TEasyColumn* Column); + virtual void __fastcall Invalidate(bool ImmediateUpdate); + virtual void __fastcall InvalidateColumn(TEasyColumn* Item, bool ImmediateUpdate); + TEasyColumn* __fastcall LastColumnByPosition(void); + TEasyColumn* __fastcall NextColumnInRect(TEasyColumn* Column, const Types::TRect &ViewportRect); + virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x5); + virtual void __fastcall PaintTo(Graphics::TCanvas* ACanvas, const Types::TRect &ARect); + virtual void __fastcall Rebuild(bool Force); + virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x5); + __property Types::TRect DisplayRect = {read=GetDisplayRect, write=FDisplayRect}; + __property bool MouseCaptured = {read=GetMouseCaptured, nodefault}; + __property bool StreamColumns = {read=FStreamColumns, write=FStreamColumns, default=1}; + __property Types::TRect ViewRect = {read=FViewRect}; + __property int ViewWidth = {read=GetViewWidth, nodefault}; + +__published: + __property bool AutoSizeHeight = {read=FAutoSizeHeight, write=SetAutoSizeHeight, default=1}; + __property int AutoSizeHeightMargin = {read=FAutoSizeHeightMargin, write=SetAutoSizeHeightMargin, default=8}; + __property Graphics::TColor Color = {read=FColor, write=SetColor, default=-16777201}; + __property TEasyColumns* Columns = {read=FColumns, write=FColumns}; + __property bool Draggable = {read=GetDraggable, write=SetDraggable, default=1}; + __property TEasyHeaderDragManager* DragManager = {read=FDragManager, write=FDragManager}; + __property bool FixedSingleColumn = {read=GetFixedSingleColumn, write=SetFixedSingleColumn, default=0}; + __property Graphics::TFont* Font = {read=FFont, write=SetFont, stored=IsFontStored}; + __property int Height = {read=GetHeight, write=SetHeight, default=21}; + __property Imglist::TCustomImageList* Images = {read=FImages, write=SetImages}; + __property bool ShowInAllViews = {read=FShowInAllViews, write=SetShowInAllViews, default=0}; + __property bool Sizeable = {read=FSizeable, write=FSizeable, default=1}; + __property bool Visible = {read=FVisible, write=SetVisible, default=0}; +}; + + +class DELPHICLASS TEasyEditManager; +class PASCALIMPLEMENTATION TEasyEditManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FAppHooked; + int FAutoEditDelayTime; + Types::TPoint FAutoEditStartClickPt; + Graphics::TColor FColor; + TEasyColumn* FEditColumn; + bool FEditFinished; + bool FEditing; + TEasyItem* FEditItem; + _di_IEasyCellEditor FEditor; + bool FEnabled; + Graphics::TFont* FFont; + bool FTabEditColumns; + bool FTabMoveFocus; + TEasyColumn* FTabMoveFocusColumn; + TEasyItem* FTabMoveFocusItem; + Extctrls::TTimer* FTimer; + bool FTimerRunning; + bool __fastcall GetEditing(void); + void __fastcall SetEnabled(const bool Value); + void __fastcall SetFont(const Graphics::TFont* Value); + +protected: + bool __fastcall MainWindowHook(Messages::TMessage &Message); + void __fastcall StartAutoEditTimer(void); + void __fastcall StopAutoEditTimer(void); + void __fastcall TimerEvent(System::TObject* Sender); + __property bool AppHooked = {read=FAppHooked, write=FAppHooked, nodefault}; + __property Types::TPoint AutoEditStartClickPt = {read=FAutoEditStartClickPt, write=FAutoEditStartClickPt}; + __property TEasyColumn* EditColumn = {read=FEditColumn, write=FEditColumn}; + __property bool TabEditColumns = {read=FTabEditColumns, write=FTabEditColumns, default=0}; + __property TEasyColumn* TabMoveFocusColumn = {read=FTabMoveFocusColumn, write=FTabMoveFocusColumn}; + __property TEasyItem* TabMoveFocusItem = {read=FTabMoveFocusItem, write=FTabMoveFocusItem}; + __property Extctrls::TTimer* Timer = {read=FTimer, write=FTimer}; + __property bool TimerRunning = {read=FTimerRunning, nodefault}; + +public: + __fastcall virtual TEasyEditManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyEditManager(void); + virtual void __fastcall BeginEdit(TEasyItem* Item, TEasyColumn* Column); + void __fastcall EndEdit(void); + __property bool Editing = {read=GetEditing, nodefault}; + __property TEasyItem* EditItem = {read=FEditItem}; + __property _di_IEasyCellEditor Editor = {read=FEditor, write=FEditor}; + +__published: + __property int AutoEditDelayTime = {read=FAutoEditDelayTime, write=FAutoEditDelayTime, default=300}; + __property Graphics::TColor Color = {read=FColor, write=FColor, default=-16777211}; + __property bool Enabled = {read=FEnabled, write=SetEnabled, default=0}; + __property Graphics::TFont* Font = {read=FFont, write=SetFont}; + __property bool TabMoveFocus = {read=FTabMoveFocus, write=FTabMoveFocus, default=0}; +}; + + +class DELPHICLASS TEasyEnumFormatEtcManager; +class PASCALIMPLEMENTATION TEasyEnumFormatEtcManager : public TEasyInterfacedPersistent +{ + typedef TEasyInterfacedPersistent inherited; + +private: + int FInternalIndex; + DynamicArray FFormats; + +protected: + HRESULT __stdcall Next(int celt, /* out */ void *elt, PLongint pceltFetched); + HRESULT __stdcall Skip(int celt); + HRESULT __stdcall Reset(void); + HRESULT __stdcall Clone(/* out */ _di_IEnumFORMATETC &Enum); + __property int InternalIndex = {read=FInternalIndex, write=FInternalIndex, nodefault}; + +public: + __fastcall TEasyEnumFormatEtcManager(void); + __fastcall virtual ~TEasyEnumFormatEtcManager(void); + __property Mpdataobject::TFormatEtcArray Formats = {read=FFormats, write=FFormats}; +private: + void *__IEnumFORMATETC; /* IEnumFORMATETC */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IEnumFORMATETC() + { + _di_IEnumFORMATETC intf; + GetInterface(intf); + return intf; + } + #else + operator IEnumFORMATETC*(void) { return (IEnumFORMATETC*)&__IEnumFORMATETC; } + #endif + +}; + + +class DELPHICLASS TEasyDataObjectManager; +class PASCALIMPLEMENTATION TEasyDataObjectManager : public Mpdataobject::TCommonDataObject +{ + typedef Mpdataobject::TCommonDataObject inherited; + +private: + TCustomEasyListview* FListview; + +protected: + virtual void __fastcall DoGetCustomFormats(Mpdataobject::TFormatEtcArray &Formats); + virtual void __fastcall DoOnGetData(const tagFORMATETC &FormatEtcIn, tagSTGMEDIUM &Medium, bool &Handled); + virtual void __fastcall DoOnQueryGetData(const tagFORMATETC &FormatEtcIn, bool &FormatAvailable, bool &Handled); + +public: + __property TCustomEasyListview* Listview = {read=FListview, write=FListview}; +public: + #pragma option push -w-inl + /* TCommonDataObject.Create */ inline __fastcall TEasyDataObjectManager(void) : Mpdataobject::TCommonDataObject() { } + #pragma option pop + #pragma option push -w-inl + /* TCommonDataObject.Destroy */ inline __fastcall virtual ~TEasyDataObjectManager(void) { } + #pragma option pop + +private: + void *__ICommonExtractObj; /* Mpcommonobjects::ICommonExtractObj */ + void *__ICommonDataObject; /* Mpdataobject::ICommonDataObject */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Mpcommonobjects::_di_ICommonExtractObj() + { + Mpcommonobjects::_di_ICommonExtractObj intf; + GetInterface(intf); + return intf; + } + #else + operator ICommonExtractObj*(void) { return (ICommonExtractObj*)&__ICommonExtractObj; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator Mpdataobject::_di_ICommonDataObject() + { + Mpdataobject::_di_ICommonDataObject intf; + GetInterface(intf); + return intf; + } + #else + operator ICommonDataObject*(void) { return (ICommonDataObject*)&__ICommonDataObject; } + #endif + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IDataObject() + { + _di_IDataObject intf; + GetInterface(intf); + return intf; + } + #else + operator IDataObject*(void) { return (IDataObject*)&__ICommonDataObject; } + #endif + +}; + + +class DELPHICLASS TEasyOLEDragManager; +class PASCALIMPLEMENTATION TEasyOLEDragManager : public TEasyHeaderDragManager +{ + typedef TEasyHeaderDragManager inherited; + +private: + Types::TPoint FDragAnchorPt; + TEasyItem* FDragItem; + bool FDragTarget; + TEasyItem* FDropTarget; + bool FHilightDropTarget; + +protected: + void __fastcall ClearDragItem(void); + void __fastcall ClearDropTarget(void); + virtual void __fastcall DefaultImage(TCustomEasyListview* Sender, Graphics::TBitmap* Image, const Types::TPoint &DragStartPt, Types::TPoint &HotSpot, Graphics::TColor &TransparentColor, bool &Handled); + virtual void __fastcall DoDrag(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragDrop(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragEnd(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall DoDragEnter(const _di_IDataObject DataObject, Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoGetDragImage(Graphics::TBitmap* Bitmap, const Types::TPoint &DragStartPt, Types::TPoint &HotSpot, Graphics::TColor &TransparentColor, bool &Handled); + virtual void __fastcall DoOLEDragEnd(const _di_IDataObject ADataObject, Mpcommonutilities::TCommonOLEDragResult DragResult, Mpcommonutilities::TCommonDropEffects ResultEffect, Mpcommonutilities::TCommonKeyStates KeyStates); + virtual void __fastcall DoOLEDragStart(const _di_IDataObject ADataObject, Mpcommonutilities::TCommonDropEffects &AvailableEffects, bool &AllowDrag); + virtual bool __fastcall DoPtInAutoScrollDownRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollUpRegion(const Types::TPoint &WindowPoint); + virtual void __fastcall ImageSize(int &Width, int &Height); + virtual void __fastcall SetEnabled(const bool Value); + virtual void __fastcall VCLDragStart(void); + +public: + __fastcall virtual TEasyOLEDragManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyOLEDragManager(void); + void __fastcall FinalizeDrag(Mpcommonutilities::TCommonKeyStates KeyState); + bool __fastcall InitializeDrag(TEasyItem* HitItem, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + __property Types::TPoint DragAnchorPt = {read=FDragAnchorPt, write=FDragAnchorPt}; + __property TEasyItem* DragItem = {read=FDragItem}; + __property bool DragTarget = {read=FDragTarget, nodefault}; + __property TEasyItem* DropTarget = {read=FDropTarget}; + +__published: + __property AutoScroll = {default=1}; + __property AutoScrollAccelerator = {default=2}; + __property AutoScrollDelay = {default=500}; + __property AutoScrollMargin = {default=15}; + __property AutoScrollTime = {default=50}; + __property DragImageHeight = {default=300}; + __property DragImageWidth = {default=200}; + __property DragMode = {default=0}; + __property DragType = {default=0}; + __property Enabled = {default=0}; + __property bool HilightDropTarget = {read=FHilightDropTarget, write=FHilightDropTarget, default=1}; + __property MouseButton = {default=2}; +}; + + +class DELPHICLASS TEasySelectionManager; +class PASCALIMPLEMENTATION TEasySelectionManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FAlphaBlend; + bool FAlphaBlendSelRect; + Byte FBlendAlphaImage; + Byte FBlendAlphaSelRect; + Byte FBlendAlphaTextRect; + Graphics::TColor FBlendColorIcon; + Graphics::TColor FBlendColorSelRect; + bool FBlendIcon; + bool FBlurAlphaBkGnd; + Graphics::TColor FBorderColor; + Graphics::TColor FBorderColorSelRect; + Graphics::TColor FColor; + int FCount; + TEasyColumn* FFocusedColumn; + TEasyItem* FFocusedItem; + TEasyItem* FAnchorItem; + TEasyGroup* FFocusedGroup; + bool FEnabled; + bool FForceDefaultBlend; + bool FFullCellPaint; + bool FFullItemPaint; + bool FFullRowSelect; + bool FGradient; + Graphics::TColor FGradientColorBottom; + Graphics::TColor FGradientColorTop; + bool FGroupSelections; + int FGroupSelectUpdateCount; + Graphics::TColor FInactiveBorderColor; + Graphics::TColor FInactiveColor; + Graphics::TColor FInactiveTextColor; + int FItemsToggled; + TCommonMouseButtons FMouseButton; + int FMultiChangeCount; + bool FMultiSelect; + bool FPopupMode; + bool FRectSelect; + bool FResizeGroupOnFocus; + bool FRoundRect; + Byte FRoundRectRadius; + Graphics::TColor FTextColor; + bool FUseFocusRect; + bool __fastcall GetAutoScroll(void); + Byte __fastcall GetAutoScrollAccelerator(void); + int __fastcall GetAutoScrollDelay(void); + int __fastcall GetAutoScrollMargin(void); + int __fastcall GetAutoScrollTime(void); + bool __fastcall GetEnableDragSelect(void); + TCommonMouseButtons __fastcall GeTCommonMouseButton(void); + TEasyColumn* __fastcall GetFocusedColumn(void); + TCommonMouseButtons __fastcall GetMouseButtonSelRect(void); + bool __fastcall GetSelecting(void); + void __fastcall SetAutoScroll(bool Value); + void __fastcall SetAutoScrollAccelerator(Byte Value); + void __fastcall SetAutoScrollDelay(int Value); + void __fastcall SetAutoScrollMargin(int Value); + void __fastcall SetAutoScrollTime(int Value); + void __fastcall SetBlendIcon(bool Value); + void __fastcall SetBlurAlphaBkGnd(const bool Value); + void __fastcall SetEnableDragSelect(bool Value); + void __fastcall SetFocusedColumn(TEasyColumn* Value); + void __fastcall SetFocusedItem(TEasyItem* Value); + void __fastcall SetFocusedGroup(const TEasyGroup* Value); + void __fastcall SetEnabled(const bool Value); + void __fastcall SeTCommonMouseButton(TCommonMouseButtons Value); + void __fastcall SetFullCellPaint(bool Value); + void __fastcall SetFullItemPaint(bool Value); + void __fastcall SetGradient(const bool Value); + void __fastcall SetGradientColorBottom(const Graphics::TColor Value); + void __fastcall SetGradientColorTop(const Graphics::TColor Value); + void __fastcall SetGroupSelections(bool Value); + void __fastcall SetMouseButtonSelRect(TCommonMouseButtons Value); + void __fastcall SetMultiSelect(const bool Value); + void __fastcall SetAnchorItem(TEasyItem* Value); + +protected: + void __fastcall ActOnAll(TEasySelectionType SelectType, TEasyItem* ExceptItem); + virtual void __fastcall BuildSelectionGroupings(bool Force); + void __fastcall DragSelect(Mpcommonutilities::TCommonKeyStates KeyStates); + void __fastcall GainingSelection(TEasyItem* Item); + void __fastcall LosingSelection(TEasyItem* Item); + void __fastcall NotifyOwnerListview(void); + __property int ItemsToggled = {read=FItemsToggled, write=FItemsToggled, nodefault}; + __property int MultiChangeCount = {read=FMultiChangeCount, write=FMultiChangeCount, nodefault}; + +public: + __fastcall virtual TEasySelectionManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasySelectionManager(void); + TEasyItemArray __fastcall SelectedToArray(); + void __fastcall ClearAll(void); + void __fastcall ClearAllExcept(TEasyItem* Item); + TEasyItem* __fastcall First(void); + TEasyItem* __fastcall FirstInGroup(TEasyGroup* Group); + void __fastcall FocusFirst(void); + void __fastcall DecMultiChangeCount(void); + void __fastcall DeleteSelected(bool SelectPrevItem = false); + void __fastcall GroupSelectBeginUpdate(void); + void __fastcall GroupSelectEndUpdate(void); + void __fastcall IncMultiChangeCount(void); + void __fastcall InvalidateVisibleSelected(bool ValidateWindow); + void __fastcall Invert(void); + TEasyItem* __fastcall Next(TEasyItem* Item); + TEasyItem* __fastcall NextInGroup(TEasyGroup* Group, TEasyItem* Item); + void __fastcall SelectAll(void); + void __fastcall SelectFirst(void); + void __fastcall SelectGroupItems(TEasyGroup* Group, bool ClearOtherItems); + void __fastcall SelectRange(TEasyItem* FromItem, TEasyItem* ToItem, bool RectSelect, bool ClearFirst); + void __fastcall SelectRect(const Types::TRect &ViewportSelRect, bool ClearFirst); + __property TEasyItem* AnchorItem = {read=FAnchorItem, write=SetAnchorItem}; + __property int Count = {read=FCount, nodefault}; + __property TEasyColumn* FocusedColumn = {read=GetFocusedColumn, write=SetFocusedColumn}; + __property TEasyItem* FocusedItem = {read=FFocusedItem, write=SetFocusedItem}; + __property TEasyGroup* FocusedGroup = {read=FFocusedGroup, write=SetFocusedGroup}; + __property bool Selecting = {read=GetSelecting, nodefault}; + +__published: + __property bool AlphaBlend = {read=FAlphaBlend, write=FAlphaBlend, default=0}; + __property bool AlphaBlendSelRect = {read=FAlphaBlendSelRect, write=FAlphaBlendSelRect, default=0}; + __property bool AutoScroll = {read=GetAutoScroll, write=SetAutoScroll, default=1}; + __property Byte AutoScrollAccelerator = {read=GetAutoScrollAccelerator, write=SetAutoScrollAccelerator, default=2}; + __property int AutoScrollDelay = {read=GetAutoScrollDelay, write=SetAutoScrollDelay, default=500}; + __property int AutoScrollMargin = {read=GetAutoScrollMargin, write=SetAutoScrollMargin, default=15}; + __property int AutoScrollTime = {read=GetAutoScrollTime, write=SetAutoScrollTime, default=50}; + __property Byte BlendAlphaImage = {read=FBlendAlphaImage, write=FBlendAlphaImage, default=128}; + __property Byte BlendAlphaSelRect = {read=FBlendAlphaSelRect, write=FBlendAlphaSelRect, default=70}; + __property Byte BlendAlphaTextRect = {read=FBlendAlphaTextRect, write=FBlendAlphaTextRect, default=128}; + __property Graphics::TColor BlendColorSelRect = {read=FBlendColorSelRect, write=FBlendColorSelRect, default=-16777203}; + __property bool BlendIcon = {read=FBlendIcon, write=SetBlendIcon, default=1}; + __property bool BlurAlphaBkGnd = {read=FBlurAlphaBkGnd, write=SetBlurAlphaBkGnd, default=0}; + __property Graphics::TColor BorderColor = {read=FBorderColor, write=FBorderColor, default=-16777203}; + __property Graphics::TColor BorderColorSelRect = {read=FBorderColorSelRect, write=FBorderColorSelRect, default=-16777203}; + __property Graphics::TColor Color = {read=FColor, write=FColor, default=-16777203}; + __property bool Enabled = {read=FEnabled, write=SetEnabled, default=1}; + __property bool EnableDragSelect = {read=GetEnableDragSelect, write=SetEnableDragSelect, default=0}; + __property bool ForceDefaultBlend = {read=FForceDefaultBlend, write=FForceDefaultBlend, default=0}; + __property bool FullCellPaint = {read=FFullCellPaint, write=SetFullCellPaint, default=0}; + __property bool FullItemPaint = {read=FFullItemPaint, write=SetFullItemPaint, default=0}; + __property bool FullRowSelect = {read=FFullRowSelect, write=FFullRowSelect, default=0}; + __property bool Gradient = {read=FGradient, write=SetGradient, default=0}; + __property Graphics::TColor GradientColorBottom = {read=FGradientColorBottom, write=SetGradientColorBottom, default=16576469}; + __property Graphics::TColor GradientColorTop = {read=FGradientColorTop, write=SetGradientColorTop, default=16644337}; + __property bool GroupSelections = {read=FGroupSelections, write=SetGroupSelections, default=0}; + __property Graphics::TColor InactiveBorderColor = {read=FInactiveBorderColor, write=FInactiveBorderColor, default=-16777205}; + __property Graphics::TColor InactiveColor = {read=FInactiveColor, write=FInactiveColor, default=-16777205}; + __property Graphics::TColor InactiveTextColor = {read=FInactiveTextColor, write=FInactiveTextColor, default=0}; + __property TCommonMouseButtons MouseButton = {read=GeTCommonMouseButton, write=SeTCommonMouseButton, default=2}; + __property TCommonMouseButtons MouseButtonSelRect = {read=GetMouseButtonSelRect, write=SetMouseButtonSelRect, default=6}; + __property bool MultiSelect = {read=FMultiSelect, write=SetMultiSelect, default=0}; + __property bool PopupMode = {read=FPopupMode, write=FPopupMode, default=0}; + __property bool RectSelect = {read=FRectSelect, write=FRectSelect, default=0}; + __property bool ResizeGroupOnFocus = {read=FResizeGroupOnFocus, write=FResizeGroupOnFocus, default=0}; + __property bool RoundRect = {read=FRoundRect, write=FRoundRect, default=0}; + __property Byte RoundRectRadius = {read=FRoundRectRadius, write=FRoundRectRadius, default=4}; + __property Graphics::TColor TextColor = {read=FTextColor, write=FTextColor, default=-16777202}; + __property bool UseFocusRect = {read=FUseFocusRect, write=FUseFocusRect, default=1}; +}; + + +class DELPHICLASS TEasyCheckManager; +class PASCALIMPLEMENTATION TEasyCheckManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + int FCount; + TEasyCollectionItem* FPendingObject; + void __fastcall SetPendingObject(TEasyCollectionItem* Value); + +protected: + __property TEasyCollectionItem* PendingObject = {read=FPendingObject, write=SetPendingObject}; + +public: + TEasyItemArray __fastcall CheckedToArray(); + void __fastcall CheckAll(void); + void __fastcall CheckAllInGroup(TEasyGroup* Group); + TEasyItem* __fastcall First(void); + TEasyCollectionItem* __fastcall FirstInGroup(TEasyGroup* Group); + TEasyItem* __fastcall Next(TEasyItem* Item); + TEasyItem* __fastcall NextInGroup(TEasyItem* Item); + void __fastcall DeleteChecked(void); + void __fastcall UnCheckAll(void); + void __fastcall UnCheckAllInGroup(TEasyGroup* Group); + __property int Count = {read=FCount, nodefault}; +public: + #pragma option push -w-inl + /* TEasyOwnedPersistent.Create */ inline __fastcall virtual TEasyCheckManager(TCustomEasyListview* AnOwner) : TEasyOwnedPersistent(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyCheckManager(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyHotTrackManager; +class PASCALIMPLEMENTATION TEasyHotTrackManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + Graphics::TColor FColor; + TEasyHotTrackRectColumns FColumnTrack; + bool FEnabled; + Controls::TCursor FCursor; + TEasyHotTrackRectGroups FGroupTrack; + TEasyHotTrackRectItems FItemTrack; + bool FOnlyFocused; + TEasyCollectionItem* FPendingObject; + TEasyCollectionItem* FPendingObjectCheck; + bool FUnderline; + TEasyCollectionItem* __fastcall GetPendingObject(const Types::TPoint &MousePos); + void __fastcall SetPendingObject(const Types::TPoint &MousePos, TEasyCollectionItem* Value); + void __fastcall SetPendingObjectCheck(const TEasyCollectionItem* Value); + +protected: + __property TEasyCollectionItem* PendingObject[Types::TPoint MousePos] = {read=GetPendingObject, write=SetPendingObject}; + __property TEasyCollectionItem* PendingObjectCheck = {read=FPendingObjectCheck, write=SetPendingObjectCheck}; + +public: + __fastcall virtual TEasyHotTrackManager(TCustomEasyListview* AnOwner); + +__published: + __property Graphics::TColor Color = {read=FColor, write=FColor, default=-16777203}; + __property bool Enabled = {read=FEnabled, write=FEnabled, default=0}; + __property Controls::TCursor Cursor = {read=FCursor, write=FCursor, default=-21}; + __property TEasyHotTrackRectGroups GroupTrack = {read=FGroupTrack, write=FGroupTrack, default=3}; + __property TEasyHotTrackRectItems ItemTrack = {read=FItemTrack, write=FItemTrack, default=3}; + __property bool OnlyFocused = {read=FOnlyFocused, write=FOnlyFocused, default=0}; + __property bool Underline = {read=FUnderline, write=FUnderline, default=1}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyHotTrackManager(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyScrollbarManager; +class PASCALIMPLEMENTATION TEasyScrollbarManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FHorzEnabled; + int FOffsetX; + int FOffsetY; + bool FRebuilding; + bool FSnapHorzView; + bool FVertEnabled; + Types::TRect FViewRect; + bool __fastcall GetHorzBarVisible(void); + int __fastcall GetLine(void); + int __fastcall GetMaxOffsetX(void); + int __fastcall GetMaxOffsetY(void); + bool __fastcall GetVertBarVisible(void); + int __fastcall GetViewHeight(void); + int __fastcall GetViewWidth(void); + void __fastcall SetHorzEnabled(const bool Value); + void __fastcall SetOffsetX(const int Value); + void __fastcall SetOffsetY(const int Value); + void __fastcall SetVertEnabled(const bool Value); + +public: + __fastcall virtual TEasyScrollbarManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyScrollbarManager(void); + Types::TPoint __fastcall MapWindowToView(const Types::TPoint &WindowPoint, bool AccountForHeader = true)/* overload */; + Types::TPoint __fastcall MapWindowToView(Types::TSmallPoint WindowPoint, bool AccountForHeader = true)/* overload */; + Types::TRect __fastcall MapWindowRectToViewRect(const Types::TRect &WindowRect, bool AccountForHeader = true); + Types::TPoint __fastcall MapViewToWindow(const Types::TPoint &ViewportPoint, bool AccountForHeader = true)/* overload */; + Types::TPoint __fastcall MapViewToWindow(Types::TSmallPoint ViewportPoint, bool AccountForHeader = true)/* overload */; + Types::TRect __fastcall MapViewRectToWindowRect(const Types::TRect &ViewPortRect, bool AccountForHeader = true); + void __fastcall ReCalculateScrollbars(bool Redraw, bool Force); + void __fastcall Scroll(int DeltaX, int DeltaY); + void __fastcall SetViewRect(const Types::TRect &AViewRect, bool InvalidateWindow); + void __fastcall ValidateOffsets(int &AnOffsetX, int &AnOffsetY); + Types::TRect __fastcall ViewableViewportRect(); + void __fastcall WMHScroll(Messages::TWMScroll &Msg); + void __fastcall WMKeyDown(Messages::TWMKey &Msg); + void __fastcall WMVScroll(Messages::TWMScroll &Msg); + __property bool HorzBarVisible = {read=GetHorzBarVisible, nodefault}; + __property int Line = {read=GetLine, nodefault}; + __property int MaxOffsetX = {read=GetMaxOffsetX, nodefault}; + __property int MaxOffsetY = {read=GetMaxOffsetY, nodefault}; + __property int OffsetX = {read=FOffsetX, write=SetOffsetX, nodefault}; + __property int OffsetY = {read=FOffsetY, write=SetOffsetY, nodefault}; + __property bool Rebuilding = {read=FRebuilding, nodefault}; + __property bool VertBarVisible = {read=GetVertBarVisible, nodefault}; + __property int ViewHeight = {read=GetViewHeight, nodefault}; + __property Types::TRect ViewRect = {read=FViewRect}; + __property int ViewWidth = {read=GetViewWidth, nodefault}; + +__published: + __property bool HorzEnabled = {read=FHorzEnabled, write=SetHorzEnabled, default=1}; + __property bool SnapHorzView = {read=FSnapHorzView, write=FSnapHorzView, default=1}; + __property bool VertEnabled = {read=FVertEnabled, write=SetVertEnabled, default=1}; +}; + + +class DELPHICLASS TEasyBackgroundManager; +class PASCALIMPLEMENTATION TEasyBackgroundManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + bool FAlphaBlend; + TEasyAlphaBlender* FAlphaBlender; + int FBlendAlpha; + Mpcommonutilities::TCommonBlendMode FBlendMode; + WideString FCaption; + Classes::TAlignment FCaptionAlignment; + bool FCaptionShow; + bool FCaptionShowOnlyWhenEmpty; + bool FCaptionSingleLine; + Mpcommonutilities::TCommonVAlignment FCaptionVAlignment; + bool FEnabled; + Graphics::TBitmap* FImage; + bool FOffsetTrack; + int FOffsetX; + int FOffsetY; + bool FTile; + bool FTransparent; + Graphics::TBitmap* FAlphaImage; + void __fastcall SetAlphaBlend(const bool Value); + void __fastcall SetAlphaImage(const Graphics::TBitmap* Value); + void __fastcall SetBlendAlpha(const int Value); + void __fastcall SetCaption(const WideString Value); + void __fastcall SetCaptionAlignment(const Classes::TAlignment Value); + void __fastcall SetCaptionShow(const bool Value); + void __fastcall SetCaptionShowOnlyWhenEmpty(const bool Value); + void __fastcall SetCaptionSingleLine(const bool Value); + void __fastcall SetCaptionVAlignment(const Mpcommonutilities::TCommonVAlignment Value); + void __fastcall SetCommonBlendMode(const Mpcommonutilities::TCommonBlendMode Value); + void __fastcall SetEnabled(const bool Value); + void __fastcall SetImage(const Graphics::TBitmap* Value); + void __fastcall SetOffsetX(const int Value); + void __fastcall SetOffsetY(const int Value); + void __fastcall SetTile(const bool Value); + void __fastcall SetTransparent(const bool Value); + +protected: + void __fastcall ChangeBitmapBits(System::TObject* Sender); + __property TEasyAlphaBlender* AlphaBlender = {read=FAlphaBlender, write=FAlphaBlender}; + +public: + __fastcall virtual TEasyBackgroundManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyBackgroundManager(void); + virtual void __fastcall Assign(Classes::TPersistent* Source); + virtual void __fastcall AssignTo(Classes::TPersistent* Target); + virtual void __fastcall PaintTo(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool PaintDefault); + virtual void __fastcall WMWindowPosChanging(Messages::TWMWindowPosMsg &Msg); + +__published: + __property bool AlphaBlend = {read=FAlphaBlend, write=SetAlphaBlend, default=0}; + __property Graphics::TBitmap* AlphaImage = {read=FAlphaImage, write=SetAlphaImage}; + __property int BlendAlpha = {read=FBlendAlpha, write=SetBlendAlpha, default=128}; + __property Mpcommonutilities::TCommonBlendMode BlendMode = {read=FBlendMode, write=SetCommonBlendMode, default=3}; + __property WideString Caption = {read=FCaption, write=SetCaption}; + __property Classes::TAlignment CaptionAlignment = {read=FCaptionAlignment, write=SetCaptionAlignment, default=2}; + __property bool CaptionShow = {read=FCaptionShow, write=SetCaptionShow, default=0}; + __property bool CaptionShowOnlyWhenEmpty = {read=FCaptionShowOnlyWhenEmpty, write=SetCaptionShowOnlyWhenEmpty, default=1}; + __property bool CaptionSingleLine = {read=FCaptionSingleLine, write=SetCaptionSingleLine, default=1}; + __property Mpcommonutilities::TCommonVAlignment CaptionVAlignment = {read=FCaptionVAlignment, write=SetCaptionVAlignment, default=2}; + __property bool Enabled = {read=FEnabled, write=SetEnabled, default=0}; + __property Graphics::TBitmap* Image = {read=FImage, write=SetImage}; + __property bool OffsetTrack = {read=FOffsetTrack, write=FOffsetTrack, default=0}; + __property int OffsetX = {read=FOffsetX, write=SetOffsetX, default=0}; + __property int OffsetY = {read=FOffsetY, write=SetOffsetY, default=0}; + __property bool Tile = {read=FTile, write=SetTile, default=1}; + __property bool Transparent = {read=FTransparent, write=SetTransparent, default=0}; +}; + + +class DELPHICLASS TEasyTaskBandBackgroundManager; +class PASCALIMPLEMENTATION TEasyTaskBandBackgroundManager : public TEasyBackgroundManager +{ + typedef TEasyBackgroundManager inherited; + +public: + virtual void __fastcall PaintTo(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool PaintDefault); +public: + #pragma option push -w-inl + /* TEasyBackgroundManager.Create */ inline __fastcall virtual TEasyTaskBandBackgroundManager(TCustomEasyListview* AnOwner) : TEasyBackgroundManager(AnOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TEasyBackgroundManager.Destroy */ inline __fastcall virtual ~TEasyTaskBandBackgroundManager(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyDropTargetManager; +class PASCALIMPLEMENTATION TEasyDropTargetManager : public TEasyOwnedInterfacedPersistent +{ + typedef TEasyOwnedInterfacedPersistent inherited; + +private: + TCustomEasyDragManagerBase* FDragManager; + Mpshelltypes::_di_IDropTargetHelper FDropTargetHelper; + Mpshelltypes::_di_IDropTargetHelper __fastcall GetDropTargetHelper(); + +protected: + HRESULT __stdcall DragEnter(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect); + HRESULT __stdcall DragOver(int grfKeyState, const Types::TPoint pt, int &dwEffect); + HRESULT __stdcall DragLeave(void); + HRESULT __stdcall Drop(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect); + __property TCustomEasyDragManagerBase* DragManager = {read=FDragManager, write=FDragManager}; + __property Mpshelltypes::_di_IDropTargetHelper DropTargetHelper = {read=GetDropTargetHelper}; +public: + #pragma option push -w-inl + /* TEasyOwnedInterfacedPersistent.Create */ inline __fastcall virtual TEasyDropTargetManager(TCustomEasyListview* AnOwner) : TEasyOwnedInterfacedPersistent(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyDropTargetManager(void) { } + #pragma option pop + +private: + void *__IDropTarget; /* IDropTarget */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IDropTarget() + { + _di_IDropTarget intf; + GetInterface(intf); + return intf; + } + #else + operator IDropTarget*(void) { return (IDropTarget*)&__IDropTarget; } + #endif + +}; + + +class DELPHICLASS TEasyDropSourceManager; +class PASCALIMPLEMENTATION TEasyDropSourceManager : public TEasyOwnedInterfacedPersistent +{ + typedef TEasyOwnedInterfacedPersistent inherited; + +protected: + HRESULT __stdcall QueryContinueDrag(BOOL fEscapePressed, int grfKeyState); + HRESULT __stdcall GiveFeedback(int dwEffect); +public: + #pragma option push -w-inl + /* TEasyOwnedInterfacedPersistent.Create */ inline __fastcall virtual TEasyDropSourceManager(TCustomEasyListview* AnOwner) : TEasyOwnedInterfacedPersistent(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyDropSourceManager(void) { } + #pragma option pop + +private: + void *__IDropSource; /* IDropSource */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IDropSource() + { + _di_IDropSource intf; + GetInterface(intf); + return intf; + } + #else + operator IDropSource*(void) { return (IDropSource*)&__IDropSource; } + #endif + +}; + + +class DELPHICLASS TEasyDragRectManager; +class PASCALIMPLEMENTATION TEasyDragRectManager : public TCustomEasyDragManagerBase +{ + typedef TCustomEasyDragManagerBase inherited; + +private: + Types::TPoint FAnchorPoint; + Types::TPoint FDragPoint; + Types::TPoint FOldOffsets; + Types::TRect FPrevRect; + Types::TRect __fastcall GetSelectionRect(); + void __fastcall PaintRect(Graphics::TCanvas* Canvas); + void __fastcall SetAnchorPoint(const Types::TPoint &ViewportAnchor); + void __fastcall SetDragPoint(const Types::TPoint &Value); + +protected: + virtual void __fastcall DoAfterAutoScroll(void); + virtual void __fastcall DoAutoScroll(int DeltaX, int DeltaY); + virtual void __fastcall DoBeforeAutoScroll(void); + virtual void __fastcall DoDrag(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual void __fastcall DoDragBegin(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall DoDragEnd(Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall DoDragEnter(const _di_IDataObject DataObject, Graphics::TCanvas* Canvas, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, Mpcommonutilities::TCommonDropEffect &Effects); + virtual bool __fastcall DoPtInAutoScrollDownRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollLeftRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollRightRegion(const Types::TPoint &WindowPoint); + virtual bool __fastcall DoPtInAutoScrollUpRegion(const Types::TPoint &WindowPoint); + virtual void __fastcall UpdateAfterAutoScroll(void); + __property Types::TPoint OldOffsets = {read=FOldOffsets, write=FOldOffsets}; + +public: + __fastcall virtual TEasyDragRectManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyDragRectManager(void); + void __fastcall FinalizeDrag(Mpcommonutilities::TCommonKeyStates KeyState); + bool __fastcall InitializeDrag(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + void __fastcall PaintSelectionRect(Graphics::TCanvas* Canvas); + Types::TRect __fastcall SelRectInWindowCoords(); + virtual void __fastcall WMKeyDown(Messages::TWMKey &Msg); + __property Types::TPoint AnchorPoint = {read=FAnchorPoint, write=SetAnchorPoint}; + __property Types::TPoint DragPoint = {read=FDragPoint, write=SetDragPoint}; + __property Types::TRect PrevRect = {read=FPrevRect}; + __property Types::TRect SelectionRect = {read=GetSelectionRect}; +}; + + +typedef int __fastcall (*TEasySortProc)(TEasyColumn* Column, TEasyCollectionItem* Item1, TEasyCollectionItem* Item2); + +class DELPHICLASS TEasySorter; +class DELPHICLASS TEasySortManager; +struct TGroupSortInfoRec; +typedef DynamicArray TGroupSortInfoArray; + +class PASCALIMPLEMENTATION TEasySortManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + TEasySortAlgorithm FAlgorithm; + bool FAutoRegroup; + bool FAutoSort; + bool FLockoutSort; + DynamicArray FSortList; + TEasySorter* FSorter; + int FUpdateCount; + void __fastcall SetAlgorithm(TEasySortAlgorithm Value); + void __fastcall SetAutoRegroup(bool Value); + void __fastcall SetAutoSort(bool Value); + +protected: + bool __fastcall CollectionSupportsInterfaceSorting(TEasyCollection* Collection); + void __fastcall GroupItem(TEasyItem* Item, int ColumnIndex, unsigned Key); + __property TEasySorter* Sorter = {read=FSorter, write=FSorter}; + __property TGroupSortInfoArray SortList = {read=FSortList, write=FSortList}; + __property int UpdateCount = {read=FUpdateCount, write=FUpdateCount, nodefault}; + +public: + __fastcall virtual TEasySortManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasySortManager(void); + void __fastcall BeginUpdate(void); + void __fastcall EndUpdate(void); + virtual void __fastcall ReGroup(TEasyColumn* Column); + void __fastcall SortAll(bool Force = false); + __property bool LockoutSort = {read=FLockoutSort, write=FLockoutSort, nodefault}; + +__published: + __property TEasySortAlgorithm Algorithm = {read=FAlgorithm, write=SetAlgorithm, default=2}; + __property bool AutoRegroup = {read=FAutoRegroup, write=SetAutoRegroup, default=0}; + __property bool AutoSort = {read=FAutoSort, write=SetAutoSort, default=0}; +}; + + +class PASCALIMPLEMENTATION TEasySorter : public System::TObject +{ + typedef System::TObject inherited; + +private: + TEasySortManager* FOwner; + +public: + __fastcall virtual TEasySorter(TEasySortManager* AnOwner); + virtual void __fastcall Sort(TEasyColumn* Column, TEasyCollection* Collection, int Min, int Max, TEasyDoGroupCompare GroupCompare, TEasyDoItemCompare ItemCompare, bool UseInterfaces) = 0 ; + __property TEasySortManager* Owner = {read=FOwner, write=FOwner}; +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasySorter(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyQuickSort; +class PASCALIMPLEMENTATION TEasyQuickSort : public TEasySorter +{ + typedef TEasySorter inherited; + +public: + virtual void __fastcall Sort(TEasyColumn* Column, TEasyCollection* Collection, int Min, int Max, TEasyDoGroupCompare GroupCompare, TEasyDoItemCompare ItemCompare, bool UseInterfaces); +public: + #pragma option push -w-inl + /* TEasySorter.Create */ inline __fastcall virtual TEasyQuickSort(TEasySortManager* AnOwner) : TEasySorter(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyQuickSort(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyBubbleSort; +class PASCALIMPLEMENTATION TEasyBubbleSort : public TEasySorter +{ + typedef TEasySorter inherited; + +public: + virtual void __fastcall Sort(TEasyColumn* Column, TEasyCollection* Collection, int Min, int Max, TEasyDoGroupCompare GroupCompare, TEasyDoItemCompare ItemCompare, bool UseInterfaces); +public: + #pragma option push -w-inl + /* TEasySorter.Create */ inline __fastcall virtual TEasyBubbleSort(TEasySortManager* AnOwner) : TEasySorter(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyBubbleSort(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyMergeSort; +class PASCALIMPLEMENTATION TEasyMergeSort : public TEasySorter +{ + typedef TEasySorter inherited; + +private: + TEasyColumn* FColumn; + TEasyDoGroupCompare FGroupCompareFunc; + TEasyDoItemCompare FItemCompareFunc; + TEasyGroup* FOwnerGroup; + +protected: + bool __fastcall CompareInterfaces(TEasyCollectionItem* i1, TEasyCollectionItem* i2); + bool __fastcall CompareGroup(TEasyCollectionItem* i1, TEasyCollectionItem* i2); + bool __fastcall CompareItem(TEasyCollectionItem* i1, TEasyCollectionItem* i2); + bool __fastcall CompareDefault(TEasyCollectionItem* i1, TEasyCollectionItem* i2); + __property TEasyColumn* Column = {read=FColumn, write=FColumn}; + __property TEasyDoGroupCompare GroupCompareFunc = {read=FGroupCompareFunc, write=FGroupCompareFunc}; + __property TEasyDoItemCompare ItemCompareFunc = {read=FItemCompareFunc, write=FItemCompareFunc}; + __property TEasyGroup* OwnerGroup = {read=FOwnerGroup, write=FOwnerGroup}; + +public: + virtual void __fastcall Sort(TEasyColumn* Column, TEasyCollection* Collection, int Min, int Max, TEasyDoGroupCompare GroupCompare, TEasyDoItemCompare ItemCompare, bool UseInterfaces); +public: + #pragma option push -w-inl + /* TEasySorter.Create */ inline __fastcall virtual TEasyMergeSort(TEasySortManager* AnOwner) : TEasySorter(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TEasyMergeSort(void) { } + #pragma option pop + +}; + + +#pragma pack(push,4) +struct TGroupSortInfoRec +{ + +public: + TEasyItem* Item; + unsigned Key; +} ; +#pragma pack(pop) + +class PASCALIMPLEMENTATION TEasyHintInfo : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + Types::TRect FBounds; + Graphics::TCanvas* FCanvas; + Graphics::TColor FColor; + Types::TPoint FCursorPos; + int FHideTimeout; + TEasyHintType FHintType; + int FMaxWidth; + int FReshowTimeout; + WideString FText; + Types::TPoint FWindowPos; + +public: + __property Graphics::TCanvas* Canvas = {read=FCanvas, write=FCanvas}; + __property Graphics::TColor Color = {read=FColor, write=FColor, nodefault}; + __property Types::TPoint CursorPos = {read=FCursorPos, write=FCursorPos}; + __property Types::TRect Bounds = {read=FBounds, write=FBounds}; + __property int HideTimeout = {read=FHideTimeout, write=FHideTimeout, nodefault}; + __property TEasyHintType HintType = {read=FHintType, write=FHintType, nodefault}; + __property int MaxWidth = {read=FMaxWidth, write=FMaxWidth, nodefault}; + __property int ReshowTimeout = {read=FReshowTimeout, write=FReshowTimeout, nodefault}; + __property WideString Text = {read=FText, write=FText}; + __property Types::TPoint WindowPos = {read=FWindowPos, write=FWindowPos}; +public: + #pragma option push -w-inl + /* TEasyOwnedPersistent.Create */ inline __fastcall virtual TEasyHintInfo(TCustomEasyListview* AnOwner) : TEasyOwnedPersistent(AnOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyHintInfo(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyHintWindow; +class PASCALIMPLEMENTATION TEasyHintWindow : public Controls::THintWindow +{ + typedef Controls::THintWindow inherited; + +protected: + TEasyHintInfo* FEasyHintInfo; + TEasyHintInfoRec *FHintInfo; + virtual void __fastcall Paint(void); + __property TEasyHintInfo* EasyHintInfo = {read=FEasyHintInfo, write=FEasyHintInfo}; + __property PEasyHintInfoRec HintInfo = {read=FHintInfo, write=FHintInfo}; + +public: + __fastcall virtual TEasyHintWindow(Classes::TComponent* AOwner); + __fastcall virtual ~TEasyHintWindow(void); + virtual void __fastcall ActivateHint(const Types::TRect &ARect, const AnsiString AHint); + virtual void __fastcall ActivateHintData(const Types::TRect &ARect, const AnsiString AHint, void * AData); + virtual Types::TRect __fastcall CalcHintRect(int MaxWidth, const AnsiString AHint, void * AData); + virtual bool __fastcall IsHintMsg(tagMSG &Msg); +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyHintWindow(HWND ParentWindow) : Controls::THintWindow(ParentWindow) { } + #pragma option pop + +}; + + +typedef TMetaClass* TEasyHintWindowClass; + +class DELPHICLASS TEasyIncrementalSearchManager; +class PASCALIMPLEMENTATION TEasyIncrementalSearchManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + TEasyIncrementalSearchDir FDirection; + bool FEnabled; + unsigned FhTimer; + TEasyIncrementalSearchItemType FItemType; + TEasyItem* FNextSearchItem; + int FResetTime; + WideString FSearchBuffer; + TEasyItem* FSearchItem; + TCoolIncrementalSearchStart FStart; + TEasyIncrementalSearchStates FState; + void *FTimerStub; + void __fastcall SetSearchItem(TEasyItem* Value); + +protected: + void __fastcall EndTimer(void); + bool __fastcall IsSearching(void); + virtual void __fastcall HandleWMChar(Messages::TWMKey &Msg); + virtual void __fastcall HandleWMKeyDown(Messages::TWMKey &Msg); + void __fastcall LoadFutureItem(void); + void __fastcall ResetTimer(void); + void __fastcall SearchPreloadItem(TItemNextEnum Next, TItemNextEnum Prev, TItemEnumFirstLast First, TItemEnumFirstLast Last, TEasyItem* &SearchItem); + void __fastcall StartSearch(void); + void __fastcall StartTimer(void); + void __stdcall TimerProc(HWND Window, unsigned uMsg, unsigned idEvent, unsigned dwTime); + __property unsigned hTimer = {read=FhTimer, write=FhTimer, nodefault}; + __property TEasyItem* NextSearchItem = {read=FNextSearchItem, write=FNextSearchItem}; + __property WideString SearchBuffer = {read=FSearchBuffer, write=FSearchBuffer}; + __property TEasyItem* SearchItem = {read=FSearchItem, write=SetSearchItem}; + __property void * TimerStub = {read=FTimerStub, write=FTimerStub}; + +public: + __fastcall virtual TEasyIncrementalSearchManager(TCustomEasyListview* AnOwner); + __fastcall virtual ~TEasyIncrementalSearchManager(void); + virtual void __fastcall ClearSearch(void); + void __fastcall ResetSearch(void); + __property TEasyIncrementalSearchStates State = {read=FState, write=FState, nodefault}; + +__published: + __property TEasyIncrementalSearchDir Direction = {read=FDirection, write=FDirection, default=0}; + __property bool Enabled = {read=FEnabled, write=FEnabled, default=0}; + __property int ResetTime = {read=FResetTime, write=FResetTime, default=2000}; + __property TCoolIncrementalSearchStart StartType = {read=FStart, write=FStart, default=0}; + __property TEasyIncrementalSearchItemType ItemType = {read=FItemType, write=FItemType, default=2}; +}; + + +class DELPHICLASS TEasyGestureManager; +class PASCALIMPLEMENTATION TEasyGestureManager : public TEasyOwnedPersistent +{ + typedef TEasyOwnedPersistent inherited; + +private: + TCommonMouseButtons FButton; + bool FEnabled; + WideString FPath; + int FTolerance; + +protected: + __property WideString Path = {read=FPath, write=FPath}; + +public: + __fastcall virtual TEasyGestureManager(TCustomEasyListview* AnOwner); + +__published: + __property TCommonMouseButtons Button = {read=FButton, write=FButton, default=4}; + __property bool Enabled = {read=FEnabled, write=FEnabled, default=0}; + __property int Tolerance = {read=FTolerance, write=FTolerance, default=3}; +public: + #pragma option push -w-inl + /* TEasyPersistent.Destroy */ inline __fastcall virtual ~TEasyGestureManager(void) { } + #pragma option pop + +}; + + +#pragma pack(push,4) +struct TEasyHintInfoRec +{ + +public: + Controls::TControl* HintControl; + TMetaClass* HintWindowClass; + Types::TPoint HintPos; + int HintMaxWidth; + Graphics::TColor HintColor; + TEasyHintType HintType; + Types::TRect CursorRect; + Types::TPoint CursorPos; + int ReshowTimeout; + int HideTimeout; + WideString HintStr; + void *HintData; + TCustomEasyListview* Listview; + TEasyCollectionItem* TargetObj; + Types::TRect ToolTipRect; +} ; +#pragma pack(pop) + +class PASCALIMPLEMENTATION TCustomEasyListview : public Mpcommonobjects::TCommonCanvasControl +{ + typedef Mpcommonobjects::TCommonCanvasControl inherited; + +private: + bool FAllowInvisibleCheckedItems; + Graphics::TBitmap* FBackBits; + TEasyBackgroundManager* FBackGround; + bool FCacheDoubleBufferBits; + TEasyCellSizes* FCellSizes; + TEasyCheckManager* FCheckManager; + Byte FDisabledBlendAlpha; + Graphics::TColor FDisabledBlendColor; + TEasyOLEDragManager* FDragManager; + TEasyDragRectManager* FDragRect; + _di_IDropTarget FDropTarget; + TEasyEditManager* FEditManager; + bool FForcePaint; + TEasyGestureManager* FGesture; + TEasyGlobalImageManager* FGlobalImages; + Graphics::TBitmap* FGroupCollapseButton; + Graphics::TBitmap* FGroupExpandButton; + Graphics::TFont* FGroupFont; + TGroupImageGetSizeEvent FGroupImageGetSize; + TEasyGroups* FGroups; + TEasyHeader* FHeader; + Classes::TAlignment FHintAlignment; + TEasyHintInfoRec FHintData; + TEasyHintInfo* FHintInfo; + TEasyHotTrackManager* FHotTrack; + Imglist::TCustomImageList* FImagesExLarge; + Imglist::TCustomImageList* FImagesGroup; + Imglist::TCustomImageList* FImagesLarge; + Imglist::TCustomImageList* FImagesSmall; + Imglist::TCustomImageList* FImagesState; + TEasyIncrementalSearchManager* FIncrementalSearch; + TEasyGlobalItems* FItems; + Types::TSmallPoint FLastMousePos; + Graphics::TCanvas* FNCCanvas; + TAfterPaintEvent FOnAfterPaint; + TAutoGroupGetKeyEvent FOnAutoGroupGetKey; + TAutoSortGroupCreateEvent FOnAutoSortGroupCreate; + TEasyClipboardEvent FOnClipboardCopy; + TEasyClipboardCutEvent FOnClipboardCut; + TEasyClipboardEvent FOnClipboardPaste; + TColumnCheckChangeEvent FOnColumnCheckChange; + TColumnCheckChangingEvent FOnColumnCheckChanging; + TColumnClickEvent FOnColumnClick; + TColumnContextMenuEvent FOnColumnContextMenu; + TColumnDblClickEvent FOnColumnDblClick; + TColumnDropDownButtonClickEvent FOnColumnDropDownButtonClick; + TColumnImageDrawIsCustomEvent FOnColumnImageDrawIsCustom; + TColumnEnableChangeEvent FOnColumnEnableChange; + TColumnEnableChangingEvent FOnColumnEnableChanging; + TColumnFocusChangeEvent FOnColumnFocusChanged; + TColumnFocusChangingEvent FOnColumnFocusChanging; + TColumnFreeingEvent FOnColumnFreeing; + TColumnGetCaptionEvent FOnColumnGetCaption; + TColumnGetDetailEvent FOnColumnGetDetail; + TColumnGetDetailCountEvent FOnColumnGetDetailCount; + TColumnGetImageIndexEvent FOnColumnGetImageIndex; + TColumnGetImageListEvent FOnColumnGetImageList; + TColumnImageDrawEvent FOnColumnImageDraw; + TColumnImageGetSizeEvent FOnColumnImageGetSize; + TColumnInitializeEvent FOnColumnInitialize; + TEasyColumnLoadFromStreamEvent FOnColumnLoadFromStream; + TColumnPaintTextEvent FOnColumnPaintText; + TEasyColumnSaveToStreamEvent FOnColumnSaveToStream; + TColumnSelectionChangeEvent FOnColumnSelectionChanged; + TColumnSelectionChangingEvent FOnColumnSelectionChanging; + TColumnSetCaptionEvent FOnColumnSetCaption; + TColumnSetDetailEvent FOnColumnSetDetail; + TColumnSetImageIndexEvent FOnColumnSetImageIndex; + TColumnSizeChangedEvent FOnColumnSizeChanged; + TColumnSizeChangingEvent FOnColumnSizeChanging; + Classes::TNotifyEvent FOnColumnStructureChange; + TColumnThumbnailDrawEvent FOnColumnThumbnailDraw; + TColumnVisibilityChangeEvent FOnColumnVisibilityChanged; + TColumnVisibilityChangingEvent FOnColumnVisibilityChanging; + TContextMenuEvent FOnContextMenu; + TColumnCustomViewEvent FOnColumnCustomView; + TCustomGridEvent FOnCustomGrid; + TDblClickEvent FOnDblClick; + TEasyGestureEvent FOnMouseGesture; + TGetDragImageEvent FOnGetDragImage; + TGroupClickEvent FOnGroupClick; + TGroupCollapseEvent FOnGroupCollapse; + TGroupCollapsingEvent FOnGroupCollapsing; + TGroupCompareEvent FOnGroupCompare; + TGroupContextMenuEvent FOnGroupContextMenu; + TGroupCustomViewEvent FOnGroupCustomView; + TGroupDblClickEvent FOnGroupDblClick; + TGroupImageDrawIsCustomEvent FOnGroupImageDrawIsCustom; + TGroupExpandEvent FOnGroupExpand; + TGroupExpandingEvent FOnGroupExpanding; + TGroupFocusChangeEvent FOnGroupFocusChanged; + TGroupFocusChangingEvent FOnGroupFocusChanging; + TGroupFreeingEvent FOnGroupFreeing; + TGroupGetCaptionEvent FOnGroupGetCaption; + TGroupGetDetailCountEvent FOnGroupGetDetailCount; + TGroupGetDetailEvent FOnGroupGetDetailIndex; + TGroupGetImageIndexEvent FOnGroupGetImageIndex; + TGroupGetImageListEvent FOnGroupGetImageList; + TGroupImageDrawEvent FOnGroupImageDrawEvent; + TGroupInitializeEvent FOnGroupInitialize; + TGroupHotTrackEvent FOnGroupHotTrack; + TGroupLoadFromStreamEvent FOnGroupLoadFromStream; + TGroupPaintTextEvent FOnGroupPaintText; + TGroupSaveToStreamEvent FOnGroupSaveToStream; + TGroupSelectionChangeEvent FOnGroupSelectionChanged; + TGroupSelectionChangingEvent FOnGroupSelectionChanging; + TGroupSetCaptionEvent FOnGroupSetCaption; + TGroupSetImageIndexEvent FOnGroupSetImageIndex; + TGroupSetDetailEvent FOnGroupSetDetail; + Classes::TNotifyEvent FOnGroupStructureChange; + TGroupThumbnailDrawEvent FOnGroupThumbnailDraw; + TGroupVisibilityChangeEvent FOnGroupVisibilityChanged; + TGroupVisibilityChangingEvent FOnGroupVisibilityChanging; + THeaderDblClickEvent FOnHeaderDblClick; + THeaderMouseEvent FOnHeaderMouseDown; + Controls::TMouseMoveEvent FOnHeaderMouseMove; + THeaderMouseEvent FOnHeaderMouseUp; + THintCustomDrawEvent FOnHintCustomDraw; + THintCustomizeInfoEvent FOnHintCustomInfo; + THintPauseTimeEvent FOnHintPauseTime; + THintPopupEvent FOnHintPopup; + TIncrementalSearchEvent FOnIncrementalSearch; + TItemCheckChangeEvent FOnItemCheckChange; + TItemCheckChangingEvent FOnItemCheckChanging; + TItemClickEvent FOnItemClick; + TItemCompareEvent FOnItemCompare; + TItemContextMenuEvent FOnItemContextMenu; + TItemCreateEditorEvent FOnItemCreateEditor; + TItemCustomViewEvent FOnItemCustomView; + TItemDblClickEvent FOnItemDblClick; + TEasyItemGetCaptionEvent FOnItemGetEditCaption; + TItemGetEditMenuEvent FOnItemGetEditMenu; + TItemGetImageListEvent FOnItemGetStateImageList; + TItemImageDrawIsCustomEvent FOnItemImageDrawIsCustom; + TItemEditBegin FOnItemEditBegin; + TItemEditedEvent FOnItemEdited; + TItemEditEnd FOnItemEditEnd; + TItemEnableChangeEvent FOnItemEnableChange; + TItemEnableChangingEvent FOnItemEnableChanging; + TItemFocusChangeEvent FOnItemFocusChanged; + TItemFocusChangingEvent FOnItemFocusChanging; + TItemFreeingEvent FOnItemFreeing; + TItemGetCaptionEvent FOnItemGetCaption; + TItemGetGroupKeyEvent FOnItemGetGroupKey; + TItemHotTrackEvent FOnItemHotTrack; + TItemGetTileDetailEvent FOnItemGetTileDetailIndex; + TItemGetImageIndexEvent FOnItemGetImageIndex; + TItemGetImageListEvent FOnItemGetImageList; + TItemGetTileDetailCountEvent FOnItemGetTileDetailCount; + TItemImageDrawEvent FOnItemImageDraw; + TItemImageGetSizeEvent FOnItemImageGetSize; + TItemInitializeEvent FOnItemInitialize; + TItemLoadFromStreamEvent FOnItemLoadFromStream; + TItemMouseDownEvent FOnItemMouseDown; + TItemMouseUpEvent FOnItemMouseUp; + TItemPaintTextEvent FOnItemPaintText; + TItemSaveToStreamEvent FOnItemSaveToStream; + TItemSelectionChangeEvent FOnItemSelectionChanged; + TItemSelectionChangingEvent FOnItemSelectionChanging; + TEasyItemSelectionsChangedEvent FOnItemSelectionsChanged; + TItemSetCaptionEvent FOnItemSetCaption; + TItemSetGroupKeyEvent FOnItemSetGroupKey; + TItemSetImageIndexEvent FOnItemSetImageIndex; + TItemSetTileDetailEvent FOnItemSetTileDetail; + Classes::TNotifyEvent FOnItemStructureChange; + TItemThumbnailDrawEvent FOnItemThumbnailDraw; + TItemVisibilityChangeEvent FOnItemVisibilityChanged; + TItemVisibilityChangingEvent FOnItemVisibilityChanging; + TEasyKeyActionEvent FOnKeyAction; + TOLEDropTargetDragDropEvent FOnOLEDragDrop; + TOLEDropSourceDragEndEvent FOnOLEDragEnd; + TOLEDropTargetDragEnterEvent FOnOLEDragEnter; + TOLEDropTargetDragLeaveEvent FOnOLEDragLeave; + TOLEDropTargetDragOverEvent FOnOLEDragOver; + TOLEDropSourceDragStartEvent FOnOLEDragStart; + TOLEGetCustomFormatsEvent FOnOLEGetCustomFormats; + TOLEGetDataEvent FOnOLEGetData; + FOLEGetDataObjectEvent FOnOLEGetDataObject; + TOLEDropSourceGiveFeedbackEvent FOnOLEGiveFeedback; + TOLEDropSourceQueryContineDragEvent FOnOLEQueryContineDrag; + TOLEQueryDataEvent FOnOLEQueryData; + TPaintBkGndEvent FOnPaintBkGnd; + TPaintHeaderBkGndEvent FOnPaintHeaderBkGnd; + TEasyScrollEvent FOnScroll; + TViewChangedEvent FOnViewChange; + TEasyPaintInfoBaseColumn* FPaintInfoColumn; + TEasyPaintInfoBaseGroup* FPaintInfoGroup; + TEasyPaintInfoBaseItem* FPaintInfoItem; + Menus::TPopupMenu* FPopupMenuHeader; + Controls::TControlCanvas* FScratchCanvas; + TEasyScrollbarManager* FScrollbars; + TEasySelectionManager* FSelection; + bool FShowGroupMargins; + bool FShowInactive; + bool FShowThemedBorder; + TEasySortManager* FSort; + TEasyControlStates FStates; + TEasyListStyle FView; + TEasyDefaultWheelScroll FWheelMouseDefaultScroll; + bool FWheelMouseScrollModifierEnabled; + Graphics::TBitmap* __fastcall GetGroupCollapseImage(void); + Graphics::TBitmap* __fastcall GetGroupExpandImage(void); + TEasyHintType __fastcall GetHintType(void); + virtual TEasyPaintInfoBaseColumn* __fastcall GetPaintInfoColumn(void); + virtual TEasyPaintInfoBaseGroup* __fastcall GetPaintInfoGroup(void); + virtual TEasyPaintInfoBaseItem* __fastcall GetPaintInfoItem(void); + Controls::TControlCanvas* __fastcall GetScratchCanvas(void); + TEasyItem* __fastcall GetTopItem(void); + void __fastcall SetBackGround(const TEasyBackgroundManager* Value); + void __fastcall SetCacheDoubleBufferBits(const bool Value); + void __fastcall SetGroupCollapseImage(Graphics::TBitmap* Value); + void __fastcall SetGroupExpandImage(Graphics::TBitmap* Value); + void __fastcall SetGroupFont(Graphics::TFont* Value); + void __fastcall SetHintType(TEasyHintType Value); + void __fastcall SetImagesExLarge(Imglist::TCustomImageList* Value); + void __fastcall SetImagesGroup(Imglist::TCustomImageList* Value); + void __fastcall SetImagesLarge(Imglist::TCustomImageList* Value); + void __fastcall SetImagesSmall(Imglist::TCustomImageList* Value); + void __fastcall SetImagesState(const Imglist::TCustomImageList* Value); + virtual void __fastcall SetPaintInfoColumn(const TEasyPaintInfoBaseColumn* Value); + virtual void __fastcall SetPaintInfoGroup(const TEasyPaintInfoBaseGroup* Value); + virtual void __fastcall SetPaintInfoItem(const TEasyPaintInfoBaseItem* Value); + void __fastcall SetSelection(TEasySelectionManager* Value); + void __fastcall SetShowInactive(const bool Value); + void __fastcall SetShowThemedBorder(bool Value); + void __fastcall SetShowGroupMargins(const bool Value); + +protected: + virtual TEasyPaintInfoBaseColumn* __fastcall CreateColumnPaintInfo(void); + virtual TEasyPaintInfoBaseGroup* __fastcall CreateGroupPaintInfo(void); + virtual TEasyGroups* __fastcall CreateGroups(void); + virtual TEasyPaintInfoBaseItem* __fastcall CreateItemPaintInfo(void); + virtual HRESULT __fastcall ExecuteDragDrop(Mpcommonutilities::TCommonDropEffects AvailableEffects, _di_IDataObject DataObjectInf, _di_IDropSource DropSource, int &dwEffect); + virtual TEasyColumn* __fastcall GetSortColumn(void); + virtual bool __fastcall GroupTestExpand(TEasyGroupHitTestInfoSet HitInfo); + bool __fastcall ToolTipNeeded(TEasyCollectionItem* TargetObj, WideString &TipCaption); + virtual bool __fastcall UseInternalDragImage(void); + bool __fastcall ViewSupportsHeader(void); + void __fastcall CancelCut(void); + virtual void __fastcall CheckFocus(void); + void __fastcall ClearPendingDrags(void); + void __fastcall ClearStates(void); + TEasyGroup* __fastcall ClickTestGroup(const Types::TPoint &ViewportPoint, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyGroupHitTestInfoSet &HitInfo); + TEasyItem* __fastcall ClickTestItem(const Types::TPoint &ViewportPoint, TEasyGroup* Group, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyItemHitTestInfoSet &HitInfo); + void __fastcall ClipHeader(Graphics::TCanvas* ACanvas, bool ResetClipRgn); + HIDESBASE MESSAGE void __fastcall CMDrag(Controls::TCMDrag &Msg); + HIDESBASE MESSAGE void __fastcall CMHintShow(Forms::TCMHintShow &Message); + MESSAGE void __fastcall CMHintShowPause(Forms::TCMHintShow &Message); + HIDESBASE MESSAGE void __fastcall CMMouseWheel(Messages::TWMMouseWheel &Msg); + HIDESBASE MESSAGE void __fastcall CMParentFontChanged(Messages::TMessage &Msg); + virtual void __fastcall CopyToClipboard(void); + virtual void __fastcall CreateParams(Controls::TCreateParams &Params); + virtual void __fastcall CreateWnd(void); + virtual void __fastcall CutToClipboard(void); + void __fastcall DoAfterPaint(Graphics::TCanvas* ACanvas, const Types::TRect &ClipRect); + virtual void __fastcall DoAutoGroupGetKey(TEasyItem* Item, int ColumnIndex, TEasyGroups* Groups, unsigned &Key); + virtual void __fastcall DoAutoSortGroupCreate(TEasyItem* Item, int ColumnIndex, TEasyGroups* Groups, TEasyGroup* &Group, bool &DoDefaultAction); + virtual void __fastcall DoClipboardCopy(bool &Handled); + virtual void __fastcall DoClipboardCut(bool &MarkAsCut, bool &Handled); + virtual void __fastcall DoClipboardPaste(bool &Handled); + virtual void __fastcall DoColumnCheckChanged(TEasyColumn* Column); + virtual void __fastcall DoColumnCheckChanging(TEasyColumn* Column, bool &Allow); + virtual void __fastcall DoColumnClick(Mpcommonutilities::TCommonMouseButton Button, const TEasyColumn* Column); + virtual void __fastcall DoColumnContextMenu(const TEasyHitInfoColumn &HitInfo, const Types::TPoint &WindowPoint, Menus::TPopupMenu* &Menu); + virtual void __fastcall DoColumnCustomView(TEasyColumn* Column, TMetaClass* &ViewClass); + virtual void __fastcall DoColumnDblClick(Mpcommonutilities::TCommonMouseButton Button, Classes::TShiftState ShiftState, const Types::TPoint &MousePos, TEasyColumn* Column); + virtual void __fastcall DoColumnDropDownButtonClick(TEasyColumn* Column, Mpcommonutilities::TCommonMouseButton Button, Classes::TShiftState ShiftState, const Types::TPoint &MousePos, bool &DoDefault); + virtual void __fastcall DoColumnEnableChanged(TEasyColumn* Column); + virtual void __fastcall DoColumnEnableChanging(TEasyColumn* Column, bool &Allow); + virtual void __fastcall DoColumnFocusChanged(TEasyColumn* Column); + virtual void __fastcall DoColumnFocusChanging(TEasyColumn* Column, bool &Allow); + virtual void __fastcall DoColumnFreeing(TEasyColumn* Column); + virtual void __fastcall DoColumnGetCaption(TEasyColumn* Column, int Line, WideString &Caption); + virtual void __fastcall DoColumnGetImageIndex(TEasyColumn* Column, TEasyImageKind ImageKind, Mpcommonobjects::TCommonImageIndexInteger &ImageIndex); + virtual void __fastcall DoColumnGetImageList(TEasyColumn* Column, Imglist::TCustomImageList* &ImageList); + virtual void __fastcall DoColumnGetDetail(TEasyColumn* Column, int Line, int &Detail); + virtual void __fastcall DoColumnGetDetailCount(TEasyColumn* Column, int &Count); + virtual void __fastcall DoColumnImageDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall DoColumnImageGetSize(TEasyColumn* Column, int &ImageWidth, int &ImageHeight); + virtual void __fastcall DoColumnImageDrawIsCustom(TEasyColumn* Column, bool &IsCustom); + virtual void __fastcall DoColumnInitialize(TEasyColumn* Column); + virtual void __fastcall DoColumnLoadFromStream(TEasyColumn* Column, Classes::TStream* S, int Version); + virtual void __fastcall DoColumnPaintText(TEasyColumn* Column, Graphics::TCanvas* ACanvas); + virtual void __fastcall DoColumnSaveToStream(TEasyColumn* Column, Classes::TStream* S, int Version); + virtual void __fastcall DoColumnSelectionChanged(TEasyColumn* Column); + virtual void __fastcall DoColumnSelectionChanging(TEasyColumn* Column, bool &Allow); + virtual void __fastcall DoColumnSetCaption(TEasyColumn* Column, const WideString Caption); + virtual void __fastcall DoColumnSetImageIndex(TEasyColumn* Column, TEasyImageKind ImageKind, int ImageIndex); + virtual void __fastcall DoColumnSetDetail(TEasyColumn* Column, int Line, int Detail); + virtual void __fastcall DoColumnSetDetailCount(TEasyColumn* Column, int DetailCount); + void __fastcall DoColumnStructureChange(void); + virtual void __fastcall DoColumnThumbnailDraw(TEasyColumn* Column, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool &DoDefault); + virtual void __fastcall DoColumnSizeChanged(TEasyColumn* Column); + virtual void __fastcall DoColumnSizeChanging(TEasyColumn* Column, int Size, int NewSize, bool &Allow); + virtual void __fastcall DoColumnVisibilityChanged(TEasyColumn* Column); + virtual void __fastcall DoColumnVisibilityChanging(TEasyColumn* Column, bool &Allow); + virtual void __fastcall DoContextMenu(const Types::TPoint &MousePt, bool &Handled); + virtual void __fastcall DoCustomGrid(TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &Grid); + virtual void __fastcall DoDblClick(Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, Classes::TShiftState ShiftState); + virtual void __fastcall DoGesture(WideString Gesture, bool &Handled); + virtual void __fastcall DoGetDragImage(Graphics::TBitmap* Bitmap, const Types::TPoint &DragStartPt, Types::TPoint &HotSpot, Graphics::TColor &TransparentColor, bool &Handled); + virtual void __fastcall DoGroupClick(TEasyGroup* Group, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyGroupHitTestInfoSet HitTest); + virtual void __fastcall DoGroupCollapse(TEasyGroup* Group); + virtual void __fastcall DoGroupCollapsing(TEasyGroup* Group, bool &Allow); + virtual int __fastcall DoGroupCompare(TEasyColumn* Column, TEasyGroup* Group1, TEasyGroup* Group2); + virtual void __fastcall DoGroupContextMenu(const TEasyHitInfoGroup &HitInfo, const Types::TPoint &WindowPoint, Menus::TPopupMenu* &Menu, bool &Handled); + virtual void __fastcall DoGroupCustomView(TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &View); + virtual void __fastcall DoGroupDblClick(Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, const TEasyHitInfoGroup &HitInfo); + virtual void __fastcall DoGroupExpand(TEasyGroup* Group); + virtual void __fastcall DoGroupExpanding(TEasyGroup* Group, bool &Allow); + virtual void __fastcall DoGroupFreeing(TEasyGroup* Group); + virtual void __fastcall DoGroupGetCaption(TEasyGroup* Group, WideString &Caption); + virtual void __fastcall DoGroupGetImageIndex(TEasyGroup* Group, TEasyImageKind ImageKind, Mpcommonobjects::TCommonImageIndexInteger &ImageIndex); + virtual void __fastcall DoGroupGetImageList(TEasyGroup* Group, Imglist::TCustomImageList* &ImageList); + virtual void __fastcall DoGroupGetDetail(TEasyGroup* Group, int Line, int &Detail); + virtual void __fastcall DoGroupGetDetailCount(TEasyGroup* Group, int &Count); + virtual void __fastcall DoGroupImageDraw(TEasyGroup* Group, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall DoGroupImageGetSize(TEasyGroup* Group, int &ImageWidth, int &ImageHeight); + virtual void __fastcall DoGroupImageDrawIsCustom(TEasyGroup* Group, bool &IsCustom); + virtual void __fastcall DoGroupInitialize(TEasyGroup* Group); + virtual void __fastcall DoGroupHotTrack(TEasyGroup* Group, TEasyHotTrackState State, const Types::TPoint &MousePos); + virtual void __fastcall DoGroupLoadFromStream(TEasyGroup* Group, Classes::TStream* S, int Version); + virtual void __fastcall DoGroupPaintText(TEasyGroup* Group, Graphics::TCanvas* ACanvas); + virtual void __fastcall DoGroupSaveToStream(TEasyGroup* Group, Classes::TStream* S, int Version); + virtual void __fastcall DoGroupSelectionChanged(TEasyGroup* Group); + virtual void __fastcall DoGroupSelectionChanging(TEasyGroup* Group, bool &Allow); + virtual void __fastcall DoGroupSetCaption(TEasyGroup* Group, const WideString Caption); + virtual void __fastcall DoGroupSetImageIndex(TEasyGroup* Group, TEasyImageKind ImageKind, int ImageIndex); + virtual void __fastcall DoGroupSetDetail(TEasyGroup* Group, int Line, int Detail); + virtual void __fastcall DoGroupSetDetailCount(TEasyGroup* Group, int DetailCount); + virtual void __fastcall DoGroupStructureChange(void); + virtual void __fastcall DoGroupThumbnailDraw(TEasyGroup* Group, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + virtual void __fastcall DoGroupVisibilityChanged(TEasyGroup* Group); + virtual void __fastcall DoGroupVisibilityChanging(TEasyGroup* Group, bool &Allow); + virtual void __fastcall DoHeaderDblClick(Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, Classes::TShiftState ShiftState); + virtual void __fastcall DoHintCustomInfo(TEasyCollectionItem* TargetObj, const TEasyHintInfo* Info); + virtual void __fastcall DoHintCustomDraw(TEasyCollectionItem* TargetObj, const TEasyHintInfo* Info); + virtual void __fastcall DoHintPopup(TEasyCollectionItem* TargetObj, TEasyHintType HintType, const Types::TPoint &MousePos, WideString &AText, int &HideTimeout, int &ReshowTimeout, bool &Allow); + void __fastcall DoHintShowPause(bool HintShowingNow, int &PauseTime); + virtual void __fastcall DoIncrementalSearch(TEasyItem* Item, const WideString SearchBuffer, int &CompareResult); + virtual void __fastcall DoItemCheckChanged(TEasyItem* Item); + virtual void __fastcall DoItemCheckChanging(TEasyItem* Item, bool &Allow); + virtual void __fastcall DoItemClick(TEasyItem* Item, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyItemHitTestInfoSet HitInfo); + virtual int __fastcall DoItemCompare(TEasyColumn* Column, TEasyGroup* Group, TEasyItem* Item1, TEasyItem* Item2); + virtual void __fastcall DoItemContextMenu(const TEasyHitInfoItem &HitInfo, const Types::TPoint &WindowPoint, Menus::TPopupMenu* &Menu, bool &Handled); + virtual void __fastcall DoItemCreateEditor(TEasyItem* Item, _di_IEasyCellEditor &Editor); + virtual void __fastcall DoItemCustomView(TEasyItem* Item, TEasyListStyle ViewStyle, TMetaClass* &View); + virtual void __fastcall DoItemDblClick(Mpcommonutilities::TCommonMouseButton Button, const Types::TPoint &MousePos, const TEasyHitInfoItem &HitInfo); + virtual void __fastcall DoItemEditBegin(TEasyItem* Item, int &Column, bool &Allow); + virtual void __fastcall DoItemEdited(TEasyItem* Item, Variant &NewValue, bool &Accept); + virtual void __fastcall DoItemEditEnd(TEasyItem* Item); + virtual void __fastcall DoItemGetEditMenu(TEasyBaseEditor* Editor, Menus::TPopupMenu* &Menu); + virtual void __fastcall DoItemEnableChanged(TEasyItem* Item); + virtual void __fastcall DoItemEnableChanging(TEasyItem* Item, bool &Allow); + virtual void __fastcall DoItemFreeing(TEasyItem* Item); + virtual void __fastcall DoItemFocusChanged(TEasyItem* Item); + virtual void __fastcall DoItemFocusChanging(TEasyItem* Item, bool &Allow); + virtual void __fastcall DoItemGetCaption(TEasyItem* Item, int Column, WideString &ACaption); + virtual void __fastcall DoItemGetEditCaption(TEasyItem* Item, TEasyColumn* Column, WideString &Caption); + virtual void __fastcall DoItemGetGroupKey(TEasyItem* Item, int FocusedColumn, unsigned &Key); + virtual void __fastcall DoItemGetImageIndex(TEasyItem* Item, int Column, TEasyImageKind ImageKind, Mpcommonobjects::TCommonImageIndexInteger &ImageIndex); + virtual void __fastcall DoItemGetImageList(TEasyItem* Item, int Column, Imglist::TCustomImageList* &ImageList); + virtual void __fastcall DoItemGetStateImageList(TEasyItem* Item, int Column, Imglist::TCustomImageList* &ImageList); + virtual void __fastcall DoItemGetTileDetail(TEasyItem* Item, int Line, int &Detail); + virtual void __fastcall DoItemGetTileDetailCount(TEasyItem* Item, int &Count); + virtual void __fastcall DoItemHotTrack(TEasyItem* Item, TEasyHotTrackState State, const Types::TPoint &MousePos); + virtual void __fastcall DoItemImageDraw(TEasyItem* Item, TEasyColumn* Column, Graphics::TCanvas* ACanvas, const TEasyRectArrayObject &RectArray, TEasyAlphaBlender* AlphaBlender); + virtual void __fastcall DoItemImageGetSize(TEasyItem* Item, TEasyColumn* Column, int &ImageWidth, int &ImageHeight); + virtual void __fastcall DoItemImageDrawIsCustom(TEasyColumn* Column, TEasyItem* Item, bool &IsCustom); + virtual void __fastcall DoItemInitialize(TEasyItem* Item); + virtual void __fastcall DoItemLoadFromStream(TEasyItem* Item, Classes::TStream* S, int Version); + virtual void __fastcall DoItemMouseDown(TEasyItem* Item, Mpcommonutilities::TCommonMouseButton Button, bool &DoDefault); + virtual void __fastcall DoItemMouseUp(TEasyItem* Item, Mpcommonutilities::TCommonMouseButton Button, bool &DoDefault); + virtual void __fastcall DoItemPaintText(TEasyItem* Item, int Position, Graphics::TCanvas* ACanvas); + virtual void __fastcall DoItemSaveToStream(TEasyItem* Item, Classes::TStream* S, int Version); + virtual void __fastcall DoItemSelectionChanged(TEasyItem* Item); + virtual void __fastcall DoItemSelectionChanging(TEasyItem* Item, bool &Allow); + virtual void __fastcall DoItemSelectionsChanged(void); + virtual void __fastcall DoItemSetCaption(TEasyItem* Item, int Column, const WideString Caption); + virtual void __fastcall DoItemSetGroupKey(TEasyItem* Item, int FocusedColumn, unsigned Key); + virtual void __fastcall DoItemSetImageIndex(TEasyItem* Item, int Column, TEasyImageKind ImageKind, int ImageIndex); + virtual void __fastcall DoItemSetTileDetail(TEasyItem* Item, int Line, int Detail); + virtual void __fastcall DoItemSetTileDetailCount(TEasyItem* Item, int Detail); + virtual void __fastcall DoItemStructureChange(void); + virtual void __fastcall DoItemThumbnailDraw(TEasyItem* Item, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + virtual void __fastcall DoItemVisibilityChanged(TEasyItem* Item); + virtual void __fastcall DoItemVisibilityChanging(TEasyItem* Item, bool &Allow); + DYNAMIC bool __fastcall DoMouseWheel(Classes::TShiftState Shift, int WheelDelta, const Types::TPoint &MousePos); + DYNAMIC bool __fastcall DoMouseWheelDown(Classes::TShiftState Shift, const Types::TPoint &MousePos); + DYNAMIC bool __fastcall DoMouseWheelUp(Classes::TShiftState Shift, const Types::TPoint &MousePos); + virtual void __fastcall DoKeyAction(Word &CharCode, Classes::TShiftState &Shift, bool &DoDefault); + virtual void __fastcall DoOLEDragEnd(_di_IDataObject ADataObject, Mpcommonutilities::TCommonOLEDragResult DragResult, Mpcommonutilities::TCommonDropEffects ResultEffect, Mpcommonutilities::TCommonKeyStates KeyStates); + virtual void __fastcall DoOLEDragStart(_di_IDataObject ADataObject, Mpcommonutilities::TCommonDropEffects &AvailableEffects, bool &AllowDrag); + virtual void __fastcall DoOLEDropSourceQueryContineDrag(bool EscapeKeyPressed, Mpcommonutilities::TCommonKeyStates KeyStates, TEasyQueryDragResult &QueryResult); + virtual void __fastcall DoOLEDropSourceGiveFeedback(Mpcommonutilities::TCommonDropEffects Effect, bool &UseDefaultCursors); + virtual void __fastcall DoOLEDropTargetDragEnter(_di_IDataObject DataObject, Mpcommonutilities::TCommonKeyStates KeyState, const Types::TPoint &WindowPt, Mpcommonutilities::TCommonDropEffects AvailableEffects, Mpcommonutilities::TCommonDropEffect &DesiredEffect); + virtual void __fastcall DoOLEDropTargetDragOver(Mpcommonutilities::TCommonKeyStates KeyState, const Types::TPoint &WindowPt, Mpcommonutilities::TCommonDropEffects AvailableEffects, Mpcommonutilities::TCommonDropEffect &DesiredEffect); + virtual void __fastcall DoOLEDropTargetDragLeave(void); + virtual void __fastcall DoOLEDropTargetDragDrop(_di_IDataObject DataObject, Mpcommonutilities::TCommonKeyStates KeyState, const Types::TPoint &WindowPt, Mpcommonutilities::TCommonDropEffects AvailableEffects, Mpcommonutilities::TCommonDropEffect &DesiredEffect, bool &Handled); + virtual void __fastcall DoOLEGetCustomFormats(Mpdataobject::TFormatEtcArray &Formats); + virtual void __fastcall DoOLEGetData(const tagFORMATETC &FormatEtcIn, tagSTGMEDIUM &Medium, bool &Handled); + virtual void __fastcall DoOLEGetDataObject(_di_IDataObject &DataObject); + virtual void __fastcall DoPaintBkGnd(Graphics::TCanvas* ACanvas, const Types::TRect &AWindowRect, TEasyAlphaBlender* AlphaBlender, bool &DoDefault); + virtual void __fastcall DoPaintHeaderBkGnd(Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool &Handled); + virtual void __fastcall DoPaintRect(Graphics::TCanvas* ACanvas, const Types::TRect &WindowClipRect, bool SelectedOnly); + virtual void __fastcall DoQueryOLEData(const tagFORMATETC &FormatEtcIn, bool &FormatAvailable, bool &Handled); + virtual void __fastcall DoResize(int DeltaX, int DeltaY); + virtual void __fastcall DoScroll(int DeltaX, int DeltaY); + virtual void __fastcall DoThreadCallback(Mpthreadmanager::TWMThreadRequest &Msg); + virtual void __fastcall DoUpdate(void); + virtual void __fastcall DoViewChange(void); + virtual void __fastcall DestroyWnd(void); + bool __fastcall DragInitiated(void); + void __fastcall FinalizeDrag(const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState); + virtual void __fastcall HandleDblClick(Mpcommonutilities::TCommonMouseButton Button, const Messages::TWMMouse &Msg); + virtual void __fastcall HandleKeyDown(const Messages::TWMKey &Msg); + virtual void __fastcall HandleMouseDown(Mpcommonutilities::TCommonMouseButton Button, const Messages::TWMMouse &Msg); + virtual void __fastcall HandleMouseUp(Mpcommonutilities::TCommonMouseButton Button, const Messages::TWMMouse &Msg); + void __fastcall InitializeDragPendings(TEasyItem* HitItem, const Types::TPoint &WindowPoint, Mpcommonutilities::TCommonKeyStates KeyState, bool AllowDrag, bool AllowDragRect); + HIDESBASE bool __fastcall IsFontStored(void); + bool __fastcall IsHeaderMouseMsg(Types::TSmallPoint MousePos, bool ForceTest = false); + void __fastcall MarkSelectedCut(void); + virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation); + virtual void __fastcall PasteFromClipboard(void); + void __fastcall ResizeBackBits(int NewWidth, int NewHeight); + virtual void __fastcall SetView(TEasyListStyle Value); + HIDESBASE MESSAGE void __fastcall WMChar(Messages::TWMKey &Msg); + MESSAGE void __fastcall WMClose(Messages::TWMNoParams &Msg); + HIDESBASE MESSAGE void __fastcall WMContextMenu(Messages::TMessage &Msg); + HIDESBASE MESSAGE void __fastcall WMDestroy(Messages::TMessage &Msg); + MESSAGE void __fastcall WMEasyThreadCallback(Mpthreadmanager::TWMThreadRequest &Msg); + HIDESBASE MESSAGE void __fastcall WMEraseBkGnd(Messages::TWMEraseBkgnd &Msg); + MESSAGE void __fastcall WMGetDlgCode(Messages::TWMNoParams &Msg); + HIDESBASE MESSAGE void __fastcall WMHScroll(Messages::TWMScroll &Msg); + HIDESBASE MESSAGE void __fastcall WMKeyDown(Messages::TWMKey &Msg); + HIDESBASE MESSAGE void __fastcall WMKillFocus(Messages::TWMKillFocus &Msg); + HIDESBASE MESSAGE void __fastcall WMLButtonDblClk(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMLButtonDown(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMLButtonUp(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMMButtonDblClk(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMMButtonDown(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMMButtonUp(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMMouseActivate(Messages::TWMMouseActivate &Msg); + HIDESBASE MESSAGE void __fastcall WMMouseMove(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Msg); + HIDESBASE MESSAGE void __fastcall WMNCCalcSize(Messages::TWMNCCalcSize &Msg); + HIDESBASE MESSAGE void __fastcall WMNCPaint(Messages::TWMNCPaint &Msg); + HIDESBASE MESSAGE void __fastcall WMRButtonDblClk(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMRButtonDown(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMRButtonUp(Messages::TWMMouse &Msg); + HIDESBASE MESSAGE void __fastcall WMSetCursor(Messages::TWMSetCursor &Msg); + HIDESBASE MESSAGE void __fastcall WMSetFocus(Messages::TWMSetFocus &Msg); + HIDESBASE MESSAGE void __fastcall WMSize(Messages::TWMSize &Msg); + MESSAGE void __fastcall WMTabMoveFocus(Messages::TMessage &Msg); + HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Msg); + HIDESBASE MESSAGE void __fastcall WMWindowPosChanged(Messages::TWMWindowPosMsg &Msg); + HIDESBASE MESSAGE void __fastcall WMWindowPosChanging(Messages::TWMWindowPosMsg &Msg); + __property bool AllowHiddenCheckedItems = {read=FAllowInvisibleCheckedItems, write=FAllowInvisibleCheckedItems, default=0}; + __property Graphics::TBitmap* BackBits = {read=FBackBits, write=FBackBits}; + __property TEasyBackgroundManager* BackGround = {read=FBackGround, write=SetBackGround}; + __property BevelInner = {index=0, default=1}; + __property bool CacheDoubleBufferBits = {read=FCacheDoubleBufferBits, write=SetCacheDoubleBufferBits, nodefault}; + __property TEasyCheckManager* CheckManager = {read=FCheckManager, write=FCheckManager}; + __property Color = {default=-16777211}; + __property TEasyCellSizes* CellSizes = {read=FCellSizes, write=FCellSizes}; + __property Byte DisabledBlendAlpha = {read=FDisabledBlendAlpha, write=FDisabledBlendAlpha, default=128}; + __property Graphics::TColor DisabledBlendColor = {read=FDisabledBlendColor, write=FDisabledBlendColor, default=-16777211}; + __property TEasyOLEDragManager* DragManager = {read=FDragManager, write=FDragManager}; + __property TEasyDragRectManager* DragRect = {read=FDragRect, write=FDragRect}; + __property _di_IDropTarget DropTarget = {read=FDropTarget, write=FDropTarget}; + __property TEasyEditManager* EditManager = {read=FEditManager, write=FEditManager}; + __property TEasyGestureManager* Gesture = {read=FGesture, write=FGesture}; + __property TEasyGlobalImageManager* GlobalImages = {read=FGlobalImages, write=FGlobalImages}; + __property Graphics::TBitmap* GroupCollapseButton = {read=GetGroupCollapseImage, write=SetGroupCollapseImage}; + __property Graphics::TBitmap* GroupExpandButton = {read=GetGroupExpandImage, write=SetGroupExpandImage}; + __property Graphics::TFont* GroupFont = {read=FGroupFont, write=SetGroupFont, stored=IsFontStored}; + __property TEasyGroups* Groups = {read=FGroups, write=FGroups}; + __property TEasyHeader* Header = {read=FHeader, write=FHeader}; + __property Classes::TAlignment HintAlignment = {read=FHintAlignment, write=FHintAlignment, nodefault}; + __property TEasyHintInfoRec HintData = {read=FHintData, write=FHintData}; + __property TEasyHintInfo* HintInfo = {read=FHintInfo, write=FHintInfo}; + __property TEasyHintType HintType = {read=GetHintType, write=SetHintType, default=0}; + __property TEasyHotTrackManager* HotTrack = {read=FHotTrack, write=FHotTrack}; + __property Imglist::TCustomImageList* ImagesGroup = {read=FImagesGroup, write=SetImagesGroup}; + __property Imglist::TCustomImageList* ImagesSmall = {read=FImagesSmall, write=SetImagesSmall}; + __property Imglist::TCustomImageList* ImagesLarge = {read=FImagesLarge, write=SetImagesLarge}; + __property Imglist::TCustomImageList* ImagesExLarge = {read=FImagesExLarge, write=SetImagesExLarge}; + __property Imglist::TCustomImageList* ImagesState = {read=FImagesState, write=SetImagesState}; + __property TEasyIncrementalSearchManager* IncrementalSearch = {read=FIncrementalSearch, write=FIncrementalSearch}; + __property TEasyGlobalItems* Items = {read=FItems}; + __property Types::TSmallPoint LastMousePos = {read=FLastMousePos, write=FLastMousePos}; + __property Graphics::TCanvas* NCCanvas = {read=FNCCanvas, write=FNCCanvas}; + __property TAfterPaintEvent OnAfterPaint = {read=FOnAfterPaint, write=FOnAfterPaint}; + __property TAutoGroupGetKeyEvent OnAutoGroupGetKey = {read=FOnAutoGroupGetKey, write=FOnAutoGroupGetKey}; + __property TAutoSortGroupCreateEvent OnAutoSortGroupCreate = {read=FOnAutoSortGroupCreate, write=FOnAutoSortGroupCreate}; + __property TEasyClipboardEvent OnClipboardCopy = {read=FOnClipboardCopy, write=FOnClipboardCopy}; + __property TEasyClipboardCutEvent OnClipboardCut = {read=FOnClipboardCut, write=FOnClipboardCut}; + __property TEasyClipboardEvent OnClipboardPaste = {read=FOnClipboardPaste, write=FOnClipboardPaste}; + __property TColumnCheckChangeEvent OnColumnCheckChanged = {read=FOnColumnCheckChange, write=FOnColumnCheckChange}; + __property TColumnCheckChangingEvent OnColumnCheckChanging = {read=FOnColumnCheckChanging, write=FOnColumnCheckChanging}; + __property TColumnClickEvent OnColumnClick = {read=FOnColumnClick, write=FOnColumnClick}; + __property TColumnContextMenuEvent OnColumnContextMenu = {read=FOnColumnContextMenu, write=FOnColumnContextMenu}; + __property TColumnCustomViewEvent OnColumnCustomView = {read=FOnColumnCustomView, write=FOnColumnCustomView}; + __property TColumnDblClickEvent OnColumnDblClick = {read=FOnColumnDblClick, write=FOnColumnDblClick}; + __property TColumnDropDownButtonClickEvent OnColumnDropDownButtonClick = {read=FOnColumnDropDownButtonClick, write=FOnColumnDropDownButtonClick}; + __property TColumnEnableChangeEvent OnColumnEnableChanged = {read=FOnColumnEnableChange, write=FOnColumnEnableChange}; + __property TColumnEnableChangingEvent OnColumnEnableChanging = {read=FOnColumnEnableChanging, write=FOnColumnEnableChanging}; + __property TColumnFocusChangeEvent OnColumnFocusChanged = {read=FOnColumnFocusChanged, write=FOnColumnFocusChanged}; + __property TColumnFocusChangingEvent OnColumnFocusChanging = {read=FOnColumnFocusChanging, write=FOnColumnFocusChanging}; + __property TColumnFreeingEvent OnColumnFreeing = {read=FOnColumnFreeing, write=FOnColumnFreeing}; + __property TColumnGetCaptionEvent OnColumnGetCaption = {read=FOnColumnGetCaption, write=FOnColumnGetCaption}; + __property TColumnGetImageIndexEvent OnColumnGetImageIndex = {read=FOnColumnGetImageIndex, write=FOnColumnGetImageIndex}; + __property TColumnGetImageListEvent OnColumnGetImageList = {read=FOnColumnGetImageList, write=FOnColumnGetImageList}; + __property TColumnGetDetailEvent OnColumnGetDetail = {read=FOnColumnGetDetail, write=FOnColumnGetDetail}; + __property TColumnGetDetailCountEvent OnColumnGetDetailCount = {read=FOnColumnGetDetailCount, write=FOnColumnGetDetailCount}; + __property TColumnImageDrawEvent OnColumnImageDraw = {read=FOnColumnImageDraw, write=FOnColumnImageDraw}; + __property TColumnImageGetSizeEvent OnColumnImageGetSize = {read=FOnColumnImageGetSize, write=FOnColumnImageGetSize}; + __property TColumnImageDrawIsCustomEvent OnColumnImageDrawIsCustom = {read=FOnColumnImageDrawIsCustom, write=FOnColumnImageDrawIsCustom}; + __property TColumnInitializeEvent OnColumnInitialize = {read=FOnColumnInitialize, write=FOnColumnInitialize}; + __property TEasyColumnLoadFromStreamEvent OnColumnLoadFromStream = {read=FOnColumnLoadFromStream, write=FOnColumnLoadFromStream}; + __property TColumnPaintTextEvent OnColumnPaintText = {read=FOnColumnPaintText, write=FOnColumnPaintText}; + __property TEasyColumnSaveToStreamEvent OnColumnSaveToStream = {read=FOnColumnSaveToStream, write=FOnColumnSaveToStream}; + __property TColumnSelectionChangeEvent OnColumnSelectionChanged = {read=FOnColumnSelectionChanged, write=FOnColumnSelectionChanged}; + __property TColumnSelectionChangingEvent OnColumnSelectionChanging = {read=FOnColumnSelectionChanging, write=FOnColumnSelectionChanging}; + __property TColumnSetCaptionEvent OnColumnSetCaption = {read=FOnColumnSetCaption, write=FOnColumnSetCaption}; + __property TColumnSetImageIndexEvent OnColumnSetImageIndex = {read=FOnColumnSetImageIndex, write=FOnColumnSetImageIndex}; + __property TColumnSetDetailEvent OnColumnSetDetail = {read=FOnColumnSetDetail, write=FOnColumnSetDetail}; + __property Classes::TNotifyEvent OnColumnStructureChange = {read=FOnColumnStructureChange, write=FOnColumnStructureChange}; + __property TColumnThumbnailDrawEvent OnColumnThumbnailDraw = {read=FOnColumnThumbnailDraw, write=FOnColumnThumbnailDraw}; + __property TColumnSizeChangedEvent OnColumnSizeChanged = {read=FOnColumnSizeChanged, write=FOnColumnSizeChanged}; + __property TColumnSizeChangingEvent OnColumnSizeChanging = {read=FOnColumnSizeChanging, write=FOnColumnSizeChanging}; + __property TColumnVisibilityChangeEvent OnColumnVisibilityChanged = {read=FOnColumnVisibilityChanged, write=FOnColumnVisibilityChanged}; + __property TColumnVisibilityChangingEvent OnColumnVisibilityChanging = {read=FOnColumnVisibilityChanging, write=FOnColumnVisibilityChanging}; + __property TContextMenuEvent OnContextMenu = {read=FOnContextMenu, write=FOnContextMenu}; + __property TCustomGridEvent OnCustomGrid = {read=FOnCustomGrid, write=FOnCustomGrid}; + __property TDblClickEvent OnDblClick = {read=FOnDblClick, write=FOnDblClick}; + __property TGetDragImageEvent OnGetDragImage = {read=FOnGetDragImage, write=FOnGetDragImage}; + __property TGroupClickEvent OnGroupClick = {read=FOnGroupClick, write=FOnGroupClick}; + __property TGroupCollapseEvent OnGroupCollapse = {read=FOnGroupCollapse, write=FOnGroupCollapse}; + __property TGroupCollapsingEvent OnGroupCollapsing = {read=FOnGroupCollapsing, write=FOnGroupCollapsing}; + __property TGroupCompareEvent OnGroupCompare = {read=FOnGroupCompare, write=FOnGroupCompare}; + __property TGroupContextMenuEvent OnGroupContextMenu = {read=FOnGroupContextMenu, write=FOnGroupContextMenu}; + __property TGroupCustomViewEvent OnGroupCustomView = {read=FOnGroupCustomView, write=FOnGroupCustomView}; + __property TGroupDblClickEvent OnGroupDblClick = {read=FOnGroupDblClick, write=FOnGroupDblClick}; + __property TGroupExpandEvent OnGroupExpand = {read=FOnGroupExpand, write=FOnGroupExpand}; + __property TGroupExpandingEvent OnGroupExpanding = {read=FOnGroupExpanding, write=FOnGroupExpanding}; + __property TGroupFocusChangeEvent OnGroupFocusChanged = {read=FOnGroupFocusChanged, write=FOnGroupFocusChanged}; + __property TGroupFocusChangingEvent OnGroupFocusChanging = {read=FOnGroupFocusChanging, write=FOnGroupFocusChanging}; + __property TGroupFreeingEvent OnGroupFreeing = {read=FOnGroupFreeing, write=FOnGroupFreeing}; + __property TGroupGetCaptionEvent OnGroupGetCaption = {read=FOnGroupGetCaption, write=FOnGroupGetCaption}; + __property TGroupGetImageIndexEvent OnGroupGetImageIndex = {read=FOnGroupGetImageIndex, write=FOnGroupGetImageIndex}; + __property TGroupGetImageListEvent OnGroupGetImageList = {read=FOnGroupGetImageList, write=FOnGroupGetImageList}; + __property TGroupGetDetailEvent OnGroupGetDetail = {read=FOnGroupGetDetailIndex, write=FOnGroupGetDetailIndex}; + __property TGroupGetDetailCountEvent OnGroupGetDetailCount = {read=FOnGroupGetDetailCount, write=FOnGroupGetDetailCount}; + __property TGroupHotTrackEvent OnGroupHotTrack = {read=FOnGroupHotTrack, write=FOnGroupHotTrack}; + __property TGroupImageDrawEvent OnGroupImageDraw = {read=FOnGroupImageDrawEvent, write=FOnGroupImageDrawEvent}; + __property TGroupImageGetSizeEvent OnGroupImageGetSize = {read=FGroupImageGetSize, write=FGroupImageGetSize}; + __property TGroupImageDrawIsCustomEvent OnGroupImageDrawIsCustom = {read=FOnGroupImageDrawIsCustom, write=FOnGroupImageDrawIsCustom}; + __property TGroupInitializeEvent OnGroupInitialize = {read=FOnGroupInitialize, write=FOnGroupInitialize}; + __property TGroupLoadFromStreamEvent OnGroupLoadFromStream = {read=FOnGroupLoadFromStream, write=FOnGroupLoadFromStream}; + __property TGroupPaintTextEvent OnGroupPaintText = {read=FOnGroupPaintText, write=FOnGroupPaintText}; + __property TGroupSaveToStreamEvent OnGroupSaveToStream = {read=FOnGroupSaveToStream, write=FOnGroupSaveToStream}; + __property TGroupSelectionChangeEvent OnGroupSelectionChanged = {read=FOnGroupSelectionChanged, write=FOnGroupSelectionChanged}; + __property TGroupSelectionChangingEvent OnGroupSelectionChanging = {read=FOnGroupSelectionChanging, write=FOnGroupSelectionChanging}; + __property TGroupSetCaptionEvent OnGroupSetCaption = {read=FOnGroupSetCaption, write=FOnGroupSetCaption}; + __property TGroupSetImageIndexEvent OnGroupSetImageIndex = {read=FOnGroupSetImageIndex, write=FOnGroupSetImageIndex}; + __property TGroupSetDetailEvent OnGroupSetDetail = {read=FOnGroupSetDetail, write=FOnGroupSetDetail}; + __property Classes::TNotifyEvent OnGroupStructureChange = {read=FOnGroupStructureChange, write=FOnGroupStructureChange}; + __property TGroupThumbnailDrawEvent OnGroupThumbnailDraw = {read=FOnGroupThumbnailDraw, write=FOnGroupThumbnailDraw}; + __property TGroupVisibilityChangeEvent OnGroupVisibilityChanged = {read=FOnGroupVisibilityChanged, write=FOnGroupVisibilityChanged}; + __property TGroupVisibilityChangingEvent OnGroupVisibilityChanging = {read=FOnGroupVisibilityChanging, write=FOnGroupVisibilityChanging}; + __property THeaderDblClickEvent OnHeaderDblClick = {read=FOnHeaderDblClick, write=FOnHeaderDblClick}; + __property THeaderMouseEvent OnHeaderMouseDown = {read=FOnHeaderMouseDown, write=FOnHeaderMouseDown}; + __property Controls::TMouseMoveEvent OnHeaderMouseMove = {read=FOnHeaderMouseMove, write=FOnHeaderMouseMove}; + __property THeaderMouseEvent OnHeaderMouseUp = {read=FOnHeaderMouseUp, write=FOnHeaderMouseUp}; + __property THintCustomDrawEvent OnHintCustomDraw = {read=FOnHintCustomDraw, write=FOnHintCustomDraw}; + __property THintCustomizeInfoEvent OnHintCustomInfo = {read=FOnHintCustomInfo, write=FOnHintCustomInfo}; + __property THintPauseTimeEvent OnHintPauseTime = {read=FOnHintPauseTime, write=FOnHintPauseTime}; + __property THintPopupEvent OnHintPopup = {read=FOnHintPopup, write=FOnHintPopup}; + __property TIncrementalSearchEvent OnIncrementalSearch = {read=FOnIncrementalSearch, write=FOnIncrementalSearch}; + __property TItemCheckChangeEvent OnItemCheckChange = {read=FOnItemCheckChange, write=FOnItemCheckChange}; + __property TItemCheckChangingEvent OnItemCheckChanging = {read=FOnItemCheckChanging, write=FOnItemCheckChanging}; + __property TItemClickEvent OnItemClick = {read=FOnItemClick, write=FOnItemClick}; + __property TItemCompareEvent OnItemCompare = {read=FOnItemCompare, write=FOnItemCompare}; + __property TItemContextMenuEvent OnItemContextMenu = {read=FOnItemContextMenu, write=FOnItemContextMenu}; + __property TItemCreateEditorEvent OnItemCreateEditor = {read=FOnItemCreateEditor, write=FOnItemCreateEditor}; + __property TItemCustomViewEvent OnItemCustomView = {read=FOnItemCustomView, write=FOnItemCustomView}; + __property TItemDblClickEvent OnItemDblClick = {read=FOnItemDblClick, write=FOnItemDblClick}; + __property TItemEditBegin OnItemEditBegin = {read=FOnItemEditBegin, write=FOnItemEditBegin}; + __property TItemEditedEvent OnItemEdited = {read=FOnItemEdited, write=FOnItemEdited}; + __property TItemEditEnd OnItemEditEnd = {read=FOnItemEditEnd, write=FOnItemEditEnd}; + __property TItemEnableChangeEvent OnItemEnableChange = {read=FOnItemEnableChange, write=FOnItemEnableChange}; + __property TItemEnableChangingEvent OnItemEnableChanging = {read=FOnItemEnableChanging, write=FOnItemEnableChanging}; + __property TItemFreeingEvent OnItemFreeing = {read=FOnItemFreeing, write=FOnItemFreeing}; + __property TItemFocusChangeEvent OnItemFocusChanged = {read=FOnItemFocusChanged, write=FOnItemFocusChanged}; + __property TItemFocusChangingEvent OnItemFocusChanging = {read=FOnItemFocusChanging, write=FOnItemFocusChanging}; + __property TItemGetCaptionEvent OnItemGetCaption = {read=FOnItemGetCaption, write=FOnItemGetCaption}; + __property TEasyItemGetCaptionEvent OnItemGetEditCaption = {read=FOnItemGetEditCaption, write=FOnItemGetEditCaption}; + __property TItemGetEditMenuEvent OnItemGetEditMenu = {read=FOnItemGetEditMenu, write=FOnItemGetEditMenu}; + __property TItemGetGroupKeyEvent OnItemGetGroupKey = {read=FOnItemGetGroupKey, write=FOnItemGetGroupKey}; + __property TItemHotTrackEvent OnItemHotTrack = {read=FOnItemHotTrack, write=FOnItemHotTrack}; + __property TItemGetImageIndexEvent OnItemGetImageIndex = {read=FOnItemGetImageIndex, write=FOnItemGetImageIndex}; + __property TItemGetImageListEvent OnItemGetImageList = {read=FOnItemGetImageList, write=FOnItemGetImageList}; + __property TItemGetImageListEvent OnItemGetStateImageList = {read=FOnItemGetStateImageList, write=FOnItemGetStateImageList}; + __property TItemGetTileDetailEvent OnItemGetTileDetail = {read=FOnItemGetTileDetailIndex, write=FOnItemGetTileDetailIndex}; + __property TItemGetTileDetailCountEvent OnItemGetTileDetailCount = {read=FOnItemGetTileDetailCount, write=FOnItemGetTileDetailCount}; + __property TItemImageDrawEvent OnItemImageDraw = {read=FOnItemImageDraw, write=FOnItemImageDraw}; + __property TItemImageGetSizeEvent OnItemImageGetSize = {read=FOnItemImageGetSize, write=FOnItemImageGetSize}; + __property TItemImageDrawIsCustomEvent OnItemImageDrawIsCustom = {read=FOnItemImageDrawIsCustom, write=FOnItemImageDrawIsCustom}; + __property TItemLoadFromStreamEvent OnItemLoadFromStream = {read=FOnItemLoadFromStream, write=FOnItemLoadFromStream}; + __property TItemInitializeEvent OnItemInitialize = {read=FOnItemInitialize, write=FOnItemInitialize}; + __property TItemMouseDownEvent OnItemMouseDown = {read=FOnItemMouseDown, write=FOnItemMouseDown}; + __property TItemMouseUpEvent OnItemMouseUp = {read=FOnItemMouseUp, write=FOnItemMouseUp}; + __property TItemPaintTextEvent OnItemPaintText = {read=FOnItemPaintText, write=FOnItemPaintText}; + __property TItemSaveToStreamEvent OnItemSaveToStream = {read=FOnItemSaveToStream, write=FOnItemSaveToStream}; + __property TItemSelectionChangeEvent OnItemSelectionChanged = {read=FOnItemSelectionChanged, write=FOnItemSelectionChanged}; + __property TItemSelectionChangingEvent OnItemSelectionChanging = {read=FOnItemSelectionChanging, write=FOnItemSelectionChanging}; + __property TEasyItemSelectionsChangedEvent OnItemSelectionsChanged = {read=FOnItemSelectionsChanged, write=FOnItemSelectionsChanged}; + __property TItemSetCaptionEvent OnItemSetCaption = {read=FOnItemSetCaption, write=FOnItemSetCaption}; + __property TItemSetGroupKeyEvent OnItemSetGroupKey = {read=FOnItemSetGroupKey, write=FOnItemSetGroupKey}; + __property TItemSetImageIndexEvent OnItemSetImageIndex = {read=FOnItemSetImageIndex, write=FOnItemSetImageIndex}; + __property TItemSetTileDetailEvent OnItemSetTileDetail = {read=FOnItemSetTileDetail, write=FOnItemSetTileDetail}; + __property Classes::TNotifyEvent OnItemStructureChange = {read=FOnItemStructureChange, write=FOnItemStructureChange}; + __property TItemThumbnailDrawEvent OnItemThumbnailDraw = {read=FOnItemThumbnailDraw, write=FOnItemThumbnailDraw}; + __property TItemVisibilityChangeEvent OnItemVisibilityChanged = {read=FOnItemVisibilityChanged, write=FOnItemVisibilityChanged}; + __property TItemVisibilityChangingEvent OnItemVisibilityChanging = {read=FOnItemVisibilityChanging, write=FOnItemVisibilityChanging}; + __property TEasyKeyActionEvent OnKeyAction = {read=FOnKeyAction, write=FOnKeyAction}; + __property TEasyGestureEvent OnMouseGesture = {read=FOnMouseGesture, write=FOnMouseGesture}; + __property TOLEDropSourceDragEndEvent OnOLEDragEnd = {read=FOnOLEDragEnd, write=FOnOLEDragEnd}; + __property TOLEDropSourceDragStartEvent OnOLEDragStart = {read=FOnOLEDragStart, write=FOnOLEDragStart}; + __property TOLEDropTargetDragEnterEvent OnOLEDragEnter = {read=FOnOLEDragEnter, write=FOnOLEDragEnter}; + __property TOLEDropTargetDragOverEvent OnOLEDragOver = {read=FOnOLEDragOver, write=FOnOLEDragOver}; + __property TOLEDropTargetDragLeaveEvent OnOLEDragLeave = {read=FOnOLEDragLeave, write=FOnOLEDragLeave}; + __property TOLEDropTargetDragDropEvent OnOLEDragDrop = {read=FOnOLEDragDrop, write=FOnOLEDragDrop}; + __property TOLEGetCustomFormatsEvent OnOLEGetCustomFormats = {read=FOnOLEGetCustomFormats, write=FOnOLEGetCustomFormats}; + __property TOLEGetDataEvent OnOLEGetData = {read=FOnOLEGetData, write=FOnOLEGetData}; + __property FOLEGetDataObjectEvent OnOLEGetDataObject = {read=FOnOLEGetDataObject, write=FOnOLEGetDataObject}; + __property TOLEDropSourceQueryContineDragEvent OnOLEQueryContineDrag = {read=FOnOLEQueryContineDrag, write=FOnOLEQueryContineDrag}; + __property TOLEDropSourceGiveFeedbackEvent OnOLEGiveFeedback = {read=FOnOLEGiveFeedback, write=FOnOLEGiveFeedback}; + __property TOLEQueryDataEvent OnOLEQueryData = {read=FOnOLEQueryData, write=FOnOLEQueryData}; + __property TPaintBkGndEvent OnPaintBkGnd = {read=FOnPaintBkGnd, write=FOnPaintBkGnd}; + __property TPaintHeaderBkGndEvent OnPaintHeaderBkGnd = {read=FOnPaintHeaderBkGnd, write=FOnPaintHeaderBkGnd}; + __property TEasyScrollEvent OnScroll = {read=FOnScroll, write=FOnScroll}; + __property TViewChangedEvent OnViewChange = {read=FOnViewChange, write=FOnViewChange}; + __property TEasyPaintInfoBaseColumn* PaintInfoColumn = {read=GetPaintInfoColumn, write=SetPaintInfoColumn}; + __property TEasyPaintInfoBaseGroup* PaintInfoGroup = {read=GetPaintInfoGroup, write=SetPaintInfoGroup}; + __property TEasyPaintInfoBaseItem* PaintInfoItem = {read=GetPaintInfoItem, write=SetPaintInfoItem}; + __property ParentBackground = {default=0}; + __property ParentColor = {default=0}; + __property Menus::TPopupMenu* PopupMenuHeader = {read=FPopupMenuHeader, write=FPopupMenuHeader}; + __property Controls::TControlCanvas* ScratchCanvas = {read=GetScratchCanvas, write=FScratchCanvas}; + __property TEasyScrollbarManager* Scrollbars = {read=FScrollbars, write=FScrollbars}; + __property TEasySelectionManager* Selection = {read=FSelection, write=SetSelection}; + __property bool ShowGroupMargins = {read=FShowGroupMargins, write=SetShowGroupMargins, default=0}; + __property bool ShowInactive = {read=FShowInactive, write=SetShowInactive, default=0}; + __property bool ShowThemedBorder = {read=FShowThemedBorder, write=SetShowThemedBorder, default=1}; + __property TEasySortManager* Sort = {read=FSort, write=FSort}; + __property TabStop = {default=1}; + __property TEasyListStyle View = {read=FView, write=SetView, nodefault}; + __property TEasyDefaultWheelScroll WheelMouseDefaultScroll = {read=FWheelMouseDefaultScroll, write=FWheelMouseDefaultScroll, default=1}; + __property bool WheelMouseScrollModifierEnabled = {read=FWheelMouseScrollModifierEnabled, write=FWheelMouseScrollModifierEnabled, default=1}; + +public: + __fastcall virtual TCustomEasyListview(Classes::TComponent* AOwner); + __fastcall virtual ~TCustomEasyListview(void); + Types::TRect __fastcall ClientInViewportCoords(); + virtual bool __fastcall IsGrouped(void); + bool __fastcall IsThumbnailView(void); + bool __fastcall IsVertView(void); + bool __fastcall ScrollHeaderHorz(void); + void __fastcall AutoFitAllCells(bool VisibleOnly); + virtual void __fastcall BeginUpdate(void); + virtual void __fastcall EndUpdate(bool Invalidate = true); + virtual void __fastcall Loaded(void); + void __fastcall LoadFromFile(WideString FileName, Word Mode); + virtual void __fastcall LoadFromStream(Classes::TStream* S); + void __fastcall SaveToFile(WideString FileName, Word Mode); + virtual void __fastcall SaveToStream(Classes::TStream* S); + __property bool ForcePaint = {read=FForcePaint, write=FForcePaint, nodefault}; + __property TEasyControlStates States = {read=FStates, write=FStates, nodefault}; + __property TEasyItem* TopItem = {read=GetTopItem}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TCustomEasyListview(HWND ParentWindow) : Mpcommonobjects::TCommonCanvasControl(ParentWindow) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TEasyBaseEditor : public TEasyInterfacedPersistent +{ + typedef TEasyInterfacedPersistent inherited; + +private: + TEasyColumn* FEditColumn; + Controls::TWinControl* FEditor; + TEasyItem* FItem; + bool FModified; + Classes::TWndMethod FOldWndProc; + TEasyRectArrayObject FRectArray; + virtual Controls::TWinControl* __fastcall GetEditor(void); + TCustomEasyListview* __fastcall GetListview(void); + virtual void __fastcall SetEditor(const Controls::TWinControl* Value); + +protected: + virtual WideString __fastcall EditText(TEasyItem* Item, TEasyColumn* Column); + Graphics::TColor __fastcall GetEditorColor(void); + virtual void __fastcall CalculateEditorRect(WideString NewText, Types::TRect &NewRect) = 0 ; + virtual void __fastcall CreateEditor(Controls::TWinControl* &AnEditor, TEasyColumn* Column, Controls::TWinControl* Parent) = 0 ; + virtual Graphics::TFont* __fastcall GetEditorFont(void) = 0 ; + virtual Variant __fastcall GetText(void) = 0 ; + void __fastcall ResizeEditor(void); + __property TEasyColumn* EditColumn = {read=FEditColumn, write=FEditColumn}; + __property Controls::TWinControl* Editor = {read=GetEditor, write=SetEditor}; + __property TEasyItem* Item = {read=FItem, write=FItem}; + __property TCustomEasyListview* Listview = {read=GetListview}; + __property bool Modified = {read=FModified, write=FModified, nodefault}; + __property Classes::TWndMethod OldWndProc = {read=FOldWndProc, write=FOldWndProc}; + __property TEasyRectArrayObject RectArray = {read=FRectArray, write=FRectArray}; + +public: + bool __fastcall AcceptEdit(void); + void __fastcall ControlWndHookProc(Messages::TMessage &Message); + HWND __fastcall GetHandle(void); + bool __fastcall GetModified(void); + bool __fastcall PtInEditControl(const Types::TPoint &WindowPt); + void __fastcall Finalize(void); + void __fastcall Hide(void); + void __fastcall Initialize(TEasyItem* AnItem, TEasyColumn* Column); + virtual void __fastcall SelectAll(void) = 0 ; + virtual void __fastcall SetEditorFocus(void); + void __fastcall Show(void); + __property HWND Handle = {read=GetHandle, nodefault}; +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyBaseEditor(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyBaseEditor(void) : TEasyInterfacedPersistent() { } + #pragma option pop + +private: + void *__IEasyCellEditor; /* Easylistview::IEasyCellEditor */ + +public: + #if defined(MANAGED_INTERFACE_OPERATORS) + operator _di_IEasyCellEditor() + { + _di_IEasyCellEditor intf; + GetInterface(intf); + return intf; + } + #else + operator IEasyCellEditor*(void) { return (IEasyCellEditor*)&__IEasyCellEditor; } + #endif + +}; + + +class DELPHICLASS TEasyStringEditor; +class PASCALIMPLEMENTATION TEasyStringEditor : public TEasyBaseEditor +{ + typedef TEasyBaseEditor inherited; + +protected: + virtual void __fastcall CalculateEditorRect(WideString NewText, Types::TRect &NewRect); + virtual void __fastcall CreateEditor(Controls::TWinControl* &AnEditor, TEasyColumn* Column, Controls::TWinControl* Parent); + virtual Graphics::TFont* __fastcall GetEditorFont(void); + virtual Variant __fastcall GetText(); + virtual void __fastcall DoEditKeyDown(System::TObject* Sender, Word &Key, Classes::TShiftState Shift, bool &DoDefault); + void __fastcall OnEditKeyDown(System::TObject* Sender, Word &Key, Classes::TShiftState Shift); + +public: + virtual void __fastcall SelectAll(void); + virtual void __fastcall SetEditorFocus(void); +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyStringEditor(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyStringEditor(void) : TEasyBaseEditor() { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyMemoEditor; +class PASCALIMPLEMENTATION TEasyMemoEditor : public TEasyBaseEditor +{ + typedef TEasyBaseEditor inherited; + +protected: + virtual void __fastcall CalculateEditorRect(WideString NewText, Types::TRect &NewRect); + virtual void __fastcall CreateEditor(Controls::TWinControl* &AnEditor, TEasyColumn* Column, Controls::TWinControl* Parent); + virtual Graphics::TFont* __fastcall GetEditorFont(void); + virtual Variant __fastcall GetText(); + virtual void __fastcall DoEditKeyDown(System::TObject* Sender, Word &Key, Classes::TShiftState Shift, bool &DoDefault); + void __fastcall OnEditKeyDown(System::TObject* Sender, Word &Key, Classes::TShiftState Shift); + +public: + virtual void __fastcall SelectAll(void); + virtual void __fastcall SetEditorFocus(void); +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TEasyMemoEditor(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TEasyMemoEditor(void) : TEasyBaseEditor() { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyListview; +class PASCALIMPLEMENTATION TEasyListview : public TCustomEasyListview +{ + typedef TCustomEasyListview inherited; + +private: + HIDESBASE virtual TEasyPaintInfoColumn* __fastcall GetPaintInfoColumn(void); + HIDESBASE virtual TEasyPaintInfoGroup* __fastcall GetPaintInfoGroup(void); + HIDESBASE virtual TEasyPaintInfoItem* __fastcall GetPaintInfoItem(void); + HIDESBASE virtual void __fastcall SetPaintInfoColumn(const TEasyPaintInfoColumn* Value); + HIDESBASE virtual void __fastcall SetPaintInfoGroup(const TEasyPaintInfoGroup* Value); + HIDESBASE virtual void __fastcall SetPaintInfoItem(const TEasyPaintInfoItem* Value); + +public: + __property CheckManager ; + __property GlobalImages ; + __property Items ; + __property States ; + +__published: + __property Align = {default=0}; + __property AllowHiddenCheckedItems = {default=0}; + __property Anchors = {default=3}; + __property BackGround ; + __property BevelKind = {default=0}; + __property BevelInner = {index=0, default=1}; + __property BevelOuter = {index=1, default=1}; + __property BevelWidth = {default=1}; + __property BiDiMode ; + __property BorderWidth = {default=0}; + __property CacheDoubleBufferBits ; + __property CellSizes ; + __property Color = {default=-16777211}; + __property Constraints ; + __property Ctl3D ; + __property DisabledBlendAlpha = {default=128}; + __property DisabledBlendColor = {default=-16777211}; + __property EditManager ; + __property Gesture ; + __property ImagesState ; + __property UseDockManager = {default=1}; + __property DragKind = {default=0}; + __property DragManager ; + __property Font ; + __property GroupCollapseButton ; + __property GroupExpandButton ; + __property GroupFont ; + __property Groups ; + __property HintAlignment ; + __property HintType = {default=0}; + __property Header ; + __property HotTrack ; + __property IncrementalSearch ; + __property ImagesGroup ; + __property ImagesSmall ; + __property ImagesLarge ; + __property ImagesExLarge ; + __property TEasyPaintInfoColumn* PaintInfoColumn = {read=GetPaintInfoColumn, write=SetPaintInfoColumn}; + __property TEasyPaintInfoGroup* PaintInfoGroup = {read=GetPaintInfoGroup, write=SetPaintInfoGroup}; + __property TEasyPaintInfoItem* PaintInfoItem = {read=GetPaintInfoItem, write=SetPaintInfoItem}; + __property ParentBiDiMode = {default=1}; + __property ParentBackground = {default=0}; + __property ParentColor = {default=0}; + __property ParentCtl3D = {default=1}; + __property ParentFont = {default=1}; + __property ParentShowHint = {default=1}; + __property PopupMenu ; + __property PopupMenuHeader ; + __property Scrollbars ; + __property ShowGroupMargins = {default=0}; + __property ShowInactive = {default=0}; + __property ShowThemedBorder = {default=1}; + __property ShowHint ; + __property Selection ; + __property Sort ; + __property TabOrder = {default=-1}; + __property TabStop = {default=1}; + __property Themed = {default=1}; + __property View ; + __property Visible = {default=1}; + __property WheelMouseDefaultScroll = {default=1}; + __property WheelMouseScrollModifierEnabled = {default=1}; + __property OnAfterPaint ; + __property OnCanResize ; + __property OnClick ; + __property OnConstrainedResize ; + __property OnContextPopup ; + __property OnAutoGroupGetKey ; + __property OnAutoSortGroupCreate ; + __property OnClipboardCopy ; + __property OnClipboardCut ; + __property OnClipboardPaste ; + __property OnColumnCheckChanged ; + __property OnColumnCheckChanging ; + __property OnColumnClick ; + __property OnColumnContextMenu ; + __property OnColumnCustomView ; + __property OnColumnDblClick ; + __property OnColumnDropDownButtonClick ; + __property OnColumnEnableChanged ; + __property OnColumnEnableChanging ; + __property OnColumnFreeing ; + __property OnColumnGetCaption ; + __property OnColumnGetImageIndex ; + __property OnColumnGetImageList ; + __property OnColumnGetDetail ; + __property OnColumnGetDetailCount ; + __property OnColumnImageDraw ; + __property OnColumnImageGetSize ; + __property OnColumnImageDrawIsCustom ; + __property OnColumnInitialize ; + __property OnColumnLoadFromStream ; + __property OnColumnPaintText ; + __property OnColumnSaveToStream ; + __property OnColumnSelectionChanged ; + __property OnColumnSelectionChanging ; + __property OnColumnSetCaption ; + __property OnColumnSetImageIndex ; + __property OnColumnSetDetail ; + __property OnColumnSizeChanged ; + __property OnColumnSizeChanging ; + __property OnColumnStructureChange ; + __property OnColumnVisibilityChanged ; + __property OnColumnVisibilityChanging ; + __property OnCustomGrid ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDockDrop ; + __property OnDockOver ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEndUpdate ; + __property OnEnter ; + __property OnExit ; + __property OnGetDragImage ; + __property OnGetSiteInfo ; + __property OnGroupClick ; + __property OnGroupCollapse ; + __property OnGroupCollapsing ; + __property OnGroupCompare ; + __property OnGroupContextMenu ; + __property OnGroupCustomView ; + __property OnGroupDblClick ; + __property OnGroupExpand ; + __property OnGroupExpanding ; + __property OnGroupFreeing ; + __property OnGroupGetCaption ; + __property OnGroupGetImageIndex ; + __property OnGroupGetImageList ; + __property OnGroupGetDetail ; + __property OnGroupGetDetailCount ; + __property OnGroupImageDraw ; + __property OnGroupImageGetSize ; + __property OnGroupImageDrawIsCustom ; + __property OnGroupInitialize ; + __property OnGroupLoadFromStream ; + __property OnGroupPaintText ; + __property OnGroupHotTrack ; + __property OnGroupSaveToStream ; + __property OnGroupSetCaption ; + __property OnGroupSetImageIndex ; + __property OnGroupSetDetail ; + __property OnGroupStructureChange ; + __property OnGroupVisibilityChanged ; + __property OnGroupVisibilityChanging ; + __property OnHeaderDblClick ; + __property OnHeaderMouseDown ; + __property OnHeaderMouseMove ; + __property OnHeaderMouseUp ; + __property OnHintCustomInfo ; + __property OnHintCustomDraw ; + __property OnHintPauseTime ; + __property OnHintPopup ; + __property OnIncrementalSearch ; + __property OnItemCheckChange ; + __property OnItemCheckChanging ; + __property OnItemClick ; + __property OnItemCompare ; + __property OnItemContextMenu ; + __property OnItemCreateEditor ; + __property OnItemCustomView ; + __property OnItemDblClick ; + __property OnItemEditBegin ; + __property OnItemEdited ; + __property OnItemEditEnd ; + __property OnItemEnableChange ; + __property OnItemEnableChanging ; + __property OnItemFreeing ; + __property OnItemFocusChanged ; + __property OnItemFocusChanging ; + __property OnItemGetCaption ; + __property OnItemGetEditCaption ; + __property OnItemGetEditMenu ; + __property OnItemGetGroupKey ; + __property OnItemGetImageIndex ; + __property OnItemGetImageList ; + __property OnItemGetTileDetail ; + __property OnItemGetTileDetailCount ; + __property OnItemHotTrack ; + __property OnItemImageDraw ; + __property OnItemImageGetSize ; + __property OnItemImageDrawIsCustom ; + __property OnItemInitialize ; + __property OnItemLoadFromStream ; + __property OnItemMouseDown ; + __property OnItemMouseUp ; + __property OnItemPaintText ; + __property OnItemSaveToStream ; + __property OnItemSelectionChanged ; + __property OnItemSelectionChanging ; + __property OnItemSelectionsChanged ; + __property OnItemSetCaption ; + __property OnItemSetGroupKey ; + __property OnItemSetImageIndex ; + __property OnItemSetTileDetail ; + __property OnItemStructureChange ; + __property OnItemThumbnailDraw ; + __property OnItemVisibilityChanged ; + __property OnItemVisibilityChanging ; + __property OnKeyAction ; + __property OnMouseGesture ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnMouseWheel ; + __property OnMouseWheelDown ; + __property OnMouseWheelUp ; + __property OnOLEDragEnd ; + __property OnOLEDragStart ; + __property OnOLEDragEnter ; + __property OnOLEDragOver ; + __property OnOLEDragLeave ; + __property OnOLEDragDrop ; + __property OnOLEGetCustomFormats ; + __property OnOLEGetData ; + __property OnOLEGetDataObject ; + __property OnOLEQueryContineDrag ; + __property OnOLEGiveFeedback ; + __property OnOLEQueryData ; + __property OnPaintHeaderBkGnd ; + __property OnPaintBkGnd ; + __property OnResize ; + __property OnScroll ; + __property OnStartDock ; + __property OnStartDrag ; + __property OnUnDock ; + __property OnViewChange ; +public: + #pragma option push -w-inl + /* TCustomEasyListview.Create */ inline __fastcall virtual TEasyListview(Classes::TComponent* AOwner) : TCustomEasyListview(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCustomEasyListview.Destroy */ inline __fastcall virtual ~TEasyListview(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyListview(HWND ParentWindow) : TCustomEasyListview(ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyBaseTaskBand; +class PASCALIMPLEMENTATION TEasyBaseTaskBand : public TCustomEasyListview +{ + typedef TCustomEasyListview inherited; + +protected: + virtual TEasyPaintInfoBaseColumn* __fastcall CreateColumnPaintInfo(void); + virtual TEasyPaintInfoBaseGroup* __fastcall CreateGroupPaintInfo(void); + virtual TEasyPaintInfoBaseItem* __fastcall CreateItemPaintInfo(void); + HIDESBASE virtual TEasyPaintInfoTaskBandColumn* __fastcall GetPaintInfoColumn(void); + HIDESBASE virtual TEasyPaintInfoTaskbandGroup* __fastcall GetPaintInfoGroup(void); + HIDESBASE virtual TEasyPaintInfoTaskBandItem* __fastcall GetPaintInfoItem(void); + virtual bool __fastcall GroupTestExpand(TEasyGroupHitTestInfoSet HitInfo); + virtual void __fastcall DoCustomGrid(TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &Grid); + virtual void __fastcall DoGroupCustomView(TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &View); + virtual void __fastcall DoItemCustomView(TEasyItem* Item, TEasyListStyle ViewStyle, TMetaClass* &View); + HIDESBASE virtual void __fastcall SetPaintInfoColumn(const TEasyPaintInfoTaskBandColumn* Value); + HIDESBASE virtual void __fastcall SetPaintInfoGroup(const TEasyPaintInfoTaskbandGroup* Value); + HIDESBASE virtual void __fastcall SetPaintInfoItem(const TEasyPaintInfoTaskBandItem* Value); + __property TEasyPaintInfoTaskBandColumn* PaintInfoColumn = {read=GetPaintInfoColumn, write=SetPaintInfoColumn}; + +public: + __fastcall virtual TEasyBaseTaskBand(Classes::TComponent* AOwner); +public: + #pragma option push -w-inl + /* TCustomEasyListview.Destroy */ inline __fastcall virtual ~TEasyBaseTaskBand(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyBaseTaskBand(HWND ParentWindow) : TCustomEasyListview(ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyTaskPanelBand; +class PASCALIMPLEMENTATION TEasyTaskPanelBand : public TEasyBaseTaskBand +{ + typedef TEasyBaseTaskBand inherited; + +private: + bool FAutoScrollPanels; + TEasyGetTaskPanelEvent FOnGetTaskPanel; + TEasyGroupsTaskPanel* __fastcall GetGroups(void); + void __fastcall SetGroups(const TEasyGroupsTaskPanel* Value); + +protected: + virtual TEasyGroups* __fastcall CreateGroups(void); + HIDESBASE MESSAGE void __fastcall CMMouseWheel(Controls::TCMMouseWheel &Msg); + virtual void __fastcall DoCustomGrid(TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &Grid); + virtual void __fastcall DoGetTaskPanel(TEasyGroupTaskPanel* Sender, TMetaClass* &TaskPanel); + virtual void __fastcall DoGroupCustomView(TEasyGroup* Group, TEasyListStyle ViewStyle, TMetaClass* &View); + virtual void __fastcall DoGroupExpand(TEasyGroup* Group); + void __fastcall PositionPanels(void); + HIDESBASE MESSAGE void __fastcall WMHScroll(Messages::TWMScroll &Msg); + HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Msg); + HIDESBASE MESSAGE void __fastcall WMWindowPosChanging(Messages::TWMWindowPosMsg &Msg); + +public: + __fastcall virtual TEasyTaskPanelBand(Classes::TComponent* AOwner); + +__published: + __property Align = {default=0}; + __property Anchors = {default=3}; + __property bool AutoScrollPanels = {read=FAutoScrollPanels, write=FAutoScrollPanels, default=0}; + __property BackGround ; + __property BevelInner = {index=0, default=1}; + __property BevelOuter = {index=1, default=1}; + __property BevelWidth = {default=1}; + __property BiDiMode ; + __property BorderWidth = {default=0}; + __property Color = {default=-16777211}; + __property Constraints ; + __property Ctl3D ; + __property TEasyGetTaskPanelEvent OnGetTaskPanel = {read=FOnGetTaskPanel, write=FOnGetTaskPanel}; + __property UseDockManager = {default=1}; + __property Font ; + __property GroupFont ; + __property TEasyGroupsTaskPanel* Groups = {read=GetGroups, write=SetGroups}; + __property HintAlignment ; + __property HintType = {default=0}; + __property HotTrack ; + __property IncrementalSearch ; + __property ImagesGroup ; + __property ImagesSmall ; + __property PaintInfoGroup ; + __property ParentBiDiMode = {default=1}; + __property ParentBackground = {default=0}; + __property ParentColor = {default=0}; + __property ParentCtl3D = {default=1}; + __property ParentFont = {default=1}; + __property ParentShowHint = {default=1}; + __property PopupMenu ; + __property ShowThemedBorder = {default=1}; + __property ShowHint ; + __property Selection ; + __property Sort ; + __property TabOrder = {default=-1}; + __property TabStop = {default=1}; + __property Themed = {default=1}; + __property Visible = {default=1}; + __property WheelMouseDefaultScroll = {default=1}; + __property WheelMouseScrollModifierEnabled = {default=1}; + __property OnCanResize ; + __property OnClick ; + __property OnConstrainedResize ; + __property OnContextPopup ; + __property OnAutoSortGroupCreate ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDockDrop ; + __property OnDockOver ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEndUpdate ; + __property OnEnter ; + __property OnExit ; + __property OnGetSiteInfo ; + __property OnGroupClick ; + __property OnGroupCollapse ; + __property OnGroupCollapsing ; + __property OnGroupContextMenu ; + __property OnGroupCustomView ; + __property OnGroupDblClick ; + __property OnGroupExpand ; + __property OnGroupExpanding ; + __property OnGroupFreeing ; + __property OnGroupGetCaption ; + __property OnGroupGetImageIndex ; + __property OnGroupGetImageList ; + __property OnGroupImageDraw ; + __property OnGroupImageGetSize ; + __property OnGroupImageDrawIsCustom ; + __property OnGroupInitialize ; + __property OnGroupPaintText ; + __property OnGroupHotTrack ; + __property OnGroupSetCaption ; + __property OnGroupSetImageIndex ; + __property OnGroupVisibilityChanged ; + __property OnGroupVisibilityChanging ; + __property OnHintCustomInfo ; + __property OnHintCustomDraw ; + __property OnHintPauseTime ; + __property OnHintPopup ; + __property OnKeyAction ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnMouseWheel ; + __property OnMouseWheelDown ; + __property OnMouseWheelUp ; + __property OnPaintBkGnd ; + __property OnResize ; + __property OnStartDock ; + __property OnStartDrag ; + __property OnUnDock ; +public: + #pragma option push -w-inl + /* TCustomEasyListview.Destroy */ inline __fastcall virtual ~TEasyTaskPanelBand(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyTaskPanelBand(HWND ParentWindow) : TEasyBaseTaskBand(ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyTaskBand; +class PASCALIMPLEMENTATION TEasyTaskBand : public TEasyBaseTaskBand +{ + typedef TEasyBaseTaskBand inherited; + +protected: + virtual void __fastcall DoGroupCollapse(TEasyGroup* Group); + virtual void __fastcall DoGroupExpand(TEasyGroup* Group); + +public: + __property GlobalImages ; + __property Items ; + __property States ; + __property Scrollbars ; + +__published: + __property Align = {default=0}; + __property Anchors = {default=3}; + __property BevelInner = {index=0, default=1}; + __property BevelOuter = {index=1, default=1}; + __property BevelWidth = {default=1}; + __property BiDiMode ; + __property BorderWidth = {default=0}; + __property CellSizes ; + __property Color = {default=-16777211}; + __property Constraints ; + __property Ctl3D ; + __property EditManager ; + __property UseDockManager = {default=1}; + __property DragKind = {default=0}; + __property DragManager ; + __property Font ; + __property GroupFont ; + __property Groups ; + __property HintAlignment ; + __property HintType = {default=0}; + __property HotTrack ; + __property IncrementalSearch ; + __property ImagesGroup ; + __property ImagesSmall ; + __property TEasyPaintInfoTaskbandGroup* PaintInfoGroup = {read=GetPaintInfoGroup, write=SetPaintInfoGroup}; + __property TEasyPaintInfoTaskBandItem* PaintInfoItem = {read=GetPaintInfoItem, write=SetPaintInfoItem}; + __property ParentBiDiMode = {default=1}; + __property ParentBackground = {default=0}; + __property ParentColor = {default=0}; + __property ParentCtl3D = {default=1}; + __property ParentFont = {default=1}; + __property ParentShowHint = {default=1}; + __property PopupMenu ; + __property PopupMenuHeader ; + __property ShowGroupMargins = {default=0}; + __property ShowThemedBorder = {default=1}; + __property ShowHint ; + __property Selection ; + __property Sort ; + __property TabOrder = {default=-1}; + __property TabStop = {default=1}; + __property Themed = {default=1}; + __property Visible = {default=1}; + __property WheelMouseDefaultScroll = {default=1}; + __property WheelMouseScrollModifierEnabled = {default=1}; + __property OnCanResize ; + __property OnClick ; + __property OnConstrainedResize ; + __property OnContextPopup ; + __property OnAutoSortGroupCreate ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDockDrop ; + __property OnDockOver ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEndUpdate ; + __property OnEnter ; + __property OnExit ; + __property OnGetDragImage ; + __property OnGetSiteInfo ; + __property OnGroupClick ; + __property OnGroupCollapse ; + __property OnGroupCollapsing ; + __property OnGroupCompare ; + __property OnGroupContextMenu ; + __property OnGroupDblClick ; + __property OnGroupExpand ; + __property OnGroupExpanding ; + __property OnGroupFreeing ; + __property OnGroupGetCaption ; + __property OnGroupGetImageIndex ; + __property OnGroupGetImageList ; + __property OnGroupImageDraw ; + __property OnGroupImageGetSize ; + __property OnGroupImageDrawIsCustom ; + __property OnGroupInitialize ; + __property OnGroupPaintText ; + __property OnGroupHotTrack ; + __property OnGroupSetCaption ; + __property OnGroupSetImageIndex ; + __property OnGroupSetDetail ; + __property OnGroupVisibilityChanged ; + __property OnGroupVisibilityChanging ; + __property OnHeaderDblClick ; + __property OnHeaderMouseDown ; + __property OnHeaderMouseMove ; + __property OnHeaderMouseUp ; + __property OnHintCustomInfo ; + __property OnHintCustomDraw ; + __property OnHintPauseTime ; + __property OnHintPopup ; + __property OnIncrementalSearch ; + __property OnItemCheckChange ; + __property OnItemCheckChanging ; + __property OnItemClick ; + __property OnItemCompare ; + __property OnItemContextMenu ; + __property OnItemCreateEditor ; + __property OnItemDblClick ; + __property OnItemEditBegin ; + __property OnItemEdited ; + __property OnItemEditEnd ; + __property OnItemEnableChange ; + __property OnItemEnableChanging ; + __property OnItemFreeing ; + __property OnItemFocusChanged ; + __property OnItemFocusChanging ; + __property OnItemGetCaption ; + __property OnItemGetGroupKey ; + __property OnItemGetImageIndex ; + __property OnItemGetImageList ; + __property OnItemHotTrack ; + __property OnItemImageDraw ; + __property OnItemImageGetSize ; + __property OnItemImageDrawIsCustom ; + __property OnItemInitialize ; + __property OnItemMouseDown ; + __property OnItemPaintText ; + __property OnItemSelectionChanged ; + __property OnItemSelectionChanging ; + __property OnItemSetCaption ; + __property OnItemSetGroupKey ; + __property OnItemSetImageIndex ; + __property OnItemVisibilityChanged ; + __property OnItemVisibilityChanging ; + __property OnKeyAction ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnMouseWheel ; + __property OnMouseWheelDown ; + __property OnMouseWheelUp ; + __property OnOLEDragEnd ; + __property OnOLEDragStart ; + __property OnOLEDragEnter ; + __property OnOLEDragOver ; + __property OnOLEDragLeave ; + __property OnOLEDragDrop ; + __property OnOLEGetCustomFormats ; + __property OnOLEGetData ; + __property OnOLEQueryContineDrag ; + __property OnOLEGiveFeedback ; + __property OnOLEQueryData ; + __property OnPaintBkGnd ; + __property OnResize ; + __property OnStartDock ; + __property OnStartDrag ; + __property OnUnDock ; +public: + #pragma option push -w-inl + /* TEasyBaseTaskBand.Create */ inline __fastcall virtual TEasyTaskBand(Classes::TComponent* AOwner) : TEasyBaseTaskBand(AOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TCustomEasyListview.Destroy */ inline __fastcall virtual ~TEasyTaskBand(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyTaskBand(HWND ParentWindow) : TEasyBaseTaskBand(ParentWindow) { } + #pragma option pop + +}; + + +typedef AnsiString EasyListview__221[8]; + +typedef AnsiString EasyListview__321[3]; + +//-- var, const, procedure --------------------------------------------------- +static const Word EGT_FIRSTLETTER = 0xffff; +#define IID_IEasyCellEditor "{A1686E7E-7F39-4BD4-BE1F-9C20D7BC6EA0}" +#define IID_IEasyCellEditorSink "{C0AAA3C0-AC98-43C8-8D9A-376A3F64FAD2}" +#define IID_IEasyCaptions "{6C838C0E-22A5-48D4-80C6-E266E950D3CF}" +#define IID_IEasyCaptionsEditable "{F1403B00-7163-4FB7-804F-1A5500CD980A}" +#define IID_IEasyImageList "{298932FB-A0AE-4A0A-BE34-A782743A0579}" +#define IID_IEasyStateImageList "{F0202D63-92A7-4C2F-9CA4-CBDE4DE0ED30}" +#define IID_IEasyImages "{20C419F5-F3DD-40C4-8526-88322E182C49}" +#define IID_IEasyImagesEditable "{DC580B13-1D19-46BB-885F-FC5CE9B2BE66}" +#define IID_IEasyThumbnail "{F9CA8297-0CB3-4C47-905F-3D1497C4FC4D}" +#define IID_IEasyCustomImage "{00260055-6915-43B5-9D43-379E7F61EEA9}" +#define IID_IEasyDetails "{AE1D21EB-BA52-4C24-9EB1-B35733299489}" +#define IID_IEasyDetailsEditable "{BBD853F9-D803-4478-B5A8-EE02FF47DC80}" +#define IID_IEasyChecks "{E8820F40-2EE3-4718-B54A-39318D2D1232}" +#define IID_IEasyNotficationSink "{E4F0D3DE-B2BD-4EC0-B24B-8A9B85B23A63}" +#define IID_IEasyNotifier "{F10150F9-17E3-43B6-8C05-33283FF1B14E}" +#define IID_IEasyCompare "{0761D4F5-D451-4A6D-BFDC-B3000FFD0299}" +#define IID_IEasyDividerPersist "{EE6C3C89-7FAE-46CD-AD30-6954B4308721}" +#define IID_IEasyGroupKey "{2B87BB19-A133-4D43-9164-AC456747EB19}" +#define IID_IEasyGroupKeyEditable "{26EFE2C6-2DE2-4795-94E3-0DB0CAA38B09}" +static const Shortint EASYLISTVIEW_STREAM_VERSION = 0x5; +static const int STREAM_ID_KEY = 0xcefeff; +static const Word _AUTOSCROLLDELAY = 0x1f4; +static const Shortint _AUTOSCROLLTIME = 0x32; +#define CURSOR_VHEADERSPLIT "VEASYHEADERSPLIT" +#define BITMAP_DEFAULTGROUPEXPANDED "DEFAULTEXPANDED" +#define BITMAP_DEFAULTGROUPCOLLAPSED "DEFAULTCOLLAPSED" +#define BITMAP_SORTARROWUP "SORTARROWUP" +#define BITMAP_SORTARROWDOWN "SORTARROWDOWN" +#define BITMAP_DEFAULTColumnGLYPHS "ColumnGLYPHS" +static const int BITMAP_DEFAULTColumnGLYPHSBKGND = 0xff00ff; +#define SELECTION_OFFSET (1.500000E-01) +static const Word WM_HOOKAPPACTIVATE = 0x80cc; +static const Word WM_EDITORRESIZE = 0x80cd; +static const Word WM_TABMOVEFOCUS = 0x80ce; +static const Shortint RESIZEHITZONEMARGIN = 0x4; +static const Word crVHeaderSplit = 0x300; +#define DEFAULT_GROUP_NAME "Default Group" +#define EASYLISTVIEW_HEADER_CLIPFORMAT "EasyListview.Header" +extern PACKAGE AnsiString EASYLISTSTYLETEXTS[8]; +extern PACKAGE AnsiString EASYSORTALGORITHMS[3]; +#define HEADERSUPPORTEDVIEWS (Set () << elsReport << elsGrid ) +#define VERTICALVIEWS (Set () << elsIcon << elsSmallIcon << elsReport << elsThumbnail << elsTile << elsGrid ) +#define THUMBNAILVIEWS (Set () << elsThumbnail << elsFilmStrip ) +#define MULTILINEVIEWS (Set () << elsIcon << elsThumbnail << elsTile << elsFilmStrip ) +extern PACKAGE TEasyAlphaBlender* AlphaBlender; +extern PACKAGE void __fastcall FillStringsWithEasyListStyles(Classes::TStrings* Strings); +extern PACKAGE void __fastcall FillStringsWithEasySortAlgorithms(Classes::TStrings* Strings); + +} /* namespace Easylistview */ +using namespace Easylistview; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Easylistview diff --git a/official/1.7.0/EasyListview/Source/EasyListview.obj b/official/1.7.0/EasyListview/Source/EasyListview.obj new file mode 100644 index 0000000000000000000000000000000000000000..24731e577965b49e9bb1d2afc936d96d4673945f GIT binary patch literal 690633 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

      dY?AkYkXnbwd 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 t-iVLm6>Q@qcG7qpce?Y@T*lI +// +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec, +// Stanly Xu +// +// NOTES: +// 1) If new properties are added to the TCollectionItems and published they +// need to be manually written/read from the stream. The items are not automatically +// saved to the DFM file. This was because mimicing TCollectionItem was not +// practical do to the way the VCL was designed. +//---------------------------------------------------------------------------- + +interface + + {$IFDEF TNTSUPPORT} +// IMPORTANT - PLEASE READ then comment this line out. +// If using TNT you MUST include the TNT package for your specific compiler in the +// Requires section of this package. It may be possible to compile without doing +// this but you WILL eventually have strange crashes in your application that will +// be difficult to understand. The best way to do this in my opinion is to create +// a new folder in the package install directory called "Delphi_TNT" (or CBuilder_TNT) +// and copy all the files from the Delphi (or CBuilder) folder into it. Now open the +// EasyListviewDx.dpk (or bpk) file in the "Delphi_TNT" (or CBuilder_TNT) based on your compiler +// version in a text editor. In the "Requires" section add "TNTUnicodeVcl_Rx0", where +// the "x" is the version of Delphi you are using. Open the dpk (bpk) file in your +// IDE. Select the menu option Projects>Options>Directories/Conditionals>Conditional +// and enter TNTSUPPORT. Compile the package, then open the EasyListviewDxD.dpk (or bpk) +// and compile and press the Install button. +// Now when you update the packages you won't have to redo all this. Just install +// the update then compile the packages in the "Delphi_TNT" (or CBuilder_TNT) folders +// an you are done. + {$ENDIF} + +{$B-} + +{$I Compilers.inc} +{$I ..\Include\Debug.inc} +{$I Options.inc} +{$I ..\Include\Addins.inc} + +{.$DEFINE GXDEBUG} + +{$IFDEF GXDEBUG} + {$DEFINE LOADGXUNIT} +{$ENDIF} +{$IFDEF GXDEBUG_PAINT} + {$DEFINE LOADGXUNIT} +{$ENDIF GXDEBUG_PAINT} +{$IFDEF GXDEBUG_HINT} + {$DEFINE LOADGXUNIT} +{$ENDIF GXDEBUG_HINT} + +uses + {$IFDEF COMPILER_9_UP} + Types, // This MUST come before Windows + {$ENDIF} + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF} + Windows, + Messages, + SysUtils, + Classes, + Graphics, + Controls, + {$IFDEF LOADGXUNIT} + DbugIntf, + {$ENDIF LOADGXUNIT} + {$IFDEF COMPILER_7_UP} + Themes, + UxTheme, + {$ELSE} + {$IFDEF USETHEMES} + TmSchema, + UxTheme, + {$ENDIF} + {$ENDIF} + ExtCtrls, + Forms, + ImgList, + CommCtrl, + ActiveX, + Menus, + StdCtrls, + {$IFDEF COMPILER_6_UP} + RTLConsts, + {$ELSE} + Consts, + {$ENDIF} + {$IFDEF SpTBX} + TBX, + SpTBXItem, + {$ENDIF} + {$IFDEF TNTSUPPORT} + TntStdCtrls, + {$ENDIF} + EasyLVResources, + MPCommonUtilities, + MPShellTypes, + MPDataObject, + MPCommonObjects, + MPThreadManager, + EasyTaskPanelForm; + +{$R EasyRes.res} + +const + EGT_FIRSTLETTER = $FFFF; + + IID_IEasyCellEditor = '{A1686E7E-7F39-4BD4-BE1F-9C20D7BC6EA0}'; + IID_IEasyCellEditorSink = '{C0AAA3C0-AC98-43C8-8D9A-376A3F64FAD2}'; + + IID_IEasyCaptions = '{6C838C0E-22A5-48D4-80C6-E266E950D3CF}'; + IID_IEasyCaptionsEditable = '{F1403B00-7163-4FB7-804F-1A5500CD980A}'; + IID_IEasyImageList = '{298932FB-A0AE-4A0A-BE34-A782743A0579}'; + IID_IEasyStateImageList = '{F0202D63-92A7-4C2F-9CA4-CBDE4DE0ED30}'; + IID_IEasyImages = '{20C419F5-F3DD-40C4-8526-88322E182C49}'; + IID_IEasyImagesEditable = '{DC580B13-1D19-46BB-885F-FC5CE9B2BE66}' ; + IID_IEasyThumbnail = '{F9CA8297-0CB3-4C47-905F-3D1497C4FC4D}'; + IID_IEasyCustomImage = '{00260055-6915-43B5-9D43-379E7F61EEA9}'; + IID_IEasyDetails = '{AE1D21EB-BA52-4C24-9EB1-B35733299489}'; + IID_IEasyDetailsEditable = '{BBD853F9-D803-4478-B5A8-EE02FF47DC80}'; + IID_IEasyChecks = '{E8820F40-2EE3-4718-B54A-39318D2D1232}'; + IID_IEasyNotficationSink = '{E4F0D3DE-B2BD-4EC0-B24B-8A9B85B23A63}'; + IID_IEasyNotifier = '{F10150F9-17E3-43B6-8C05-33283FF1B14E}'; + IID_IEasyCompare = '{0761D4F5-D451-4A6D-BFDC-B3000FFD0299}'; + IID_IEasyDividerPersist = '{EE6C3C89-7FAE-46CD-AD30-6954B4308721}'; + IID_IEasyGroupKey = '{2B87BB19-A133-4D43-9164-AC456747EB19}'; + IID_IEasyGroupKeyEditable = '{26EFE2C6-2DE2-4795-94E3-0DB0CAA38B09}'; + +// EASYLISTVIEW_STREAM_VERSION = 4; + EASYLISTVIEW_STREAM_VERSION = 5; // Fixed bug in Streaming any other types then TEasyXXXXStored + STREAM_ID_KEY = $CEFEFF; + + _AUTOSCROLLDELAY = 500; // 500 ms + _AUTOSCROLLTIME = 50; // ms + + CURSOR_VHEADERSPLIT = 'VEASYHEADERSPLIT'; + BITMAP_DEFAULTGROUPEXPANDED = 'DEFAULTEXPANDED'; + BITMAP_DEFAULTGROUPCOLLAPSED = 'DEFAULTCOLLAPSED'; + BITMAP_SORTARROWUP = 'SORTARROWUP'; + BITMAP_SORTARROWDOWN = 'SORTARROWDOWN'; + BITMAP_DEFAULTColumnGLYPHS = 'ColumnGLYPHS'; + BITMAP_DEFAULTColumnGLYPHSBKGND = $00FF00FF; + + SELECTION_OFFSET = 0.15; // The selection rectangle will select an item +/- x% of the Caption width (like M$ Listview) + + WM_HOOKAPPACTIVATE = WM_APP + 204; + WM_EDITORRESIZE = WM_APP + 205; + WM_TABMOVEFOCUS = WM_APP + 206; + + RESIZEHITZONEMARGIN = 4; +// LABEL_MARGIN = 2; + + crVHeaderSplit = 768; + + DEFAULT_GROUP_NAME = 'Default Group'; // group default name used if a first group is automatically created + + EASYLISTVIEW_HEADER_CLIPFORMAT = 'EasyListview.Header'; + +// Magic, mystical stuff for CBuilder +(*$HPPEMIT 'namespace Easylistview {'*) +{$HPPEMIT 'class DELPHICLASS TEasyItem;'} +{$HPPEMIT 'class DELPHICLASS TEasyGroup;'} +{$HPPEMIT 'class DELPHICLASS TEasyColumn;'} +{$HPPEMIT 'struct TGroupSortInfoRec;'} +{$HPPEMIT '__interface IEasyNotificationSink;'} +(*$HPPEMIT '}'*) + +type + TCustomEasyListview = class; + TEasyItems = class; + TEasyItem = class; + TEasyItemInterfaced = class; + TEasyViewItem = class; + TEasyGroups = class; + TEasyGroup = class; + TEasyViewGroup = class; + TEasyColumns = class; + TEasyColumn = class; + TEasyCollectionItem = class; + TCustomEasyDragManagerBase = class; + TEasyCellSize = class; + TEasyHeader = class; + TEasyCollection = class; + TEasyPaintInfoBasic = class; + TEasyHintInfo = class; + TEasyOLEDragManager = class; + TEasyHotTrackManager = class; + TEasyViewColumn = class; + TEasyHeaderDragManager = class; + TEasySortManager = class; + TEasyAlphaBlender = class; + TEasyPaintInfoBaseGroup = class; + TEasyColumnStored = class; + TEasyBaseEditor = class; + + + TEasyCollectionItemClass = class of TEasyCollectionItem; + TEasyViewItemClass = class of TEasyViewItem; + TEasyViewColumnClass = class of TEasyViewColumn; + TEasyViewGroupClass = class of TEasyViewGroup; + TEasyGridGroupClass = class of TEasyGridGroup; + TEasyGroupClass = class of TEasyGroup; + TEasyItemClass = class of TEasyItem; + TEasyColumnClass = class of TEasyColumn; + TEasyColumnStoredClass = class of TEasyColumnStored; + + TItemNextEnum = function(Item: TEasyItem): TEasyItem of object; + TItemEnumFirstLast = function: TEasyItem of object; + + TRectArray = array of TRect; + TCommonMouseButtons = set of TCommonMouseButton; + + TEasyItemArray = array of TEasyItem; + TEasyGroupArray = array of TEasyGroup; + TEasyColumnArray = array of TEasyColumn; + + TEasyQueryDragResult = ( + eqdrContinue, // The drag drop loop should contine + eqdrQuit, // The drag drop loop should end + eqdrDrop // The drag drop loop should drop the object where it is + ); + + TEasyCheckType = ( + ectNone, // No Checks + ettNoneWithSpace, // No Checks but leave the space for the checkbox + ectBox, // Square Checkbox type checkbox + ectRadio // Round Radio button type checkbox + ); + + TEasyListStyle = ( + elsIcon, // The Listview's Large Icon Mode + elsSmallIcon, // The Listview's Small Icon Mode + elsList, // The Listview's List Mode + elsReport, // The Listview's Report (Details) Mode + elsThumbnail, // The Listview's Thumbnail Mode + elsTile, // The Listview's Tile Mode + elsFilmStrip, // The Listview's FilmStrip Mode + elsGrid // The Listview's Grid Mode + ); + + TEasyGroupMarginEdge = ( + egmeBackground, // Background of the entire Group + egmeTop, // Header of a Group + egmeBottom, // Footer of a Group + egmeLeft, // Left Margin area of a Group + egmeRight, // Right Margin area of a Group + egmeForeground // Foreground of the entire Group + ); + + TEasyHeaderType = ( + ehtHeader, // Report view Header + ehtFooter // Report view Footer + ); + + TEasyHeaderButtonStyle = ( + ehbsThick, // "Normal" raised button + ehbsFlat, // Flat style button + ehbsPlate, // Plate style button + ehbsThemed // Draw using current Activation Context theme + ); + + TEasyHeaderImagePosition = ( + ehpLeft, // The image is to the left of the Text + ehpTop, // The image is to the Top of the Text + ehpRight, // The image is to the Right of the Text + ehpBottom // The image is to the Bottom of the Text + ); + + TEasySortDirection = ( + esdNone, + esdAscending, // The sort is ascending + esdDescending // The sort is descending + ); + + TEasySortGlyphAlign = ( + esgaLeft, // Column SortGlpyh placed to left of Caption + esgaRight // Column SortGlpyh placed to right of Caption + ); + + TEasyDragType = ( + edtOLE, // OLE Dragging + edtVCL // VCL Dragging + ); + + TEasySelectionType = ( + ecstSelect, // Select all objects + ecstUnSelect, // UnSelect all objects + ecstInvert // Invert the selection state of objects + ); + + TEasyColumnHitTestInfo = ( + ectOnCheckbox, // Hit in the Checkbox + ectOnIcon, // Hit the icon + ectOnLabel, // Hit the Label + ectOnText // Hit in the current text in the label area + ); + TEasyColumnHitTestInfoSet = set of TEasyColumnHitTestInfo; + + TEasyHitInfoColumn = packed record + Column: TEasyColumn; // The object hit + HitInfo: TEasyColumnHitTestInfoSet; // Details of the hit + end; + + TEasyGroupHitTestInfo = ( + egtOnBand, // Hit the colored band + egtOnCheckbox, // Hit in the Checkbox + egtOnExpandButton, // Hit the ExpandButton + egtOnIcon, // Hit the icon + egtOnLabel, // Hit the Label + egtOnText, // Hit in the current text in the label area + egtOnHeader, // Hit in the header of the group + egtOnFooter, // Hit in the footer of the group + egtOnLeftMargin, // Hit in the Left Margin of the group + egtOnRightMargin // Hit in the Right Margin of the group + ); + TEasyGroupHitTestInfoSet = set of TEasyGroupHitTestInfo; + + TEasyDefaultWheelScroll = ( + edwsHorz, // Mouse Wheel scrolls horizontal by default, vertical with shift pressed + edwsVert // Mouse Wheel scrolls vertical by default, horizontal with shift pressed + ); + + TEasyHitInfoGroup = packed record + Group: TEasyGroup; // The object hit + HitInfo: TEasyGroupHitTestInfoSet; // Details of the hit + end; + + TEasyItemHitTestInfo = ( + ehtStateIcon, // Hit the state icon + ehtOnIcon, // Hit the icon + ehtOnLabel, // Hit the label, the area available for the Text + ehtOnClickSelectBounds, // Hit the area defined as a selection area for a click + ehtOnDragSelectBounds, // Hit the area defined as a selection area for a drag select + ehtOnText, // Hit the area in the label that contains text + ehtOnCheck, // Hit the area where the check box is drawn + ehtOnEdit // Hit the area where the edit is started for the item + ); + TEasyItemHitTestInfoSet = set of TEasyItemHitTestInfo; + + TEasyHitInfoItem = packed record + Item: TEasyItem; + Group: TEasyGroup; // The group the object is in + Column: TEasyColumn; // The the Column hit (if applicable) + HitInfo: TEasyItemHitTestInfoSet; // Details of the hit + end; + + // CAUTION ADD NEW STATES TO END TO PRESERVE STREAMING + TEasyStorageObjectState = ( + esosChecked, // The object is checked + esosCheckPending, // The object has a check pending, the mouse has been pressed in the check area but not yet released + esosCheckHover, // The object has the mouse hovering over the checkbox (matters mostly themed) + esosClicking, // The object is being "clicked" + esosCut, // The object is being "cut" + esosDestroying, // The object is being destroyed + esosHilighted, // The object is currently hilighted, for an item this mean drop hilighed for a Column this means hot track hilighed + esosEnabled, // The object is enabled + esosFocused, // The object is focused, i.e. it will take the keyboard input + esosInitialized, // The object has been initialized + esosSelected, // The object is selected, i.e. it will be included for an operation on it + esosVisible, // The object is currently visible + esosHotTracking, // The object is currently in a hot track state + esosBold, // The object is in a Bold state + esosDropTarget, // The object is hilighted as a drop target + esosGhosted // The object image is drawn "ghosted" (blended with background) + ); + TEasyStorageObjectStates = set of TEasyStorageObjectState; + + TEasyGroupsState = ( + egsRebuilding // GroupManager is rebuild the item layout + ); + TEasyGroupsStates = set of TEasyGroupsState; + + TEasySelectHitType = ( + eshtClickSelect, // Test for a hit based on a mouse click + eshtDragSelect // Test for a hit based on a drag rectangle + ); + + TEasyCellRectType = ( + ertBounds, // The bounds of the item minus the border + ertIcon, // The bounds of the icon image + ertLabel, // The bounds of the area dedicated to the text (will be static based on grid) + ertClickSelectBounds, // The bounds of the area dedicated to a click selection (usually the Text area) + ertDragSelectBounds, // The bounds of the area dedicated to a drag selection (depends on the view) + ertText, // The bounds of the text for the item (will be dynamic based on current text) + ertFullText // The bounds of the actual Complete text for the item independant of current state of control/item + ); + + TEasyImageSize = ( + eisSmall, // Paint Small Images + eisLarge, // Paint Large Images + eisExtraLarge // Paint JumboImages + ); + + TEasyImageKind = ( + eikNormal, // Normal image + eikOverlay, // Overlay for the Normal image + eikState // State image + ); + + TEasyDragManagerState = ( + edmsDragging, // The Drag Manager is in the middle of a drag operation + edmsAutoScrolling // The Drag Manager is autoscrolling during a draw operation + ); + TEasyDragManagerStates = set of TEasyDragManagerState; + + TEasyControlState = ( + ebcsLButtonDown, // The Left Mouse Button is down + ebcsRButtonDown, // The Right Mouse Button is down + ebcsMButtonDown, // The Middle Mouse Button is down + ebcsScrollButtonDown, // The scroll wheel is down + ebcsDragPending, // The mouse is down and we are ready to check for a drag of an object + ebcsDragging, // The control is in the middle of a dragging operation + ebcsVCLDrag, // The drag operation is a VCL drag + ebcsDragSelectPending, // The mouse is down and we are ready to check for a drag select + ebcsDragSelecting, // The control is in a drag selecting mode + ebcsThemesLoaded, // The control has loaded themes if avaiable + ebcsCheckboxClickPending, // The mouse is down over a checkbox and the box now has the attention of the mouse + ebcsGroupExpandPending, + ebcsHeaderCapture, // The Header area has captured the mouse + ebcsScrolling, // The control is scrolling + ebcsOLERegistered, // Registered for OLE Drag and Drop + ebcsCancelContextMenu // A right button drag drop should not show the context menu + ); + TEasyControlStates = set of TEasyControlState; + + TEasyHeaderState = ( + ehsMouseCaptured, // The Header captured the mouse (drag column/row; resize column/row) + ehsResizing, // One of the columns/headers is resizing + ehsDragging, // One of the columns/headers is being dragged + ehsDragPending, + ehsClickPending, // One of the columns/headers was pressed and the mouse is being dragged around + ehsCheckboxClickPending, + ehsResizePending, + ehsLButtonDown, + ehsRButtonDown, + ehsMButtonDown + ); + TEasyHeaderStates = set of TEasyHeaderState; + + TEasyItemState = ( + eisTextRectCached + ); + TEasyItemStates = set of TEasyItemState; + + TEasyRectArrayObject = packed record + LabelRect, // The bounds of the area dedicated to the text + // (will be static based on grid) + IconRect, // The bounds of the icon image + TextRect, // The bounds of the text for the item (will be + // dynamic based on current text) + // If TextRects is used then this is the Union of all + // the TextRects + // It will be calculated from LabelRect -2 pixels so that + // a Frame and a Focus Rect may be drawn around it and + // not extend past the Label Rect + CheckRect: TRect; // The rectangle used for the Checkbox of an item + BoundsRect, // The bounds of the item minus the border + ClickSelectBoundsRect, // The bounds of the area dedicated to a click + // selection (may be possible the area is not + // definable by a simple rectangle) + DragSelectBoundsRect, // The bounds of the area dedicated to a drag + // selection (may be possible the area is not + // definable by a simple rectangle) + + FullTextRect: TRect; // The bounds of the largest rect of text that + // can be shown (Icon view when item has focus the + // entire text is shown, overlapping other items) + SelectionRect: TRect; // The bounds of the area that is painted in the + // hilighted selection color + FullFocusSelRect: TRect; // The bounds of the largest rect of selection that + // can be shown (Icon view when item has focus the + // entire text is shown, overlapping other items) + FocusChangeInvalidRect: TRect; // The Rectangle to Invalidate(True) if the item + // changes focus or selection + EditRect: TRect; // The rectangle used for the editor in Edit Mode + SortRect: TRect; // The rectangle used for the Sort Glyphs + StateRect: TRect; // The rectangle used for state images + TextRects: TRectArray; // Text rectangles for Details + ExpandButtonRect, // The rectangle available in the group for the Expand Button (Groups Only) + BandRect: TRect; // The rectangle available in the group for the Band stripe (Groups Only) + BackGndRect: TRect; // The background of the group minus the Margin area, includes the Border (Groups Only) + GroupRect: TRect; // The entire space the group occupies (Groups Only) + DropDownArrow: TRect; // The DropDown Button for Columns (Columns Only) + end; + TEasyRectArrayObjectArray = array of TEasyRectArrayObject; + + TEasyMakeVisiblePos = ( + emvTop, // Make visible with the top of the Client Window + emvMiddle, // Make visible with the middle of the Client Window + emvBottom, // Make visible with the bottom of the Client Window + emvAuto // Make visible and scroll based on if the item is above or below the current client window + ); + + TEasySearchDirection = ( + esdForward, + esdBackward + ); + + TEasyAdjacentCellDir = ( + acdLeft, // The cell that is to the left of a particular cell + acdRight, // The cell that is to the right of a particular cell + acdUp, // The cell that is above a particular cell + acdDown, // The cell that is below of a particular cell + acdPageDown, // The cell that is a single page down from a particular cell + acdPageUp // The cell that is a single page up from a particular cell + ); + + TEasyGridLayout = ( + eglHorz, // The Grid is a Horizontal grid (scrolls horz sized to fit vert) + eglVert, // The Grid is a Vertical grid (scrolls vert, sized to fit horz) + eglGrid // The Grid can scroll either way (may not fit client window either way) + ); + + TEasyHintType = ( + ehtText, // Shows the hint in the passed text parameter + ehtToolTip, // Shows entire caption text if it does not fit in the assigned caption area + ehtCustomDraw // The hint will callback when it needs drawing + ); + + PEasyHintInfoRec = ^TEasyHintInfoRec; + // The actual record is below due to a BDS C++ bug in generating the hpp file + + TEasySortAlgorithm = ( + esaQuickSort, + esaBubbleSort, + esaMergeSort + ); + + TEasyIncrementalSearchState = ( + eissTimerRunning, // The Search timeout timer is running + eissSearching // Currently in a Search mode + ); + TEasyIncrementalSearchStates = set of TEasyIncrementalSearchState; + + TCoolIncrementalSearchStart = ( + eissStartOver, // Always start a search from the beginning of the list + eissLastHit, // Start search from the last node found in the incremental search + eissFocusedNode // Start search from current focused node + ); + + TEasyIncrementalSearchItemType = ( + eisiAll, // Search All items in list + eisiInitializedOnly, // Search only items with their initialized property set, this will include collapsed groups but not invisible groups + eisiVisible // Search only items with their visible property set, this will include collapsed groups but not invisible groups + ); + + TEasyIncrementalSearchDir = ( + eisdForward, // Search Forward in the list + eisdBackward // Search Backward in the list + ); + + TEasyNextItemType = ( + enitAny, + enitVisible, + enitInitialized, + enitVisibleInExpandedGroup, + enitEditable // Implies visible + ); + + TEasyScrollbarDir = ( + esdVertical, + esdHorizontal, + esdBoth + ); + + TEasyHotTrackState = ( + ehsEnable, // object becoming a hot track target + ehsDisable // object losing a hot track status + ); + + TEasyHotTrackRectItem = ( + htiIcon, // Hot track is defined on the image + htiText, // Hot track is defined on the Text + htiAnyWhere // Hot track is defined on the entire cell + ); + TEasyHotTrackRectItems = set of TEasyHotTrackRectItem; + + TEasyHotTrackRectGroup = ( + htgIcon, // Hot track is defined on the image + htgText, // Hot track is defined on the Text + htgTopMargin, // Hot track is defined on the Top Group Margin + htgBottomMargin,// Hot track is defined on the Bottom Group Margin + htgLeftMargin, // Hot track is defined on the Left Group Margin + htgRightMargin, // Hot track is defined on the Right Group Margin + htgAnyWhere // Hot track is defined on the entire cell + ); + TEasyHotTrackRectGroups = set of TEasyHotTrackRectGroup; + + TEasyHotTrackRectColumn = ( + htcIcon, // Hot track is defined on the image + htcText, // Hot track is defined on the Text + htcAnyWhere // Hot track is defined on the entire cell + ); + TEasyHotTrackRectColumns = set of TEasyHotTrackRectColumn; + + // **************************************************************** + // Intefaces that EasyListview is aware of such that user data may implement these + // interfaces to present the data necessary for the control + // **************************************************************** + + // Implements the read only Caption for the Control + IEasyCaptions = interface(IUnknown) + [IID_IEasyCaptions] + function GetCaption(Column: Integer): Variant; + + property Captions[Column: Integer]: Variant read GetCaption; + end; + + // Implements the Caption for the Control + IEasyCaptionsEditable = interface(IEasyCaptions) + [IID_IEasyCaptionsEditable] + function SetCaption(Column: Integer; const Value: Variant): Boolean; + end; + + // Implements a custom ImageList on a per item/column basis for the Control + IEasyImageList = interface(IUnknown) + [IID_IEasyImageList] + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; + property ImageList[Column: Integer; IconSize: TEasyImageSize]: TCustomImageList read GetImageList; + end; + + // Implements a custom State ImageList on a per item/column basis for the Control + IEasyStateImageList = interface(IUnknown) + [IID_IEasyStateImageList] + function GetImageList(Column: Integer): TCustomImageList; + property ImageList[Column: Integer]: TCustomImageList read GetImageList; + end; + + // Implements the read only ImageIndex for the Control + IEasyImages = interface(IUnknown) + [IID_IEasyImages] + function GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; + + property ImageIndexes[Column: Integer; ImageKind: TEasyImageKind]: Integer read GetImageIndex; + end; + + // Implements the ImageIndex for the Control + IEasyImagesEditable = interface(IEasyImages) + [IID_IEasyImagesEditable] + procedure SetImageIndex(Column: Integer; ImageKind: TEasyImageKind; const Value: Integer); + + property ImageIndexes[Column: Integer; ImageKind: TEasyImageKind]: Integer read GetImageIndex write SetImageIndex; + end; + + // Implements the Thumbnail (Bitmap) for the Control + IEasyThumbnail = interface(IUnknown) + [IID_IEasyThumbnail] + procedure ThumbnailDraw(ACanvas: TCanvas; ViewportRect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); + end; + + IEasyCustomImage = interface(IUnknown) + [IID_IEasyCustomImage] + procedure CustomDrawn(Column: TEasyColumn; var IsCustom: Boolean); + procedure DrawImage(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); + procedure GetSize(Column: TEasyColumn; var ImageW, ImageH: Integer); + end; + + // Implements the Tile Details for the Control + // Points to what Column to get the detail from + IEasyDetails = interface(IUnknown) + [IID_IEasyDetails] + function GetDetailCount: Integer; + function GetDetail(Line: Integer): Integer; // Return the Column to be used as the detail for the given line + + property Detail[Line: Integer]: Integer read GetDetail; + property DetailCount: Integer read GetDetailCount; + end; + + IEasyDetailsEditable = interface(IEasyDetails) + [IID_IEasyDetailsEditable] + procedure SetDetail(Line: Integer; Value: Integer); + procedure SetDetailCount(Value: Integer); + + property Detail[Line: Integer]: Integer read GetDetail write SetDetail; + property DetailCount: Integer read GetDetailCount write SetDetailCount; + end; + + // Implements the CheckState for the Control + IEasyChecks = interface(IUnknown) + [IID_IEasyChecks] + function GetChecked(Column: Integer): Boolean; + procedure SetChecked(Column: Integer; const Value: Boolean); + property Checked[Column: Integer]: Boolean read GetChecked write SetChecked; + end; + + IEasyGroupKey = interface(IUnknown) + [IID_IEasyGroupKey] + function GetKey(FocusedColumn: Integer): LongWord; + + property Key[FocusedColumn: Integer]: LongWord read GetKey; // Uniquely identifies the item in a particular group + end; + + IEasyGroupKeyEditable = interface(IEasyGroupKey) + [IID_IEasyGroupKeyEditable] + procedure SetKey(FocusedColumn: Integer; Value: LongWord); + + property Key[FocusedColumn: Integer]: LongWord read GetKey write SetKey; + end; + + IEasyNotificationSink = interface(IUnknown) + [IID_IEasyNotficationSink] + procedure InvalidateItem(ImmediateRefresh: Boolean); + procedure UnRegister; + end; + + IEasyNotifier = interface(IUnknown) + [IID_IEasyNotifier] + procedure OnRegisterNotify(const ANotifier: IEasyNotificationSink); + procedure OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); + end; + + IEasyCompare = interface + [IID_IEasyCompare] + function Compare(const Data: IUnknown; Column: TEasyColumn): Integer; + end; + + // Interface for the EasyControl to communicate with a Cells Editor + IEasyCellEditor = interface(IUnknown) + [IID_IEasyCellEditor] + function AcceptEdit: Boolean; + function GetHandle: HWnd; + function GetModified: Boolean; + procedure ControlWndHookProc(var Message: TMessage); + procedure Hide; + procedure Initialize(AnItem: TEasyItem; Column: TEasyColumn); + procedure Finalize; + function PtInEditControl(WindowPt: TPoint): Boolean; + procedure SetEditorFocus; + procedure SelectAll; + procedure Show; + + property Handle: HWnd read GetHandle; + property Modified: Boolean read GetModified; + end; + + // *************************************** + // Event callback Definitions + // *************************************** + TAfterPaintEvent = procedure(Sender: TCustomEasyListview; ACanvas: TCanvas; ClipRect: TRect) of object; + TAutoGroupGetKeyEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; var Key: LongWord) of object; + TAutoSortGroupCreateEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; var Group: TEasyGroup; var DoDefaultAction: Boolean) of object; + TEasyClipboardEvent = procedure(Sender: TCustomEasyListview; var Handled: Boolean) of object; + TEasyClipboardCutEvent = procedure(Sender: TCustomEasyListview; var MarkAsCut, Handled: Boolean) of object; + TColumnCheckChangeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnCheckChangingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var Allow: Boolean) of object; + TColumnClickEvent = procedure(Sender: TCustomEasyListview; Button: TCommonMouseButton; const Column: TEasyColumn) of object; + TColumnContextMenuEvent = procedure(Sender: TCustomEasyListview; HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; var Menu: TPopupMenu) of object; +// TColumnCreatePaintInfoEvent = procedure(Sender: TCustomEasyListview; var PaintInfo: TEasyColumnPaintInfo) of object; + TColumnDblClickEvent = procedure(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; const Column: TEasyColumn) of object; + TColumnDropDownButtonClickEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; Button: TCommonMouseButton; ShiftState: TShiftState; WindowPt: TPoint; var DoDefault: Boolean) of object; + TColumnEnableChangeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnEnableChangingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var Allow: Boolean) of object; + TColumnFocusChangeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnFocusChangingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var Allow: Boolean) of object; + TColumnFreeingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnGetCaptionEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; Line: Integer; var Caption: WideString) of object; + TColumnGetImageIndexEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger) of object; + TColumnGetImageListEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var ImageList: TCustomImageList) of object; + TColumnGetDetailCountEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var Count: Integer) of object; + TColumnImageDrawEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender) of object; + TColumnImageGetSizeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var ImageWidth, ImageHeight: Integer) of object; + TColumnImageDrawIsCustomEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var IsCustom: Boolean) of object; + TColumnGetDetailEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; Line: Integer; var Detail: Integer) of object; + TColumnInitializeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnPaintTextEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; ACanvas: TCanvas) of object; + TEasyColumnLoadFromStreamEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; S: TStream; Version: Integer) of object; + TEasyColumnSaveToStreamEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; S: TStream; Version: Integer) of object; + TColumnSelectionChangeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnSelectionChangingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var Allow: Boolean) of object; + TColumnSetCaptionEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; Caption: WideString) of object; + TColumnSetImageIndexEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; ImageKind: TEasyImageKind; ImageIndex: Integer) of object; + TColumnSetDetailEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; Line: Integer; const Detail: Integer) of object; + TColumnSizeChangingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; Width, NewWidth: Integer; var Allow: Boolean) of object; + TColumnSizeChangedEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnThumbnailDrawEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; ACanvas: TCanvas; ARect: TRect; var DoDefault: Boolean) of object; + TColumnVisibilityChangeEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn) of object; + TColumnVisibilityChangingEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var Allow: Boolean) of object; + TContextMenuEvent = procedure(Sender: TCustomEasyListview; MousePt: TPoint; var Handled: Boolean) of object; + TColumnCustomViewEvent = procedure(Sender: TCustomEasyListview; Column: TEasyColumn; var View: TEasyViewColumnClass) of object; + TCustomGridEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass) of object; + TDblClickEvent = procedure(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; ShiftState: TShiftState) of object; + TGetDragImageEvent = procedure(Sender: TCustomEasyListview; Image: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean) of object; + TEasyGestureEvent = procedure(Sender: TCustomEasyListview; Gesture: WideString; var DoDefaultMouseAction: Boolean) of object; + TGroupClickEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; KeyStates: TCommonKeyStates; HitTest: TEasyGroupHitTestInfoSet) of object; + TGroupCollapseEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupCollapsingEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Allow: Boolean) of object; + TGroupCompareEvent = function(Sender: TCustomEasyListview; Item1, Item2: TEasyGroup): Integer of object; + TGroupContextMenuEvent = procedure(Sender: TCustomEasyListview; HitInfo: TEasyHitInfoGroup; WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean) of object; + TGroupCustomViewEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass) of object; + TGroupDblClickEvent = procedure(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoGroup) of object; + TGroupExpandEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupExpandingEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Allow: Boolean) of object; + TGroupFocusChangeEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupFocusChangingEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Allow: Boolean) of object; + TGroupFreeingEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupGetCaptionEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Caption: WideString) of object; + TGroupGetClassEvent = procedure(Sender: TCustomEasyListview; var GroupClass: TEasyCollectionItemClass) of object; + TGroupGetImageIndexEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger) of object; + TGroupGetImageListEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var ImageList: TCustomImageList) of object; + TGroupGetDetailCountEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Count: Integer) of object; + TGroupImageDrawEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender) of object; + TGroupImageGetSizeEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var ImageWidth, ImageHeight: Integer) of object; + TGroupImageDrawIsCustomEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var IsCustom: Boolean) of object; + TGroupGetDetailEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; Line: Integer; var Detail: Integer) of object; + TGroupInitializeEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupHotTrackEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint) of object; + TGroupLoadFromStreamEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; S: TStream; Version: Integer) of object; + TGroupPaintTextEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas) of object; + TGroupSaveToStreamEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; S: TStream; Version: Integer) of object; + TGroupSetCaptionEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; Caption: WideString) of object; + TGroupSetImageIndexEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ImageKind: TEasyImageKind; ImageIndex: Integer) of object; + TGroupSetDetailEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; Line: Integer; const Detail: Integer) of object; + TGroupSelectionChangeEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupSelectionChangingEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Allow: Boolean) of object; + TGroupThumbnailDrawEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean) of object; + TGroupVisibilityChangeEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup) of object; + TGroupVisibilityChangingEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var Allow: Boolean) of object; + THintCustomDrawEvent = procedure(Sender: TCustomEasyListview; TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo) of object; + THintCustomizeInfoEvent = procedure(Sender: TCustomEasyListview; TargetObj: TEasyCollectionItem; Info: TEasyHintInfo) of object; + THintPauseTimeEvent = procedure(Sender: TCustomEasyListview; HintWindowShown: Boolean; var PauseDelay: Integer) of object; + THintPopupEvent = procedure(Sender: TCustomEasyListview; TargetObj: TEasyCollectionItem; HintType: TEasyHintType; MousePos: TPoint; var AText: WideString; var HideTimeout, ReShowTimeout: Integer; var Allow: Boolean) of object; + THeaderClickEvent = procedure(Sender: TCustomEasyListview; MouseButton: TCommonMouseButton; Column: TEasyColumn) of object; + THeaderDblClickEvent = procedure(Sender: TCustomEasyListview; MouseButton: TCommonMouseButton; MousePos: TPoint; ShiftState: TShiftState) of object; + THeaderMouseEvent = procedure(Sender: TCustomEasyListview; MouseButton: TCommonMouseButton; Shift: TShiftState; X, Y: Integer; Column: TEasyColumn) of object; + TIncrementalSearchEvent = procedure(Item: TEasyCollectionItem; const SearchBuffer: WideString; var Handled: Boolean; var CompareResult: Integer) of object; + TItemCheckChangeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemCheckChangingEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Allow: Boolean) of object; + TItemClickEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; KeyStates: TCommonKeyStates; HitInfo: TEasyItemHitTestInfoSet) of object; + TItemCompareEvent = function(Sender: TCustomEasyListview; Column: TEasyColumn; Group: TEasyGroup; Item1, Item2: TEasyItem; var DoDefault: Boolean): Integer of object; + TItemContextMenuEvent = procedure(Sender: TCustomEasyListview; HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean) of object; + TItemCreateEditorEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Editor: IEasyCellEditor) of object; + TItemCustomViewEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; ViewStyle: TEasyListStyle; var View: TEasyViewItemClass) of object; + TItemLoadFromStreamEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; S: TStream; Version: Integer) of object; + TItemSaveToStreamEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; S: TStream; Version: Integer) of object; + TItemDblClickEvent = procedure(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem) of object; + TItemEditBegin = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Column: Integer; var Allow: Boolean) of object; + TItemEditedEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var NewValue: Variant; var Accept: Boolean) of object; + TItemEditEnd = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemEnableChangeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemEnableChangingEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Allow: Boolean) of object; + TItemFreeingEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemFocusChangeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemFocusChangingEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Allow: Boolean) of object; + TItemGetStreamingCreateClassEvent = procedure(Sender: TCustomEasyListview; var AClass: TEasyColumnStoredClass) of object; + TItemGetCaptionEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: Integer; var Caption: WideString) of object; + TEasyItemGetCaptionEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; var Caption: WideString) of object; + TItemGetEditMenuEvent = procedure(Sender: TCustomEasyListview; Editor: TEasyBaseEditor; var Menu: TPopupMenu) of object; + TItemGetClassEvent = procedure(Sender: TCustomEasyListview; var ItemClass: TEasyCollectionItemClass) of object; + TItemGetGroupKeyEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; FocusedColumn: Integer; var GroupKey: LongWord) of object; + TItemGetImageIndexEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger) of object; + TItemGetImageListEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: Integer; var ImageList: TCustomImageList) of object; + TEasyGetTaskPanelEvent = procedure(Sender: TCustomEasyListview; Group: TEasyGroup; var TaskPanel: TEasyTaskPanelFormClass) of object; + TItemGetTileDetailCountEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Count: Integer) of object; + TItemImageDrawEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender) of object; + TItemImageGetSizeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; var ImageWidth, ImageHeight: Integer) of object; + TItemImageDrawIsCustomEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: TEasyColumn; var IsCustom: Boolean) of object; + TItemGetTileDetailEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Line: Integer; var Detail: Integer) of object; + TItemHotTrackEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint) of object; + TItemInitializeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemMouseDownEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Button: TCommonMouseButton; var DoDefault: Boolean) of object; + TItemMouseUpEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Button: TCommonMouseButton; var DoDefault: Boolean) of object; + TItemPaintTextEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Position: Integer; ACanvas: TCanvas) of object; + TItemSelectionChangeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemSelectionChangingEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Allow: Boolean) of object; + TEasyItemSelectionsChangedEvent = procedure(Sender: TCustomEasyListview) of object; + TItemSetCaptionEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: Integer; Caption: WideString) of object; + TItemSetGroupKeyEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: Integer; Key: LongWord) of object; + TItemSetImageIndexEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; ImageIndex: Integer) of object; + TItemSetTileDetailEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; Line: Integer; const Detail: Integer) of object; + TItemThumbnailDrawEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean) of object; + TItemVisibilityChangeEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem) of object; + TItemVisibilityChangingEvent = procedure(Sender: TCustomEasyListview; Item: TEasyItem; var Allow: Boolean) of object; + + TEasyKeyActionEvent = procedure(Sender: TCustomEasyListview; var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean) of object; + + TOLEDropSourceDragEndEvent = procedure(Sender: TCustomEasyListview; ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates) of object; + TOLEDropSourceDragStartEvent = procedure(Sender: TCustomEasyListview; ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean) of object; + TOLEDropSourceQueryContineDragEvent = procedure(Sender: TCustomEasyListview; EscapeKeyPressed: Boolean; KeyStates: TCommonKeyStates; var QueryResult: TEasyQueryDragResult) of object; + TOLEDropSourceGiveFeedbackEvent = procedure(Sender: TCustomEasyListview; Effect: TCommonDropEffects; var UseDefaultCursors: Boolean) of object; + TOLEDropTargetDragEnterEvent = procedure(Sender: TCustomEasyListview; DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; var DesiredDropEffect: TCommonDropEffect) of object; + TOLEDropTargetDragOverEvent = procedure(Sender: TCustomEasyListview; KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; var DesiredDropEffect: TCommonDropEffect) of object; + TOLEDropTargetDragLeaveEvent = procedure(Sender: TCustomEasyListview) of object; + TOLEDropTargetDragDropEvent = procedure(Sender: TCustomEasyListview; DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; var DesiredDropEffect: TCommonDropEffect; var Handled: Boolean) of object; + TOLEGetCustomFormatsEvent = procedure(Sender: TCustomEasyListview; var Formats: TFormatEtcArray) of object; + TOLEGetDataEvent = procedure(Sender: TCustomEasyListview; const FormatEtcIn: TFormatEtc; var Medium: TStgMedium; var Handled: Boolean) of object; + FOLEGetDataObjectEvent = procedure(Sender: TCustomEasyListview; var DataObject: IDataObject) of object; + TOLEQueryDataEvent = procedure(Sender: TCustomEasyListview; const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean) of object; + TPaintBkGndEvent = procedure(Sender: TCustomEasyListview; ACanvas: TCanvas; AWindowRect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean) of object; + TPaintHeaderBkGndEvent = procedure(Sender: TCustomEasyListview; ACanvas: TCanvas; ARect: TRect; var Handled: Boolean) of object; + TViewChangingEvent = procedure(Sender: TCustomEasyListview; View: TEasyListStyle; var Allow: Boolean) of object; + TViewChangedEvent = procedure(Sender: TCustomEasyListview) of object; + TEasyScrollEvent = procedure(Sender: TCustomEasyListview; DeltaX, DeltaY: Integer) of object; + + TEasyDoGroupCompare = function(Column: TEasyColumn; Group1, Group2: TEasyGroup): Integer of object; + TEasyDoItemCompare = function(Column: TEasyColumn; Group: TEasyGroup; Item1, Item2: TEasyItem): Integer of object; + + // ************************************************************************** + // TEasyMemo + // A class that uses TntMemo when TNTSUPPORT is defined + // ************************************************************************** + {$IFDEF TNTSUPPORT} + TEasyMemo = class(TTntMemo); + TEasyEdit = class(TTntEdit); + {$ELSE} + TEasyMemo = class(TMemo); + TEasyEdit = class(TEdit); + {$ENDIF} + + + // ************************************************************************** + // TEasyInterfacedPersistent + // A class that makes a TPersistent class that is an interfaced object + // ************************************************************************** + TEasyInterfacedPersistent = class(TPersistent, IUnknown, ICommonExtractObj) + private + FRefCount: Integer; + protected + // IUnknown + function _AddRef: Integer; virtual; stdcall; + function _Release: Integer; virtual; stdcall; + function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; + + // IEasyExtractObj + function GetObj: TObject; + public + + procedure AfterConstruction; override; + procedure BeforeDestruction; override; + class function NewInstance: TObject; override; + property Obj: TObject read GetObj; + property RefCount: Integer read FRefCount; + end; + + // ************************************************************************** + // TEasyOwnedInterfacedPersistent + // A class that makes an interfaced object that has knowledge of the + // TEasyOwnerListview + // ************************************************************************** + TEasyOwnedInterfacedPersistent = class(TEasyInterfacedPersistent) + private + FOwner: TCustomEasyListview; + public + constructor Create(AnOwner: TCustomEasyListview); virtual; + + property Owner: TCustomEasyListview read FOwner; + end; + + // ************************************************************************** + // TEasyPersistent + // ************************************************************************** + TEasyPersistent = class(TPersistent) + public + constructor Create; virtual; + destructor Destroy; override; + procedure Assign(Source: TPersistent); override; + end; + + // ************************************************************************** + // TEasyOwnedPersistent + // Basis for Managers and objects that need a link back to the Main Window + // ************************************************************************** + TEasyOwnedPersistent = class(TEasyPersistent) + private + FOwnerListview: TCustomEasyListview; + protected + function GetOwner: TPersistent; override; + public + constructor Create(AnOwner: TCustomEasyListview); reintroduce; virtual; + procedure LoadFromStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); virtual; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); virtual; + property OwnerListview: TCustomEasyListview read FOwnerListview; + end; + + TEasyCanvasStore = class + protected + FBrush: TBrush; + FFont: TFont; + FPen: TPen; + public + destructor Destroy; override; + procedure RestoreCanvasState(Canvas: TCanvas); + procedure StoreCanvasState(Canvas: TCanvas); + property Brush: TBrush read FBrush write FBrush; + property Font: TFont read FFont write FFont; + property Pen: TPen read FPen write FPen; + end; + + // ************************************************************************** + // TEasyOwnerPersistentView + // Basis for any class that will become a view + // ************************************************************************** + TEasyOwnedPersistentView = class(TEasyOwnedPersistent) + private + FCanvasStore: TEasyCanvasStore; + function GetCanvasStore: TEasyCanvasStore; + protected + procedure PaintCheckboxCore(CheckType: TEasyCheckType; OwnerListView: TCustomEasyListView; ACanvas: TCanvas; ARect: TRect; IsEnabled, IsChecked, IsHot, IsFlat, IsHovering, IsPending: Boolean; Obj: TEasyCollectionItem; Size: Integer); + property CanvasStore: TEasyCanvasStore read GetCanvasStore write FCanvasStore; + public + destructor Destroy; override; + published + + end; + + // ************************************************************************** + // TEasyAlphaBlender + // Helper for Alpha blending a canvas + // ************************************************************************** + TEasyAlphaBlender = class(TEasyPersistent) + public + destructor Destroy; override; + procedure BasicBlend(Listview: TCustomEasyListview; ACanvas: TCanvas; ViewportRect: TRect; Color: TColor; Alpha: Byte = 128; UseScrollPostion: Boolean = True); virtual; + procedure Blend(Listview: TCustomEasyListview; Obj: TEasyCollectionItem; ACanvas: TCanvas; ViewportRect: TRect; Image: TBitmap); virtual; + procedure GetBlendParams(Listview: TCustomEasyListview; Obj: TEasyCollectionItem; var BlendAlpha: Byte; var BlendColor: TColor; var DoBlend: Boolean); + end; + + // ************************************************************************** + // TEasyOwnedPersistentGroupItem + // Basis for any class property of a TEasyGroup that allows communication + // back to the TEasyGroups + // ************************************************************************** + TEasyOwnedPersistentGroupItem = class(TEasyOwnedPersistentView) + private + FOwnerGroup: TEasyGroup; + public + constructor Create(AnOwner: TEasyGroup); reintroduce; virtual; + property OwnerGroup: TEasyGroup read FOwnerGroup; + end; + + TEasySelectionGroupList = class + private + FDisplayRect: TRect; + FFirstItem: TEasyItem; + FList: TList; + FRefCount: Integer; + protected + function GetItems(Index: Integer): TEasyItem; + procedure SetItems(Index: Integer; Value: TEasyItem); + property List: TList read FList write FList; + property RefCount: Integer read FRefCount write FRefCount; + public + constructor Create; + destructor Destroy; override; + function Count: Integer; + procedure Add(Item: TEasyItem); + procedure Clear; + procedure DecRef; + procedure IncRef; + property DisplayRect: TRect read FDisplayRect write FDisplayRect; + property FirstItem: TEasyItem read FFirstItem write FFirstItem; + property Items[Index: Integer]: TEasyItem read GetItems write SetItems; default; + end; + + // ************************************************************************** + // TEasyMargin + // Property for TEasyGroupItem to set the attributes of the Group Margins + // ************************************************************************** + TEasyMargin = class(TEasyOwnedPersistent) + private + FSize: Integer; + FVisible: Boolean; + procedure SetSize(Value: Integer); + procedure SetVisible(Value: Boolean); + protected + function RuntimeSize: Integer; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure Assign(Source: TPersistent); override; + published + property Size: Integer read FSize write SetSize default 30; + property Visible: Boolean read FVisible write SetVisible default False; + end; + + // ************************************************************************** + // TEasyHeaderMargin + // Property for TEasyGroupItem to set the attributes of the Header Group Margin + // ************************************************************************** + TEasyHeaderMargin = class(TEasyMargin) + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Visible default True; + end; + + // ************************************************************************** + // TCustomEasyFooterMargin + // Property for TEasyGroupItem to set the attributes of the Group Margins + // ************************************************************************** + TCustomEasyFooterMargin = class(TEasyMargin) + private + FCaption: WideString; + FImageIndex: TCommonImageIndexInteger; + FImageOverlayIndex: TCommonImageIndexInteger; + FPaintInfo: TEasyPaintInfoBaseGroup; + function GetAlignment: TAlignment; + function GetCaptionIndent: Integer; + function GetCaptionLines: Integer; + function GetImageIndent: Integer; + function GetPaintInfo: TEasyPaintInfoBaseGroup; + function GetVAlignment: TCommonVAlignment; + procedure SetAlignment(Value: TAlignment); + procedure SetCaption(Value: WideString); + procedure SetCaptionIndent(Value: Integer); + procedure SetCaptionLines(Value: Integer); + procedure SetImageIndent(Value: Integer); + procedure SetImageIndex(const Value: TCommonImageIndexInteger); + procedure SetImageOveralyIndex(const Value: TCommonImageIndexInteger); + procedure SetPaintInfo(const Value: TEasyPaintInfoBaseGroup); + procedure SetVAlignment(Value: TCommonVAlignment); + protected + property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; + property Caption: WideString read FCaption write SetCaption; + property CaptionIndent: Integer read GetCaptionIndent write SetCaptionIndent default 2; + property CaptionLines: Integer read GetCaptionLines write SetCaptionLines default 1; + property ImageIndent: Integer read GetImageIndent write SetImageIndent default 2; + property ImageIndex: TCommonImageIndexInteger read FImageIndex write SetImageIndex default -1; + property ImageOverlayIndex: TCommonImageIndexInteger read FImageOverlayIndex write SetImageOveralyIndex default -1; + property PaintInfo: TEasyPaintInfoBaseGroup read GetPaintInfo write SetPaintInfo; + property Size default 30; + property VAlignment: TCommonVAlignment read GetVAlignment write SetVAlignment default cvaCenter; + + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure Assign(Source: TPersistent); override; + end; + TEasyFooterMarginCustomClass = class of TCustomEasyFooterMargin; + + // ************************************************************************** + // TEasyFooterMargin + // Default Footer Margin PaintInfo that is global to all Groups. Defined under + // the EasyListview.PaintInfoGroup.MarginBottom property + // ************************************************************************** + TEasyFooterMargin = class(TCustomEasyFooterMargin) + published + property Alignment; + property Caption; + property CaptionIndent; + property CaptionLines; + property ImageIndent; + property ImageIndex; + property ImageOverlayIndex; + property Size default 30; + property VAlignment; + end; + + // ************************************************************************** + // TEasyPaintInfoBasic + // Basic information that defines how a particular UI object is Painted + // ************************************************************************** + TEasyPaintInfoBasic = class(TEasyOwnedPersistent) + private + FAlignment: TAlignment; + FBorder: Integer; + FBorderColor: TColor; + FCaptionIndent: Integer; + FCaptionLines: Integer; + FCheckFlat: Boolean; + FCheckIndent: Integer; + FCheckSize: Integer; + FCheckType: TEasyCheckType; + FImageIndent: Integer; + FShowBorder: Boolean; + FVAlignment: TCommonVAlignment; + procedure SetAlignment(Value: TAlignment); + procedure SetBorder(Value: Integer); + procedure SetBorderColor(Value: TColor); + procedure SetCaptionIndent(Value: Integer); + procedure SetCaptionLines(Value: Integer); + procedure SetCheckFlat(Value: Boolean); + procedure SetCheckIndent(Value: Integer); + procedure SetCheckSize(Value: Integer); + procedure SetCheckType(Value: TEasyCheckType); + procedure SetImageIndent(Value: Integer); + procedure SetShowBorder(const Value: Boolean); + procedure SetVAlignment(Value: TCommonVAlignment); + protected + procedure Invalidate(ImmediateUpdate: Boolean); virtual; + + property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; + property Border: Integer read FBorder write SetBorder default 4; + property BorderColor: TColor read FBorderColor write SetBorderColor default clHighlight; + property CaptionIndent: Integer read FCaptionIndent write SetCaptionIndent default 4; + property CaptionLines: Integer read FCaptionLines write SetCaptionLines default 1; + property CheckFlat: Boolean read FCheckFlat write SetCheckFlat default False; + property CheckIndent: Integer read FCheckIndent write SetCheckIndent default 2; + property CheckSize: Integer read FCheckSize write SetCheckSize default 12; + property CheckType: TEasyCheckType read FCheckType write SetCheckType default ectNone; + property ImageIndent: Integer read FImageIndent write SetImageIndent default 2; + property ShowBorder: Boolean read FShowBorder write SetShowBorder default True; + property VAlignment: TCommonVAlignment read FVAlignment write SetVAlignment default cvaCenter; + public + constructor Create(AnOwner: TCustomEasyListview); override; + + procedure Assign(Source: TPersistent); override; + end; + TEasyPaintInfoBasicClass = class of TEasyPaintInfoBasic; + + // ************************************************************************** + // TEasyPaintInfoBaseItem + // Information that defines how an Items UI object is Painted + // ************************************************************************** + TEasyPaintInfoBaseItem = class(TEasyPaintInfoBasic) + private + FGridLineColor: TColor; + FGridLines: Boolean; + FHideCaption: Boolean; + FTileDetailCount: Integer; + procedure SetGridLineColor(const Value: TColor); + procedure SetGridLines(const Value: Boolean); + procedure SetHideCaption(const Value: Boolean); + procedure SetTileDetailCount(Value: Integer); + protected + property GridLineColor: TColor read FGridLineColor write SetGridLineColor default clBtnFace; + property GridLines: Boolean read FGridLines write SetGridLines default False; + property HideCaption: Boolean read FHideCaption write SetHideCaption default False; + property TileDetailCount: Integer read FTileDetailCount write SetTileDetailCount default 1; + public + constructor Create(AnOwner: TCustomEasyListview); override; + end; + + TEasyPaintInfoItem = class(TEasyPaintInfoBaseItem) + published + property Border; + property BorderColor; + property CaptionIndent; + property CaptionLines; + property CheckFlat; + property CheckIndent; + property CheckSize; + property CheckType; + property GridLineColor; + property GridLines; + property HideCaption; + property ImageIndent; + property ShowBorder; + property TileDetailCount; + property VAlignment; + end; + + TEasyPaintInfoTaskBandItem = class(TEasyPaintInfoBaseItem) + published + property CaptionIndent; + property CheckFlat; + property CheckIndent; + property CheckSize; + property CheckType; + property VAlignment; + end; + + // ************************************************************************** + // TEasyPaintInfoBaseColumn + // Information that defines how an Column UI object is Painted + // ************************************************************************** + TEasyPaintInfoBaseColumn = class(TEasyPaintInfoBasic) + private + FColor: TColor; + FHilightFocused: Boolean; + FHilightFocusedColor: TColor; + FHotTrack: Boolean; + FImagePosition: TEasyHeaderImagePosition; + FSortGlyphAlign: TEasySortGlyphAlign; + FSortGlyphIndent: Integer; + FStyle: TEasyHeaderButtonStyle; + procedure SetColor(Value: TColor); + procedure SetHilightFocused(const Value: Boolean); + procedure SetHilightFocusedColor(const Value: TColor); + procedure SetImagePosition(Value: TEasyHeaderImagePosition); + procedure SetSortGlpyhAlign(Value: TEasySortGlyphAlign); + procedure SetSortGlyphIndent(Value: Integer); + procedure SetStyle(Value: TEasyHeaderButtonStyle); + protected + property Color: TColor read FColor write SetColor default clBtnFace; + property HilightFocused: Boolean read FHilightFocused write SetHilightFocused default False; + property HilightFocusedColor: TColor read FHilightFocusedColor write SetHilightFocusedColor default $00F7F7F7; + property HotTrack: Boolean read FHotTrack write FHotTrack default True; + property ImagePosition: TEasyHeaderImagePosition read FImagePosition write SetImagePosition default ehpLeft; + property SortGlyphAlign: TEasySortGlyphAlign read FSortGlyphAlign write SetSortGlpyhAlign default esgaRight; + property SortGlyphIndent: Integer read FSortGlyphIndent write SetSortGlyphIndent default 2; + property Style: TEasyHeaderButtonStyle read FStyle write SetStyle default ehbsThick; + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + end; + + TCustomEasyPaintInfoBaseColumn = class(TEasyPaintInfoBaseColumn) + end; + + TEasyPaintInfoColumn = class(TCustomEasyPaintInfoBaseColumn) + private + published + property Border; + property BorderColor; + property CaptionIndent; + property CaptionLines; + property CheckFlat; + property CheckIndent; + property CheckSize; + property CheckType; + property Color; + property HilightFocused; + property HilightFocusedColor; + property HotTrack; + property ImageIndent; + property ImagePosition; + property SortGlyphAlign; + property SortGlyphIndent; + property Style; + property VAlignment; + end; + + TEasyPaintInfoTaskBandColumn = class(TCustomEasyPaintInfoBaseColumn) + published + // Nothing published + end; + + // ************************************************************************** + // TEasyPaintInfoBasicGroup + // Basic information that defines how an Groups UI object is Painted + // ************************************************************************** + TEasyPaintInfoBaseGroup = class(TEasyPaintInfoBasic) + private + FBandBlended: Boolean; + FBandColor: TColor; + FBandColorFade: TColor; + FBandEnabled: Boolean; + FBandFullWidth: Boolean; + FBandIndent: Integer; + FBandLength: Integer; + FBandMargin: Integer; + FBandRadius: Byte; + FBandThickness: Integer; + FExpandable: Boolean; + FExpanded: Boolean; + FExpandImageIndent: Integer; + FMarginBottom: TCustomEasyFooterMargin; + FMarginLeft: TEasyMargin; + FMarginRight: TEasyMargin; + FMarginTop: TEasyHeaderMargin; + function GetMarginBottom: TCustomEasyFooterMargin; + function GetMarginLeft: TEasyMargin; + function GetMarginRight: TEasyMargin; + function GetMarginTop: TEasyHeaderMargin; + procedure SetBandBlended(Value: Boolean); + procedure SetBandColor(Value: TColor); + procedure SetBandColorFade(Value: TColor); + procedure SetBandEnabled(Value: Boolean); + procedure SetBandFullWidth(Value: Boolean); + procedure SetBandIndent(Value: Integer); + procedure SetBandLength(Value: Integer); + procedure SetBandMargin(Value: Integer); + procedure SetBandRadius(Value: Byte); + procedure SetBandThickness(Value: Integer); + procedure SetExpandable(Value: Boolean); + procedure SetExpandImageIndent(Value: Integer); + procedure SetMarginBottom(Value: TCustomEasyFooterMargin); + procedure SetMarginLeft(Value: TEasyMargin); + procedure SetMarginRight(Value: TEasyMargin); + procedure SetMarginTop(Value: TEasyHeaderMargin); + protected + property BandBlended: Boolean read FBandBlended write SetBandBlended default True; + property BandColor: TColor read FBandColor write SetBandColor default clBlue; + property BandColorFade: TColor read FBandColorFade write SetBandColorFade default clWindow; + property BandEnabled: Boolean read FBandEnabled write SetBandEnabled default True; + property BandFullWidth: Boolean read FBandFullWidth write SetBandFullWidth default False; + property BandIndent: Integer read FBandIndent write SetBandIndent default 0; + property BandLength: Integer read FBandLength write SetBandLength default 300; + property BandMargin: Integer read FBandMargin write SetBandMargin default 2; + property BandRadius: Byte read FBandRadius write SetBandRadius default 4; + property BandThickness: Integer read FBandThickness write SetBandThickness default 3; + property Expandable: Boolean read FExpandable write SetExpandable default True; + property ExpandImageIndent: Integer read FExpandImageIndent write SetExpandImageIndent default 4; + property MarginBottom: TCustomEasyFooterMargin read GetMarginBottom write SetMarginBottom; + property MarginLeft: TEasyMargin read GetMarginLeft write SetMarginLeft; + property MarginRight: TEasyMargin read GetMarginRight write SetMarginRight; + property MarginTop: TEasyHeaderMargin read GetMarginTop write SetMarginTop; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure Assign(Source: TPersistent); override; + end; + + // ************************************************************************** + // TEasyPaintInfoGroup + // Information that defines how an Groups UI object is Painted + // ************************************************************************** + TEasyPaintInfoGroup = class(TEasyPaintInfoBaseGroup) + published + property Alignment; + property BandBlended; + property BandColor; + property BandColorFade; + property BandEnabled; + property BandFullWidth; + property BandIndent; + property BandLength; + property BandMargin; + property BandRadius; + property BandThickness; + property Border; + property BorderColor; + property CaptionIndent; + property CaptionLines; + property CheckFlat; + property CheckIndent; + property CheckSize; + property CheckType; + property Expandable; + property ExpandImageIndent; + property ImageIndent; + property MarginBottom; + property MarginLeft; + property MarginRight; + property MarginTop; + property VAlignment; + end; + + // ************************************************************************** + // TEasyPaintInfoGroup + // Information that defines how an Groups UI object is Painted + // ************************************************************************** + TEasyPaintInfoTaskbandGroup = class(TEasyPaintInfoBaseGroup) + published + property Alignment; + property CaptionIndent; + property CheckFlat; + property CheckIndent; + property CheckSize; + property CheckType; + property Expandable; + property MarginBottom; + property MarginLeft; + property MarginRight; + property MarginTop; + property VAlignment; + end; + + // ************************************************************************** + // TEasyDynamicDataHelper + // Helps with multiple captions/image storage for item/groups/columns + // ************************************************************************** + TEasyDynamicDataHelper = class + private + FCaptionArray: TCommonWideStringDynArray; + FDetailArray: TCommonIntegerDynArray; + FGroupKeyArray: TCommonIntegerDynArray; + FImageIndexArray: TCommonIntegerDynArray; + FOverlayIndexArray: TCommonIntegerDynArray; + function GetCaptions(Index: Integer): Widestring; + function GetDetails(Index: Integer): Integer; + function GetImageIndexes(Index: Integer): Integer; + function GetImageOverlayIndexes(Index: Integer): Integer; + procedure LoadIntArrayFromStream(S: TStream; var AnArray: TCommonIntegerDynArray); + procedure LoadWideStrArrayFromStream(S: TStream; var AnArray: TCommonWideStringDynArray); + procedure SaveIntArrayToStream(S: TStream; var AnArray: TCommonIntegerDynArray); + procedure SaveWideStrArrayToStream(S: TStream; var AnArray: TCommonWideStringDynArray); + procedure SetCaptions(Index: Integer; Value: Widestring); + procedure SetDetails(Index: Integer; Value: Integer); + procedure SetImageIndexes(Index: Integer; Value: Integer); + procedure SetImageOverlayIndexes(Index: Integer; Value: Integer); + property CaptionArray: TCommonWideStringDynArray read FCaptionArray write FCaptionArray; + property DetailArray: TCommonIntegerDynArray read FDetailArray write FDetailArray; + property GroupKeyArray: TCommonIntegerDynArray read FGroupKeyArray write FGroupKeyArray; + property ImageIndexArray: TCommonIntegerDynArray read FImageIndexArray write FImageIndexArray; + property OverlayIndexArray: TCommonIntegerDynArray read FOverlayIndexArray write FOverlayIndexArray; + public + procedure Clear; + procedure LoadFromStream(S: TStream; Version: Integer); virtual; + procedure SaveToStream(S: TStream; Version: Integer); virtual; + property Captions[Index: Integer]: Widestring read GetCaptions write SetCaptions; + property Details[Index: Integer]: Integer read GetDetails write SetDetails; + property ImageIndexes[Index: Integer]: Integer read GetImageIndexes write SetImageIndexes; + property ImageOverlayIndexes[Index: Integer]: Integer read GetImageOverlayIndexes write SetImageOverlayIndexes; + end; + + TEasyItemDynamicDataHelper = class(TEasyDynamicDataHelper) + private + FStateImageArray: TCommonIntegerDynArray; + function GetGroupKey(Index: Integer): LongWord; + function GetStateImageIndexes(Index: Integer): TCommonImageIndexInteger; + procedure SetGroupKey(Index: Integer; Value: LongWord); + procedure SetStateImageIndexes(Index: Integer; Value: TCommonImageIndexInteger); + protected + property StateImageArray: TCommonIntegerDynArray read FStateImageArray write FStateImageArray; + public + procedure LoadFromStream(S: TStream; Version: Integer); override; + procedure SaveToStream(S: TStream; Version: Integer); override; + property GroupKey[Index: Integer]: LongWord read GetGroupKey write SetGroupKey; + property StateImageIndexes[Index: Integer]: TCommonImageIndexInteger read GetStateImageIndexes write SetStateImageIndexes; + end; + + // ************************************************************************** + // TEasyCollectionItem + // Basis for Collection items (, TEasyGroup, TEasyColumn) + // This Item can access its data through the + // ************************************************************************** + TEasyCollectionItem = class(TEasyPersistent, IUnknown, IEasyNotificationSink) + private + FCollection: TEasyCollection; + FData: TObject; + FDataInf: IUnknown; + FDisplayRect: TRect; // The viewport coordinates of the object + FIndex: Integer; // Absolute Index of the item within a particular collecton + FOwnsPaintInfo: Boolean; + FPaintInfo: TEasyPaintInfoBasic; // Information to draw the item + FRefCount: Integer; + FState: TEasyStorageObjectStates; // State of the item + FTag: Integer; + FVisibleIndex: Integer; // Index of the item across all collections (flat list across collection in group) + // See TEasyItem.VisibleIndexInGroup + function GetAlignment: TAlignment; + function GetBold: Boolean; + function GetBorder: Integer; + function GetBorderColor: TColor; + function GetCaptionIndent: Integer; + function GetCheckFlat: Boolean; + function GetCheckHovering: Boolean; + function GetCheckIndent: Integer; + function GetCheckPending: Boolean; + function GetCheckSize: Integer; + function GetCheckType: TEasyCheckType; + function GetClicking: Boolean; + function GetCut: Boolean; + function GetDataInf: IUnknown; + function GetDestroying: Boolean; + function GetGhosted: Boolean; + function GetHilighted: Boolean; + function GetEnabled: Boolean; + function GetFocused: Boolean; + function GetHotTracking(MousePos: TPoint): Boolean; + function GetImageIndent: Integer; + function GetInitialized: Boolean; + function GetOwnerListview: TCustomEasyListview; + function GetPaintInfo: TEasyPaintInfoBasic; + function GetSelected: Boolean; + function GetVAlignment: TCommonVAlignment; + function GetViewRect: TRect; + function GetVisible: Boolean; + procedure SetAlignment(Value: TAlignment); + procedure SetBold(const Value: Boolean); + procedure SetBorder(Value: Integer); + procedure SetBorderColor(Value: TColor); + procedure SetCaptionIndent(Value: Integer); + procedure SetCheckFlat(Value: Boolean); + procedure SetCheckHovering(Value: Boolean); + procedure SetCheckIndent(Value: Integer); + procedure SetCheckPending(Value: Boolean); + procedure SetCheckSize(Value: Integer); + procedure SetCheckType(Value: TEasyCheckType); + procedure SetClicking(Value: Boolean); + procedure SetCut(Value: Boolean); + procedure SetData(Value: TObject); virtual; + procedure SetDataInf(const Value: IUnknown); + procedure SetGhosted(const Value: Boolean); + procedure SetHilighted(Value: Boolean); + procedure SetEnabled(Value: Boolean); + procedure SetFocused(Value: Boolean); + procedure SetHotTracking(MousePos: TPoint; Value: Boolean); + procedure SetImageIndent(Value: Integer); + procedure SetInitialized(Value: Boolean); virtual; + procedure SetPaintInfo(Value: TEasyPaintInfoBasic); + procedure SetSelected(Value: Boolean); + procedure SetVAlignment(Value: TCommonVAlignment); + procedure SetVisible(Value: Boolean); + + protected + function AllowDrag(ViewportPt: TPoint): Boolean; virtual; + // IUnknown + function _AddRef: Integer; virtual; stdcall; + function _Release: Integer; virtual; stdcall; + function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; + + function CanChangeBold(NewValue: Boolean): Boolean; virtual; abstract; + function CanChangeCheck(NewValue: Boolean): Boolean; virtual; abstract; + function CanChangeEnable(NewValue: Boolean): Boolean; virtual; abstract; + function CanChangeFocus(NewValue: Boolean): Boolean; virtual; abstract; + function CanChangeHotTracking(NewValue: Boolean): Boolean; virtual; abstract; + function CanChangeSelection(NewValue: Boolean): Boolean; virtual; abstract; + function CanChangeVisibility(NewValue: Boolean): Boolean; virtual; abstract; + function DefaultImageList(ImageSize: TEasyImageSize): TCustomImageList; virtual; + function GetChecked: Boolean; virtual; + function GetDisplayName: WideString; virtual; + function LocalPaintInfo: TEasyPaintInfoBasic; virtual; abstract; + procedure Freeing; virtual; abstract; + procedure GainingBold; virtual; abstract; + procedure GainingCheck; virtual; abstract; + procedure GainingEnable; virtual; abstract; + procedure GainingFocus; virtual; abstract; + procedure GainingGhosted; virtual; abstract; + procedure GainingHilight; virtual; abstract; + procedure GainingHotTracking(MousePos: TPoint); virtual; abstract; + procedure GainingSelection; virtual; abstract; + procedure GainingVisibility; virtual; abstract; + function GetCaption: WideString; virtual; + function GetCaptions(Column: Integer): Widestring; virtual; abstract; + function GetImageIndex: TCommonImageIndexInteger; virtual; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; virtual; abstract; + function GetImageOverlayIndex: TCommonImageIndexInteger; virtual; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; virtual; abstract; + function GetOwner: TPersistent; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; virtual; abstract; + function GetIndex: Integer; virtual; + function GetDetailCount: Integer; virtual; abstract; + function GetDetails(Line: Integer): Integer; virtual; abstract; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); virtual; abstract; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW, ImageH: Integer); virtual; abstract; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); virtual; abstract; + procedure InvalidateItem(ImmediateRefresh: Boolean); // IEasyNotificationSink + procedure LosingBold; virtual; abstract; + procedure LosingGhosted; virtual; abstract; + procedure LosingHotTracking; virtual; abstract; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); virtual; abstract; + procedure Initialize; virtual; abstract; + procedure LosingCheck; virtual; abstract; + procedure LosingEnable; virtual; abstract; + procedure LosingFocus; virtual; abstract; + procedure LosingHilight; virtual; abstract; + procedure LosingSelection; virtual; abstract; + procedure LosingVisibility; virtual; abstract; + procedure SetCaptions(Column: Integer; Value: Widestring); virtual; abstract; + procedure SetCaption(Value: WideString); virtual; + procedure SetChecked(Value: Boolean); virtual; + procedure SetDestroyFlags; + procedure SetDetailCount(Value: Integer); virtual; abstract; + procedure SetDetails(Line: Integer; Value: Integer); virtual; abstract; + procedure SetImageIndex(const Value: TCommonImageIndexInteger); virtual; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); virtual; abstract; + procedure SetImageOverlayIndex(const Value: TCommonImageIndexInteger); virtual; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); virtual; abstract; + procedure UnRegister; // IEasyNotificationSink + property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; + property Bold: Boolean read GetBold write SetBold default False; + property Border: Integer read GetBorder write SetBorder default 0; + property BorderColor: TColor read GetBorderColor write SetBorderColor default clWindow; + property CaptionIndent: Integer read GetCaptionIndent write SetCaptionIndent default 2; + property Checked: Boolean read GetChecked write SetChecked default False; + property CheckFlat: Boolean read GetCheckFlat write SetCheckFlat default False; + property CheckHovering: Boolean read GetCheckHovering write SetCheckHovering; + property CheckIndent: Integer read GetCheckIndent write SetCheckIndent default 2; + property CheckPending: Boolean read GetCheckPending write SetCheckPending; + property CheckSize: Integer read GetCheckSize write SetCheckSize default 12; + property CheckType: TEasyCheckType read GetCheckType write SetCheckType default ectNone; + property Clicking: Boolean read GetClicking write SetClicking default False; + property Collection: TEasyCollection read FCollection write FCollection; + property Cut: Boolean read GetCut write SetCut default False; + property DataInf: IUnknown read GetDataInf write SetDataInf; + property Destroying: Boolean read GetDestroying; + property DisplayRect: TRect read FDisplayRect write FDisplayRect; + property Enabled: Boolean read GetEnabled write SetEnabled default True; + property Focused: Boolean read GetFocused write SetFocused default False; + property Ghosted: Boolean read GetGhosted write SetGhosted default False; + property Hilighted: Boolean read GetHilighted write SetHilighted default False; + property ImageIndent: Integer read GetImageIndent write SetImageIndent default 2; + property Initialized: Boolean read GetInitialized write SetInitialized; + property OwnsPaintInfo: Boolean read FOwnsPaintInfo write FOwnsPaintInfo default False; + property PaintInfo: TEasyPaintInfoBasic read GetPaintInfo write SetPaintInfo; + property Selected: Boolean read GetSelected write SetSelected default False; + property State: TEasyStorageObjectStates read FState write FState;// The State of the object, checked, selected, focused, etc. + property VAlignment: TCommonVAlignment read GetVAlignment write SetVAlignment; + property Visible: Boolean read GetVisible write SetVisible default True; + public + constructor Create(ACollection: TEasyCollection); reintroduce; virtual; + destructor Destroy; override; + + function EditAreaHitPt(ViewportPoint: TPoint): Boolean; virtual; abstract; + function SelectionHit(SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; virtual; abstract; + function SelectionHitPt(ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; virtual; abstract; + procedure Invalidate(ImmediateUpdate: Boolean); virtual; // IEasyNotificationSink + procedure LoadFromStream(S: TStream; var Version: Integer); virtual; + procedure MakeVisible(Position: TEasyMakeVisiblePos); virtual; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); virtual; + property Caption: WideString read GetCaption write SetCaption; + property Captions[Column: Integer]: Widestring read GetCaptions write SetCaptions; + property Data: TObject read FData write SetData; + property DetailCount: Integer read GetDetailCount write SetDetailCount; + property Details[Line: Integer]: Integer read GetDetails write SetDetails; + property HotTracking[MousePos: TPoint]: Boolean read GetHotTracking write SetHotTracking; + property ImageIndex: TCommonImageIndexInteger read GetImageIndex write SetImageIndex default -1; + property ImageIndexes[Column: Integer]: TCommonImageIndexInteger read GetImageIndexes write SetImageIndexes; + property ImageList[Column: Integer; IconSize: TEasyImageSize]: TCustomImageList read GetImageList; + property ImageOverlayIndex: TCommonImageIndexInteger read GetImageOverlayIndex write SetImageOverlayIndex default -1; + property ImageOverlayIndexes[Column: Integer]: TCommonImageIndexInteger read GetImageOverlayIndexes write SetImageOverlayIndexes; + property Index: Integer read GetIndex; + property OwnerListview: TCustomEasyListview read GetOwnerListview; + property RefCount: Integer read FRefCount; + property Tag: Integer read FTag write FTag default 0; + property ViewRect: TRect read GetViewRect; + property VisibleIndex: Integer read FVisibleIndex; + end; + + // ************************************************************************** + // TEasyItemBase + // Basis for any object that can be stored in a TEasyGroup. Implements the + // basic handling of interaction between the item and the Listview + // ************************************************************************** + TEasyItem = class(TEasyCollectionItem) + private + FSelectionGroup: TEasySelectionGroupList; // If grouped selection is on this points to the selection group this item belongs to (nil if none) + FView: TEasyViewItem; + FVisibleIndexInGroup: Integer; // Index of visible item within a group + function GetColumnPos: Integer; + function GetOwnerGroup: TEasyGroup; + function GetOwnerItems: TEasyItems; + function GetPaintInfo: TEasyPaintInfoItem; + function GetRowPos: Integer; + function GetView: TEasyViewItem; + function GetViewClass: TEasyViewItemClass; + procedure SetPaintInfo(const Value: TEasyPaintInfoItem); + procedure SetSelectionGroup(Value: TEasySelectionGroupList); + protected + function AllowDrag(ViewportPt: TPoint): Boolean; override; + function CanChangeBold(NewValue: Boolean): Boolean; override; + function CanChangeCheck(NewValue: Boolean): Boolean; override; + function CanChangeEnable(NewValue: Boolean): Boolean; override; + function CanChangeFocus(NewValue: Boolean): Boolean; override; + function CanChangeHotTracking(NewValue: Boolean): Boolean; override; + function CanChangeSelection(NewValue: Boolean): Boolean; override; + function CanChangeVisibility(NewValue: Boolean): Boolean; override; + function DefaultStateImageList: TCustomImageList; + function GetDefaultViewClass: TEasyViewItemClass; virtual; + function GetGroupKey(FocusedColumn: Integer): LongWord; virtual; + function GetIndex: Integer; override; + function GetStateImageIndex: TCommonImageIndexInteger; virtual; + function GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; virtual; abstract; + function GetStateImageList(Column: Integer): TCustomImageList; virtual; abstract; + function LocalPaintInfo: TEasyPaintInfoBasic; override; + procedure Freeing; override; + procedure GainingBold; override; + procedure GainingCheck; override; + procedure GainingEnable; override; + procedure GainingFocus; override; + procedure GainingGhosted; override; + procedure GainingHilight; override; + procedure GainingHotTracking(MousePos: TPoint); override; + procedure GainingSelection; override; + procedure GainingVisibility; override; + procedure Initialize; override; + procedure LosingBold; override; + procedure LosingCheck; override; + procedure LosingEnable; override; + procedure LosingFocus; override; + procedure LosingGhosted; override; + procedure LosingHilight; override; + procedure LosingHotTracking; override; + procedure LosingSelection; override; + procedure LosingVisibility; override; + procedure ReleaseSelectionGroup; + procedure SetStateImageIndex(const Value: TCommonImageIndexInteger); virtual; + procedure SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); virtual; abstract; + property SelectionGroup: TEasySelectionGroupList read FSelectionGroup write SetSelectionGroup; + procedure SetGroupKey(FocusedColumn: Integer; Value: LongWord); virtual; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + function EditAreaHitPt(ViewportPoint: TPoint): Boolean; override; + function HitTestAt(ViewportPoint: TPoint; var HitInfo: TEasyItemHitTestInfoSet): Boolean; + function SelectionHit(SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; override; + function SelectionHitPt(ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; override; + procedure Edit(Column: TEasyColumn = nil); + procedure Invalidate(ImmediateUpdate: Boolean); override; + procedure ItemRectArray(Column: TEasyColumn; ACanvas: TCanvas; var RectArray: TEasyRectArrayObject); + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure MakeVisible(Position: TEasyMakeVisiblePos); override; + procedure Paint(ACanvas: TCanvas; ViewportClipRect: TRect; Column: TEasyColumn; ForceSelectionRectDraw: Boolean); virtual; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + property Alignment; + property Bold; + property Border; + property BorderColor; + property Caption; + property CaptionIndent; + property Captions; + property Checked; + property CheckFlat; + property CheckHovering; + property CheckIndent; + property CheckPending; + property CheckSize; + property CheckType; + property ColumnPos: Integer read GetColumnPos; + property Cut; + property Destroying; + property DetailCount; + property Details; + property Enabled; + property Focused; + property GroupKey[FocusedColumn: Integer]: LongWord read GetGroupKey write SetGroupKey; + property Hilighted; + property ImageIndent; + property ImageIndex; + property ImageIndexes; + property ImageList; + property ImageOverlayIndex; + property ImageOverlayIndexes; + property Initialized; + property OwnerGroup: TEasyGroup read GetOwnerGroup; + property OwnerItems: TEasyItems read GetOwnerItems; + property OwnsPaintInfo; + property PaintInfo: TEasyPaintInfoItem read GetPaintInfo write SetPaintInfo; + property RowPos: Integer read GetRowPos; + property Selected; + property State; + property StateImageIndex: TCommonImageIndexInteger read GetStateImageIndex write SetStateImageIndex default -1; + property StateImageIndexes[Column: Integer]: TCommonImageIndexInteger read GetStateImageIndexes write SetStateImageIndexes; + property StateImageList[Column: Integer]: TCustomImageList read GetStateImageList; + property VAlignment; + property View: TEasyViewItem read GetView; + property ViewClass: TEasyViewItemClass read GetViewClass; + property Visible; + property VisibleIndexInGroup: Integer read FVisibleIndexInGroup; + published + end; + + // ************************************************************************** + // TEasyItemInterfaced + // Uses interfaced based data extraction to extract the data from a data + // source. The data source can implement any of the following + // IEasyCaptions // Returns Captions for the control + // IEasyCaptionsEditable // Sets Captions in the data from the Control + // IEasyImages // Returns Images for the control + // IEasyImagesEditable // Sets Images in the data from the Control + // IEasyThumbnail // Returns Thumbnail for the control + // IEasyThumbnailEditable // Sets Thumbnail in the data from the Control + // IEasyChecks // Sets/Unsets the Checkbox State for the control + // IEasyNotifier // Returns an Inteterface to allow data to notify Control of changes in the data + // IEasyCompareData // Allows sorting of the data set + // ************************************************************************** + TEasyItemInterfaced = class(TEasyItem) + private + function GetCommonImageIndex(Column: Integer; Kind: TEasyImageKind): TCommonImageIndexInteger; + procedure SetCommonImageIndex(Column: Integer; Kind: TEasyImageKind; Value: TCommonImageIndexInteger); + protected + function GetCaptions(Column: Integer): Widestring; override; + function GetChecked: Boolean; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetGroupKey(FocusedColumn: Integer): LongWord; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetStateImageList(Column: Integer): TCustomImageList; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW, ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetChecked(Value: Boolean); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetGroupKey(FocusedColumn: Integer; Value: LongWord); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + public + function ExtractObject: TObject; + property DataInf; + end; + + // ************************************************************************** + // TEasyItemVirtual + // Calls back through the Controls Events for the data to display + // ************************************************************************** + TEasyItemVirtual = class(TEasyItem) + protected + function GetCaptions(Column: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetGroupKey(FocusedColumn: Integer): LongWord; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetStateImageList(Column: Integer): TCustomImageList; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetGroupKey(FocusedColumn: Integer; Value: LongWord); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + public + end; + + // ************************************************************************** + // TEasyItemStored + // Stores the data local to the Item instance + // ************************************************************************** + TEasyItemStored = class(TEasyItem) + private + FDataHelper: TEasyItemDynamicDataHelper; + protected + function GetCaptions(Column: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetGroupKey(FocusedColumn: Integer): LongWord; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetStateImageList(Column: Integer): TCustomImageList; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Column: Integer; Value: Integer); override; + procedure SetGroupKey(FocusedColumn: Integer; Value: LongWord); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + property DataHelper: TEasyItemDynamicDataHelper read FDataHelper write FDataHelper; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + published + property Bold; + property Caption; + property Checked; + property Enabled; + property Ghosted; + property ImageIndex; + property ImageOverlayIndex; + property Selected; + property StateImageIndex; + property Tag; + property Visible; + end; + TEasyItemStoredClass = class of TEasyItemStored; + + // ************************************************************************** + // TEasyCollection + // Basis for Collection (TEasyItems, TEasyGroups, TEasyColumns) + // ************************************************************************** + TEasyCollection = class(TEasyOwnedPersistent) + private + FHideFromDFM: Boolean; + FList: TList; + FReIndexCount: Integer; + FTag: Integer; + FVisibleList: TList; + function GetCount: Integer; + function GetItem(Index: Integer): TEasyCollectionItem; + function GetOwnerListview: TCustomEasyListview; + function GetReIndexDisable: Boolean; + function GetVisibleCount: Integer; + procedure SetItem(Index: Integer; Value: TEasyCollectionItem); + procedure SetReIndexDisable(const Value: Boolean); + protected + FItemClass: TEasyCollectionItemClass; + function DoStore: Boolean; dynamic; + function GetOwner: TPersistent; override; + procedure DefineProperties(Filer: TFiler); override; + procedure DoItemAdd(Item: TEasyCollectionItem; Index: Integer); virtual; + procedure DoStructureChange; virtual; + property List: TList read FList write FList; + property ReIndexCount: Integer read FReIndexCount write FReIndexCount; + property VisibleList: TList read FVisibleList write FVisibleList; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + function Add(Data: TObject = nil): TEasyCollectionItem; + function FirstVisible: TEasyColumn; virtual; + function LastVisible: TEasyColumn; virtual; + function NextVisible(Column: TEasyColumn): TEasyColumn; virtual; + function PrevVisible(Column: TEasyColumn): TEasyColumn; virtual; + procedure BeginUpdate(ReIndex: Boolean); virtual; + procedure Clear(FreeItems: Boolean = True); virtual; + procedure Delete(Index: Integer); + procedure EndUpdate(Invalidate: Boolean = True); virtual; + function Insert(Index: Integer; Data: TObject = nil): TEasyCollectionItem; + procedure Exchange(Index1, Index2: Integer); + procedure MakeAllVisible; virtual; + procedure ReadItems(Stream: TStream); virtual; + procedure ReIndexItems; + procedure WriteItems(Stream: TStream); virtual; + property Count: Integer read GetCount; + property HideFromDFM: Boolean read FHideFromDFM write FHideFromDFM default False; + property ItemClass: TEasyCollectionItemClass read FItemClass; + property Items[Index: Integer]: TEasyCollectionItem read GetItem write SetItem; default; + property OwnerListview: TCustomEasyListview read GetOwnerListview; + property ReIndexDisable: Boolean read GetReIndexDisable write SetReIndexDisable; + property VisibleCount: Integer read GetVisibleCount; + published + property Tag: Integer read FTag write FTag default 0; + end; + TEasyCollectionClass = class of TEasyCollection; + + // ************************************************************************** + // TEasyViewItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewItem = class(TEasyOwnedPersistentGroupItem) + private + procedure PaintAlphaBlendedRoundRect(ACanvas: TCanvas; AlphaColor: TColor; + GradientBottom: TColor; GradientTop: TColor; + var LocalSelWindowClippedRect: TRect; var Rgn: HRGN); + procedure PaintAlphaBlendedSelection(ACanvas: TCanvas; AlphaColor: TColor; + HeaderClippedWindowRect: TRect; LocalSelRect: TRect); + procedure PaintAlphaBlendedGradientFill(ACanvas: TCanvas; + GradientBottom: TColor; GradientTop: TColor; LocalSelRect: TRect; + LocalSelWindowClippedRect: TRect; LocalSelClippedRect: TRect); + procedure PaintNonAlphaBlendedSelection(ACanvas: TCanvas; + LocalSelRect: TRect); + protected + function AllowDrag(Item: TEasyItem; ViewportPoint: TPoint): Boolean; virtual; + function PaintStateImage: Boolean; virtual; + function ValidateColumnIndex(Column: TEasyColumn): Integer; + public + procedure AfterSelRectCalc(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); virtual; + procedure CalculateTextRect(Item: TEasyItem; Column: TEasyColumn; var TextR: TRect; ACanvas: TControlCanvas); + function EditAreaHitPt(Item: TEasyItem; ViewportPoint: TPoint): Boolean; virtual; + function ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; virtual; + function ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; virtual; + function FullRowSelect: Boolean; virtual; + function GetImageList(Column: TEasyColumn; Item: TEasyItem; Image: TEasyImageKind): TCustomImageList; virtual; + procedure GetImageSize(Item: TEasyItem; Column: TEasyColumn; var ImageW, ImageH: Integer; Image: TEasyImageKind); virtual; + function GetStateImageList(Column: TEasyColumn; Item: TEasyItem): TCustomImageList; virtual; + function ItemRect(Item: TEasyItem; Column: TEasyColumn; RectType: TEasyCellRectType): TRect; virtual; + procedure ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); virtual; + procedure LoadTextFont(Item: TEasyItem; Position: Integer; ACanvas: TCanvas; Hilightable: Boolean); virtual; + function OverlappedFocus: Boolean; virtual; + procedure Paint(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; ViewportClipRect: TRect; ForceSelectionRectDraw: Boolean); virtual; + procedure PaintAfter(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject); virtual; + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); virtual; + procedure PaintCheckBox(Item: TEasyItem; Column: TEasyColumn; RectArray: TEasyRectArrayObject; ACanvas: TCanvas); virtual; + procedure PaintFocusRect(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas); virtual; + procedure PaintImage(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ImageSize: TEasyImageSize; ACanvas: TCanvas); virtual; + function PaintImageSize: TEasyImageSize; virtual; + procedure PaintSelectionRect(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; ViewportClipRect: TRect; ForceSelectionRectDraw: Boolean); virtual; + procedure PaintText(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; LinesToDraw: Integer); virtual; + function PaintTextAlignment(Item: TEasyItem; Column: TEasyColumn): TAlignment; virtual; + function PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; virtual; + function PaintTextVAlignment(Item: TEasyItem; Column: TEasyColumn): TCommonVAlignment; virtual; + function PtInRect(Item: TEasyItem; Column: TEasyColumn; Pt: TPoint): Integer; virtual; + procedure ReSizeRectArray(var RectArray: TEasyRectArrayObjectArray); virtual; + function SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; virtual; + function SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; virtual; + procedure TestAndClipImage(ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Rgn: HRgn); + procedure TestAndUnClipImage(ACanvas: TCanvas; RectArray: TEasyRectArrayObject; Rgn: HRgn); + end; + + // ************************************************************************** + // TEasyViewIconItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewIconItem = class(TEasyViewItem) + public + function ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function OverlappedFocus: Boolean; override; + function PaintImageSize: TEasyImageSize; override; + function PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; override; + procedure AfterSelRectCalc(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); override; + procedure ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); override; + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; + end; + + // ************************************************************************** + // TEasyViewSmallIconItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewSmallIconItem = class(TEasyViewItem) + public + function CalculateDisplayRect(Item: TEasyItem; Column: TEasyColumn): TRect; virtual; + function ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + procedure ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); override; + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; + function PaintTextAlignment(Item: TEasyItem; Column: TEasyColumn): TAlignment; override; + function PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; override; + function PaintTextVAlignment(Item: TEasyItem; Column: TEasyColumn): TCommonVAlignment; override; + end; + + // ************************************************************************** + // TEasyViewListItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewListItem = class(TEasyViewSmallIconItem) + end; + + // ************************************************************************** + // TEasyViewReportItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewReportItem = class(TEasyViewSmallIconItem) + protected + function AllowDrag(Item: TEasyItem; ViewportPoint: TPoint): Boolean; override; + function PaintStateImage: Boolean; override; + public + function CalculateDisplayRect(Item: TEasyItem; Column: TEasyColumn): TRect; override; + function ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function FullRowSelect: Boolean; override; + function SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; override; + function SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; override; + end; + + // ************************************************************************** + // TEasyViewGridItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewGridItem = class(TEasyViewSmallIconItem) + end; + + // ************************************************************************** + // TEasyViewThumbnailItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewThumbnailItem = class(TEasyViewItem) + public + function ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function GetImageList(Column: TEasyColumn; Item: TEasyItem; Image: TEasyImageKind): TCustomImageList; override; + function PaintImageSize: TEasyImageSize; override; + procedure AfterSelRectCalc(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); override; + procedure ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); override; + function OverlappedFocus: Boolean; override; + procedure PaintAfter(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject); override; + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; + function PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; override; + function PaintTextVAlignment(Item: TEasyItem; Column: TEasyColumn): TCommonVAlignment; override; + function SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; override; + function SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; override; + end; + + // ************************************************************************** + // TEasyViewTileItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewTileItem = class(TEasyViewItem) + public + function ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; override; + function GetImageList(Column: TEasyColumn; Item: TEasyItem; Image: TEasyImageKind): TCustomImageList; override; + function PaintImageSize: TEasyImageSize; override; + function PaintTextAlignment(Item: TEasyItem; Column: TEasyColumn): TAlignment; override; + procedure AfterSelRectCalc(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); override; + procedure ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); override; + procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; + procedure PaintText(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; LinesToDraw: Integer); override; + end; + + // ************************************************************************** + // TEasyViewFilmStripItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem + // ************************************************************************** + TEasyViewFilmStripItem = class(TEasyViewThumbnailItem) + end; + + // ************************************************************************** + // TEasyViewTaskBandItem + // Basis for the UI (drawing, and mouse interaction) for a TEasyItem in the + // Taskband control + // ************************************************************************** + TEasyViewTaskBandItem = class(TEasyViewSmallIconItem) + public + end; + + // ************************************************************************** + // TEasyItems + // Collection that contains all the Items within a Group in the control + // ************************************************************************** + TEasyItems = class(TEasyCollection) + private + FOwnerGroup: TEasyGroup; + function GetItem(Index: Integer): TEasyItem; + procedure SetItem(Index: Integer; Value: TEasyItem); + protected + procedure DoStructureChange; override; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); reintroduce; virtual; + destructor Destroy; override; + + function Add(Data: TObject = nil): TEasyItem; + function AddInterfaced(const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; + function AddVirtual(Data: TObject = nil): TEasyItemVirtual; + function AddCustom(CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; + procedure Clear(FreeItems: Boolean = True); override; + procedure Delete(Index: Integer); reintroduce; + procedure Exchange(Index1, Index2: Integer); reintroduce; + function Insert(Index: Integer; Data: TObject = nil): TEasyItem; + function InsertCustom(Index: Integer; CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; + function InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; + function InsertVirtual(Index: Integer; Data: TObject = nil): TEasyItemVirtual; + property Items[Index: Integer]: TEasyItem read GetItem write SetItem; default; + property OwnerGroup: TEasyGroup read FOwnerGroup; + end; + + // ************************************************************************** + // TEasyGlobalItems + // Convenience TListview migration items + // ************************************************************************** + TEasyGlobalItems = class + private + FOwner: TCustomEasyListview; + function GetCount: Integer; + function GetItem(Index: Integer): TEasyItem; + function GetItemInternal(Index: Integer): TEasyItem; + function GetLastGroup: TEasyGroup; + procedure EnsureFirstGroup; + procedure IndexError(Index: Integer); + procedure SetItem(Index: Integer; const Value: TEasyItem); + procedure SetReIndexDisable(const Value: Boolean); + public + constructor Create(AnOwner: TCustomEasyListview); + + function Add(Data: TObject = nil): TEasyItem; + function AddCustom(CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; + function AddInterfaced(const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; + function AddVirtual(Data: TObject = nil): TEasyItemVirtual; + function IndexOf(Item: TEasyItem): Integer; + function Insert(Index: Integer; Data: TObject = nil): TEasyItem; + function InsertCustom(Index: Integer; CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; + function InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; + function InsertVirtual(Index: Integer; Data: TObject = nil): TEasyItemVirtual; + procedure Clear; + procedure Delete(Index: Integer; ReIndex: Boolean = True); + procedure Exchange(Index1, Index2: Integer); + property Count: Integer read GetCount; + property Items[Index: Integer]: TEasyItem read GetItem write SetItem; default; + property OwnerListview: TCustomEasyListview read FOwner; + property ReIndexDisable: Boolean write SetReIndexDisable; + end; + + // ************************************************************************** + // TEasyGlobalImageManager + // Manages images and bitmaps that are used in the EasyControl such as + // expand "+" buttons, etc. + // ************************************************************************** + TEasyGlobalImageManager = class(TEasyOwnedPersistent) + private + FGroupExpandButton: TBitmap; + FGroupCollapseButton: TBitmap; + FColumnSortUp: TBitmap; + FColumnSortDown: TBitmap; + function GetColumnSortDown: TBitmap; + function GetColumnSortUp: TBitmap; + function GetGroupCollapseImage: TBitmap; + function GetGroupExpandImage: TBitmap; + procedure SetColumnSortDown(Value: TBitmap); + procedure SetColumnSortUp(Value: TBitmap); + procedure SetGroupCollapseImage(const Value: TBitmap); + procedure SetGroupExpandImage(const Value: TBitmap); + protected + procedure MakeTransparent(Bits: TBitmap; TransparentColor: TColor); + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + published + property GroupExpandButton: TBitmap read GetGroupExpandImage write SetGroupExpandImage; + property GroupCollapseButton: TBitmap read GetGroupCollapseImage write SetGroupCollapseImage; + property ColumnSortUp: TBitmap read GetColumnSortUp write SetColumnSortUp; + property ColumnSortDown: TBitmap read GetColumnSortDown write SetColumnSortDown; + end; + + // ************************************************************************** + // TEasyGridGroup + // Builds the Grid for the Group, by default the grid fits in the OwnerWindow + // horizontally and wraps down + // ************************************************************************** + TEasyGridGroup = class(TEasyOwnedPersistent) + private + FColumnCount: Integer; // Number of Columns in the grid + FLayout: TEasyGridLayout; + FOwnerGroup: TEasyGroup; // The group that the grid is attached to + FRowCount: Integer; // The number of Rows in the group + function GetOwnerGroups: TEasyGroups; + + protected + function AdjacentItem(Item: TEasyItem; Direction: TEasyAdjacentCellDir): TEasyItem; virtual; + function GetCellSize: TEasyCellSize; virtual; abstract; + function GetMaxColumns(Group: TEasyGroup; WindowWidth: Integer): Integer; virtual; + function LastItemInNColumn(Group: TEasyGroup; N: Integer): TEasyItem; + function NextVisibleGroupWithNItems(StartGroup: TEasyGroup; N: Integer): TEasyGroup; + function PrevVisibleGroupWithNItems(StartGroup: TEasyGroup; N: Integer): TEasyGroup; + function SearchForHitRight(ColumnPos: Integer; Pt: TPoint): TEasyItem; + function StaticTopItemMargin: Integer; virtual; + function StaticTopMargin: Integer; virtual; + procedure AutoSizeCells; virtual; + procedure FindLongestCaption(Column: TEasyColumn; var Item: TEasyItem); + procedure SetCellSize(Value: TEasyCellSize); virtual; abstract; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); reintroduce; virtual; + destructor Destroy; override; + procedure FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); virtual; + procedure Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); virtual; + + property CellSize: TEasyCellSize read GetCellSize write SetCellSize; + property ColumnCount: Integer read FColumnCount; + property Layout: TEasyGridLayout read FLayout; + property OwnerGroup: TEasyGroup read FOwnerGroup; + property OwnerGroups: TEasyGroups read GetOwnerGroups; + property RowCount: Integer read FRowCount; + end; + + // ************************************************************************** + // TEasyGridIconGroup + // Builds the Large Icon Grid for the Group + // ************************************************************************** + TEasyGridIconGroup = class(TEasyGridGroup) + protected + function GetCellSize: TEasyCellSize; override; + procedure AutoSizeCells; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + end; + + // ************************************************************************** + // TEasyGridSmallIconGroup + // Builds the Small Icon Grid for the Group + // ************************************************************************** + TEasyGridSmallIconGroup = class(TEasyGridGroup) + protected + function GetCellSize: TEasyCellSize; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + end; + + // ************************************************************************** + // TEasyGridListGroup + // Builds the List Grid for the Group + // ************************************************************************** + TEasyGridListGroup = class(TEasyGridGroup) + protected + function AdjacentItem(Item: TEasyItem; Direction: TEasyAdjacentCellDir): TEasyItem; override; + function GetCellSize: TEasyCellSize; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); override; + procedure FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); override; + procedure Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); override; + end; + + // ************************************************************************** + // TEasyGridReportGroup + // Builds the Report Grid for the Group + // ************************************************************************** + TEasyGridReportGroup = class(TEasyGridGroup) + protected + function AdjacentItem(Item: TEasyItem; Direction: TEasyAdjacentCellDir): TEasyItem; override; + function GetCellSize: TEasyCellSize; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); override; + procedure FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); override; + procedure Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); override; + end; + + // ************************************************************************** + // TEasyGridThumbnailGroup + // Builds the Thumbnail Grid for the Group + // ************************************************************************** + TEasyGridThumbnailGroup = class(TEasyGridGroup) + protected + function GetCellSize: TEasyCellSize; override; + procedure AutoSizeCells; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + end; + + // ************************************************************************** + // TEasyGridTileGroup + // Builds the Tile Grid for the Group + // ************************************************************************** + TEasyGridTileGroup = class(TEasyGridGroup) + protected + function GetCellSize: TEasyCellSize; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + procedure FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); override; + end; + + // ************************************************************************** + // TEasyGridFilmStripGroup + // Builds the List Grid for the Group + // ************************************************************************** + TEasyGridFilmStripGroup = class(TEasyGridListGroup) + protected + function GetCellSize: TEasyCellSize; override; + procedure AutoSizeCells; override; + procedure SetCellSize(Value: TEasyCellSize); override; + end; + + // ************************************************************************** + // TEasyGridGridGroup + // Builds the Report Grid for the Group + // ************************************************************************** + TEasyGridGridGroup = class(TEasyGridGroup) + protected + function GetCellSize: TEasyCellSize; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); override; + procedure Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); override; + end; + + TEasyGridSingleColumn = class(TEasyGridGroup) + protected + function GetCellSize: TEasyCellSize; override; + function GetMaxColumns(Group: TEasyGroup; WindowWidth: Integer): Integer; override; + procedure AutoSizeCells; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + procedure FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); override; + end; + + // ************************************************************************** + // TGridTaskBandGroup + // Builds the Report Grid for the Group in the Taskband control + // ************************************************************************** + TEasyGridTaskBandGroup = class(TEasyGridSingleColumn) + private + FCellSize: TEasyCellSize; + protected + function GetCellSize: TEasyCellSize; override; + function StaticTopItemMargin: Integer; override; + function StaticTopMargin: Integer; override; + procedure SetCellSize(Value: TEasyCellSize); override; + property CellSize: TEasyCellSize read FCellSize write FCellSize; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); override; + destructor Destroy; override; + end; + + // ************************************************************************** + // Grid for the TEasyTaskPanel component + // ************************************************************************** + TEasyGridGroupTaskPanel = class(TEasyGridSingleColumn) + private + FCellSize: TEasyCellSize; + protected + function GetCellSize: TEasyCellSize; override; + function StaticTopMargin: Integer; override; + procedure SetCellSize(Value: TEasyCellSize); override; + public + constructor Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); override; + destructor Destroy; override; + procedure Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); override; + published + end; + + // ************************************************************************** + // TEasyGroupBase + // Collection Item that represents a single group in the Listview + // ************************************************************************** + TEasyGroup = class(TEasyCollectionItem) + private + FExpanded: Boolean; // Is the group expanded/collapsed + FGrid: TEasyGridGroup; // The UI grid that defines the item positions + FItems: TEasyItems; // The List of Items (TEasyItems) in the group + FKey: LongWord; + FView: TEasyViewGroup; + FVisibleItems: TList; + function GetBandBlended: Boolean; + function GetBandColor: TColor; + function GetBandColorFade: TColor; + function GetBandEnabled: Boolean; + function GetBandFullWidth: Boolean; + function GetBandIndent: Integer; + function GetBandLength: Integer; + function GetBandMargin: Integer; + function GetBandRadius: Byte; + function GetBandThickness: Integer; + function GetClientRect: TRect; + function GetExpandable: Boolean; + function GetExpandImageIndent: Integer; + function GetGrid: TEasyGridGroup; + function GetGridClass: TEasyGridGroupClass; + function GetItem(Index: Integer): TEasyItem; + function GetItemCount: Integer; + function GetMarginBottom: TEasyFooterMargin; + function GetMarginLeft: TEasyMargin; + function GetMarginRight: TEasyMargin; + function GetMarginTop: TEasyHeaderMargin; + function GetOwnerGroups: TEasyGroups; + function GetOwnerListview: TCustomEasyListview; + function GetPaintInfo: TEasyPaintInfoBaseGroup; + function GetView: TEasyViewGroup; + function GetViewClass: TEasyViewGroupClass; + function GetVisibleCount: Integer; + function GetVisibleItem(Index: Integer): TEasyItem; + procedure SetBandBlended(Value: Boolean); + procedure SetBandColor(Value: TColor); + procedure SetBandColorFade(Value: TColor); + procedure SetBandEnabled(Value: Boolean); + procedure SetBandFullWidth(Value: Boolean); + procedure SetBandIndent(Value: Integer); + procedure SetBandLength(Value: Integer); + procedure SetBandMargin(Value: Integer); + procedure SetBandRadius(Value: Byte); + procedure SetBandThickness(Value: Integer); + procedure SetExpandable(Value: Boolean); + procedure SetExpanded(Value: Boolean); virtual; + procedure SetExpandImageIndent(Value: Integer); + procedure SetItem(Index: Integer; Value: TEasyItem); + procedure SetMarginBottom(Value: TEasyFooterMargin); + procedure SetMarginLeft(Value: TEasyMargin); + procedure SetMarginRight(Value: TEasyMargin); + procedure SetMarginTop(Value: TEasyHeaderMargin); + procedure SetPaintInfo(const Value: TEasyPaintInfoBaseGroup); + protected + function CanChangeBold(NewValue: Boolean): Boolean; override; + function CanChangeCheck(NewValue: Boolean): Boolean; override; + function CanChangeEnable(NewValue: Boolean): Boolean; override; + function CanChangeFocus(NewValue: Boolean): Boolean; override; + function CanChangeHotTracking(NewValue: Boolean): Boolean; override; + function CanChangeSelection(NewValue: Boolean): Boolean; override; + function CanChangeVisibility(NewValue: Boolean): Boolean; override; + function DefaultImageList(ImageSize: TEasyImageSize): TCustomImageList; override; + function GetDefaultGridClass: TEasyGridGroupClass; virtual; + function GetDefaultViewClass: TEasyViewGroupClass; virtual; + function LocalPaintInfo: TEasyPaintInfoBasic; override; + procedure Freeing; override; + procedure GainingBold; override; + procedure GainingCheck; override; + procedure GainingEnable; override; + procedure GainingFocus; override; + procedure GainingGhosted; override; + procedure GainingHilight; override; + procedure GainingHotTracking(MousePos: TPoint); override; + procedure GainingSelection; override; + procedure GainingVisibility; override; + procedure Initialize; override; + procedure LosingBold; override; + procedure LosingCheck; override; + procedure LosingEnable; override; + procedure LosingFocus; override; + procedure LosingGhosted; override; + procedure LosingHilight; override; + procedure LosingHotTracking; override; + procedure LosingSelection; override; + procedure LosingVisibility; override; + property Alignment; + property BandBlended: Boolean read GetBandBlended write SetBandBlended default True; + property BandColor: TColor read GetBandColor write SetBandColor default clBlue; + property BandColorFade: TColor read GetBandColorFade write SetBandColorFade default clWindow; + property BandEnabled: Boolean read GetBandEnabled write SetBandEnabled default True; + property BandFullWidth: Boolean read GetBandFullWidth write SetBandFullWidth default False; + property BandIndent: Integer read GetBandIndent write SetBandIndent default 0; + property BandLength: Integer read GetBandLength write SetBandLength default 300; + property BandMargin: Integer read GetBandMargin write SetBandMargin default 0; + property BandRadius: Byte read GetBandRadius write SetBandRadius default 4; + property BandThickness: Integer read GetBandThickness write SetBandThickness default 3; + property CaptionIndent; + property CheckFlat; + property CheckIndent; + property CheckSize; + property CheckType; + property Expandable: Boolean read GetExpandable write SetExpandable default True; + property ExpandImageIndent: Integer read GetExpandImageIndent write SetExpandImageIndent default 4; + property ImageIndent; + property Key: LongWord read FKey write FKey; + property MarginBottom: TEasyFooterMargin read GetMarginBottom write SetMarginBottom; + property MarginLeft: TEasyMargin read GetMarginLeft write SetMarginLeft; + property MarginRight: TEasyMargin read GetMarginRight write SetMarginRight; + property MarginTop: TEasyHeaderMargin read GetMarginTop write SetMarginTop; + property OwnsPaintInfo; + property PaintInfo: TEasyPaintInfoBaseGroup read GetPaintInfo write SetPaintInfo; + property VAlignment default cvaCenter; + property VisibleItem[Index: Integer]: TEasyItem read GetVisibleItem; + property VisibleItems: TList read FVisibleItems write FVisibleItems; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + + function BoundsRectBkGnd: TRect; + function BoundsRectBottomMargin: TRect; + function BoundsRectLeftMargin: TRect; + function BoundsRectRightMargin: TRect; + function BoundsRectTopMargin: TRect; + function EditAreaHitPt(ViewportPoint: TPoint): Boolean; override; + function HitTestAt(ViewportPoint: TPoint; var HitInfo: TEasyGroupHitTestInfoSet): Boolean; + function ItemByPoint(ViewportPoint: TPoint): TEasyItem; + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure Paint(MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; ACanvas: TCanvas); + procedure Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); + function SelectionHit(SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; override; + function SelectionHitPt(ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; override; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + property Bold; + property Caption; + property Checked; + property ClientRect: TRect read GetClientRect; + property Cut; + property Enabled; + property Expanded: Boolean read FExpanded write SetExpanded default True; + property Focused; + property Grid: TEasyGridGroup read GetGrid; + property GridClass: TEasyGridGroupClass read GetGridClass; + property ImageIndex; + property ImageOverlayIndex; + property Item[Index: Integer]: TEasyItem read GetItem write SetItem; default; + property ItemCount: Integer read GetItemCount; + property Items: TEasyItems read FItems write FItems; + property OwnerListview: TCustomEasyListview read GetOwnerListview; + property OwnerGroups: TEasyGroups read GetOwnerGroups; + property View: TEasyViewGroup read GetView; + property ViewClass: TEasyViewGroupClass read GetViewClass; + property Visible; + property VisibleCount: Integer read GetVisibleCount; + end; + + TEasyGroupInterfaced = class(TEasyGroup) + protected + function GetCaptions(Line: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + public + property DataInf; + end; + + TEasyBaseGroupStored = class(TEasyGroup) + private + FDataHelper: TEasyDynamicDataHelper; + protected + function GetCaptions(Line: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger ; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + property DataHelper: TEasyDynamicDataHelper read FDataHelper write FDataHelper; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + end; + + TEasyGroupStored = class(TEasyBaseGroupStored) + published + property Caption; + property Bold; + property Checked; + property Cut; + property Enabled; + property Expanded; + property ImageIndex; + property ImageOverlayIndex; + property Items; + property Tag; + property Visible; + end; + + // + // Group for the TEasyTaskPanel component + // + TEasyGroupTaskPanel = class(TEasyBaseGroupStored) + private + FHeight: Integer; + FTaskPanel: TEasyTaskPanelForm; + function GetTaskWindowCreated: Boolean; + procedure SetExpanded(Value: Boolean); override; + procedure SetHeight(const Value: Integer); + procedure SetInitialized(Value: Boolean); override; + protected + procedure CreateTaskWindow; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + property TaskPanel: TEasyTaskPanelForm read FTaskPanel; + published + property Caption; + property Bold; + property Checked; + property Cut; + property Enabled; + property Expanded; + property Height: Integer read FHeight write SetHeight default 100; + property ImageIndex; + property ImageOverlayIndex; + property Tag; + property TaskWindowCreated: Boolean read GetTaskWindowCreated; + property Visible; + end; + + TEasyGroupVirtual = class(TEasyGroup) + protected + function GetCaptions(Line: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + end; + + // ************************************************************************** + // TEasyViewGroup + // Implements the basis for the UI (drawing, and mouse interaction) for a EasyGroup + // ************************************************************************** + TEasyViewGroup = class(TEasyOwnedPersistentGroupItem) + protected + function CustomExpandImages: Boolean; + procedure GetCollapseExpandImages(var Expand, Collapse: TBitmap); + public + function EditAreaHitPt(Group: TEasyGroup; ViewportPoint: TPoint): Boolean; virtual; + function GetImageList(Group: TEasyGroup): TCustomImageList; + procedure GetExpandImageSize(Group: TEasyGroup; var ImageW, ImageH: Integer); virtual; + procedure GetImageSize(Group: TEasyGroup; var ImageW, ImageH: Integer); virtual; + procedure GroupRectArray(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; var RectArray: TEasyRectArrayObject); virtual; + procedure LoadTextFont(Group: TEasyGroup; ACanvas: TCanvas); virtual; + procedure Paint(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; ACanvas: TCanvas); virtual; + procedure PaintAfter(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintBackground(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintBand(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintBefore(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintCheckBox(Group: TEasyGroup; ACanvas: TCanvas; RectArray: TEasyRectArrayObject); virtual; + procedure PaintExpandButton(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintFocusRect(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintImage(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintSelectionRect(Group: TEasyGroup; ACanvas: TCanvas; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + procedure PaintText(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ACanvas: TCanvas; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + function SelectionHit(Group: TEasyGroup; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; virtual; + function SelectionHitPt(Group: TEasyGroup; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; virtual; + end; + + // ************************************************************************** + // TEasyViewTaskBandGroup + // Implements the basis for the UI (drawing, and mouse interaction) for a EasyGroup + // in the TaskBand control + // ************************************************************************** + TEasyViewTaskBandGroup = class(TEasyViewGroup) + protected + function DrawThemed: Boolean; virtual; + procedure PaintTextTopThemed(ACanvas: TCanvas; Group: TEasyGroup; ObjRect: TRect; RectArray: TEasyRectArrayObject); virtual; + public + procedure GetExpandImageSize(Group: TEasyGroup; var ImageW: Integer; var ImageH: Integer); override; + procedure GroupRectArray(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; var RectArray: TEasyRectArrayObject); override; + procedure LoadTextFont(Group: TEasyGroup; ACanvas: TCanvas); override; + procedure PaintBackground(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); override; + procedure PaintBand(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); override; + procedure PaintExpandButton(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); override; + procedure PaintText(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ACanvas: TCanvas; ObjRect: TRect; RectArray: TEasyRectArrayObject); override; + end; + + // ************************************************************************** + // TEasyViewTaskPanelGroup + // Implements the basis for the UI (drawing, and mouse interaction) for a EasyGroup + // in the TaskPanel control + // ************************************************************************** + TEasyViewTaskPanelGroup = class(TEasyViewTaskBandGroup) + protected + public + procedure PaintBefore(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); override; + end; + + // ************************************************************************** + // TEasyGroups + // Collection that contains all the Groups in the control + // ************************************************************************** + TEasyGroups = class(TEasyCollection) + private + FGroupsState: TEasyGroupsStates; + FStreamGroups: Boolean; + function GetCellHeight: Integer; + function GetCellWidth: Integer; + function GetGroup(Index: Integer): TEasyGroup; + function GetItemCount: Integer; + function GetViewRect: TRect; + function GetVisibleGroup(Index: Integer): TEasyGroup; + procedure SetCellHeight(Value: Integer); + procedure SetCellWidth(Value: Integer); + procedure SetGroup(Index: Integer; Value: TEasyGroup); + protected + function FirstGroupInternal(VisibleOnly: Boolean): TEasyGroup; + function FirstInGroupInternal(Group: TEasyGroup; VisibleOnly: Boolean): TEasyItem; + function FirstItemInternal(NextItemType: TEasyNextItemType): TEasyItem; + function LastGroupInternal(VisibleOnly: Boolean): TEasyGroup; + function LastInGroupInternal(Group: TEasyGroup; VisibleOnly: Boolean): TEasyItem; + function LastItemInternal(NextItemType: TEasyNextItemType): TEasyItem; + function NavigateGroupInternal(Group: TEasyGroup; VisibleOnly: Boolean; Direction: TEasySearchDirection): TEasyGroup; + function NavigateInGroupInternal(Group: TEasyGroup; Item: TEasyItem; VisibleOnly: Boolean; Direction: TEasySearchDirection): TEasyItem; + function NavigateItemInternal(Item: TEasyItem; NextItemType: TEasyNextItemType; Direction: TEasySearchDirection): TEasyItem; + procedure DoStructureChange; override; + property GroupsState: TEasyGroupsStates read FGroupsState write FGroupsState; + property VisibleGroup[Index: Integer]: TEasyGroup read GetVisibleGroup; + public + constructor Create(AnOwner: TCustomEasyListview); reintroduce; virtual; + destructor Destroy; override; + + function Add(Data: TObject = nil): TEasyGroup; + function AddInterfaced(const DataInf: IUnknown; Data: TObject = nil): TEasyGroupInterfaced; + function AddVirtual(Data: TObject = nil): TEasyGroupVirtual; + function AddCustom(CustomGroup: TEasyGroupClass; Data: TObject = nil): TEasyGroup; + function AdjacentItem(Item: TEasyItem; Direction: TEasyAdjacentCellDir): TEasyItem; + function CanMoveDown: Boolean; + function CanMoveUp: Boolean; + procedure Clear(FreeItems: Boolean = True); override; + procedure CollapseAll; + procedure DeleteGroup(Group: TEasyGroup); + procedure DeleteItem(Item: TEasyItem); + procedure DeleteItems(ItemArray: TEasyItemArray); + procedure ExpandAll; + function FirstGroup: TEasyGroup; + function FirstGroupInRect(ViewportRect: TRect): TEasyGroup; + function FirstInGroup(Group: TEasyGroup): TEasyItem; + function FirstInitializedItem: TEasyItem; + function FirstItem: TEasyItem; + function FirstItemInRect(ViewportRect: TRect): TEasyItem; + function FirstVisibleGroup: TEasyGroup; + function FirstVisibleInGroup(Group: TEasyGroup): TEasyItem; + function FirstVisibleItem: TEasyItem; + function GroupByPoint(ViewportPoint: TPoint): TEasyGroup; + function Insert(Index: Integer; Data: TObject = nil): TEasyGroup; + function InsertCustom(Index: Integer; CustomGroup: TEasyGroupClass; Data: TObject = nil): TEasyGroup; + function InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject): TEasyGroupInterfaced; + function InsertVirtual(Index: Integer; Data: TObject = nil): TEasyGroupVirtual; + procedure InitializeAll; + procedure InvalidateItem(Item: TEasyCollectionItem; ImmediateUpdate: Boolean); + function LastGroup: TEasyGroup; + function LastInGroup(Group: TEasyGroup): TEasyItem; + function LastInitializedItem: TEasyItem; + function LastItem: TEasyItem; + function LastVisibleGroup: TEasyGroup; + function LastVisibleInGroup(Group: TEasyGroup): TEasyItem; + function LastVisibleItem: TEasyItem; + function ItemByPoint(ViewportPoint: TPoint): TEasyItem; + function MoveDown: Boolean; + function MoveUp: Boolean; + function NextEditableItem(Item: TEasyItem): TEasyItem; + function NextGroup(Group: TEasyGroup): TEasyGroup; + function NextGroupInRect(Group: TEasyGroup; ViewportRect: TRect): TEasyGroup; + function NextInitializedItem(Item: TEasyItem): TEasyItem; + function NextInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; + function NextItem(Item: TEasyItem): TEasyItem; + function NextItemInRect(Item: TEasyItem; ViewportRect: TRect): TEasyItem; + function NextVisibleGroup(Group: TEasyGroup): TEasyGroup; + function NextVisibleGroupWithVisibleItems(Group: TEasyGroup): TEasyGroup; + function NextVisibleInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; + function NextVisibleItem(Item: TEasyItem): TEasyItem; + function PrevEditableItem(Item: TEasyItem): TEasyItem; + function PrevGroup(Group: TEasyGroup): TEasyGroup; + function PrevInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; + function PrevInitializedItem(Item: TEasyItem): TEasyItem; + function PrevItem(Item: TEasyItem): TEasyItem; + function PrevVisibleGroup(Group: TEasyGroup): TEasyGroup; + function PrevVisibleGroupWithVisibleItems(Group: TEasyGroup): TEasyGroup; + function PrevVisibleInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; + function PrevVisibleItem(Item: TEasyItem): TEasyItem; + procedure LoadFromStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + procedure MakeAllVisible; override; + procedure Move(Item: TEasyItem; NewGroup: TEasyGroup); + procedure Rebuild(Force: Boolean = False); virtual; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + procedure UnInitializeAll; + property CellHeight: Integer read GetCellHeight write SetCellHeight; + property CellWidth: Integer read GetCellWidth write SetCellWidth; + property Groups[Index: Integer]: TEasyGroup read GetGroup write SetGroup; default; + property ItemCount: Integer read GetItemCount; + property StreamGroups: Boolean read FStreamGroups write FStreamGroups default True; + property ViewRect: TRect read GetViewRect; + end; + + // Specical Groups container and Groups for the TEasyTaskPanel component + TEasyGroupsTaskPanel = class(TEasyGroups) + private + function GetGroup(Index: Integer): TEasyGroupTaskPanel; + procedure SetGroup(Index: Integer; Value: TEasyGroupTaskPanel); + public + constructor Create(AnOwner: TCustomEasyListview); override; + property Groups[Index: Integer]: TEasyGroupTaskPanel read GetGroup write SetGroup; default; + end; + + // ************************************************************************** + // TEasyCellSize + // Maintains the default sizes for the Cells a single view (grid) + // ************************************************************************** + TEasyCellSize = class(TEasyOwnedPersistent) + private + FAutoSize: Boolean; + FAutoSizeHeight: Integer; // Dynamic size that is reset with each rebuid of the Groups if the Grid is AutoSized + FAutoSizeWidth: Integer; // Dynamic size that is reset with each rebuid of the Groups if the Grid is AutoSized + FHeight: Integer; // Fixed size that remains constant with each rebuid of the Groups if the Grid is not AutoSized + FWidth: Integer; // Fixed size that remains constant with each rebuid of the Groups if the Grid is not AutoSized + function GetHeight: Integer; + function GetWidth: Integer; + procedure SetAutoSize(const Value: Boolean); + procedure SetHeight(Value: Integer); + procedure SetWidth(Value: Integer); + protected + property AutoSizeHeight: Integer read FAutoSizeHeight write FAutoSizeHeight; + property AutoSizeWidth: Integer read FAutoSizeWidth write FAutoSizeWidth; + public + constructor Create(AnOwner: TCustomEasyListview); override; + + procedure Assign(Source: TPersistent); override; + procedure SetSize(AWidth, AHeight: Integer); + published + property AutoSize: Boolean read FAutoSize write SetAutoSize default False; + property Height: Integer read GetHeight write SetHeight default 75; + property Width: Integer read GetWidth write SetWidth default 75; + end; + + // ************************************************************************** + // TEasyCellSizeIcon + // Maintains the default sizes for the Cells a Icon view + // ************************************************************************** + TEasyCellSizeIcon = class(TEasyCellSize) + end; + + // ************************************************************************** + // TEasyCellSizeSmallIcon + // Maintains the default sizes for the Cells a Small Icon view + // ************************************************************************** + TEasyCellSizeSmallIcon = class(TEasyCellSize) + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Width default 200; + property Height default 17; + end; + + // ************************************************************************** + // TEasyCellSizeThumbnail + // Maintains the default sizes for the Cells a Thumbnail view + // ************************************************************************** + TEasyCellSizeThumbnail = class(TEasyCellSize) + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Width default 125; + property Height default 143; + end; + + // ************************************************************************** + // TEasyCellSizeTile + // Maintains the default sizes for the Cells a Tile view + // ************************************************************************** + TEasyCellSizeTile = class(TEasyCellSize) + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Width default 218; + property Height default 58; + end; + + // ************************************************************************** + // TEasyCellSizeList + // Maintains the default sizes for the Cells a List view + // ************************************************************************** + TEasyCellSizeList = class(TEasyCellSize) + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Width default 200; + property Height default 17; + end; + + // ************************************************************************** + // TEasyCellSizeReport + // Maintains the default sizes for the Cells a Report view + // ************************************************************************** + TEasyCellSizeReport = class(TEasyCellSize) + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Width default 75; + property Height default 17; + end; + + // ************************************************************************** + // TEasyCellSizeFilmStrip + // Maintains the default sizes for the Cells a FilmStrip view + // ************************************************************************** + TEasyCellSizeFilmStrip = class(TEasyCellSizeThumbnail) + end; + + // ************************************************************************** + // TEasyCellGrid + // Maintains the default sizes for the Cells a FilmStrip view + // ************************************************************************** + TEasyCellGrid = class(TEasyCellSizeReport) + end; + + // ************************************************************************** + // TEasyCellSizes + // Maintains the default sizes for the Cells in each view + // ************************************************************************** + TEasyCellSizes = class(TEasyOwnedPersistent) + private + FFilmStrip: TEasyCellSize; + FIcon: TEasyCellSize; + FList: TEasyCellSize; + FReport: TEasyCellSize; + FSmallIcon: TEasyCellSize; + FGrid: TEasyCellSize; + FThumbnail: TEasyCellSize; + FTile: TEasyCellSize; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + published + property FilmStrip: TEasyCellSize read FFilmStrip write FFilmStrip; + property Icon: TEasyCellSize read FIcon write FIcon; + property SmallIcon: TEasyCellSize read FSmallIcon write FSmallIcon; + property Grid: TEasyCellSize read FGrid write FGrid; + property Thumbnail: TEasyCellSize read FThumbnail write FThumbnail; + property Tile: TEasyCellSize read FTile write FTile; + property List: TEasyCellSize read FList write FList; + property Report: TEasyCellSize read FReport write FReport; + end; + + TEasyColumnDropDownButtonState = ( + cdbsHovering, // Mouse is hovering over the button + cdbsDown, // Mouse is pressing the button + cdbsClickPending // Button was pressed down and held while on the button, may have been moved off the button + ); + TEasyColumnDropDownButtonStates = set of TEasyColumnDropDownButtonState; + + TEasyColumnDropDownButton = class(TPersistent) + private + FAlwaysShow: Boolean; // By default the button only shows when the mouse is hovering over the column header + FEnabled: Boolean; + FMenu: TPopupMenu; + FOwner: TEasyColumn; + FState: TEasyColumnDropDownButtonStates; + FVisible: Boolean; + procedure SetAlwaysShow(const Value: Boolean); + procedure SetEnabled(const Value: Boolean); + procedure SetVisible(const Value: Boolean); + public + property State: TEasyColumnDropDownButtonStates read FState write FState; + published + constructor Create(AnOwner: TEasyColumn); + property AlwaysShow: Boolean read FAlwaysShow write SetAlwaysShow default False; + property Enabled: Boolean read FEnabled write SetEnabled default True; + property Menu: TPopupMenu read FMenu write FMenu; + property Owner: TEasyColumn read FOwner; + property Visible: Boolean read FVisible write SetVisible default False; + end; + + // ************************************************************************** + // TEasyColumn + // Collection Item that represents a single column in the Listview + // ************************************************************************** + TEasyColumn = class(TEasyCollectionItem) + private + FAlignment: TAlignment; + FAutoSizeOnDblClk: Boolean; // Autosizes column when double clicked in size area + FAutoSortOnClick: Boolean; + FAutoSpring: Boolean; // Sizes column based on width of window + FAutoToggleSortGlyph: Boolean; + FClickable: Boolean; + FDropDownButton: TEasyColumnDropDownButton; + FPosition: Integer; + FSortDirection: TEasySortDirection; + FSpringRest: Single; + FStyle: TEasyHeaderButtonStyle; + FView: TEasyViewColumn; + FWidth: Integer; + function GetAlignment: TAlignment; + function GetColor: TColor; + function GetHotTrack: Boolean; + function GetImagePosition: TEasyHeaderImagePosition; + function GetOwnerColumns: TEasyColumns; + function GetOwnerHeader: TEasyHeader; + function GetPaintInfo: TEasyPaintInfoColumn; + function GetSortGlyphAlign: TEasySortGlyphAlign; + function GetSortGlyphIndent: Integer; + function GetStyle: TEasyHeaderButtonStyle; + function GetView: TEasyViewColumn; + function GetViewClass: TEasyViewColumnClass; + procedure SetAlignment(Value: TAlignment); + procedure SetAutoSpring(const Value: Boolean); + procedure SetColor(Value: TColor); + procedure SetHotTrack(Value: Boolean); + procedure SetImagePosition(Value: TEasyHeaderImagePosition); + procedure SetPaintInfo(Value: TEasyPaintInfoColumn); + procedure SetPosition(Value: Integer); + procedure SetSortDirection(Value: TEasySortDirection); + procedure SetSortGlpyhAlign(Value: TEasySortGlyphAlign); + procedure SetSortGlyphIndent(Value: Integer); + procedure SetStyle(Value: TEasyHeaderButtonStyle); + procedure SetWidth(Value: Integer); + protected + function CanChangeBold(NewValue: Boolean): Boolean; override; + function CanChangeCheck(NewValue: Boolean): Boolean; override; + function CanChangeEnable(NewValue: Boolean): Boolean; override; + function CanChangeFocus(NewValue: Boolean): Boolean; override; + function CanChangeHotTracking(NewValue: Boolean): Boolean; override; + function CanChangeSelection(NewValue: Boolean): Boolean; override; + function CanChangeVisibility(NewValue: Boolean): Boolean; override; + function DefaultImageList(ImageSize: TEasyImageSize): TCustomImageList; override; + function GetDefaultViewClass: TEasyViewColumnClass; virtual; + function LocalPaintInfo: TEasyPaintInfoBasic; override; + procedure AutoSizeToFit; virtual; + procedure Freeing; override; + procedure GainingBold; override; + procedure GainingCheck; override; + procedure GainingEnable; override; + procedure GainingFocus; override; + procedure GainingGhosted; override; + procedure GainingHilight; override; + procedure GainingHotTracking(MousePos: TPoint); override; + procedure GainingSelection; override; + procedure GainingVisibility; override; + procedure Initialize; override; + procedure LosingBold; override; + procedure LosingCheck; override; + procedure LosingEnable; override; + procedure LosingFocus; override; + procedure LosingGhosted; override; + procedure LosingHilight; override; + procedure LosingHotTracking; override; + procedure LosingSelection; override; + procedure LosingVisibility; override; + property Color: TColor read GetColor write SetColor; + property HotTrack: Boolean read GetHotTrack write SetHotTrack; + property ImagePosition: TEasyHeaderImagePosition read GetImagePosition write SetImagePosition; + property SortGlyphAlign: TEasySortGlyphAlign read GetSortGlyphAlign write SetSortGlpyhAlign; + property SortGlyphIndent: Integer read GetSortGlyphIndent write SetSortGlyphIndent; + property SpringRest: Single read FSpringRest write FSpringRest; + property Style: TEasyHeaderButtonStyle read GetStyle write SetStyle; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + function EditAreaHitPt(ViewportPoint: TPoint): Boolean; override; + function HitTestAt(ViewportPoint: TPoint; var HitInfo: TEasyColumnHitTestInfoSet): Boolean; + function PaintMouseHovering: Boolean; + procedure Invalidate(ImmediateUpdate: Boolean); override; + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure MakeVisible(Position: TEasyMakeVisiblePos); override; + procedure Paint(ACanvas: TCanvas; HeaderType: TEasyHeaderType); + function SelectionHit(SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; override; + function SelectionHitPt(ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; override; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; + property AutoSizeOnDblClk: Boolean read FAutoSizeOnDblClk write FAutoSizeOnDblClk default True; + property AutoSortOnClick: Boolean read FAutoSortOnClick write FAutoSortOnClick default False; + property AutoSpring: Boolean read FAutoSpring write SetAutoSpring default False; + property AutoToggleSortGlyph: Boolean read FAutoToggleSortGlyph write FAutoToggleSortGlyph default True; + property Bold; + property Caption; + property Checked; + property Clickable: Boolean read FClickable write FClickable default True; + property Clicking; + property DropDownButton: TEasyColumnDropDownButton read FDropDownButton write FDropDownButton; + property Enabled; + property ImageIndex; + property ImageOverlayIndex; + property OwnerColumns: TEasyColumns read GetOwnerColumns; + property OwnerHeader: TEasyHeader read GetOwnerHeader; + property OwnsPaintInfo; + property PaintInfo: TEasyPaintInfoColumn read GetPaintInfo write SetPaintInfo; + property Position: Integer read FPosition write SetPosition; + property Selected; + property SortDirection: TEasySortDirection read FSortDirection write SetSortDirection default esdNone; + property Tag; + property View: TEasyViewColumn read GetView; + property ViewClass: TEasyViewColumnClass read GetViewClass; + property Visible; + property Width: Integer read FWidth write SetWidth default 50; + end; + + TEasyColumnInterfaced = class(TEasyColumn) + protected + function GetCaptions(Line: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + public + property DataInf; + end; + + TEasyColumnStored = class(TEasyColumn) + private + FDataHelper: TEasyDynamicDataHelper; + protected + function GetCaptions(Line: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + property DataHelper: TEasyDynamicDataHelper read FDataHelper write FDataHelper; + public + constructor Create(ACollection: TEasyCollection); override; + destructor Destroy; override; + procedure LoadFromStream(S: TStream; var Version: Integer); override; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + published + property Alignment; + property AutoSizeOnDblClk; + property AutoSortOnClick; + property AutoSpring; + property AutoToggleSortGlyph; + property Bold; + property Caption; + property Checked; + property Clickable; + property Color; + property DropDownButton; + property Enabled; + property ImageIndex; + property ImageOverlayIndex; + property Position; + property Selected; + property SortDirection; + property Width; + property Visible; + end; + + TEasyColumnVirtual = class(TEasyColumn) + protected + function GetCaptions(Line: Integer): Widestring; override; + function GetDetailCount: Integer; override; + function GetDetails(Line: Integer): Integer; override; + function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; + function GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; override; + function GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; override; + procedure ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); override; + procedure ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); override; + procedure ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); override; + procedure SetCaptions(Column: Integer; Value: Widestring); override; + procedure SetDetailCount(Value: Integer); override; + procedure SetDetails(Line: Integer; Value: Integer); override; + procedure SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); override; + procedure ThumbnailDraw(ACanvas: TCanvas; ARect: TRect;AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); override; + end; + + // ************************************************************************** + // TEasyViewColumn + // Implements the basis for the UI (drawing, and mouse interaction) for a EasyColumn + // ************************************************************************** + TEasyViewColumn = class(TEasyOwnedPersistentView) + public + function EditAreaHitPt(Column: TEasyColumn; ViewportPoint: TPoint): Boolean; virtual; + function GetImageList(Column: TEasyColumn): TCustomImageList; + procedure CalculateTextRect(Column: TEasyColumn; Canvas: TControlCanvas; var TextR: TRect); virtual; + procedure GetImageSize(Column: TEasyColumn; var ImageW, ImageH: Integer); + function ItemRect(Column: TEasyColumn; RectType: TEasyCellRectType): TRect; virtual; + procedure ItemRectArray(Column: TEasyColumn; var RectArray: TEasyRectArrayObject); virtual; + procedure LoadTextFont(Column: TEasyColumn; ACanvas: TCanvas); virtual; + procedure Paint(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType); virtual; + procedure PaintAfter(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintBefore(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintBkGnd(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintCheckBox(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintDropDownArrow(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintDropGlyph(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintFocusRect(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintImage(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject; ImageSize: TEasyImageSize); virtual; + function PaintImageSize(Column: TEasyColumn; HeaderType: TEasyHeaderType): TEasyImageSize; virtual; + procedure PaintSortGlyph(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); virtual; + procedure PaintText(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject; LinesToDraw: Integer); virtual; + procedure ReSizeRectArray(var RectArray: TEasyRectArrayObjectArray); virtual; + function SelectionHit(Column: TEasyColumn; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; virtual; + function SelectionHitPt(Column: TEasyColumn; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; virtual; + end; + + // ************************************************************************** + // TEasyGroups + // Collection that contains all the Columns in the control + // ************************************************************************** + TEasyColumns = class(TEasyCollection) + private + function GetColumns(Index: Integer): TEasyColumn; + function GetOwnerHeader: TEasyHeader; + procedure SetColumns(Index: Integer; Value: TEasyColumn); + protected + procedure DoItemAdd(Item: TEasyCollectionItem; Index: Integer); override; + procedure DoStructureChange; override; + public + constructor Create(AnOwner: TCustomEasyListview); reintroduce; virtual; + destructor Destroy; override; + function Add(Data: TObject = nil): TEasyColumn; + function AddInterfaced(const DataInf: IUnknown; Data: TObject): TEasyColumnInterfaced; + function AddVirtual(Data: TObject = nil): TEasyColumnVirtual; + function AddCustom(CustomItem: TEasyColumnClass; Data: TObject = nil): TEasyColumn; + function ColumnByPoint(ViewportPoint: TPoint): TEasyColumn; + function Insert(Index: Integer; Data: TObject = nil): TEasyColumn; + function InsertCustom(Index: Integer; CustomColumn: TEasyColumnClass; Data: TObject = nil): TEasyColumn; + function InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject = nil): TEasyColumnInterfaced; + function InsertVirtual(Index: Integer; Data: TObject = nil): TEasyColumnVirtual; + procedure Clear(FreeItems: Boolean = True); override; + property Columns[Index: Integer]: TEasyColumn read GetColumns write SetColumns; default; + property OwnerHeader: TEasyHeader read GetOwnerHeader; + end; + + TColumnPos = class(TList) + private + function Get(Index: Integer): TEasyColumn; + procedure Put(Index: Integer; Item: TEasyColumn); + public + property Items[Index: Integer]: TEasyColumn read Get write Put; default; + end; + // ************************************************************************** + // TEasyHeader + // Header area of the Listview + // ************************************************************************** + TEasyHeader = class(TEasyOwnedPersistent) + private + FAutoSizeHeight: Boolean; + FAutoSizeHeightMargin: Integer; + FCanvasStore: TEasyCanvasStore; + FColor: TColor; // Color of the header + FColumns: TEasyColumns; // The columns that define the header + FDisplayRect: TRect; // Rectangle occupied in the Client Window of the Listview, clips column not visible due to scrollbar position of LV + FDragManager: TEasyHeaderDragManager; + FDropDownHoverColumn: TEasyColumn; // Column that has the DropDownButton and the mouse over it (or button pressed) + FFixedSingleColumn: Boolean; + FFont: TFont; // The font the header text is drawn in + FHeight: Integer; // Height of the header + FHotTrackedColumn: TEasyColumn; // the column that is current in a hot tracked state + FImages: TCustomImageList; // Images for the header columns + FLastWidth: Integer; + FPositions: TColumnPos; + FPressColumn: TEasyColumn; // Column that currently pressed + FResizeColumn: TEasyColumn; // Column that is currently being resized + FShowInAllViews: Boolean; + FSizeable: Boolean; // The column widths are resizeable by the mouse + FState: TEasyHeaderStates; // Current state of the header + FStreamColumns: Boolean; + FViewRect: TRect; // The total size of the header including the column not visible in the current window + FVisible: Boolean; // Shows/Hides the header in the control + function GetCanvasStore: TEasyCanvasStore; + function GetDisplayRect: TRect; + function GetDraggable: Boolean; + function GetFixedSingleColumn: Boolean; + function GetHeight: Integer; + function GetMouseCaptured: Boolean; + function GetRuntimeHeight: Integer; + procedure SetAutoSizeHeight(const Value: Boolean); + procedure SetAutoSizeHeightMargin(const Value: Integer); + procedure SetColor(Value: TColor); + procedure SetDraggable(Value: Boolean); + procedure SetDropDownHoverColumn(const Value: TEasyColumn); + procedure SetFixedSingleColumn(const Value: Boolean); + procedure SetFont(Value: TFont); + procedure SetHeight(Value: Integer); + procedure SetHotTrackedColumn(const Value: TEasyColumn); + procedure SetImages(Value: TCustomImageList); + procedure SetShowInAllViews(const Value: Boolean); + procedure SetVisible(Value: Boolean); + function GetViewWidth: Integer; + protected + function InCheckZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; + function InDropDownButtonZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; + function InHotTrackZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; + function InPressZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; + function InResizeZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; + function IsFontStored: Boolean; + procedure CaptureMouse; + procedure ClearStates; + procedure DoMouseDown(var Message: TWMMouse; Button: TCommonMouseButton; Shift: TShiftState; Column: TEasyColumn); + procedure DoMouseMove(var Message: TWMMouse; Shift: TShiftState); + procedure DoMouseUp(var Message: TWMMouse; Button: TCommonMouseButton; Shift: TShiftState; Column: TEasyColumn); + procedure HandleHotTrack(Msg: TWMMouse; ForceClear: Boolean); + procedure ReleaseMouse; + procedure SizeFixedSingleColumn(NewWidth: Integer); + procedure SpringColumns(NewWidth: Integer); + procedure WMContextMenu(var Msg: TMessage); message WM_CONTEXTMENU; + procedure WMLButtonDblClk(var Msg: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; + procedure WMLButtonDown(var Msg: TWMLButtonDown); message WM_LBUTTONDOWN; + procedure WMLButtonUp(var Msg: TWMLButtonUp); message WM_LBUTTONUP; + procedure WMMouseMove(var Msg: TWMMouseMove); message WM_MOUSEMOVE; + procedure WMRButtonDown(var Msg: TWMRButtonDown); message WM_RBUTTONDOWN; + procedure WMRButtonUp(var Msg: TWMRButtonUp); message WM_RBUTTONUP; + procedure WMSize(var Msg: TWMSize); message WM_SIZE; + + property CanvasStore: TEasyCanvasStore read GetCanvasStore write FCanvasStore; + property DropDownHoverColumn: TEasyColumn read FDropDownHoverColumn write SetDropDownHoverColumn; + property HotTrackedColumn: TEasyColumn read FHotTrackedColumn write SetHotTrackedColumn; + property LastWidth: Integer read FLastWidth write FLastWidth; + property Positions: TColumnPos read FPositions write FPositions; + property PressColumn: TEasyColumn read FPressColumn write FPressColumn; + property ResizeColumn: TEasyColumn read FResizeColumn write FResizeColumn; + property RuntimeHeight: Integer read GetRuntimeHeight; + property State: TEasyHeaderStates read FState write FState; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + function FirstColumn: TEasyColumn; + function FirstColumnByPosition: TEasyColumn; + function FirstColumnInRect(ViewportRect: TRect): TEasyColumn; + function FirstVisibleColumn: TEasyColumn; + function LastColumn: TEasyColumn; + function LastVisibleColumn: TEasyColumn; + function NextColumn(AColumn: TEasyColumn): TEasyColumn; + function NextColumnByPosition(AColumn: TEasyColumn): TEasyColumn; + function NextVisibleColumn(Column: TEasyColumn): TEasyColumn; + function PrevColumn(AColumn: TEasyColumn): TEasyColumn; + function PrevColumnByPosition(AColumn: TEasyColumn): TEasyColumn; + function PrevVisibleColumn(Column: TEasyColumn): TEasyColumn; + procedure ClickColumn(Column: TEasyColumn); + procedure Invalidate(ImmediateUpdate: Boolean); virtual; + procedure InvalidateColumn(Item: TEasyColumn; ImmediateUpdate: Boolean); virtual; + function LastColumnByPosition: TEasyColumn; + function NextColumnInRect(Column: TEasyColumn; ViewportRect: TRect): TEasyColumn; + procedure LoadFromStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + procedure PaintTo(ACanvas: TCanvas; ARect: TRect); virtual; + procedure Rebuild(Force: Boolean); virtual; + procedure SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); override; + property DisplayRect: TRect read GetDisplayRect write FDisplayRect; + property MouseCaptured: Boolean read GetMouseCaptured; + property StreamColumns: Boolean read FStreamColumns write FStreamColumns default True; + property ViewRect: TRect read FViewRect; + property ViewWidth: Integer read GetViewWidth; + published + property AutoSizeHeight: Boolean read FAutoSizeHeight write SetAutoSizeHeight default True; + property AutoSizeHeightMargin: Integer read FAutoSizeHeightMargin write SetAutoSizeHeightMargin default 8; + property Color: TColor read FColor write SetColor default clBtnFace; + property Columns: TEasyColumns read FColumns write FColumns; + property Draggable: Boolean read GetDraggable write SetDraggable default True; + property DragManager: TEasyHeaderDragManager read FDragManager write FDragManager; + property FixedSingleColumn: Boolean read GetFixedSingleColumn write SetFixedSingleColumn default False; + property Font: TFont read FFont write SetFont stored IsFontStored; + property Height: Integer read GetHeight write SetHeight default 21; + property Images: TCustomImageList read FImages write SetImages; + property ShowInAllViews: Boolean read FShowInAllViews write SetShowInAllViews default False; + property Sizeable: Boolean read FSizeable write FSizeable default True; + property Visible: Boolean read FVisible write SetVisible default False; + end; + + // ************************************************************************** + // TEasyEditManager + // EasyEditManager defines the base class to edit an item. The + // IEasyCellEditorSink allows the Editor to communicate back to the manager for + // event dispatching without the need for the Editor interface to have knowledge + // of the TManagerLink object. + // ************************************************************************** + TEasyEditManager = class(TEasyOwnedPersistent) + private + FAppHooked: Boolean; + FAutoEditDelayTime: Integer; // Time (in milliseconds) before the object is edited + FAutoEditStartClickPt: TPoint; // This is in WINDOW coordinates, the point where the mouse is clicked. Used to determine if the AutoEdit should begin + FColor: TColor; + FEditColumn: TEasyColumn; + FEditFinished: Boolean; // Set when the edit is done + FEditing: Boolean; // Set when the edit is in progress + FEditItem: TEasyItem; // The Item that is being edited + FEditor: IEasyCellEditor; + FEnabled: Boolean; // The Edit Manager is enabled + FFont: TFont; + FTabEditColumns: Boolean; + FTabMoveFocus: Boolean; // If an item is begin edited a tab move the focus to the next item and puts it in edit + FTabMoveFocusColumn: TEasyColumn; + FTabMoveFocusItem: TEasyItem; + FTimer: TTimer; // The timer for auto Edit + FTimerRunning: Boolean; // True when the auto Edit is timing out + + function GetEditing: Boolean; + procedure SetEnabled(const Value: Boolean); + procedure SetFont(const Value: TFont); + protected + function MainWindowHook(var Message: TMessage): Boolean; + procedure StartAutoEditTimer; + procedure StopAutoEditTimer; + procedure TimerEvent(Sender: TObject); + + property AppHooked: Boolean read FAppHooked write FAppHooked; + property AutoEditStartClickPt: TPoint read FAutoEditStartClickPt write FAutoEditStartClickPt; + property EditColumn: TEasyColumn read FEditColumn write FEditColumn; + property TabEditColumns: Boolean read FTabEditColumns write FTabEditColumns default False; + property TabMoveFocusColumn: TEasyColumn read FTabMoveFocusColumn write FTabMoveFocusColumn; + property TabMoveFocusItem: TEasyItem read FTabMoveFocusItem write FTabMoveFocusItem; + property Timer: TTimer read FTimer write FTimer; + property TimerRunning: Boolean read FTimerRunning; + + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure BeginEdit(Item: TEasyItem; Column: TEasyColumn); virtual; + procedure EndEdit; + + property Editing: Boolean read GetEditing; + property EditItem: TEasyItem read FEditItem; + + property Editor: IEasyCellEditor read FEditor write FEditor; + published + property AutoEditDelayTime: Integer read FAutoEditDelayTime write FAutoEditDelayTime default 300; + property Color: TColor read FColor write FColor default clWindow; + property Enabled: Boolean read FEnabled write SetEnabled default False; + property Font: TFont read FFont write SetFont; + property TabMoveFocus: Boolean read FTabMoveFocus write FTabMoveFocus default False; + end; + + // ************************************************************************** + // TEasyEnumFormatEtcManager + // The EnumFormatEtc Manager encapsulates the IEnumFormatEtc interface for + // use with the IDataObject (below) interface for Drag/Drop and Clipboard + // operations. + // ************************************************************************** + TEasyEnumFormatEtcManager = class(TEasyInterfacedPersistent, IEnumFormatEtc) + private + FInternalIndex: integer; // Keeps an internal reference to which format is being enumerated + FFormats: TFormatEtcArray; // Keeps a list of all formats that are avaialable in the IDataObject + protected + { IEnumFormatEtc } + function Next(celt: Longint; out elt; pceltFetched: PLongint): HResult; stdcall; + function Skip(celt: Longint): HResult; stdcall; + function Reset: HResult; stdcall; + function Clone(out Enum: IEnumFormatEtc): HResult; stdcall; + + property InternalIndex: integer read FInternalIndex write FInternalIndex; + public + constructor Create; + destructor Destroy; override; + + property Formats: TFormatEtcArray read FFormats write FFormats; + end; + + // ************************************************************************** + // TEasyDataObjectManager + // The Data Object Manager encapsulates the IDataObject interface into a + // Delphi class. It is used for Drag/Drop and Clipboard operations + // ************************************************************************** + TEasyDataObjectManager = class(TCommonDataObject, IDataObject, ICommonDataObject, ICommonExtractObj) + private + FListview: TCustomEasyListview; + protected + procedure DoGetCustomFormats(var Formats: TFormatEtcArray); override; + procedure DoOnGetData(const FormatEtcIn: TFormatEtc; var Medium: TStgMedium; var Handled: Boolean); override; + procedure DoOnQueryGetData(const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean); override; + public + property Listview: TCustomEasyListview read FListview write FListview; + end; + + // ************************************************************************** + // TEasyDragManagerBase + // Easy Base Drag Manager defines the common actions of the Drag Select + // and object Drag Manager, including autoscroll + // ************************************************************************** + TCustomEasyDragManagerBase = class(TEasyOwnedPersistent) + private + FAutoScroll: Boolean; + FAutoScrollDelay: Integer; + FAutoScrollDelayMet: Boolean; + FAutoScrollTime: Integer; + FDataObject: IDataObject; + FMouseButton: TCommonMouseButtons; // Defines what mouse buttons are used for a drag + FRegistered: Boolean; + FTimer: TTimer; + FDragState: TEasyDragManagerStates; + FLastKeyState: TCommonKeyStates; + FEnabled: Boolean; + FAutoScrollAccelerator: Byte; + FAutoScrollMargin: Integer; + function GetAutoScrolling: Boolean; + function GetDragging: Boolean; + function GetTimer: TTimer; + procedure SetRegistered(Value: Boolean); + protected + procedure AutoScrollWindow; virtual; + procedure DoAfterAutoScroll; virtual; + procedure DoBeforeAutoScroll; virtual; + procedure DoAutoScroll(DeltaX, DeltaY: Integer); virtual; + procedure DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); virtual; + procedure DoDragBegin(WindowPoint: TPoint; KeyState: TCommonKeyStates); virtual; + procedure DoDragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); virtual; + procedure DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); virtual; + procedure DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); virtual; + procedure DoGetDragImage(Bitmap: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); virtual; + procedure DoOLEDragEnd(const ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); virtual; + procedure DoOLEDragStart(const ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); virtual; + function DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; virtual; + function DoPtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; virtual; + function DoPtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; virtual; + function DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; virtual; + procedure DoEnable(Enable: Boolean); virtual; + function PtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; + function PtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; + function PtInAutoScrollRegion(WindowPoint: TPoint): Boolean; + function PtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; + function PtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; + function ScrollDeltaDown(WindowPoint: TPoint): Integer; virtual; + function ScrollDeltaLeft(WindowPoint: TPoint): Integer; virtual; + function ScrollDeltaRight(WindowPoint: TPoint): Integer; virtual; + function ScrollDeltaUp(WindowPoint: TPoint): Integer; virtual; + procedure RegisterOLEDragDrop(DoRegister: Boolean); + procedure SetEnabled(const Value: Boolean); virtual; + procedure UpdateAfterAutoScroll; virtual; + procedure VCLDragStart; virtual; + property DataObject: IDataObject read FDataObject write FDataObject; + property LastKeyState: TCommonKeyStates read FLastKeyState write FLastKeyState; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure BeginDrag(WindowPoint: TPoint; KeyState: TCommonKeyStates); virtual; + procedure Drag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); + procedure DragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); + procedure DragEnter(const ADataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); + procedure DragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); + procedure HandleTimer(Sender: TObject); virtual; + procedure WMKeyDown(var Msg: TWMKeyDown); virtual; + + property AutoScroll: Boolean read FAutoScroll write FAutoScroll default True; + property AutoScrollAccelerator: Byte read FAutoScrollAccelerator write FAutoScrollAccelerator default 2; + property AutoScrollDelay: Integer read FAutoScrollDelay write FAutoScrollDelay default _AUTOSCROLLDELAY; + property AutoScrollDelayMet: Boolean read FAutoScrollDelayMet; + property AutoScrolling: Boolean read GetAutoScrolling; + property AutoScrollMargin: Integer read FAutoScrollMargin write FAutoScrollMargin default 15; + property AutoScrollTime: Integer read FAutoScrollTime write FAutoScrollTime default _AUTOSCROLLTIME; + property Dragging: Boolean read GetDragging; + property DragState: TEasyDragManagerStates read FDragState write FDragState; + property Enabled: Boolean read FEnabled write SetEnabled; + property MouseButton: TCommonMouseButtons read FMouseButton write FMouseButton default [cmbLeft]; + property Timer: TTimer read GetTimer write FTimer; + property Registered: Boolean read FRegistered write SetRegistered; + published + end; + + // ************************************************************************** + // TEasyHeaderDragManager + // Drag Manager is associated with the Header in the EasyListview for + // dragging columns around + // ************************************************************************** + TEasyHeaderDragManager = class(TCustomEasyDragManagerBase) + private + FAllowDrop: Boolean; + FColumn: TEasyColumn; + FDefaultImageEvent: TGetDragImageEvent; + FDragImageHeight: Integer; + FDragImageWidth: Integer; + FDragMode: TDragMode; // VCL Only + FDragType: TEasyDragType; + FEnableDragImage: Boolean; + FHeader: TEasyHeader; + FTargetColumn: TEasyColumn; + function GetDragCursor: TCursor; + function GetDragMode: TDragMode; + procedure SetDragCursor(Value: TCursor); + procedure SetDragMode(Value: TDragMode); + procedure SetDragType(Value: TEasyDragType); + protected + function DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; override; + function DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; override; + procedure DefaultImage(Sender: TCustomEasyListview; Image: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); virtual; + procedure DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoDragBegin(WindowPoint: TPoint; KeyStates: TCommonKeyStates); override; + procedure DoDragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); override; + procedure DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoOLEDragEnd(const ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); override; + procedure DoOLEDragStart(const ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); override; + function DoPtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; override; + function DoPtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; override; + procedure ImageSize(var Width, Height: Integer); virtual; + property AllowDrop: Boolean read FAllowDrop write FAllowDrop; + property Column: TEasyColumn read FColumn write FColumn; + property DefaultImageEvent: TGetDragImageEvent read FDefaultImageEvent write FDefaultImageEvent; + property DragImageHeight: Integer read FDragImageHeight write FDragImageHeight default 300; + property DragImageWidth: Integer read FDragImageWidth write FDragImageWidth default 200; + property DragMode: TDragMode read GetDragMode write SetDragMode default dmManual; + property DragType: TEasyDragType read FDragType write SetDragType default edtOLE; + property Header: TEasyHeader read FHeader write FHeader; + property TargetColumn: TEasyColumn read FTargetColumn write FTargetColumn; + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property AutoScroll; + property AutoScrollAccelerator; + property AutoScrollDelay; + property AutoScrollMargin; + property AutoScrollTime; + property DragCursor: TCursor read GetDragCursor write SetDragCursor default crDrag; + property EnableDragImage: Boolean read FEnableDragImage write FEnableDragImage default True; + property MouseButton; + end; + + // ************************************************************************** + // TEasyDragManager + // Easy Drag Manager is associated with a TWinContol to track the + // dragging of the cells in a Easy Control + // ************************************************************************** + TEasyOLEDragManager = class(TEasyHeaderDragManager) + private + FDragAnchorPt: TPoint; + FDragItem: TEasyItem; + FDragTarget: Boolean; + FDropTarget: TEasyItem; + FHilightDropTarget: Boolean; + protected + procedure ClearDragItem; + procedure ClearDropTarget; + procedure DefaultImage(Sender: TCustomEasyListview; Image: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); override; + procedure DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoDragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); override; + procedure DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoGetDragImage(Bitmap: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); override; + procedure DoOLEDragEnd(const ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); override; + procedure DoOLEDragStart(const ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); override; + function DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; override; + function DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; override; + procedure ImageSize(var Width: Integer; var Height: Integer); override; + procedure SetEnabled(const Value: Boolean); override; + procedure VCLDragStart; override; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure FinalizeDrag(KeyState: TCommonKeyStates); + function InitializeDrag(HitItem: TEasyItem; WindowPoint: TPoint; KeyState: TCommonKeyStates): Boolean; + property DragAnchorPt: TPoint read FDragAnchorPt write FDragAnchorPt; + property DragItem: TEasyItem read FDragItem; + property DragTarget: Boolean read FDragTarget; + property DropTarget: TEasyItem read FDropTarget; + published + property AutoScroll; + property AutoScrollAccelerator; + property AutoScrollDelay; + property AutoScrollMargin; + property AutoScrollTime; + property DragImageHeight; + property DragImageWidth; + property DragMode; + property DragType; + property Enabled default False; + property HilightDropTarget: Boolean read FHilightDropTarget write FHilightDropTarget default True; + property MouseButton; + end; + + // ************************************************************************** + // TEasySelectionManager + // Easy Select Manager is associated with a TWinContol to track the + // selection and focus of the cells in a Easy Control. + // ************************************************************************** + TEasySelectionManager = class(TEasyOwnedPersistent) + private + FAlphaBlend: Boolean; + FAlphaBlendSelRect: Boolean; + FBlendAlphaImage: Byte; + FBlendAlphaSelRect: Byte; + FBlendAlphaTextRect: Byte; + FBlendColorIcon: TColor; + FBlendColorSelRect: TColor; + FBlendIcon: Boolean; + FBlurAlphaBkGnd: Boolean; + FBorderColor: TColor; + FBorderColorSelRect: TColor; + FColor: TColor; + FCount: Integer; + FFocusedColumn: TEasyColumn; + FFocusedItem: TEasyItem; + FAnchorItem: TEasyItem; + FFocusedGroup: TEasyGroup; + FEnabled: Boolean; + FForceDefaultBlend: Boolean; + FFullCellPaint: Boolean; + FFullItemPaint: Boolean; + FFullRowSelect: Boolean; + FGradient: Boolean; + FGradientColorBottom: TColor; + FGradientColorTop: TColor; + FGroupSelections: Boolean; + FGroupSelectUpdateCount: Integer; + FInactiveBorderColor: TColor; + FInactiveColor: TColor; + FInactiveTextColor: TColor; + FItemsToggled: Integer; + FMouseButton: TCommonMouseButtons; + FMultiChangeCount: Integer; + FMultiSelect: Boolean; + FPopupMode: Boolean; + FRectSelect: Boolean; // A Click-Shift Select will use the Rectangle of the click and the Anchor Item vs. Selecting all from the Anchor Item Index to the selected Item index + FResizeGroupOnFocus: Boolean; // If true and a focused caption will overlap next group, the group is resized to fit focused caption + FRoundRect: Boolean; + FRoundRectRadius: Byte; + FTextColor: TColor; + FUseFocusRect: Boolean; + function GetAutoScroll: Boolean; + function GetAutoScrollAccelerator: Byte; + function GetAutoScrollDelay: Integer; + function GetAutoScrollMargin: Integer; + function GetAutoScrollTime: Integer; + function GetEnableDragSelect: Boolean; + function GeTCommonMouseButton: TCommonMouseButtons; + function GetFocusedColumn: TEasyColumn; + function GetMouseButtonSelRect: TCommonMouseButtons; + function GetSelecting: Boolean; + procedure SetAutoScroll(Value: Boolean); + procedure SetAutoScrollAccelerator(Value: Byte); + procedure SetAutoScrollDelay(Value: Integer); + procedure SetAutoScrollMargin(Value: Integer); + procedure SetAutoScrollTime(Value: Integer); + procedure SetBlendIcon(Value: Boolean); + procedure SetBlurAlphaBkGnd(const Value: Boolean); + procedure SetEnableDragSelect(Value: Boolean); + procedure SetFocusedColumn(Value: TEasyColumn); + procedure SetFocusedItem(Value: TEasyItem); + procedure SetFocusedGroup(const Value: TEasyGroup); + procedure SetEnabled(const Value: Boolean); + procedure SeTCommonMouseButton(Value: TCommonMouseButtons); + procedure SetFullCellPaint(Value: Boolean); + procedure SetFullItemPaint(Value: Boolean); + procedure SetGradient(const Value: Boolean); + procedure SetGradientColorBottom(const Value: TColor); + procedure SetGradientColorTop(const Value: TColor); + procedure SetGroupSelections(Value: Boolean); + procedure SetMouseButtonSelRect(Value: TCommonMouseButtons); + procedure SetMultiSelect(const Value: Boolean); + procedure SetAnchorItem(Value: TEasyItem); + protected + procedure ActOnAll(SelectType: TEasySelectionType; ExceptItem: TEasyItem); + procedure BuildSelectionGroupings(Force: Boolean); virtual; + procedure DragSelect(KeyStates: TCommonKeyStates); + procedure GainingSelection(Item: TEasyItem); + procedure LosingSelection(Item: TEasyItem); + procedure NotifyOwnerListview; + property ItemsToggled: Integer read FItemsToggled write FItemsToggled; + property MultiChangeCount: Integer read FMultiChangeCount write FMultiChangeCount; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + function SelectedToArray: TEasyItemArray; + procedure ClearAll; + procedure ClearAllExcept(Item: TEasyItem); + function First: TEasyItem; + function FirstInGroup(Group: TEasyGroup): TEasyItem; + procedure FocusFirst; + procedure DecMultiChangeCount; + procedure DeleteSelected(SelectPrevItem: Boolean = False); + procedure GroupSelectBeginUpdate; + procedure GroupSelectEndUpdate; + procedure IncMultiChangeCount; + procedure InvalidateVisibleSelected(ValidateWindow: Boolean); + procedure Invert; + function Next(Item: TEasyItem): TEasyItem; + function NextInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; + procedure SelectAll; + procedure SelectFirst; + procedure SelectGroupItems(Group: TEasyGroup; ClearOtherItems: Boolean); + procedure SelectRange(FromItem, ToItem: TEasyItem; RectSelect: Boolean; ClearFirst: Boolean); + procedure SelectRect(ViewportSelRect: TRect; ClearFirst: Boolean); + + property AnchorItem: TEasyItem read FAnchorItem write SetAnchorItem; + property Count: Integer read FCount; + property FocusedColumn: TEasyColumn read GetFocusedColumn write SetFocusedColumn; + property FocusedItem: TEasyItem read FFocusedItem write SetFocusedItem; + property FocusedGroup: TEasyGroup read FFocusedGroup write SetFocusedGroup; + property Selecting: Boolean read GetSelecting; + published + property AlphaBlend: Boolean read FAlphaBlend write FAlphaBlend default False; + property AlphaBlendSelRect: Boolean read FAlphaBlendSelRect write FAlphaBlendSelRect default False; + property AutoScroll: Boolean read GetAutoScroll write SetAutoScroll default True; + property AutoScrollAccelerator: Byte read GetAutoScrollAccelerator write SetAutoScrollAccelerator default 2; + property AutoScrollDelay: Integer read GetAutoScrollDelay write SetAutoScrollDelay default _AUTOSCROLLDELAY; + property AutoScrollMargin: Integer read GetAutoScrollMargin write SetAutoScrollMargin default 15; + property AutoScrollTime: Integer read GetAutoScrollTime write SetAutoScrollTime default _AUTOSCROLLTIME; + property BlendAlphaImage: Byte read FBlendAlphaImage write FBlendAlphaImage default 128; + property BlendAlphaSelRect: Byte read FBlendAlphaSelRect write FBlendAlphaSelRect default 70; + property BlendAlphaTextRect: Byte read FBlendAlphaTextRect write FBlendAlphaTextRect default 128; + property BlendColorSelRect: TColor read FBlendColorSelRect write FBlendColorSelRect default clHighlight; + property BlendIcon: Boolean read FBlendIcon write SetBlendIcon default True; + property BlurAlphaBkGnd: Boolean read FBlurAlphaBkGnd write SetBlurAlphaBkGnd default False; + property BorderColor: TColor read FBorderColor write FBorderColor default clHighlight; + property BorderColorSelRect: TColor read FBorderColorSelRect write FBorderColorSelRect default clHighlight; + property Color: TColor read FColor write FColor default clHighlight; + property Enabled: Boolean read FEnabled write SetEnabled default True; + property EnableDragSelect: Boolean read GetEnableDragSelect write SetEnableDragSelect default False; + property ForceDefaultBlend: Boolean read FForceDefaultBlend write FForceDefaultBlend default False; + property FullCellPaint: Boolean read FFullCellPaint write SetFullCellPaint default False; + property FullItemPaint: Boolean read FFullItemPaint write SetFullItemPaint default False; + property FullRowSelect: Boolean read FFullRowSelect write FFullRowSelect default False; + property Gradient: Boolean read FGradient write SetGradient default False; + property GradientColorBottom: TColor read FGradientColorBottom write SetGradientColorBottom default $FCEFD5; + property GradientColorTop: TColor read FGradientColorTop write SetGradientColorTop default $FDF8F1; + property GroupSelections: Boolean read FGroupSelections write SetGroupSelections default False; + property InactiveBorderColor: TColor read FInactiveBorderColor write FInactiveBorderColor default clInactiveBorder; + property InactiveColor: TColor read FInactiveColor write FInactiveColor default clInactiveBorder; + property InactiveTextColor: TColor read FInactiveTextColor write FInactiveTextColor default clBlack; + property MouseButton: TCommonMouseButtons read GeTCommonMouseButton write SeTCommonMouseButton default [cmbLeft]; + property MouseButtonSelRect: TCommonMouseButtons read GetMouseButtonSelRect write SetMouseButtonSelRect default [cmbLeft, cmbRight]; + property MultiSelect: Boolean read FMultiSelect write SetMultiSelect default False; + property PopupMode: Boolean read FPopupMode write FPopupMode default False; + property RectSelect: Boolean read FRectSelect write FRectSelect default False; + property ResizeGroupOnFocus: Boolean read FResizeGroupOnFocus write FResizeGroupOnFocus default False; + property RoundRect: Boolean read FRoundRect write FRoundRect default False; + property RoundRectRadius: Byte read FRoundRectRadius write FRoundRectRadius default 4; + property TextColor: TColor read FTextColor write FTextColor default clHighlightText; + property UseFocusRect: Boolean read FUseFocusRect write FUseFocusRect default True; + end; + + // ************************************************************************** + // TEasyCheckManager + // Manages the check state of the items. The item carries the check state + // of itself but this manager allows manipulation of multiple items + // ************************************************************************** + TEasyCheckManager = class(TEasyOwnedPersistent) + private + FCount: Integer; // Number of items with checks set + FPendingObject: TEasyCollectionItem; // When the mouse button is pressed over an item PendingCheckItem is set to that item + procedure SetPendingObject(Value: TEasyCollectionItem); + protected + property PendingObject: TEasyCollectionItem read FPendingObject write SetPendingObject; + public + function CheckedToArray: TEasyItemArray; + procedure CheckAll; + procedure CheckAllInGroup(Group: TEasyGroup); + function First: TEasyItem; + function FirstInGroup(Group: TEasyGroup): TEasyCollectionItem; + function Next(Item: TEasyItem): TEasyItem; + function NextInGroup(Item: TEasyItem): TEasyItem; + procedure DeleteChecked; + procedure UnCheckAll; + procedure UnCheckAllInGroup(Group: TEasyGroup); + + property Count: Integer read FCount; + end; + + TEasyHotTrackManager = class(TEasyOwnedPersistent) + private + FColor: TColor; + FColumnTrack: TEasyHotTrackRectColumns; + FEnabled: Boolean; + FCursor: TCursor; + FGroupTrack: TEasyHotTrackRectGroups; + FItemTrack: TEasyHotTrackRectItems; + FOnlyFocused: Boolean; + FPendingObject: TEasyCollectionItem; + FPendingObjectCheck: TEasyCollectionItem; + FUnderline: Boolean; + function GetPendingObject(MousePos: TPoint): TEasyCollectionItem; + procedure SetPendingObject(MousePos: TPoint; Value: TEasyCollectionItem); + procedure SetPendingObjectCheck(const Value: TEasyCollectionItem); + protected + property PendingObject[MousePos: TPoint]: TEasyCollectionItem read GetPendingObject write SetPendingObject; + property PendingObjectCheck: TEasyCollectionItem read FPendingObjectCheck write SetPendingObjectCheck; + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Color: TColor read FColor write FColor default clHighlight; +// property ColumnTrack: TEasyHotTrackRectColumns read FColumnTrack write FColumnTrack default [htcImage, htcText]; + property Enabled: Boolean read FEnabled write FEnabled default False; + property Cursor: TCursor read FCursor write FCursor default crHandPoint; + property GroupTrack: TEasyHotTrackRectGroups read FGroupTrack write FGroupTrack default [htgIcon, htgText]; + property ItemTrack: TEasyHotTrackRectItems read FItemTrack write FItemTrack default [htiIcon, htiText]; + property OnlyFocused: Boolean read FOnlyFocused write FOnlyFocused default False; + property Underline: Boolean read FUnderline write FUnderline default True; + end; + + // ************************************************************************** + // TEasyScrollbarManager + // ScrollManager is associated with a TWinContol to handle the + // controls scrollbars + // ************************************************************************** + TEasyScrollbarManager = class(TEasyOwnedPersistent) + private + FHorzEnabled: Boolean; + FOffsetX: Integer; + FOffsetY: Integer; + FRebuilding: Boolean; + FSnapHorzView: Boolean; // Causes scroll to snap to column width + FVertEnabled: Boolean; + FViewRect: TRect; + + function GetHorzBarVisible: Boolean; + function GetLine: Integer; + function GetMaxOffsetX: Integer; + function GetMaxOffsetY: Integer; + function GetVertBarVisible: Boolean; + function GetViewHeight: Integer; + function GetViewWidth: Integer; + procedure SetHorzEnabled(const Value: Boolean); + procedure SetOffsetX(const Value: Integer); + procedure SetOffsetY(const Value: Integer); + procedure SetVertEnabled(const Value: Boolean); + protected + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + function MapWindowToView(WindowPoint: TPoint; AccountForHeader: Boolean = True): TPoint; overload; + function MapWindowToView(WindowPoint: TSmallPoint; AccountForHeader: Boolean = True): TPoint; overload; + function MapWindowRectToViewRect(WindowRect: TRect; AccountForHeader: Boolean = True): TRect; + function MapViewToWindow(ViewportPoint: TPoint; AccountForHeader: Boolean = True): TPoint; overload; + function MapViewToWindow(ViewportPoint: TSmallPoint; AccountForHeader: Boolean = True): TPoint; overload; + function MapViewRectToWindowRect(ViewPortRect: TRect; AccountForHeader: Boolean = True): TRect; + procedure ReCalculateScrollbars(Redraw: Boolean; Force: Boolean); + procedure Scroll(DeltaX, DeltaY: Integer); + procedure SetViewRect(AViewRect: TRect; InvalidateWindow: Boolean); + procedure ValidateOffsets(var AnOffsetX, AnOffsetY: Integer); + function ViewableViewportRect: TRect; + procedure WMHScroll(var Msg: TWMVScroll); + procedure WMKeyDown(var Msg: TWMKeyDown); + procedure WMVScroll(var Msg: TWMVScroll); + + property HorzBarVisible: Boolean read GetHorzBarVisible; + property Line: Integer read GetLine; + property MaxOffsetX: Integer read GetMaxOffsetX; + property MaxOffsetY: Integer read GetMaxOffsetY; + property OffsetX: Integer read FOffsetX write SetOffsetX; + property OffsetY: Integer read FOffsetY write SetOffsetY; + property Rebuilding: Boolean read FRebuilding; + property VertBarVisible: Boolean read GetVertBarVisible; + property ViewHeight: Integer read GetViewHeight; + property ViewRect: TRect read FViewRect; + property ViewWidth: Integer read GetViewWidth; + published + property HorzEnabled: Boolean read FHorzEnabled write SetHorzEnabled default True; + property SnapHorzView: Boolean read FSnapHorzView write FSnapHorzView default True; + property VertEnabled: Boolean read FVertEnabled write SetVertEnabled default True; + end; + + // ************************************************************************** + // TEasyBackgroundManager + // Easy Background handles the drawing of a background in Easy + // controls. It is a stand alone component that can be shared + // ************************************************************************** + TEasyBackgroundManager = class(TEasyOwnedPersistent) + private + FAlphaBlend: Boolean; + FAlphaBlender: TEasyAlphaBlender; + FBlendAlpha: Integer; + FBlendMode: TCommonBlendMode; + FCaption: WideString; + FCaptionAlignment: TAlignment; + FCaptionShow: Boolean; + FCaptionShowOnlyWhenEmpty: Boolean; + FCaptionSingleLine: Boolean; + FCaptionVAlignment: TCommonVAlignment; + FEnabled: Boolean; + FImage: TBitmap; + FOffsetTrack: Boolean; + FOffsetX: Integer; + FOffsetY: Integer; + FTile: Boolean; + FTransparent: Boolean; + FAlphaImage: TBitmap; + procedure SetAlphaBlend(const Value: Boolean); + procedure SetAlphaImage(const Value: TBitmap); + procedure SetBlendAlpha(const Value: Integer); + procedure SetCaption(const Value: WideString); + procedure SetCaptionAlignment(const Value: TAlignment); + procedure SetCaptionShow(const Value: Boolean); + procedure SetCaptionShowOnlyWhenEmpty(const Value: Boolean); + procedure SetCaptionSingleLine(const Value: Boolean); + procedure SetCaptionVAlignment(const Value: TCommonVAlignment); + procedure SetCommonBlendMode(const Value: TCommonBlendMode); + procedure SetEnabled(const Value: Boolean); + procedure SetImage(const Value: TBitmap); + procedure SetOffsetX(const Value: Integer); + procedure SetOffsetY(const Value: Integer); + procedure SetTile(const Value: Boolean); + procedure SetTransparent(const Value: Boolean); + protected + procedure ChangeBitmapBits(Sender: TObject); + property AlphaBlender: TEasyAlphaBlender read FAlphaBlender write FAlphaBlender; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure Assign(Source: TPersistent); override; + procedure AssignTo(Target: TPersistent); override; + procedure PaintTo(ACanvas: TCanvas; ARect: TRect; PaintDefault: Boolean); virtual; + procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); virtual; + + published + property AlphaBlend: Boolean read FAlphaBlend write SetAlphaBlend default False; + property AlphaImage: TBitmap read FAlphaImage write SetAlphaImage; + property BlendAlpha: Integer read FBlendAlpha write SetBlendAlpha default 128; + property BlendMode: TCommonBlendMode read FBlendMode write SetCommonBlendMode default cbmConstantAlphaAndColor; + property Caption: WideString read FCaption write SetCaption; + property CaptionAlignment: TAlignment read FCaptionAlignment write SetCaptionAlignment default taCenter; + property CaptionShow: Boolean read FCaptionShow write SetCaptionShow default False; + property CaptionShowOnlyWhenEmpty: Boolean read FCaptionShowOnlyWhenEmpty write SetCaptionShowOnlyWhenEmpty default True; + property CaptionSingleLine: Boolean read FCaptionSingleLine write SetCaptionSingleLine default True; + property CaptionVAlignment: TCommonVAlignment read FCaptionVAlignment write SetCaptionVAlignment default cvaCenter; + property Enabled: Boolean read FEnabled write SetEnabled default False; + property Image: TBitmap read FImage write SetImage; + property OffsetTrack: Boolean read FOffsetTrack write FOffsetTrack default False; + property OffsetX: Integer read FOffsetX write SetOffsetX default 0; + property OffsetY: Integer read FOffsetY write SetOffsetY default 0; + property Tile: Boolean read FTile write SetTile default True; + property Transparent: Boolean read FTransparent write SetTransparent default False; + end; + + // ************************************************************************** + // TEasyTaskBandBackgroundManager + // Easy Background handles the drawing of a background in Easy + // controls. It is a stand alone component that can be shared + // ************************************************************************** + TEasyTaskBandBackgroundManager = class(TEasyBackgroundManager) + public + procedure PaintTo(ACanvas: TCanvas; ARect: TRect; PaintDefault: Boolean); override; + end; + + // ************************************************************************** + // TEasyDropTargetManager + // Implements the IDropTarget inteface to allow for the control to become + // a drag/drop target and accept drops. + // ************************************************************************** + TEasyDropTargetManager = class(TEasyOwnedInterfacedPersistent, IDropTarget) + private + FDragManager: TCustomEasyDragManagerBase; + FDropTargetHelper: IDropTargetHelper; // Win2k and up drag image support built in to Windows + function GetDropTargetHelper: IDropTargetHelper; + protected + function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; + function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; + function DragLeave: HResult; stdcall; + function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; + + property DragManager: TCustomEasyDragManagerBase read FDragManager write FDragManager; + property DropTargetHelper: IDropTargetHelper read GetDropTargetHelper; + public + end; + + // ************************************************************************** + // TEasyDropSourceManager + // Implements the IDropSource inteface to allow for the control to become + // a drag/drop source. + // ************************************************************************** + TEasyDropSourceManager = class(TEasyOwnedInterfacedPersistent, IDropSource) + protected + function QueryContinueDrag(fEscapePressed: BOOL; grfKeyState: Longint): HResult; stdcall; + function GiveFeedback(dwEffect: Longint): HResult; stdcall; + end; + + // ************************************************************************** + // Drag TEasyDragRectManager Manager + // Easy DragRect Manager is associated with a TWinContol to handle the + // controls drag selection rectangle + // ************************************************************************** + TEasyDragRectManager = class(TCustomEasyDragManagerBase) + private + FAnchorPoint: TPoint; // Anchor point in Viewport coordinates + FDragPoint: TPoint; // Dragging point in Viewport coordinates + FOldOffsets: TPoint; + FPrevRect: TRect; + function GetSelectionRect: TRect; + procedure PaintRect(Canvas: TCanvas); + procedure SetAnchorPoint(ViewportAnchor: TPoint); + procedure SetDragPoint(const Value: TPoint); + protected + procedure DoAfterAutoScroll; override; + procedure DoAutoScroll(DeltaX, DeltaY: Integer); override; + procedure DoBeforeAutoScroll; override; + procedure DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + procedure DoDragBegin(WindowPoint: TPoint; KeyState: TCommonKeyStates); override; + procedure DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); override; + procedure DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); override; + function DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; override; + function DoPtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; override; + function DoPtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; override; + function DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; override; + procedure UpdateAfterAutoScroll; override; + property OldOffsets: TPoint read FOldOffsets write FOldOffsets; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + + procedure FinalizeDrag(KeyState: TCommonKeyStates); + function InitializeDrag(WindowPoint: TPoint; KeyState: TCommonKeyStates): Boolean; + procedure PaintSelectionRect(Canvas: TCanvas); + function SelRectInWindowCoords: TRect; + procedure WMKeyDown(var Msg: TWMKeyDown); override; + + property AnchorPoint: TPoint read FAnchorPoint write SetAnchorPoint; + property DragPoint: TPoint read FDragPoint write SetDragPoint; + property PrevRect: TRect read FPrevRect; + property SelectionRect: TRect read GetSelectionRect; + end; + + // > 0 (positive) Item1 is less than Item2 + // 0 Item1 is equal to Item2 + // < 0 (negative) Item1 is greater than Item2 + TEasySortProc = function(Column: TEasyColumn; Item1, Item2: TEasyCollectionItem): Integer; + + TEasySorter = class + private + FOwner: TEasySortManager; + public + constructor Create(AnOwner: TEasySortManager); virtual; + procedure Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); virtual; abstract; + property Owner: TEasySortManager read FOwner write FOwner; + end; + + TEasyQuickSort = class(TEasySorter) + public + procedure Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); override; + end; + + TEasyBubbleSort = class(TEasySorter) + public + procedure Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); override; + end; + + TEasyMergeSort = class(TEasySorter) + private + FColumn: TEasyColumn; + FGroupCompareFunc: TEasyDoGroupCompare; + FItemCompareFunc: TEasyDoItemCompare; + FOwnerGroup: TEasyGroup; + protected + function CompareInterfaces(i1, i2: TEasyCollectionItem): Boolean; + function CompareGroup(i1, i2: TEasyCollectionItem): Boolean; + function CompareItem(i1, i2: TEasyCollectionItem): Boolean; + function CompareDefault(i1, i2: TEasyCollectionItem): Boolean; + property Column: TEasyColumn read FColumn write FColumn; + property GroupCompareFunc: TEasyDoGroupCompare read FGroupCompareFunc write FGroupCompareFunc; + property ItemCompareFunc: TEasyDoItemCompare read FItemCompareFunc write FItemCompareFunc; + property OwnerGroup: TEasyGroup read FOwnerGroup write FOwnerGroup; + public + procedure Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); override; + end; + + TGroupSortInfoRec = record + Item: TEasyItem; + Key: LongWord; + end; + TGroupSortInfoArray = array of TGroupSortInfoRec; + // ************************************************************************** + // TEasySortManager + // Manages the sorting of the Listview. Because of the way EasyListview + // works it is not feasable to try to add an AutoSort property. EasyListview + // can access a caption by a callback, storing it in the control, or through + // an interface. Due to the wildly varying ways of storing the caption it was + // decided to not try to find all the possible places it would be necessary to + // AutoSort. There are some scenarios, such as the interface access, where it + // is not possible to detect when an autosort should be carried out. + // ************************************************************************** + TEasySortManager = class(TEasyOwnedPersistent) + private + FAlgorithm: TEasySortAlgorithm; // The algorithm used when sorting + FAutoRegroup: Boolean; + FAutoSort: Boolean; // Items and groups are resorted when any object is added/inserted + FLockoutSort: Boolean; + FSortList: TGroupSortInfoArray; + FSorter: TEasySorter; // The algorithm engine for the sort + FUpdateCount: Integer; + procedure SetAlgorithm(Value: TEasySortAlgorithm); + procedure SetAutoRegroup(Value: Boolean); + procedure SetAutoSort(Value: Boolean); + protected + function CollectionSupportsInterfaceSorting(Collection: TEasyCollection): Boolean; + procedure GroupItem(Item: TEasyItem; ColumnIndex: Integer; Key: LongWord); + property Sorter: TEasySorter read FSorter write FSorter; + property SortList: TGroupSortInfoArray read FSortList write FSortList; + property UpdateCount: Integer read FUpdateCount write FUpdateCount; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + procedure BeginUpdate; + procedure EndUpdate; + procedure ReGroup(Column: TEasyColumn); virtual; + procedure SortAll(Force: Boolean = False); + property LockoutSort: Boolean read FLockoutSort write FLockoutSort; + published + property Algorithm: TEasySortAlgorithm read FAlgorithm write SetAlgorithm default esaMergeSort; + property AutoRegroup: Boolean read FAutoRegroup write SetAutoRegroup default False; + property AutoSort: Boolean read FAutoSort write SetAutoSort default False; + end; + + // ************************************************************************** + // TEasyHintInfo + // Custom hint information for the Unicode Hint Window + // ************************************************************************** + TEasyHintInfo = class(TEasyOwnedPersistent) + private + FBounds: TRect; + FCanvas: TCanvas; + FColor: TColor; + FCursorPos: TPoint; + FHideTimeout: Integer; + FHintType: TEasyHintType; + FMaxWidth: Integer; + FReshowTimeout: Integer; + FText: WideString; + FWindowPos: TPoint; + public + property Canvas: TCanvas read FCanvas write FCanvas; + property Color: TColor read FColor write FColor; + property CursorPos: TPoint read FCursorPos write FCursorPos; + property Bounds: TRect read FBounds write FBounds; + property HideTimeout: Integer read FHideTimeout write FHideTimeout; + property HintType: TEasyHintType read FHintType write FHintType; + property MaxWidth: Integer read FMaxWidth write FMaxWidth; + property ReshowTimeout: Integer read FReshowTimeout write FReshowTimeout; + property Text: WideString read FText write FText; + property WindowPos: TPoint read FWindowPos write FWindowPos; + end; + + // ************************************************************************** + // TEasyHintWindow + // Custom hint window that supports Unicode and Custom Draw + // ************************************************************************** + TEasyHintWindow = class(THintWindow) + protected + FEasyHintInfo: TEasyHintInfo; + FHintInfo: PEasyHintInfoRec; + + procedure Paint; override; + + property EasyHintInfo: TEasyHintInfo read FEasyHintInfo write FEasyHintInfo; + property HintInfo: PEasyHintInfoRec read FHintInfo write FHintInfo; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure ActivateHint(ARect: TRect; const AHint: string); override; + procedure ActivateHintData(ARect: TRect; const AHint: string; AData: Pointer); override; + function CalcHintRect(MaxWidth: Integer; const AHint: string; AData: Pointer): TRect; override; + function IsHintMsg(var Msg: TMsg): Boolean; override; + end; + TEasyHintWindowClass = class of TEasyHintWindow; + + + // ************************************************************************** + // TEasyIncrementalSearchManager + // Implements the incremental search of the listview + // ************************************************************************** + TEasyIncrementalSearchManager = class(TEasyOwnedPersistent) + private + FDirection: TEasyIncrementalSearchDir; + FEnabled: Boolean; + FhTimer: THandle; + FItemType: TEasyIncrementalSearchItemType; + FNextSearchItem: TEasyItem; + FResetTime: Integer; + FSearchBuffer: WideString; + FSearchItem: TEasyItem; + FStart: TCoolIncrementalSearchStart; + FState: TEasyIncrementalSearchStates; + FTimerStub: Pointer; + procedure SetSearchItem(Value: TEasyItem); + protected + procedure EndTimer; + function IsSearching: Boolean; + procedure HandleWMChar(var Msg: TWMChar); virtual; + procedure HandleWMKeyDown(var Msg: TWMKeyDown); virtual; + procedure LoadFutureItem; + procedure ResetTimer; + procedure SearchPreloadItem(Next, Prev: TItemNextEnum; First, Last: TItemEnumFirstLast; var SearchItem: TEasyItem); + procedure StartSearch; + procedure StartTimer; + + procedure TimerProc(Window: HWnd; uMsg: UINT; idEvent: UINT; dwTime: DWORD); stdcall; + + property hTimer: THandle read FhTimer write FhTimer; + property NextSearchItem: TEasyItem read FNextSearchItem write FNextSearchItem; + property SearchBuffer: WideString read FSearchBuffer write FSearchBuffer; + property SearchItem: TEasyItem read FSearchItem write SetSearchItem; + property TimerStub: Pointer read FTimerStub write FTimerStub; + public + constructor Create(AnOwner: TCustomEasyListview); override; + destructor Destroy; override; + procedure ClearSearch; virtual; + procedure ResetSearch; + property State: TEasyIncrementalSearchStates read FState write FState; + published + property Direction: TEasyIncrementalSearchDir read FDirection write FDirection default eisdForward; + property Enabled: Boolean read FEnabled write FEnabled default False; + property ResetTime: Integer read FResetTime write FResetTime default 2000; + property StartType: TCoolIncrementalSearchStart read FStart write FStart default eissStartOver; + property ItemType: TEasyIncrementalSearchItemType read FItemType write FItemType default eisiVisible; + end; + + // ************************************************************************** + // TEasyGestureManager + // Implements the Gesture feature of the listview + // ************************************************************************** + TEasyGestureManager = class(TEasyOwnedPersistent) + private + FButton: TCommonMouseButtons; + FEnabled: Boolean; + FPath: WideString; + FTolerance: Integer; + protected + property Path: WideString read FPath write FPath; + public + constructor Create(AnOwner: TCustomEasyListview); override; + published + property Button: TCommonMouseButtons read FButton write FButton default [cmbRight]; + property Enabled: Boolean read FEnabled write FEnabled default False; + property Tolerance: Integer read FTolerance write FTolerance default 3; + end; + + // Down here due to a bug in C++ BDS2006 hpp generated files + TEasyHintInfoRec = record + HintControl: TControl; + HintWindowClass: THintWindowClass; + HintPos: TPoint; + HintMaxWidth: Integer; + HintColor: TColor; + HintType: TEasyHintType; + CursorRect: TRect; + CursorPos: TPoint; + ReshowTimeout: Integer; + HideTimeout: Integer; + HintStr: WideString; + HintData: Pointer; + Listview: TCustomEasyListview; + TargetObj: TEasyCollectionItem; // What the hint is being popped up over (EasyItem, EasyGroup, EasyColumn etc.) + ToolTipRect: TRect; // The size of the rect needed for a tool tip hint + end; + + // ************************************************************************** + // TCustomEasyListview + // ************************************************************************** + TCustomEasyListview = class(TCommonCanvasControl) + private + FAllowInvisibleCheckedItems: Boolean; + FBackBits: TBitmap; + FBackGround: TEasyBackgroundManager; + FCacheDoubleBufferBits: Boolean; + FCellSizes: TEasyCellSizes; + FCheckManager: TEasyCheckManager; + FDisabledBlendAlpha: Byte; + FDisabledBlendColor: TColor; + FDragManager: TEasyOLEDragManager; + FDragRect: TEasyDragRectManager; + FDropTarget: IDropTarget; + FEditManager: TEasyEditManager; + FForcePaint: Boolean; + FGesture: TEasyGestureManager; + FGlobalImages: TEasyGlobalImageManager; + FGroupCollapseButton: TBitmap; + FGroupExpandButton: TBitmap; + FGroupFont: TFont; + FGroupImageGetSize: TGroupImageGetSizeEvent; + FGroups: TEasyGroups; + FHeader: TEasyHeader; + FHintAlignment: TAlignment; + FHintData: TEasyHintInfoRec; + FHintInfo: TEasyHintInfo; + FHotTrack: TEasyHotTrackManager; + FImagesExLarge: TCustomImageList; + FImagesGroup: TCustomImageList; + FImagesLarge: TCustomImageList; + FImagesSmall: TCustomImageList; + FImagesState: TCustomImageList; + FIncrementalSearch: TEasyIncrementalSearchManager; + FItems: TEasyGlobalItems; + FLastMousePos: TSmallPoint; + FNCCanvas: TCanvas; + FOnAfterPaint: TAfterPaintEvent; + FOnAutoGroupGetKey: TAutoGroupGetKeyEvent; + FOnAutoSortGroupCreate: TAutoSortGroupCreateEvent; + FOnClipboardCopy: TEasyClipboardEvent; + FOnClipboardCut: TEasyClipboardCutEvent; + FOnClipboardPaste: TEasyClipboardEvent; + FOnColumnCheckChange: TColumnCheckChangeEvent; + FOnColumnCheckChanging: TColumnCheckChangingEvent; + FOnColumnClick: TColumnClickEvent; + FOnColumnContextMenu: TColumnContextMenuEvent; + FOnColumnDblClick: TColumnDblClickEvent; + FOnColumnDropDownButtonClick: TColumnDropDownButtonClickEvent; + FOnColumnImageDrawIsCustom: TColumnImageDrawIsCustomEvent; + FOnColumnEnableChange: TColumnEnableChangeEvent; + FOnColumnEnableChanging: TColumnEnableChangingEvent; + FOnColumnFocusChanged: TColumnFocusChangeEvent; + FOnColumnFocusChanging: TColumnFocusChangingEvent; + FOnColumnFreeing: TColumnFreeingEvent; + FOnColumnGetCaption: TColumnGetCaptionEvent; + FOnColumnGetDetail: TColumnGetDetailEvent; + FOnColumnGetDetailCount: TColumnGetDetailCountEvent; + FOnColumnGetImageIndex: TColumnGetImageIndexEvent; + FOnColumnGetImageList: TColumnGetImageListEvent; + FOnColumnImageDraw: TColumnImageDrawEvent; + FOnColumnImageGetSize: TColumnImageGetSizeEvent; + FOnColumnInitialize: TColumnInitializeEvent; + FOnColumnLoadFromStream: TEasyColumnLoadFromStreamEvent; + FOnColumnPaintText: TColumnPaintTextEvent; + FOnColumnSaveToStream: TEasyColumnSaveToStreamEvent; + FOnColumnSelectionChanged: TColumnSelectionChangeEvent; + FOnColumnSelectionChanging: TColumnSelectionChangingEvent; + FOnColumnSetCaption: TColumnSetCaptionEvent; + FOnColumnSetDetail: TColumnSetDetailEvent; + FOnColumnSetImageIndex: TColumnSetImageIndexEvent; + FOnColumnSizeChanged: TColumnSizeChangedEvent; + FOnColumnSizeChanging: TColumnSizeChangingEvent; + FOnColumnStructureChange: TNotifyEvent; + FOnColumnThumbnailDraw: TColumnThumbnailDrawEvent; + FOnColumnVisibilityChanged: TColumnVisibilityChangeEvent; + FOnColumnVisibilityChanging: TColumnVisibilityChangingEvent; + FOnContextMenu: TContextMenuEvent; + FOnColumnCustomView: TColumnCustomViewEvent; + FOnCustomGrid: TCustomGridEvent; + FOnDblClick: TDblClickEvent; + FOnMouseGesture: TEasyGestureEvent; + FOnGetDragImage: TGetDragImageEvent; + FOnGroupClick: TGroupClickEvent; + FOnGroupCollapse: TGroupCollapseEvent; + FOnGroupCollapsing: TGroupCollapsingEvent; + FOnGroupCompare: TGroupCompareEvent; + FOnGroupContextMenu: TGroupContextMenuEvent; + FOnGroupCustomView: TGroupCustomViewEvent; + FOnGroupDblClick: TGroupDblClickEvent; + FOnGroupImageDrawIsCustom: TGroupImageDrawIsCustomEvent; + FOnGroupExpand: TGroupExpandEvent; + FOnGroupExpanding: TGroupExpandingEvent; + FOnGroupFocusChanged: TGroupFocusChangeEvent; + FOnGroupFocusChanging: TGroupFocusChangingEvent; + FOnGroupFreeing: TGroupFreeingEvent; + FOnGroupGetCaption: TGroupGetCaptionEvent; + FOnGroupGetDetailCount: TGroupGetDetailCountEvent; + FOnGroupGetDetailIndex: TGroupGetDetailEvent; + FOnGroupGetImageIndex: TGroupGetImageIndexEvent; + FOnGroupGetImageList: TGroupGetImageListEvent; + FOnGroupImageDrawEvent: TGroupImageDrawEvent; + FOnGroupInitialize: TGroupInitializeEvent; + FOnGroupHotTrack: TGroupHotTrackEvent; + FOnGroupLoadFromStream: TGroupLoadFromStreamEvent; + FOnGroupPaintText: TGroupPaintTextEvent; + FOnGroupSaveToStream: TGroupSaveToStreamEvent; + FOnGroupSelectionChanged: TGroupSelectionChangeEvent; + FOnGroupSelectionChanging: TGroupSelectionChangingEvent; + FOnGroupSetCaption: TGroupSetCaptionEvent; + FOnGroupSetImageIndex: TGroupSetImageIndexEvent; + FOnGroupSetDetail: TGroupSetDetailEvent; + FOnGroupStructureChange: TNotifyEvent; + FOnGroupThumbnailDraw: TGroupThumbnailDrawEvent; + FOnGroupVisibilityChanged: TGroupVisibilityChangeEvent; + FOnGroupVisibilityChanging: TGroupVisibilityChangingEvent; + FOnHeaderDblClick: THeaderDblClickEvent; + FOnHeaderMouseDown: THeaderMouseEvent; + FOnHeaderMouseMove: TMouseMoveEvent; + FOnHeaderMouseUp: THeaderMouseEvent; + FOnHintCustomDraw: THintCustomDrawEvent; + FOnHintCustomInfo: THintCustomizeInfoEvent; + FOnHintPauseTime: THintPauseTimeEvent; + FOnHintPopup: THintPopupEvent; + FOnIncrementalSearch: TIncrementalSearchEvent; + FOnItemCheckChange: TItemCheckChangeEvent; + FOnItemCheckChanging: TItemCheckChangingEvent; + FOnItemClick: TItemClickEvent; + FOnItemCompare: TItemCompareEvent; + FOnItemContextMenu: TItemContextMenuEvent; + FOnItemCreateEditor: TItemCreateEditorEvent; + FOnItemCustomView: TItemCustomViewEvent; + FOnItemDblClick: TItemDblClickEvent; + FOnItemGetEditCaption: TEasyItemGetCaptionEvent; + FOnItemGetEditMenu: TItemGetEditMenuEvent; + FOnItemGetStateImageList: TItemGetImageListEvent; + FOnItemImageDrawIsCustom: TItemImageDrawIsCustomEvent; + FOnItemEditBegin: TItemEditBegin; + FOnItemEdited: TItemEditedEvent; + FOnItemEditEnd: TItemEditEnd; + FOnItemEnableChange: TItemEnableChangeEvent; + FOnItemEnableChanging: TItemEnableChangingEvent; + FOnItemFocusChanged: TItemFocusChangeEvent; + FOnItemFocusChanging: TItemFocusChangingEvent; + FOnItemFreeing: TItemFreeingEvent; + FOnItemGetCaption: TItemGetCaptionEvent; + FOnItemGetGroupKey: TItemGetGroupKeyEvent; + FOnItemHotTrack: TItemHotTrackEvent; + FOnItemGetTileDetailIndex: TItemGetTileDetailEvent; + FOnItemGetImageIndex: TItemGetImageIndexEvent; + FOnItemGetImageList: TItemGetImageListEvent; + FOnItemGetTileDetailCount: TItemGetTileDetailCountEvent; + FOnItemImageDraw: TItemImageDrawEvent; + FOnItemImageGetSize: TItemImageGetSizeEvent; + FOnItemInitialize: TItemInitializeEvent; + FOnItemLoadFromStream: TItemLoadFromStreamEvent; + FOnItemMouseDown: TItemMouseDownEvent; + FOnItemMouseUp: TItemMouseUpEvent; + FOnItemPaintText: TItemPaintTextEvent; + FOnItemSaveToStream: TItemSaveToStreamEvent; + FOnItemSelectionChanged: TItemSelectionChangeEvent; + FOnItemSelectionChanging: TItemSelectionChangingEvent; + FOnItemSelectionsChanged: TEasyItemSelectionsChangedEvent; + FOnItemSetCaption: TItemSetCaptionEvent; + FOnItemSetGroupKey: TItemSetGroupKeyEvent; + FOnItemSetImageIndex: TItemSetImageIndexEvent; + FOnItemSetTileDetail: TItemSetTileDetailEvent; + FOnItemStructureChange: TNotifyEvent; + FOnItemThumbnailDraw: TItemThumbnailDrawEvent; + FOnItemVisibilityChanged: TItemVisibilityChangeEvent; + FOnItemVisibilityChanging: TItemVisibilityChangingEvent; + FOnKeyAction: TEasyKeyActionEvent; + FOnOLEDragDrop: TOLEDropTargetDragDropEvent; + FOnOLEDragEnd: TOLEDropSourceDragEndEvent; + FOnOLEDragEnter: TOLEDropTargetDragEnterEvent; + FOnOLEDragLeave: TOLEDropTargetDragLeaveEvent; + FOnOLEDragOver: TOLEDropTargetDragOverEvent; + FOnOLEDragStart: TOLEDropSourceDragStartEvent; + FOnOLEGetCustomFormats: TOLEGetCustomFormatsEvent; + FOnOLEGetData: TOLEGetDataEvent; + FOnOLEGetDataObject: FOLEGetDataObjectEvent; + FOnOLEGiveFeedback: TOLEDropSourceGiveFeedbackEvent; + FOnOLEQueryContineDrag: TOLEDropSourceQueryContineDragEvent; + FOnOLEQueryData: TOLEQueryDataEvent; + FOnPaintBkGnd: TPaintBkGndEvent; + FOnPaintHeaderBkGnd: TPaintHeaderBkGndEvent; + FOnScroll: TEasyScrollEvent; + FOnViewChange: TViewChangedEvent; + FPaintInfoColumn: TEasyPaintInfoBaseColumn; + FPaintInfoGroup: TEasyPaintInfoBaseGroup; + FPaintInfoItem: TEasyPaintInfoBaseItem; + FPopupMenuHeader: TPopupMenu; + FScratchCanvas: TControlCanvas; + FScrollbars: TEasyScrollbarManager; + FSelection: TEasySelectionManager; + FShowGroupMargins: Boolean; + FShowInactive: Boolean; + FShowThemedBorder: Boolean; + FSort: TEasySortManager; + FStates: TEasyControlStates; + FView: TEasyListStyle; + FWheelMouseDefaultScroll: TEasyDefaultWheelScroll; + FWheelMouseScrollModifierEnabled: Boolean; + function GetGroupCollapseImage: TBitmap; + function GetGroupExpandImage: TBitmap; + function GetHintType: TEasyHintType; + function GetPaintInfoColumn: TEasyPaintInfoBaseColumn; virtual; + function GetPaintInfoGroup: TEasyPaintInfoBaseGroup; virtual; + function GetPaintInfoItem: TEasyPaintInfoBaseItem; virtual; + function GetScratchCanvas: TControlCanvas; + function GetTopItem: TEasyItem; + procedure SetBackGround(const Value: TEasyBackgroundManager); + procedure SetCacheDoubleBufferBits(const Value: Boolean); + procedure SetGroupCollapseImage(Value: TBitmap); + procedure SetGroupExpandImage(Value: TBitmap); + procedure SetGroupFont(Value: TFont); + procedure SetHintType(Value: TEasyHintType); + procedure SetImagesExLarge(Value: TCustomImageList); + procedure SetImagesGroup(Value: TCustomImageList); + procedure SetImagesLarge(Value: TCustomImageList); + procedure SetImagesSmall(Value: TCustomImageList); + procedure SetImagesState(const Value: TCustomImageList); + procedure SetPaintInfoColumn(const Value: TEasyPaintInfoBaseColumn); virtual; + procedure SetPaintInfoGroup(const Value: TEasyPaintInfoBaseGroup); virtual; + procedure SetPaintInfoItem(const Value: TEasyPaintInfoBaseItem); virtual; + procedure SetSelection(Value: TEasySelectionManager); + procedure SetShowInactive(const Value: Boolean); + procedure SetShowThemedBorder(Value: Boolean); + procedure SetShowGroupMargins(const Value: Boolean); + protected + function CreateColumnPaintInfo: TEasyPaintInfoBaseColumn; virtual; + function CreateGroupPaintInfo: TEasyPaintInfoBaseGroup; virtual; + function CreateGroups: TEasyGroups; virtual; + function CreateItemPaintInfo: TEasyPaintInfoBaseItem; virtual; + function ExecuteDragDrop(AvailableEffects: TCommonDropEffects; DataObjectInf: IDataObject; DropSource: IDropSource; var dwEffect: Integer): HRESULT; virtual; + function GetSortColumn: TEasyColumn; virtual; + function GroupTestExpand(HitInfo: TEasyGroupHitTestInfoSet): Boolean; virtual; + function ToolTipNeeded(TargetObj: TEasyCollectionItem; var TipCaption: WideString): Boolean; + function UseInternalDragImage: Boolean; virtual; + function ViewSupportsHeader: Boolean; + procedure CancelCut; + procedure CheckFocus; virtual; + procedure ClearPendingDrags; + procedure ClearStates; + function ClickTestGroup(ViewportPoint: TPoint; KeyStates: TCommonKeyStates; var HitInfo: TEasyGroupHitTestInfoSet): TEasyGroup; + function ClickTestItem(ViewportPoint: TPoint; Group: TEasyGroup; KeyStates: TCommonKeyStates; var HitInfo: TEasyItemHitTestInfoSet): TEasyItem; + procedure ClipHeader(ACanvas: TCanvas; ResetClipRgn: Boolean); + procedure CMDrag(var Msg: TCMDrag); message CM_DRAG; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure CMHintShowPause(var Message: TCMHintShow); message CM_HINTSHOWPAUSE; + procedure CMMouseWheel(var Msg: TWMMouseWheel); message CM_MOUSEWHEEL; + procedure CMParentFontChanged(var Msg: TMessage); message CM_PARENTFONTCHANGED; + procedure CopyToClipboard; virtual; + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure CutToClipboard; virtual; + procedure DoAfterPaint(ACanvas: TCanvas; ClipRect: TRect); + procedure DoAutoGroupGetKey(Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; var Key: LongWord); virtual; + procedure DoAutoSortGroupCreate(Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; var Group: TEasyGroup; var DoDefaultAction: Boolean); virtual; + procedure DoClipboardCopy(var Handled: Boolean); virtual; + procedure DoClipboardCut(var MarkAsCut, Handled: Boolean); virtual; + procedure DoClipboardPaste(var Handled: Boolean); virtual; + procedure DoColumnCheckChanged(Column: TEasyColumn); virtual; + procedure DoColumnCheckChanging(Column: TEasyColumn; var Allow: Boolean); virtual; + procedure DoColumnClick(Button: TCommonMouseButton; const Column: TEasyColumn); virtual; + procedure DoColumnContextMenu(HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; var Menu: TPopupMenu); virtual; + procedure DoColumnCustomView(Column: TEasyColumn; var ViewClass: TEasyViewColumnClass); virtual; + procedure DoColumnDblClick(Button: TCommonMouseButton; ShiftState: TShiftState; MousePos: TPoint; Column: TEasyColumn); virtual; + procedure DoColumnDropDownButtonClick(Column: TEasyColumn; Button: TCommonMouseButton; ShiftState: TShiftState; MousePos: TPoint; var DoDefault: Boolean); virtual; + procedure DoColumnEnableChanged(Column: TEasyColumn); virtual; + procedure DoColumnEnableChanging(Column: TEasyColumn; var Allow: Boolean); virtual; + procedure DoColumnFocusChanged(Column: TEasyColumn); virtual; + procedure DoColumnFocusChanging(Column: TEasyColumn; var Allow: Boolean); virtual; + procedure DoColumnFreeing(Column: TEasyColumn); virtual; + procedure DoColumnGetCaption(Column: TEasyColumn; Line: Integer; var Caption: WideString); virtual; + procedure DoColumnGetImageIndex(Column: TEasyColumn; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); virtual; + procedure DoColumnGetImageList(Column: TEasyColumn; var ImageList: TCustomImageList); virtual; + procedure DoColumnGetDetail(Column: TEasyColumn; Line: Integer; var Detail: Integer); virtual; + procedure DoColumnGetDetailCount(Column: TEasyColumn; var Count: Integer); virtual; + procedure DoColumnImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); virtual; + procedure DoColumnImageGetSize(Column: TEasyColumn; var ImageWidth, ImageHeight: Integer); virtual; + procedure DoColumnImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); virtual; + procedure DoColumnInitialize(Column: TEasyColumn); virtual; + procedure DoColumnLoadFromStream(Column: TEasyColumn; S: TStream; Version: Integer); virtual; + procedure DoColumnPaintText(Column: TEasyColumn; ACanvas: TCanvas); virtual; + procedure DoColumnSaveToStream(Column: TEasyColumn; S: TStream; Version: Integer); virtual; + procedure DoColumnSelectionChanged(Column: TEasyColumn); virtual; + procedure DoColumnSelectionChanging(Column: TEasyColumn; var Allow: Boolean); virtual; + procedure DoColumnSetCaption(Column: TEasyColumn; const Caption: WideString); virtual; + procedure DoColumnSetImageIndex(Column: TEasyColumn; ImageKind: TEasyImageKind; ImageIndex: Integer); virtual; + procedure DoColumnSetDetail(Column: TEasyColumn; Line: Integer; Detail: Integer); virtual; + procedure DoColumnSetDetailCount(Column: TEasyColumn; DetailCount: Integer); virtual; + procedure DoColumnStructureChange; + procedure DoColumnThumbnailDraw(Column: TEasyColumn; ACanvas: TCanvas; ARect: TRect; var DoDefault: Boolean); virtual; + procedure DoColumnSizeChanged(Column: TEasyColumn); virtual; + procedure DoColumnSizeChanging(Column: TEasyColumn; Size, NewSize: Integer; var Allow: Boolean); virtual; + procedure DoColumnVisibilityChanged(Column: TEasyColumn); virtual; + procedure DoColumnVisibilityChanging(Column: TEasyColumn; var Allow: Boolean); virtual; + procedure DoContextMenu(MousePt: TPoint; var Handled: Boolean); virtual; + procedure DoCustomGrid(Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass); virtual; + procedure DoDblClick(Button: TCommonMouseButton; MousePos: TPoint; ShiftState: TShiftState); virtual; + procedure DoGesture(Gesture: WideString; var Handled: Boolean); virtual; + procedure DoGetDragImage(Bitmap: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); virtual; + procedure DoGroupClick(Group: TEasyGroup; KeyStates: TCommonKeyStates; HitTest: TEasyGroupHitTestInfoSet); virtual; + procedure DoGroupCollapse(Group: TEasyGroup); virtual; + procedure DoGroupCollapsing(Group: TEasyGroup; var Allow: Boolean); virtual; + function DoGroupCompare(Column: TEasyColumn; Group1, Group2: TEasyGroup): Integer; virtual; + procedure DoGroupContextMenu(HitInfo: TEasyHitInfoGroup; WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean); virtual; + procedure DoGroupCustomView(Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass); virtual; + procedure DoGroupDblClick(Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoGroup); virtual; + procedure DoGroupExpand(Group: TEasyGroup); virtual; + procedure DoGroupExpanding(Group: TEasyGroup; var Allow: Boolean); virtual; + procedure DoGroupFreeing(Group: TEasyGroup); virtual; + procedure DoGroupGetCaption(Group: TEasyGroup; var Caption: WideString); virtual; + procedure DoGroupGetImageIndex(Group: TEasyGroup; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); virtual; + procedure DoGroupGetImageList(Group: TEasyGroup; var ImageList: TCustomImageList); virtual; + procedure DoGroupGetDetail(Group: TEasyGroup; Line: Integer; var Detail: Integer); virtual; + procedure DoGroupGetDetailCount(Group: TEasyGroup; var Count: Integer); virtual; + procedure DoGroupImageDraw(Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); virtual; + procedure DoGroupImageGetSize(Group: TEasyGroup; var ImageWidth, ImageHeight: Integer); virtual; + procedure DoGroupImageDrawIsCustom(Group: TEasyGroup; var IsCustom: Boolean); virtual; + procedure DoGroupInitialize(Group: TEasyGroup); virtual; + procedure DoGroupHotTrack(Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); virtual; + procedure DoGroupLoadFromStream(Group: TEasyGroup; S: TStream; Version: Integer); virtual; + procedure DoGroupPaintText(Group: TEasyGroup; ACanvas: TCanvas); virtual; + procedure DoGroupSaveToStream(Group: TEasyGroup; S: TStream; Version: Integer); virtual; + procedure DoGroupSelectionChanged(Group: TEasyGroup); virtual; + procedure DoGroupSelectionChanging(Group: TEasyGroup; var Allow: Boolean); virtual; + procedure DoGroupSetCaption(Group: TEasyGroup; const Caption: WideString); virtual; + procedure DoGroupSetImageIndex(Group: TEasyGroup; ImageKind: TEasyImageKind; ImageIndex: Integer); virtual; + procedure DoGroupSetDetail(Group: TEasyGroup; Line: Integer; Detail: Integer); virtual; + procedure DoGroupSetDetailCount(Group: TEasyGroup; DetailCount: Integer); virtual; + procedure DoGroupStructureChange; virtual; + procedure DoGroupThumbnailDraw(Group: TEasyGroup; ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); virtual; + procedure DoGroupVisibilityChanged(Group: TEasyGroup); virtual; + procedure DoGroupVisibilityChanging(Group: TEasyGroup; var Allow: Boolean); virtual; + procedure DoHeaderDblClick(Button: TCommonMouseButton; MousePos: TPoint; ShiftState: TShiftState); virtual; + procedure DoHintCustomInfo(TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo); virtual; + procedure DoHintCustomDraw(TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo); virtual; + procedure DoHintPopup(TargetObj: TEasyCollectionItem; HintType: TEasyHintType; MousePos: TPoint; var AText: WideString; var HideTimeout, ReshowTimeout: Integer; var Allow: Boolean); virtual; + procedure DoHintShowPause(HintShowingNow: Boolean; var PauseTime: Integer); + procedure DoIncrementalSearch(Item: TEasyItem; const SearchBuffer: WideString; var CompareResult: Integer); virtual; + procedure DoItemCheckChanged(Item: TEasyItem); virtual; + procedure DoItemCheckChanging(Item: TEasyItem; var Allow: Boolean); virtual; + procedure DoItemClick(Item: TEasyItem; KeyStates: TCommonKeyStates; HitInfo: TEasyItemHitTestInfoSet); virtual; + function DoItemCompare(Column: TEasyColumn; Group: TEasyGroup; Item1, Item2: TEasyItem): Integer; virtual; + procedure DoItemContextMenu(HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean); virtual; + procedure DoItemCreateEditor(Item: TEasyItem; var Editor: IEasyCellEditor); virtual; + procedure DoItemCustomView(Item: TEasyItem; ViewStyle: TEasyListStyle; var View: TEasyViewItemClass); virtual; + procedure DoItemDblClick(Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem); virtual; + procedure DoItemEditBegin(Item: TEasyItem; var Column: Integer; var Allow: Boolean); virtual; + procedure DoItemEdited(Item: TEasyItem; var NewValue: Variant; var Accept: Boolean); virtual; + procedure DoItemEditEnd(Item: TEasyItem); virtual; + procedure DoItemGetEditMenu(Editor: TEasyBaseEditor; var Menu: TPopupMenu); virtual; + procedure DoItemEnableChanged(Item: TEasyItem); virtual; + procedure DoItemEnableChanging(Item: TEasyItem; var Allow: Boolean); virtual; + procedure DoItemFreeing(Item: TEasyItem); virtual; + procedure DoItemFocusChanged(Item: TEasyItem); virtual; + procedure DoItemFocusChanging(Item: TEasyItem; var Allow: Boolean); virtual; + procedure DoItemGetCaption(Item: TEasyItem; Column: Integer; var ACaption: WideString); virtual; + procedure DoItemGetEditCaption(Item: TEasyItem; Column: TEasyColumn; var Caption: WideString); virtual; + procedure DoItemGetGroupKey(Item: TEasyItem; FocusedColumn: Integer; var Key: LongWord); virtual; + procedure DoItemGetImageIndex(Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); virtual; + procedure DoItemGetImageList(Item: TEasyItem; Column: Integer; var ImageList: TCustomImageList); virtual; + procedure DoItemGetStateImageList(Item: TEasyItem; Column: Integer; var ImageList: TCustomImageList); virtual; + procedure DoItemGetTileDetail(Item: TEasyItem; Line: Integer; var Detail: Integer); virtual; + procedure DoItemGetTileDetailCount(Item: TEasyItem; var Count: Integer); virtual; + procedure DoItemHotTrack(Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); virtual; + procedure DoItemImageDraw(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); virtual; + procedure DoItemImageGetSize(Item: TEasyItem; Column: TEasyColumn; var ImageWidth, ImageHeight: Integer); virtual; + procedure DoItemImageDrawIsCustom(Column: TEasyColumn; Item: TEasyItem; var IsCustom: Boolean); virtual; + procedure DoItemInitialize(Item: TEasyItem); virtual; + procedure DoItemLoadFromStream(Item: TEasyItem; S: TStream; Version: Integer); virtual; + procedure DoItemMouseDown(Item: TEasyItem; Button: TCommonMouseButton; var DoDefault: Boolean); virtual; + procedure DoItemMouseUp(Item: TEasyItem; Button: TCommonMouseButton; var DoDefault: Boolean); virtual; + procedure DoItemPaintText(Item: TEasyItem; Position: Integer; ACanvas: TCanvas); virtual; + procedure DoItemSaveToStream(Item: TEasyItem; S: TStream; Version: Integer); virtual; + procedure DoItemSelectionChanged(Item: TEasyItem); virtual; + procedure DoItemSelectionChanging(Item: TEasyItem; var Allow: Boolean); virtual; + procedure DoItemSelectionsChanged; virtual; + procedure DoItemSetCaption(Item: TEasyItem; Column: Integer; const Caption: WideString); virtual; + procedure DoItemSetGroupKey(Item: TEasyItem; FocusedColumn: Integer; Key: LongWord); virtual; + procedure DoItemSetImageIndex(Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; ImageIndex: Integer); virtual; + procedure DoItemSetTileDetail(Item: TEasyItem; Line: Integer; Detail: Integer); virtual; + procedure DoItemSetTileDetailCount(Item: TEasyItem; Detail: Integer); virtual; + procedure DoItemStructureChange; virtual; + procedure DoItemThumbnailDraw(Item: TEasyItem; ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); virtual; + procedure DoItemVisibilityChanged(Item: TEasyItem); virtual; + procedure DoItemVisibilityChanging(Item: TEasyItem; var Allow: Boolean); virtual; + function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; + function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override; + function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override; + procedure DoKeyAction(var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean); virtual; + procedure DoOLEDragEnd(ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); virtual; + procedure DoOLEDragStart(ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); virtual; + procedure DoOLEDropSourceQueryContineDrag(EscapeKeyPressed: Boolean; KeyStates: TCommonKeyStates; var QueryResult: TEasyQueryDragResult); virtual; + procedure DoOLEDropSourceGiveFeedback(Effect: TCommonDropEffects; var UseDefaultCursors: Boolean); virtual; + procedure DoOLEDropTargetDragEnter(DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; var DesiredEffect: TCommonDropEffect); virtual; + procedure DoOLEDropTargetDragOver(KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; var DesiredEffect: TCommonDropEffect); virtual; + procedure DoOLEDropTargetDragLeave; virtual; + procedure DoOLEDropTargetDragDrop(DataObject: IDataObject; KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; var DesiredEffect: TCommonDropEffect; var Handled: Boolean); virtual; + procedure DoOLEGetCustomFormats(var Formats: TFormatEtcArray); virtual; + procedure DoOLEGetData(const FormatEtcIn: TFormatEtc; var Medium: TStgMedium; var Handled: Boolean); virtual; + procedure DoOLEGetDataObject(var DataObject: IDataObject); virtual; + procedure DoPaintBkGnd(ACanvas: TCanvas; AWindowRect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); virtual; + procedure DoPaintHeaderBkGnd(ACanvas: TCanvas; ARect: TRect; var Handled: Boolean); virtual; + procedure DoPaintRect(ACanvas: TCanvas; WindowClipRect: TRect; SelectedOnly: Boolean); virtual; + procedure DoQueryOLEData(const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean); virtual; + procedure DoResize(DeltaX, DeltaY: Integer); virtual; + procedure DoScroll(DeltaX, DeltaY: Integer); virtual; + procedure DoThreadCallback(var Msg: TWMThreadRequest); virtual; + procedure DoUpdate; override; + procedure DoViewChange; virtual; + + procedure DestroyWnd; override; + function DragInitiated: Boolean; + procedure FinalizeDrag(WindowPoint: TPoint; KeyState: TCommonKeyStates); + procedure HandleDblClick(Button: TCommonMouseButton; Msg: TWMMouse); virtual; + procedure HandleKeyDown(Msg: TWMKeyDown); virtual; + procedure HandleMouseDown(Button: TCommonMouseButton; Msg: TWMMouse); virtual; + procedure HandleMouseUp(Button: TCommonMouseButton; Msg: TWMMouse); virtual; + procedure InitializeDragPendings(HitItem: TEasyItem; WindowPoint: TPoint; KeyState: TCommonKeyStates; AllowDrag, AllowDragRect: Boolean); + function IsFontStored: Boolean; + function IsHeaderMouseMsg(MousePos: TSmallPoint; ForceTest: Boolean = False): Boolean; + procedure MarkSelectedCut; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure PasteFromClipboard; virtual; + procedure ResizeBackBits(NewWidth, NewHeight: Integer); + procedure SetView(Value: TEasyListStyle); virtual; + procedure WMChar(var Msg: TWMChar); message WM_CHAR; + procedure WMClose(var Msg: TWMClose); message WM_CLOSE; + procedure WMContextMenu(var Msg: TMessage); message WM_CONTEXTMENU; + procedure WMDestroy(var Msg: TMessage); message WM_DESTROY; + procedure WMEasyThreadCallback(var Msg: TWMThreadRequest); message WM_COMMONTHREADCALLBACK; + procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND; + procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE; + procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL; + procedure WMKeyDown(var Msg: TWMKeyDown); message WM_KEYDOWN; + procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS; + procedure WMLButtonDblClk(var Msg: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; + procedure WMLButtonDown(var Msg: TWMLButtonDown); message WM_LBUTTONDOWN; + procedure WMLButtonUp(var Msg: TWMLButtonUp); message WM_LBUTTONUP; + procedure WMMButtonDblClk(var Msg: TWMMButtonDblClk); message WM_MBUTTONDBLCLK; + procedure WMMButtonDown(var Msg: TWMMButtonDown); message WM_MBUTTONDOWN; + procedure WMMButtonUp(var Msg: TWMMButtonUp); message WM_MBUTTONUP; + procedure WMMouseActivate(var Msg: TWMMouseActivate); message WM_MOUSEACTIVATE; + procedure WMMouseMove(var Msg: TWMMouseMove); message WM_MOUSEMOVE; + procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; + procedure WMNCCalcSize(var Msg: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT; + procedure WMRButtonDblClk(var Msg: TWMRButtonDblClk); message WM_RBUTTONDBLCLK; + procedure WMRButtonDown(var Msg: TWMRButtonDown); message WM_RBUTTONDOWN; + procedure WMRButtonUp(var Msg: TWMRButtonUp); message WM_RBUTTONUP; + procedure WMSetCursor(var Msg: TWMSetCursor); message WM_SETCURSOR; + procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS; + procedure WMSize(var Msg: TWMSize); message WM_SIZE; + procedure WMTabMoveFocus(var Msg: TMessage); message WM_TABMOVEFOCUS; + procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL; + procedure WMWindowPosChanged(var Msg: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; + procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; + property AllowHiddenCheckedItems: Boolean read FAllowInvisibleCheckedItems write FAllowInvisibleCheckedItems default False; + property BackBits: TBitmap read FBackBits write FBackBits; + property BackGround: TEasyBackgroundManager read FBackGround write SetBackGround; + property BevelInner default bvLowered; + property CacheDoubleBufferBits: Boolean read FCacheDoubleBufferBits write SetCacheDoubleBufferBits; + property CheckManager: TEasyCheckManager read FCheckManager write FCheckManager; + property Color default clWindow; + property CellSizes: TEasyCellSizes read FCellSizes write FCellSizes; + property DisabledBlendAlpha: Byte read FDisabledBlendAlpha write FDisabledBlendAlpha default 128; + property DisabledBlendColor: TColor read FDisabledBlendColor write FDisabledBlendColor default clWindow; + property DragManager: TEasyOLEDragManager read FDragManager write FDragManager; + property DragRect: TEasyDragRectManager read FDragRect write FDragRect; + property DropTarget: IDropTarget read FDropTarget write FDropTarget; + property EditManager: TEasyEditManager read FEditManager write FEditManager; + property Gesture: TEasyGestureManager read FGesture write FGesture; + property GlobalImages: TEasyGlobalImageManager read FGlobalImages write FGlobalImages; + property GroupCollapseButton: TBitmap read GetGroupCollapseImage write SetGroupCollapseImage; + property GroupExpandButton: TBitmap read GetGroupExpandImage write SetGroupExpandImage; + property GroupFont: TFont read FGroupFont write SetGroupFont stored IsFontStored; + property Groups: TEasyGroups read FGroups write FGroups; + property Header: TEasyHeader read FHeader write FHeader; + property HintAlignment: TAlignment read FHintAlignment write FHintAlignment; + property HintData: TEasyHintInfoRec read FHintData write FHintData; + property HintInfo: TEasyHintInfo read FHintInfo write FHintInfo; + property HintType: TEasyHintType read GetHintType write SetHintType default ehtText; + property HotTrack: TEasyHotTrackManager read FHotTrack write FHotTrack; + property ImagesGroup: TCustomImageList read FImagesGroup write SetImagesGroup; + property ImagesSmall: TCustomImageList read FImagesSmall write SetImagesSmall; + property ImagesLarge: TCustomImageList read FImagesLarge write SetImagesLarge; + property ImagesExLarge: TCustomImageList read FImagesExLarge write SetImagesExLarge; + property ImagesState: TCustomImageList read FImagesState write SetImagesState; + property IncrementalSearch: TEasyIncrementalSearchManager read FIncrementalSearch write FIncrementalSearch; + property Items: TEasyGlobalItems read FItems; + property LastMousePos: TSmallPoint read FLastMousePos write FLastMousePos; + property NCCanvas: TCanvas read FNCCanvas write FNCCanvas; + property OnAfterPaint: TAfterPaintEvent read FOnAfterPaint write FOnAfterPaint; + property OnAutoGroupGetKey: TAutoGroupGetKeyEvent read FOnAutoGroupGetKey write FOnAutoGroupGetKey; + property OnAutoSortGroupCreate: TAutoSortGroupCreateEvent read FOnAutoSortGroupCreate write FOnAutoSortGroupCreate; + property OnClipboardCopy: TEasyClipboardEvent read FOnClipboardCopy write FOnClipboardCopy; + property OnClipboardCut: TEasyClipboardCutEvent read FOnClipboardCut write FOnClipboardCut; + property OnClipboardPaste: TEasyClipboardEvent read FOnClipboardPaste write FOnClipboardPaste; + property OnColumnCheckChanged: TColumnCheckChangeEvent read FOnColumnCheckChange write FOnColumnCheckChange; + property OnColumnCheckChanging: TColumnCheckChangingEvent read FOnColumnCheckChanging write FOnColumnCheckChanging; + property OnColumnClick: TColumnClickEvent read FOnColumnClick write FOnColumnClick; + property OnColumnContextMenu: TColumnContextMenuEvent read FOnColumnContextMenu write FOnColumnContextMenu; + property OnColumnCustomView: TColumnCustomViewEvent read FOnColumnCustomView write FOnColumnCustomView; + property OnColumnDblClick: TColumnDblClickEvent read FOnColumnDblClick write FOnColumnDblClick; + property OnColumnDropDownButtonClick: TColumnDropDownButtonClickEvent read FOnColumnDropDownButtonClick write FOnColumnDropDownButtonClick; + property OnColumnEnableChanged: TColumnEnableChangeEvent read FOnColumnEnableChange write FOnColumnEnableChange; + property OnColumnEnableChanging: TColumnEnableChangingEvent read FOnColumnEnableChanging write FOnColumnEnableChanging; + property OnColumnFocusChanged: TColumnFocusChangeEvent read FOnColumnFocusChanged write FOnColumnFocusChanged; + property OnColumnFocusChanging: TColumnFocusChangingEvent read FOnColumnFocusChanging write FOnColumnFocusChanging; + property OnColumnFreeing: TColumnFreeingEvent read FOnColumnFreeing write FOnColumnFreeing; + property OnColumnGetCaption: TColumnGetCaptionEvent read FOnColumnGetCaption write FOnColumnGetCaption; + property OnColumnGetImageIndex: TColumnGetImageIndexEvent read FOnColumnGetImageIndex write FOnColumnGetImageIndex; + property OnColumnGetImageList: TColumnGetImageListEvent read FOnColumnGetImageList write FOnColumnGetImageList; + property OnColumnGetDetail: TColumnGetDetailEvent read FOnColumnGetDetail write FOnColumnGetDetail; + property OnColumnGetDetailCount: TColumnGetDetailCountEvent read FOnColumnGetDetailCount write FOnColumnGetDetailCount; + property OnColumnImageDraw: TColumnImageDrawEvent read FOnColumnImageDraw write FOnColumnImageDraw; + property OnColumnImageGetSize: TColumnImageGetSizeEvent read FOnColumnImageGetSize write FOnColumnImageGetSize; + property OnColumnImageDrawIsCustom: TColumnImageDrawIsCustomEvent read FOnColumnImageDrawIsCustom write FOnColumnImageDrawIsCustom; + property OnColumnInitialize: TColumnInitializeEvent read FOnColumnInitialize write FOnColumnInitialize; + property OnColumnLoadFromStream: TEasyColumnLoadFromStreamEvent read FOnColumnLoadFromStream write FOnColumnLoadFromStream; + property OnColumnPaintText: TColumnPaintTextEvent read FOnColumnPaintText write FOnColumnPaintText; + property OnColumnSaveToStream: TEasyColumnSaveToStreamEvent read FOnColumnSaveToStream write FOnColumnSaveToStream; + property OnColumnSelectionChanged: TColumnSelectionChangeEvent read FOnColumnSelectionChanged write FOnColumnSelectionChanged; + property OnColumnSelectionChanging: TColumnSelectionChangingEvent read FOnColumnSelectionChanging write FOnColumnSelectionChanging; + property OnColumnSetCaption: TColumnSetCaptionEvent read FOnColumnSetCaption write FOnColumnSetCaption; + property OnColumnSetImageIndex: TColumnSetImageIndexEvent read FOnColumnSetImageIndex write FOnColumnSetImageIndex; + property OnColumnSetDetail: TColumnSetDetailEvent read FOnColumnSetDetail write FOnColumnSetDetail; + property OnColumnStructureChange: TNotifyEvent read FOnColumnStructureChange write FOnColumnStructureChange; + property OnColumnThumbnailDraw: TColumnThumbnailDrawEvent read FOnColumnThumbnailDraw write FOnColumnThumbnailDraw; + property OnColumnSizeChanged: TColumnSizeChangedEvent read FOnColumnSizeChanged write FOnColumnSizeChanged; + property OnColumnSizeChanging: TColumnSizeChangingEvent read FOnColumnSizeChanging write FOnColumnSizeChanging; + property OnColumnVisibilityChanged: TColumnVisibilityChangeEvent read FOnColumnVisibilityChanged write FOnColumnVisibilityChanged; + property OnColumnVisibilityChanging: TColumnVisibilityChangingEvent read FOnColumnVisibilityChanging write FOnColumnVisibilityChanging; + property OnContextMenu: TContextMenuEvent read FOnContextMenu write FOnContextMenu; + property OnCustomGrid: TCustomGridEvent read FOnCustomGrid write FOnCustomGrid; + property OnDblClick: TDblClickEvent read FOnDblClick write FOnDblClick; + property OnGetDragImage: TGetDragImageEvent read FOnGetDragImage write FOnGetDragImage; + property OnGroupClick: TGroupClickEvent read FOnGroupClick write FOnGroupClick; + property OnGroupCollapse: TGroupCollapseEvent read FOnGroupCollapse write FOnGroupCollapse; + property OnGroupCollapsing: TGroupCollapsingEvent read FOnGroupCollapsing write FOnGroupCollapsing; + property OnGroupCompare: TGroupCompareEvent read FOnGroupCompare write FOnGroupCompare; + property OnGroupContextMenu: TGroupContextMenuEvent read FOnGroupContextMenu write FOnGroupContextMenu; + property OnGroupCustomView: TGroupCustomViewEvent read FOnGroupCustomView write FOnGroupCustomView; + property OnGroupDblClick: TGroupDblClickEvent read FOnGroupDblClick write FOnGroupDblClick; + property OnGroupExpand: TGroupExpandEvent read FOnGroupExpand write FOnGroupExpand; + property OnGroupExpanding: TGroupExpandingEvent read FOnGroupExpanding write FOnGroupExpanding; + property OnGroupFocusChanged: TGroupFocusChangeEvent read FOnGroupFocusChanged write FOnGroupFocusChanged; + property OnGroupFocusChanging: TGroupFocusChangingEvent read FOnGroupFocusChanging write FOnGroupFocusChanging; + property OnGroupFreeing: TGroupFreeingEvent read FOnGroupFreeing write FOnGroupFreeing; + property OnGroupGetCaption: TGroupGetCaptionEvent read FOnGroupGetCaption write FOnGroupGetCaption; + property OnGroupGetImageIndex: TGroupGetImageIndexEvent read FOnGroupGetImageIndex write FOnGroupGetImageIndex; + property OnGroupGetImageList: TGroupGetImageListEvent read FOnGroupGetImageList write FOnGroupGetImageList; + property OnGroupGetDetail: TGroupGetDetailEvent read FOnGroupGetDetailIndex write FOnGroupGetDetailIndex; + property OnGroupGetDetailCount: TGroupGetDetailCountEvent read FOnGroupGetDetailCount write FOnGroupGetDetailCount; + property OnGroupHotTrack: TGroupHotTrackEvent read FOnGroupHotTrack write FOnGroupHotTrack; + property OnGroupImageDraw: TGroupImageDrawEvent read FOnGroupImageDrawEvent write FOnGroupImageDrawEvent; + property OnGroupImageGetSize: TGroupImageGetSizeEvent read FGroupImageGetSize write FGroupImageGetSize; + property OnGroupImageDrawIsCustom: TGroupImageDrawIsCustomEvent read FOnGroupImageDrawIsCustom write FOnGroupImageDrawIsCustom; + property OnGroupInitialize: TGroupInitializeEvent read FOnGroupInitialize write FOnGroupInitialize; + property OnGroupLoadFromStream: TGroupLoadFromStreamEvent read FOnGroupLoadFromStream write FOnGroupLoadFromStream; + property OnGroupPaintText: TGroupPaintTextEvent read FOnGroupPaintText write FOnGroupPaintText; + property OnGroupSaveToStream: TGroupSaveToStreamEvent read FOnGroupSaveToStream write FOnGroupSaveToStream; + property OnGroupSelectionChanged: TGroupSelectionChangeEvent read FOnGroupSelectionChanged write FOnGroupSelectionChanged; + property OnGroupSelectionChanging: TGroupSelectionChangingEvent read FOnGroupSelectionChanging write FOnGroupSelectionChanging; + property OnGroupSetCaption: TGroupSetCaptionEvent read FOnGroupSetCaption write FOnGroupSetCaption; + property OnGroupSetImageIndex: TGroupSetImageIndexEvent read FOnGroupSetImageIndex write FOnGroupSetImageIndex; + property OnGroupSetDetail: TGroupSetDetailEvent read FOnGroupSetDetail write FOnGroupSetDetail; + property OnGroupStructureChange: TNotifyEvent read FOnGroupStructureChange write FOnGroupStructureChange; + property OnGroupThumbnailDraw: TGroupThumbnailDrawEvent read FOnGroupThumbnailDraw write FOnGroupThumbnailDraw; + property OnGroupVisibilityChanged: TGroupVisibilityChangeEvent read FOnGroupVisibilityChanged write FOnGroupVisibilityChanged; + property OnGroupVisibilityChanging: TGroupVisibilityChangingEvent read FOnGroupVisibilityChanging write FOnGroupVisibilityChanging; + property OnHeaderDblClick: THeaderDblClickEvent read FOnHeaderDblClick write FOnHeaderDblClick; + property OnHeaderMouseDown: THeaderMouseEvent read FOnHeaderMouseDown write FOnHeaderMouseDown; + property OnHeaderMouseMove: TMouseMoveEvent read FOnHeaderMouseMove write FOnHeaderMouseMove; + property OnHeaderMouseUp: THeaderMouseEvent read FOnHeaderMouseUp write FOnHeaderMouseUp; + property OnHintCustomDraw: THintCustomDrawEvent read FOnHintCustomDraw write FOnHintCustomDraw; + property OnHintCustomInfo: THintCustomizeInfoEvent read FOnHintCustomInfo write FOnHintCustomInfo; + property OnHintPauseTime: THintPauseTimeEvent read FOnHintPauseTime write FOnHintPauseTime; + property OnHintPopup: THintPopupEvent read FOnHintPopup write FOnHintPopup; + property OnIncrementalSearch: TIncrementalSearchEvent read FOnIncrementalSearch write FOnIncrementalSearch; + property OnItemCheckChange: TItemCheckChangeEvent read FOnItemCheckChange write FOnItemCheckChange; + property OnItemCheckChanging: TItemCheckChangingEvent read FOnItemCheckChanging write FOnItemCheckChanging; + property OnItemClick: TItemClickEvent read FOnItemClick write FOnItemClick; + property OnItemCompare: TItemCompareEvent read FOnItemCompare write FOnItemCompare; + property OnItemContextMenu: TItemContextMenuEvent read FOnItemContextMenu write FOnItemContextMenu; + property OnItemCreateEditor: TItemCreateEditorEvent read FOnItemCreateEditor write FOnItemCreateEditor; + property OnItemCustomView: TItemCustomViewEvent read FOnItemCustomView write FOnItemCustomView; + property OnItemDblClick: TItemDblClickEvent read FOnItemDblClick write FOnItemDblClick; + property OnItemEditBegin: TItemEditBegin read FOnItemEditBegin write FOnItemEditBegin; + property OnItemEdited: TItemEditedEvent read FOnItemEdited write FOnItemEdited; + property OnItemEditEnd: TItemEditEnd read FOnItemEditEnd write FOnItemEditEnd; + property OnItemEnableChange: TItemEnableChangeEvent read FOnItemEnableChange write FOnItemEnableChange; + property OnItemEnableChanging: TItemEnableChangingEvent read FOnItemEnableChanging write FOnItemEnableChanging; + property OnItemFreeing: TItemFreeingEvent read FOnItemFreeing write FOnItemFreeing; + property OnItemFocusChanged: TItemFocusChangeEvent read FOnItemFocusChanged write FOnItemFocusChanged; + property OnItemFocusChanging: TItemFocusChangingEvent read FOnItemFocusChanging write FOnItemFocusChanging; + property OnItemGetCaption: TItemGetCaptionEvent read FOnItemGetCaption write FOnItemGetCaption; + property OnItemGetEditCaption: TEasyItemGetCaptionEvent read FOnItemGetEditCaption write FOnItemGetEditCaption; + property OnItemGetEditMenu: TItemGetEditMenuEvent read FOnItemGetEditMenu write FOnItemGetEditMenu; + property OnItemGetGroupKey: TItemGetGroupKeyEvent read FOnItemGetGroupKey write FOnItemGetGroupKey; + property OnItemHotTrack: TItemHotTrackEvent read FOnItemHotTrack write FOnItemHotTrack; + property OnItemGetImageIndex: TItemGetImageIndexEvent read FOnItemGetImageIndex write FOnItemGetImageIndex; + property OnItemGetImageList: TItemGetImageListEvent read FOnItemGetImageList write FOnItemGetImageList; + property OnItemGetStateImageList: TItemGetImageListEvent read FOnItemGetStateImageList write FOnItemGetStateImageList; + property OnItemGetTileDetail: TItemGetTileDetailEvent read FOnItemGetTileDetailIndex write FOnItemGetTileDetailIndex; + property OnItemGetTileDetailCount: TItemGetTileDetailCountEvent read FOnItemGetTileDetailCount write FOnItemGetTileDetailCount; + property OnItemImageDraw: TItemImageDrawEvent read FOnItemImageDraw write FOnItemImageDraw; + property OnItemImageGetSize: TItemImageGetSizeEvent read FOnItemImageGetSize write FOnItemImageGetSize; + property OnItemImageDrawIsCustom: TItemImageDrawIsCustomEvent read FOnItemImageDrawIsCustom write FOnItemImageDrawIsCustom; + property OnItemLoadFromStream: TItemLoadFromStreamEvent read FOnItemLoadFromStream write FOnItemLoadFromStream; + property OnItemInitialize: TItemInitializeEvent read FOnItemInitialize write FOnItemInitialize; + property OnItemMouseDown: TItemMouseDownEvent read FOnItemMouseDown write FOnItemMouseDown; + property OnItemMouseUp: TItemMouseUpEvent read FOnItemMouseUp write FOnItemMouseUp; + property OnItemPaintText: TItemPaintTextEvent read FOnItemPaintText write FOnItemPaintText; + property OnItemSaveToStream: TItemSaveToStreamEvent read FOnItemSaveToStream write FOnItemSaveToStream; + property OnItemSelectionChanged: TItemSelectionChangeEvent read FOnItemSelectionChanged write FOnItemSelectionChanged; + property OnItemSelectionChanging: TItemSelectionChangingEvent read FOnItemSelectionChanging write FOnItemSelectionChanging; + property OnItemSelectionsChanged: TEasyItemSelectionsChangedEvent read FOnItemSelectionsChanged write FOnItemSelectionsChanged; + property OnItemSetCaption: TItemSetCaptionEvent read FOnItemSetCaption write FOnItemSetCaption; + property OnItemSetGroupKey: TItemSetGroupKeyEvent read FOnItemSetGroupKey write FOnItemSetGroupKey; + property OnItemSetImageIndex: TItemSetImageIndexEvent read FOnItemSetImageIndex write FOnItemSetImageIndex; + property OnItemSetTileDetail: TItemSetTileDetailEvent read FOnItemSetTileDetail write FOnItemSetTileDetail; + property OnItemStructureChange: TNotifyEvent read FOnItemStructureChange write FOnItemStructureChange; + property OnItemThumbnailDraw: TItemThumbnailDrawEvent read FOnItemThumbnailDraw write FOnItemThumbnailDraw; + property OnItemVisibilityChanged: TItemVisibilityChangeEvent read FOnItemVisibilityChanged write FOnItemVisibilityChanged; + property OnItemVisibilityChanging: TItemVisibilityChangingEvent read FOnItemVisibilityChanging write FOnItemVisibilityChanging; + property OnKeyAction: TEasyKeyActionEvent read FOnKeyAction write FOnKeyAction; + property OnMouseGesture: TEasyGestureEvent read FOnMouseGesture write FOnMouseGesture; + property OnOLEDragEnd: TOLEDropSourceDragEndEvent read FOnOLEDragEnd write FOnOLEDragEnd; + property OnOLEDragStart: TOLEDropSourceDragStartEvent read FOnOLEDragStart write FOnOLEDragStart; + property OnOLEDragEnter: TOLEDropTargetDragEnterEvent read FOnOLEDragEnter write FOnOLEDragEnter; + property OnOLEDragOver: TOLEDropTargetDragOverEvent read FOnOLEDragOver write FOnOLEDragOver; + property OnOLEDragLeave: TOLEDropTargetDragLeaveEvent read FOnOLEDragLeave write FOnOLEDragLeave; + property OnOLEDragDrop: TOLEDropTargetDragDropEvent read FOnOLEDragDrop write FOnOLEDragDrop; + property OnOLEGetCustomFormats: TOLEGetCustomFormatsEvent read FOnOLEGetCustomFormats write FOnOLEGetCustomFormats; + property OnOLEGetData: TOLEGetDataEvent read FOnOLEGetData write FOnOLEGetData; + property OnOLEGetDataObject: FOLEGetDataObjectEvent read FOnOLEGetDataObject write FOnOLEGetDataObject; + property OnOLEQueryContineDrag: TOLEDropSourceQueryContineDragEvent read FOnOLEQueryContineDrag write FOnOLEQueryContineDrag; + property OnOLEGiveFeedback: TOLEDropSourceGiveFeedbackEvent read FOnOLEGiveFeedback write FOnOLEGiveFeedback; + property OnOLEQueryData: TOLEQueryDataEvent read FOnOLEQueryData write FOnOLEQueryData; + property OnPaintBkGnd: TPaintBkGndEvent read FOnPaintBkGnd write FOnPaintBkGnd; + property OnPaintHeaderBkGnd: TPaintHeaderBkGndEvent read FOnPaintHeaderBkGnd write FOnPaintHeaderBkGnd; + property OnScroll: TEasyScrollEvent read FOnScroll write FOnScroll; + property OnViewChange: TViewChangedEvent read FOnViewChange write FOnViewChange; + property PaintInfoColumn: TEasyPaintInfoBaseColumn read GetPaintInfoColumn write SetPaintInfoColumn; + property PaintInfoGroup: TEasyPaintInfoBaseGroup read GetPaintInfoGroup write SetPaintInfoGroup; + property PaintInfoItem: TEasyPaintInfoBaseItem read GetPaintInfoItem write SetPaintInfoItem; + {$IFDEF COMPILER_7_UP}property ParentBackground default False;{$ENDIF COMPILER_7_UP} + property ParentColor default False; + property PopupMenuHeader: TPopupMenu read FPopupMenuHeader write FPopupMenuHeader; + property ScratchCanvas: TControlCanvas read GetScratchCanvas write FScratchCanvas; + property Scrollbars: TEasyScrollbarManager read FScrollbars write FScrollbars; + property Selection: TEasySelectionManager read FSelection write SetSelection; + property ShowGroupMargins: Boolean read FShowGroupMargins write SetShowGroupMargins default False; + property ShowInactive: Boolean read FShowInactive write SetShowInactive default False; + property ShowThemedBorder: Boolean read FShowThemedBorder write SetShowThemedBorder default True; + property Sort: TEasySortManager read FSort write FSort; + property TabStop default True; + property View: TEasyListStyle read FView write SetView; + property WheelMouseDefaultScroll: TEasyDefaultWheelScroll read FWheelMouseDefaultScroll write FWheelMouseDefaultScroll default edwsVert; + property WheelMouseScrollModifierEnabled: Boolean read FWheelMouseScrollModifierEnabled write FWheelMouseScrollModifierEnabled default True; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + function ClientInViewportCoords: TRect; + function IsGrouped: Boolean; virtual; + function IsThumbnailView: Boolean; + function IsVertView: Boolean; + function ScrollHeaderHorz: Boolean; + procedure AutoFitAllCells(VisibleOnly: Boolean); + procedure BeginUpdate; override; + procedure EndUpdate(Invalidate: Boolean = True); override; + procedure Loaded; override; + procedure LoadFromFile(FileName: WideString; Mode: Word); + procedure LoadFromStream(S: TStream); virtual; + procedure SaveToFile(FileName: WideString; Mode: Word); + procedure SaveToStream(S: TStream); virtual; + property ForcePaint: Boolean read FForcePaint write FForcePaint; + property States: TEasyControlStates read FStates write FStates; + property TopItem: TEasyItem read GetTopItem; + published + end; + + TEasyBaseEditor = class(TEasyInterfacedPersistent, IEasyCellEditor) + private + FEditColumn: TEasyColumn; + FEditor: TWinControl; + FItem: TEasyItem; + FModified: Boolean; + FOldWndProc: TWndMethod; + FRectArray: TEasyRectArrayObject; + function GetEditor: TWinControl; virtual; + function GetListview: TCustomEasyListview; + procedure SetEditor(const Value: TWinControl); virtual; + protected + function EditText(Item: TEasyItem; Column: TEasyColumn): WideString; virtual; + function GetEditorColor: TColor; + procedure CalculateEditorRect(NewText: WideString; var NewRect: TRect); virtual; abstract; + procedure CreateEditor(var AnEditor: TWinControl; Column: TEasyColumn; Parent: TWinControl); virtual; abstract; + function GetEditorFont: TFont; virtual; abstract; + function GetText: Variant; virtual; abstract; + procedure ResizeEditor; + property EditColumn: TEasyColumn read FEditColumn write FEditColumn; + property Editor: TWinControl read GetEditor write SetEditor; + property Item: TEasyItem read FItem write FItem; + property Listview: TCustomEasyListview read GetListview; + property Modified: Boolean read FModified write FModified; + property OldWndProc: TWndMethod read FOldWndProc write FOldWndProc; + property RectArray: TEasyRectArrayObject read FRectArray write FRectArray; + public + function AcceptEdit: Boolean; {IEasyCellEditor} + procedure ControlWndHookProc(var Message: TMessage); {IEasyCellEditor} + function GetHandle: HWnd; {IEasyCellEditor} + function GetModified: Boolean; {IEasyCellEditor} + function PtInEditControl(WindowPt: TPoint): Boolean; {IEasyCellEditor} + procedure Finalize; {IEasyCellEditor} + procedure Hide; {IEasyCellEditor} + procedure Initialize(AnItem: TEasyItem; Column: TEasyColumn); {IEasyCellEditor} + procedure SelectAll; virtual; abstract; + procedure SetEditorFocus; virtual; {IEasyCellEditor} + procedure Show; {IEasyCellEditor} + + property Handle: HWnd read GetHandle; + end; + + TEasyStringEditor = class(TEasyBaseEditor) + protected + procedure CalculateEditorRect(NewText: WideString; var NewRect: TRect); override; + procedure CreateEditor(var AnEditor: TWinControl; Column: TEasyColumn; Parent: TWinControl); override; + function GetEditorFont: TFont; override; + function GetText: Variant; override; + procedure DoEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState; + var DoDefault: Boolean); virtual; + procedure OnEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + public + procedure SelectAll; override; + procedure SetEditorFocus; override; + end; + + TEasyMemoEditor = class(TEasyBaseEditor) + protected + procedure CalculateEditorRect(NewText: WideString; var NewRect: TRect); override; + procedure CreateEditor(var AnEditor: TWinControl; Column: TEasyColumn; Parent: TWinControl); override; + function GetEditorFont: TFont; override; + function GetText: Variant; override; + procedure DoEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState; var DoDefault: Boolean); virtual; + procedure OnEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + public + procedure SelectAll; override; + procedure SetEditorFocus; override; + end; + + TEasyListview = class(TCustomEasyListview) + private + function GetPaintInfoColumn: TEasyPaintInfoColumn; reintroduce; virtual; + function GetPaintInfoGroup: TEasyPaintInfoGroup; reintroduce; virtual; + function GetPaintInfoItem: TEasyPaintInfoItem; reintroduce; virtual; + procedure SetPaintInfoColumn(const Value: TEasyPaintInfoColumn); reintroduce; virtual; + procedure SetPaintInfoGroup(const Value: TEasyPaintInfoGroup); reintroduce; virtual; + procedure SetPaintInfoItem(const Value: TEasyPaintInfoItem); reintroduce; virtual; + public + property CheckManager; + property GlobalImages; + property Items; + property States; + published + property Align; + property AllowHiddenCheckedItems; + property Anchors; + property BackGround; + property BevelKind; + property BevelInner; + property BevelOuter; + property BevelWidth; + property BiDiMode; + property BorderWidth; + property CacheDoubleBufferBits; + property CellSizes; + property Color; + property Constraints; + property Ctl3D; + property DisabledBlendAlpha; + property DisabledBlendColor; + property EditManager; + property Gesture; + property ImagesState; + property UseDockManager default True; + property DragKind; + property DragManager; + property Font; + property GroupCollapseButton; + property GroupExpandButton; + property GroupFont; + property Groups; + property HintAlignment; + property HintType; + property Header; + property HotTrack; + property IncrementalSearch; + property ImagesGroup; + property ImagesSmall; + property ImagesLarge; + property ImagesExLarge; + property PaintInfoColumn: TEasyPaintInfoColumn read GetPaintInfoColumn write SetPaintInfoColumn; + property PaintInfoGroup: TEasyPaintInfoGroup read GetPaintInfoGroup write SetPaintInfoGroup; + property PaintInfoItem: TEasyPaintInfoItem read GetPaintInfoItem write SetPaintInfoItem; + property ParentBiDiMode; + {$IFDEF COMPILER_7_UP}property ParentBackground;{$ENDIF} + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property PopupMenuHeader; + property Scrollbars; + property ShowGroupMargins; + property ShowInactive; + property ShowThemedBorder; + property ShowHint; + property Selection; + property Sort; + property TabOrder; + property TabStop; + property Themed; + property View; + property Visible; + property WheelMouseDefaultScroll; + property WheelMouseScrollModifierEnabled; + + property OnAfterPaint; + property OnCanResize; + property OnClick; + property OnConstrainedResize; + {$IFDEF COMPILER_5_UP} + property OnContextPopup; + {$ENDIF} + property OnAutoGroupGetKey; + property OnAutoSortGroupCreate; + property OnClipboardCopy; + property OnClipboardCut; + property OnClipboardPaste; + property OnColumnCheckChanged; + property OnColumnCheckChanging; + property OnColumnClick; + property OnColumnContextMenu; + property OnColumnCustomView; + property OnColumnDblClick; + property OnColumnDropDownButtonClick; + property OnColumnEnableChanged; + property OnColumnEnableChanging; + property OnColumnFreeing; + property OnColumnGetCaption; + property OnColumnGetImageIndex; + property OnColumnGetImageList; + property OnColumnGetDetail; + property OnColumnGetDetailCount; + property OnColumnImageDraw; + property OnColumnImageGetSize; + property OnColumnImageDrawIsCustom; + property OnColumnInitialize; + property OnColumnLoadFromStream; + property OnColumnPaintText; + property OnColumnSaveToStream; + property OnColumnSelectionChanged; + property OnColumnSelectionChanging; + property OnColumnSetCaption; + property OnColumnSetImageIndex; + property OnColumnSetDetail; + property OnColumnSizeChanged; + property OnColumnSizeChanging; + property OnColumnStructureChange; + property OnColumnVisibilityChanged; + property OnColumnVisibilityChanging; + property OnCustomGrid; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDockDrop; + property OnDockOver; + property OnEndDock; + property OnEndDrag; + property OnEndUpdate; + property OnEnter; + property OnExit; + property OnGetDragImage; + property OnGetSiteInfo; + property OnGroupClick; + property OnGroupCollapse; + property OnGroupCollapsing; + property OnGroupCompare; + property OnGroupContextMenu; + property OnGroupCustomView; + property OnGroupDblClick; + property OnGroupExpand; + property OnGroupExpanding; + property OnGroupFreeing; + property OnGroupGetCaption; + property OnGroupGetImageIndex; + property OnGroupGetImageList; + property OnGroupGetDetail; + property OnGroupGetDetailCount; + property OnGroupImageDraw; + property OnGroupImageGetSize; + property OnGroupImageDrawIsCustom; + property OnGroupInitialize; + property OnGroupLoadFromStream; + property OnGroupPaintText; + property OnGroupHotTrack; + property OnGroupSaveToStream; + property OnGroupSetCaption; + property OnGroupSetImageIndex; + property OnGroupSetDetail; + property OnGroupStructureChange; + property OnGroupVisibilityChanged; + property OnGroupVisibilityChanging; + property OnHeaderDblClick; + property OnHeaderMouseDown; + property OnHeaderMouseMove; + property OnHeaderMouseUp; + property OnHintCustomInfo; + property OnHintCustomDraw; + property OnHintPauseTime; + property OnHintPopup; + property OnIncrementalSearch; + property OnItemCheckChange; + property OnItemCheckChanging; + property OnItemClick; + property OnItemCompare; + property OnItemContextMenu; + property OnItemCreateEditor; + property OnItemCustomView; + property OnItemDblClick; + property OnItemEditBegin; + property OnItemEdited; + property OnItemEditEnd; + property OnItemEnableChange; + property OnItemEnableChanging; + property OnItemFreeing; + property OnItemFocusChanged; + property OnItemFocusChanging; + property OnItemGetCaption; + property OnItemGetEditCaption; + property OnItemGetEditMenu; + property OnItemGetGroupKey; + property OnItemGetImageIndex; + property OnItemGetImageList; + property OnItemGetTileDetail; + property OnItemGetTileDetailCount; + property OnItemHotTrack; + property OnItemImageDraw; + property OnItemImageGetSize; + property OnItemImageDrawIsCustom; + property OnItemInitialize; + property OnItemLoadFromStream; + property OnItemMouseDown; + property OnItemMouseUp; + property OnItemPaintText; + property OnItemSaveToStream; + property OnItemSelectionChanged; + property OnItemSelectionChanging; + property OnItemSelectionsChanged; + property OnItemSetCaption; + property OnItemSetGroupKey; + property OnItemSetImageIndex; + property OnItemSetTileDetail; + property OnItemStructureChange; + property OnItemThumbnailDraw; + property OnItemVisibilityChanged; + property OnItemVisibilityChanging; + property OnKeyAction; + property OnMouseGesture; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnOLEDragEnd; + property OnOLEDragStart; + property OnOLEDragEnter; + property OnOLEDragOver; + property OnOLEDragLeave; + property OnOLEDragDrop; + property OnOLEGetCustomFormats; + property OnOLEGetData; + property OnOLEGetDataObject; + property OnOLEQueryContineDrag; + property OnOLEGiveFeedback; + property OnOLEQueryData; + property OnPaintHeaderBkGnd; + property OnPaintBkGnd; + property OnResize; + property OnScroll; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + property OnViewChange; + end; + + TEasyBaseTaskBand = class(TCustomEasyListview) + protected + function CreateColumnPaintInfo: TEasyPaintInfoBaseColumn; override; + function CreateGroupPaintInfo: TEasyPaintInfoBaseGroup; override; + function CreateItemPaintInfo: TEasyPaintInfoBaseItem; override; + function GetPaintInfoColumn: TEasyPaintInfoTaskBandColumn; reintroduce; virtual; + function GetPaintInfoGroup: TEasyPaintInfoTaskbandGroup; reintroduce; virtual; + function GetPaintInfoItem: TEasyPaintInfoTaskBandItem; reintroduce; virtual; + function GroupTestExpand(HitInfo: TEasyGroupHitTestInfoSet): Boolean; override; + procedure DoCustomGrid(Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass); override; + procedure DoGroupCustomView(Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass); override; + procedure DoItemCustomView(Item: TEasyItem; ViewStyle: TEasyListStyle; var View: TEasyViewItemClass); override; + procedure SetPaintInfoColumn(const Value: TEasyPaintInfoTaskBandColumn); reintroduce; virtual; + procedure SetPaintInfoGroup(const Value: TEasyPaintInfoTaskbandGroup); reintroduce; virtual; + procedure SetPaintInfoItem(const Value: TEasyPaintInfoTaskBandItem); reintroduce; virtual; + + property PaintInfoColumn: TEasyPaintInfoTaskBandColumn read GetPaintInfoColumn write SetPaintInfoColumn; + public + constructor Create(AOwner: TComponent); override; + end; + + TEasyTaskPanelBand = class(TEasyBaseTaskBand) + private + FAutoScrollPanels: Boolean; + FOnGetTaskPanel: TEasyGetTaskPanelEvent; + function GetGroups: TEasyGroupsTaskPanel; + procedure SetGroups(const Value: TEasyGroupsTaskPanel); + protected + function CreateGroups: TEasyGroups; override; + procedure CMMouseWheel(var Msg: TCMMouseWheel); message CM_MOUSEWHEEL; + procedure DoCustomGrid(Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass); override; + procedure DoGetTaskPanel(Sender: TEasyGroupTaskPanel; var TaskPanel: TEasyTaskPanelFormClass); virtual; + procedure DoGroupCustomView(Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass); override; + procedure DoGroupExpand(Group: TEasyGroup); override; + procedure PositionPanels; + procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL; + procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL; + procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; + public + constructor Create(AOwner: TComponent); override; + published + property Align; + property Anchors; + property AutoScrollPanels: Boolean read FAutoScrollPanels write FAutoScrollPanels default False; + property BackGround; + property BevelInner; + property BevelOuter; + property BevelWidth; + property BiDiMode; + property BorderWidth; + property Color; + property Constraints; + property Ctl3D; + property OnGetTaskPanel: TEasyGetTaskPanelEvent read FOnGetTaskPanel write FOnGetTaskPanel; + property UseDockManager default True; + property Font; + property GroupFont; + property Groups: TEasyGroupsTaskPanel read GetGroups write SetGroups; + property HintAlignment; + property HintType; + property HotTrack; + property IncrementalSearch; + property ImagesGroup; + property ImagesSmall; + property PaintInfoGroup; + property ParentBiDiMode; + {$IFDEF COMPILER_7_UP}property ParentBackground;{$ENDIF} + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowThemedBorder; + property ShowHint; + property Selection; + property Sort; + property TabOrder; + property TabStop; + property Themed; + property Visible; + property WheelMouseDefaultScroll; + property WheelMouseScrollModifierEnabled; + + property OnCanResize; + property OnClick; + property OnConstrainedResize; + {$IFDEF COMPILER_5_UP} property OnContextPopup; {$ENDIF} + property OnAutoSortGroupCreate; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDockDrop; + property OnDockOver; + property OnEndDock; + property OnEndDrag; + property OnEndUpdate; + property OnEnter; + property OnExit; + property OnGetSiteInfo; + property OnGroupClick; + property OnGroupCollapse; + property OnGroupCollapsing; + property OnGroupContextMenu; + property OnGroupCustomView; + property OnGroupDblClick; + property OnGroupExpand; + property OnGroupExpanding; + property OnGroupFreeing; + property OnGroupGetCaption; + property OnGroupGetImageIndex; + property OnGroupGetImageList; + property OnGroupImageDraw; + property OnGroupImageGetSize; + property OnGroupImageDrawIsCustom; + property OnGroupInitialize; + property OnGroupPaintText; + property OnGroupHotTrack; + property OnGroupSetCaption; + property OnGroupSetImageIndex; + property OnGroupVisibilityChanged; + property OnGroupVisibilityChanging; + property OnHintCustomInfo; + property OnHintCustomDraw; + property OnHintPauseTime; + property OnHintPopup; + property OnKeyAction; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnPaintBkGnd; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + end; + + TEasyTaskBand = class(TEasyBaseTaskBand) + protected + procedure DoGroupCollapse(Group: TEasyGroup); override; + procedure DoGroupExpand(Group: TEasyGroup); override; + public + property GlobalImages; + property Items; + property States; + property Scrollbars; + published + property Align; + property Anchors; + property BevelInner; + property BevelOuter; + property BevelWidth; + property BiDiMode; + property BorderWidth; + property CellSizes; + property Color; + property Constraints; + property Ctl3D; + property EditManager; + property UseDockManager default True; + property DragKind; + property DragManager; + property Font; + property GroupFont; + property Groups; + property HintAlignment; + property HintType; + property HotTrack; + property IncrementalSearch; + property ImagesGroup; + property ImagesSmall; + property PaintInfoGroup: TEasyPaintInfoTaskbandGroup read GetPaintInfoGroup write SetPaintInfoGroup; + property PaintInfoItem: TEasyPaintInfoTaskBandItem read GetPaintInfoItem write SetPaintInfoItem; + property ParentBiDiMode; + {$IFDEF COMPILER_7_UP}property ParentBackground;{$ENDIF} + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property PopupMenuHeader; + property ShowGroupMargins; + property ShowThemedBorder; + property ShowHint; + property Selection; + property Sort; + property TabOrder; + property TabStop; + property Themed; + property Visible; + property WheelMouseDefaultScroll; + property WheelMouseScrollModifierEnabled; + + property OnCanResize; + property OnClick; + property OnConstrainedResize; + {$IFDEF COMPILER_5_UP} + property OnContextPopup; + {$ENDIF} + property OnAutoSortGroupCreate; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDockDrop; + property OnDockOver; + property OnEndDock; + property OnEndDrag; + property OnEndUpdate; + property OnEnter; + property OnExit; + property OnGetDragImage; + property OnGetSiteInfo; + property OnGroupClick; + property OnGroupCollapse; + property OnGroupCollapsing; + property OnGroupCompare; + property OnGroupContextMenu; + property OnGroupDblClick; + property OnGroupExpand; + property OnGroupExpanding; + property OnGroupFreeing; + property OnGroupGetCaption; + property OnGroupGetImageIndex; + property OnGroupGetImageList; + property OnGroupImageDraw; + property OnGroupImageGetSize; + property OnGroupImageDrawIsCustom; + property OnGroupInitialize; + property OnGroupPaintText; + property OnGroupHotTrack; + property OnGroupSetCaption; + property OnGroupSetImageIndex; + property OnGroupSetDetail; + property OnGroupVisibilityChanged; + property OnGroupVisibilityChanging; + property OnHeaderDblClick; + property OnHeaderMouseDown; + property OnHeaderMouseMove; + property OnHeaderMouseUp; + property OnHintCustomInfo; + property OnHintCustomDraw; + property OnHintPauseTime; + property OnHintPopup; + property OnIncrementalSearch; + property OnItemCheckChange; + property OnItemCheckChanging; + property OnItemClick; + property OnItemCompare; + property OnItemContextMenu; + property OnItemCreateEditor; + property OnItemDblClick; + property OnItemEditBegin; + property OnItemEdited; + property OnItemEditEnd; + property OnItemEnableChange; + property OnItemEnableChanging; + property OnItemFreeing; + property OnItemFocusChanged; + property OnItemFocusChanging; + property OnItemGetCaption; + property OnItemGetGroupKey; + property OnItemGetImageIndex; + property OnItemGetImageList; + property OnItemHotTrack; + property OnItemImageDraw; + property OnItemImageGetSize; + property OnItemImageDrawIsCustom; + property OnItemInitialize; + property OnItemMouseDown; + property OnItemPaintText; + property OnItemSelectionChanged; + property OnItemSelectionChanging; + property OnItemSetCaption; + property OnItemSetGroupKey; + property OnItemSetImageIndex; + property OnItemVisibilityChanged; + property OnItemVisibilityChanging; + property OnKeyAction; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnOLEDragEnd; + property OnOLEDragStart; + property OnOLEDragEnter; + property OnOLEDragOver; + property OnOLEDragLeave; + property OnOLEDragDrop; + property OnOLEGetCustomFormats; + property OnOLEGetData; + property OnOLEQueryContineDrag; + property OnOLEGiveFeedback; + property OnOLEQueryData; + property OnPaintBkGnd; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + end; + + + +const + EASYLISTSTYLETEXTS: array[TEasyListStyle] of string = + ('Icon', 'Small Icon', 'List', 'Details', 'Thumbnail', 'Tile', 'FilmStrip', 'Grid'); + EASYSORTALGORITHMS: array[TEasySortAlgorithm] of string = + ('QuickSort', 'BubbleSort', 'MergeSort'); + + HEADERSUPPORTEDVIEWS = [elsReport, elsGrid]; + VERTICALVIEWS = [elsIcon, elsSmallIcon, elsReport, elsThumbnail, elsTile, elsGrid]; + THUMBNAILVIEWS = [elsThumbnail, elsFilmStrip]; + MULTILINEVIEWS = [elsIcon, elsThumbnail, elsFilmStrip, elsTile]; + +procedure FillStringsWithEasyListStyles(Strings: TStrings); +procedure FillStringsWithEasySortAlgorithms(Strings: TStrings); + +var + AlphaBlender: TEasyAlphaBlender; + +implementation + +uses + Math; + +const + PERSISTENTOBJECTSTATES = [esosSelected, esosEnabled, esosVisible, esosChecked, esosBold]; // States that are stored to a stream for persistance + H_STRINGEDITORMARGIN = 12; // Margin for String Editors in the Horz direction + V_STRINGEDITORMARGIN = 2; // Margin for String Editors in the Vert direction + +var + HeaderClipboardFormat: TClipFormat; + +type + TWinControlHack = class(TWinControl); + +type + PHeaderClipData = ^THeaderClipData; + THeaderClipData = record + Thread: THandle; + Listview: TCustomEasyListview; + Column: TEasyColumn; + end; + +const + MaxPixelCount = 65536; + +type + TRGBArray = array[0..MaxPixelCount-1] OF TRGBQuad; + pRGBArray = ^TRGBArray; + + + // Very simple implementation for saving/loading the tree to disk with a Unicode + // filename in NT. Use TnT Uniocode package for a full blown implementation + TWideFileStream = class(THandleStream) + public + constructor Create(const FileName: WideString; Mode: Word); + destructor Destroy; override; + end; + + TWinControlCracker = class(TWinControl) end; + + function WeightPixels (const pixelA, pixelB, pixelWeightA, pixelWeightB: Cardinal): Byte; + begin + Result := Byte((pixelWeightA*pixelA + pixelWeightB*pixelB) DIV (pixelWeightA + pixelWeightB)) + end {WeightPixels}; + + procedure BlendBits(Bits1, Bits2: TBitmap; WeightA, WeightB: Integer; BlurBits2: Boolean); + var + y, x: Integer; + RowA, RowB, TargetRow, PrevRow, NextRow: pRGBArray; + RGBArrayA, RGBArrayB, PrevRGBArrayB, NextRGBArrayB, PrevRowRGBArrayB, NextRowRGBArrayB: TRGBQuad; + begin + if (Bits1.Height > 0) and (Bits1.Width = Bits2.Width) and (Bits1.Height = Bits2.Height) then + begin + PrevRow := nil; + for y := 0 to Bits1.Height - 1 do + begin + RowA := Bits1.ScanLine[y]; + RowB := Bits2.ScanLine[y]; + TargetRow := Bits2.ScanLine[y]; + if y + 1 < Bits1.Height then + NextRow := Bits2.ScanLine[y+1] + else + NextRow := nil; + for x := 0 to Bits1.Width - 1 do + begin + RGBArrayA := RowA[x]; + RGBArrayB := RowB[x]; + if BlurBits2 and Assigned(NextRow) and Assigned(PrevRow) and (x > 0) and (x < Bits1.Width - 1) then + begin + PrevRGBArrayB := TargetRow[x-1]; + NextRGBArrayB := TargetRow[x+1]; + PrevRowRGBArrayB := PrevRow[x]; + NextRowRGBArrayB := NextRow[x]; + RGBArrayB.rgbBlue := ( + PrevRow[x-1].rgbBlue + + PrevRow[x+1].rgbBlue + + NextRow[x-1].rgbBlue + + NextRow[x+1].rgbBlue + + PrevRowRGBArrayB.rgbBlue + + NextRowRGBArrayB.rgbBlue + + TargetRow[x].rgbBlue div 2+ + PrevRGBArrayB.rgbBlue + + NextRGBArrayB.rgbBlue) div 9; + RGBArrayB.rgbGreen := (PrevRow[x-1].rgbGreen + + PrevRow[x+1].rgbGreen + + NextRow[x-1].rgbGreen + + NextRow[x+1].rgbGreen + + PrevRowRGBArrayB.rgbGreen + + NextRowRGBArrayB.rgbGreen + + TargetRow[x].rgbGreen div 2 + + PrevRGBArrayB.rgbGreen + + NextRGBArrayB.rgbGreen) div 9; + RGBArrayB.rgbRed := ( PrevRow[x-1].rgbRed + + PrevRow[x+1].rgbRed + + NextRow[x-1].rgbRed + + NextRow[x+1].rgbRed + + PrevRowRGBArrayB.rgbRed + + NextRowRGBArrayB.rgbRed + + TargetRow[x].rgbRed div 2 + + PrevRGBArrayB.rgbRed + + NextRGBArrayB.rgbRed) div 9; + end; + RGBArrayB.rgbBlue := WeightPixels(RGBArrayA.rgbBlue, RGBArrayB.rgbBlue, WeightA, WeightB); + RGBArrayB.rgbGreen := WeightPixels(RGBArrayA.rgbGreen, RGBArrayB.rgbGreen, WeightA, WeightB); + RGBArrayB.rgbRed := WeightPixels(RGBArrayA.rgbRed, RGBArrayB.rgbRed, WeightA, WeightB); + RowB[x] := RGBArrayB; + end; + PrevRow := TargetRow; + end; + end; + end; + +function HeaderClipFormat: TFormatEtc; +begin + Result.cfFormat := HeaderClipboardFormat; + Result.ptd := nil; + Result.lindex := -1; + Result.dwAspect := -1; + Result.ptd := nil; + Result.tymed := TYMED_HGLOBAL +end; + +function DefaultSort(Column: TEasyColumn; Item1, Item2: TEasyCollectionItem): Integer; +var + Index: Integer; +begin + if not Assigned(Column) then + Index := 0 + else + Index := Column.Position; + + Result := WideStrIComp(PWideChar(Item1.Captions[Index]), PWideChar( Item2.Captions[Index])); + + + if Assigned(Column) and (Column.SortDirection = esdDescending) then + Result := -Result +end; + +procedure FillStringsWithEasyListStyles(Strings: TStrings); +var + ListStyle: TEasyListStyle; +begin + Strings.Clear; + for ListStyle := low(TEasyListStyle) to high(TEasyListStyle) do + Strings.Add(EASYLISTSTYLETEXTS[ListStyle]); +end; + +procedure FillStringsWithEasySortAlgorithms(Strings: TStrings); +var + ListStyle: TEasySortAlgorithm; +begin + Strings.Clear; + for ListStyle := low(TEasySortAlgorithm) to high(TEasySortAlgorithm) do + Strings.Add(EASYSORTALGORITHMS[ListStyle]); +end; + +function WideFileCreate(const FileName: WideString): Integer; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := Integer(CreateFileW(PWideChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, + nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)) + else + Result := Integer(CreateFileA(PAnsiChar(AnsiString(PWideChar(FileName))), GENERIC_READ or GENERIC_WRITE, 0, + nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)); +end; + +function WideFileOpen(const FileName: WideString; Mode: LongWord): Integer; +const + AccessMode: array[0..2] of LongWord = ( + GENERIC_READ, + GENERIC_WRITE, + GENERIC_READ or GENERIC_WRITE); + ShareMode: array[0..4] of LongWord = ( + 0, + 0, + FILE_SHARE_READ, + FILE_SHARE_WRITE, + FILE_SHARE_READ or FILE_SHARE_WRITE); +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := Integer(CreateFileW(PWideChar(FileName), AccessMode[Mode and 3], ShareMode[(Mode and $F0) shr 4], + nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)) + else + Result := Integer(CreateFileA(PAnsiChar(AnsiString(FileName)), AccessMode[Mode and 3], ShareMode[(Mode and $F0) shr 4], + nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)); +end; + +{ TWideFileStream } + +constructor TWideFileStream.Create(const FileName: WideString; Mode: Word); +var + CreateHandle: Integer; +begin + if Mode = fmCreate then + begin + CreateHandle := WideFileCreate(FileName); + if CreateHandle < 0 then + {$IFNDEF COMPILER_5_UP} + raise EFCreateError.Create('Can not create file: ' + FileName); + {$ELSE} + raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateError), [FileName]); + {$ENDIF COMPILER_5_UP} + end else + begin + CreateHandle := WideFileOpen(FileName, Mode); + if CreateHandle < 0 then + {$IFNDEF COMPILER_5_UP} + raise EFCreateError.Create('Can not create file: ' + FileName); + {$ELSE} + raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateError), [FileName]); + {$ENDIF COMPILER_5_UP} + end; + inherited Create(CreateHandle); +end; + +destructor TWideFileStream.Destroy; +begin + if Handle >= 0 then FileClose(Handle); + inherited Destroy; +end; + +{ TEasyGroupItemOwnedPersistent } + +constructor TEasyOwnedPersistentGroupItem.Create(AnOwner: TEasyGroup); +begin + inherited Create(AnOwner.OwnerListview); + FOwnerGroup := AnOwner +end; + +{ TEasyOwnedPersistent} +constructor TEasyOwnedPersistent.Create(AnOwner: TCustomEasyListview); +begin + inherited Create; + FOwnerListview := AnOwner; +end; + +function TEasyOwnedPersistent.GetOwner: TPersistent; +begin + Result := FOwnerListview; +end; + +procedure TEasyOwnedPersistent.LoadFromStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + +end; + +procedure TEasyOwnedPersistent.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + +end; + +{ TEasyInterfacedPersistent } + +function TEasyInterfacedPersistent.GetObj: TObject; +begin + Result := Self +end; + +function TEasyInterfacedPersistent._AddRef: Integer; +begin + Result := InterlockedIncrement(FRefCount); +end; + +function TEasyInterfacedPersistent._Release: Integer; +begin + Result := InterlockedDecrement(FRefCount); + if (Result = 0) then + Destroy; +end; + +function TEasyInterfacedPersistent.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE +end; + +procedure TEasyInterfacedPersistent.AfterConstruction; +begin + // Release the constructor's implicit refcount + InterlockedDecrement(FRefCount); +end; + +procedure TEasyInterfacedPersistent.BeforeDestruction; +begin + +end; + +class function TEasyInterfacedPersistent.NewInstance: TObject; +begin + // Set an implicit refcount so that refcounting + // during construction won't destroy the object. + Result := inherited NewInstance; + TEasyInterfacedPersistent(Result).FRefCount := 1; +end; + +{ TEasyOwnedInterfacedPersistent } + +constructor TEasyOwnedInterfacedPersistent.Create(AnOwner: TCustomEasyListview); +begin + inherited Create; + FOwner := AnOwner; +end; + +{ TEasyMargins } + +constructor TEasyMargin.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FSize := 30; +end; + +destructor TEasyMargin.Destroy; +begin + inherited Destroy; +end; + +function TEasyMargin.RuntimeSize: Integer; +begin + if not Visible or not FOwnerListview.ShowGroupMargins then + Result := 0 + else + Result := FSize +end; + +procedure TEasyMargin.Assign(Source: TPersistent); +var + Temp: TEasyMargin; +begin + if Source is TEasyMargin then + begin + Temp := TEasyMargin(Source); + FSize := Temp.Size; + FVisible := Temp.Visible + end +end; + +procedure TEasyMargin.SetSize(Value: Integer); +begin + if Value <> FSize then + begin + if Value < 0 then + FSize := 0 + else + FSize := Value; + OwnerListview.Groups.Rebuild + end +end; + +procedure TEasyMargin.SetVisible(Value: Boolean); +begin + if Value <> FVisible then + begin + FVisible := Value; + OwnerListview.Groups.Rebuild + end +end; + +{ TEasyHeaderMargin } + +constructor TEasyHeaderMargin.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FVisible := True; +end; + +function TEasyItems.Add(Data: TObject = nil): TEasyItem; +begin + Result := TEasyItem( inherited Add(Data)) +end; + +function TEasyItems.AddCustom(CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; +begin + Result := nil; + if Assigned(CustomItem) then + begin + Result := CustomItem.Create(Self); + FList.Add(Result); + ReIndexItems; + DoItemAdd(Result, FList.Count - 1); + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyItems.AddInterfaced(const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; +begin + Result := nil; + if Assigned(DataInf) then + begin + Result := TEasyItemInterfaced.Create(Self); + FList.Add(Result); + ReIndexItems; + DoItemAdd(Result, FList.Count - 1); + Result.DataInf := DataInf; + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyItems.AddVirtual(Data: TObject = nil): TEasyItemVirtual; +begin + Result := TEasyItemVirtual.Create(Self); + FList.Add(Result); + ReIndexItems; + DoItemAdd(Result, FList.Count - 1); + Result.Data := Data; + DoStructureChange +end; + +constructor TEasyItems.Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner); + FOwnerGroup := AnOwnerGroup; + FItemClass := TEasyItemStored; +end; + +function TEasyItems.InsertCustom(Index: Integer; CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; +begin + Result := CustomItem.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange +end; + +function TEasyItems.InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; +begin + Result := nil; + if Assigned(DataInf) then + begin + Result := TEasyItemInterfaced.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.DataInf := DataInf; + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyItems.InsertVirtual(Index: Integer; Data: TObject = nil): TEasyItemVirtual; +begin + Result := TEasyItemVirtual.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange +end; + +procedure TEasyItems.Clear(FreeItems: Boolean = True); +begin + OwnerListview.Selection.IncMultiChangeCount; + OwnerListview.Selection.GroupSelectBeginUpdate; + inherited Clear(FreeItems); + OwnerListview.Selection.GroupSelectEndUpdate; + OwnerListview.Selection.DecMultiChangeCount; +end; + +procedure TEasyItems.Delete(Index: Integer); +var + Temp: TEasyItem; +begin + // Find the next or prev visible item + Temp := nil; + if not (csDestroying in OwnerListview.ComponentState) and Items[Index].Focused then + begin + Temp := OwnerGroup.OwnerGroups.NextVisibleItem(Items[Index]); + if not Assigned(Temp) then + Temp := OwnerGroup.OwnerGroups.PrevVisibleItem(Items[Index]); + end; + + // Delete the item, it will also unfocus the item + inherited; + + // Focus the next or prev visible item + if Assigned(Temp) then + Temp.Focused := True; +end; + +destructor TEasyItems.Destroy; +begin + inherited; +end; + +procedure TEasyItems.DoStructureChange; +begin + OwnerListview.IncrementalSearch.ResetSearch; + OwnerListview.Groups.Rebuild(False); + if OwnerListview.Sort.AutoSort then + OwnerListview.Sort.SortAll; + OwnerListview.DoItemStructureChange; +end; + +procedure TEasyItems.Exchange(Index1, Index2: Integer); +begin + inherited; +end; + +function TEasyItems.GetItem(Index: Integer): TEasyItem; +begin + // This is a bottle neck for large data sets. Do this direct instead of inherited + Result := ( FList.List[Index]) +end; + +function TEasyItems.Insert(Index: Integer; Data: TObject = nil): TEasyItem; +begin + Result := TEasyItem( inherited Insert(Index)); +end; + +procedure TEasyItems.SetItem(Index: Integer; Value: TEasyItem); +begin + inherited Items[Index] := Value +end; + +{ TEasyGlobalItems} + +function TEasyGlobalItems.Add(Data: TObject = nil): TEasyItem; +begin + EnsureFirstGroup; + Result := TEasyItem(GetLastGroup.Items.Add(Data)); +end; + +function TEasyGlobalItems.AddCustom(CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; +begin + EnsureFirstGroup; + Result := GetLastGroup.Items.AddCustom(CustomItem, Data); +end; + +function TEasyGlobalItems.AddInterfaced(const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; +begin + EnsureFirstGroup; + Result := GetLastGroup.Items.AddInterfaced(DataInf, Data); +end; + +function TEasyGlobalItems.AddVirtual(Data: TObject = nil): TEasyItemVirtual; +begin + EnsureFirstGroup; + Result := GetLastGroup.Items.AddVirtual(Data); +end; + +procedure TEasyGlobalItems.Clear; +begin + FOwner.Groups.Clear; +end; + +constructor TEasyGlobalItems.Create(AnOwner: TCustomEasyListview); +begin + inherited Create; + FOwner := AnOwner; +end; + +procedure TEasyGlobalItems.Delete(Index: Integer; ReIndex: Boolean = True); +var + Item: TEasyItem; +begin +// OwnerListview.Groups.Delete(Index); + Item := Items[Index]; + Item.OwnerGroup.Items.Delete(Item.Index); +// OwnerListview.Groups.ReIndexItems(nil, ReIndex); +end; + +procedure TEasyGlobalItems.EnsureFirstGroup; +begin + if FOwner.Groups.Count = 0 then + FOwner.Groups.Add.Caption := DEFAULT_GROUP_NAME; +end; + +procedure TEasyGlobalItems.Exchange(Index1, Index2: Integer); +var + Item1, Item2: TEasyItem; +begin + Item1 := Items[Index1]; + Item2 := Items[Index2]; + if Item1.OwnerItems = Item2.OwnerItems then + Item1.OwnerItems.Exchange(Item1.Index, Item2.Index) + else + raise Exception.Create('exchange of items between different groups is not yet supported'); // TODO +end; + +function TEasyGlobalItems.GetCount: Integer; +var + i: Integer; +begin + Result := 0; + for i := FOwner.Groups.Count - 1 downto 0 do + Inc(Result, FOwner.Groups[i].Items.Count); +end; + +function TEasyGlobalItems.GetItem(Index: Integer): TEasyItem; +begin + Result := GetItemInternal(Index); + if Result = nil then // index too big + IndexError(Index); +end; + +function TEasyGlobalItems.GetItemInternal(Index: Integer): TEasyItem; +var + i: Integer; + ItemCount: Integer; +begin + // GetItemInternal translates an absolute index into an item. It simply + // returns nil if the index is too big but raises an exception for negative + // indexes. + if Index < 0 then + IndexError(Index); + + Result := nil; + for i := 0 to FOwner.Groups.Count - 1 do + begin + ItemCount := FOwner.Groups[i].Items.Count; + if Index < ItemCount then + begin + Result := FOwner.Groups[i].Items[Index]; + break; + end; + Dec(Index, ItemCount); + end; +end; + +function TEasyGlobalItems.GetLastGroup: TEasyGroup; +begin + if FOwner.Groups.Count > 0 then + Result := FOwner.Groups[FOwner.Groups.Count - 1] + else + Result := nil; +end; + +procedure TEasyGlobalItems.IndexError(Index: Integer); +begin + {$IFDEF COMPILER_5_UP} + TList.Error(SListIndexError, Index); + {$ELSE} + TList.Error('List index out of bounds (%d)', Index); + {$ENDIF} +end; + +function TEasyGlobalItems.IndexOf(Item: TEasyItem): Integer; +var + GroupIndex: Integer; +begin + Result := Item.Index; + for GroupIndex := Item.OwnerGroup.Index - 1 downto 0 do + Inc(Result, OwnerListview.Groups[GroupIndex].Items.Count); +end; + +function TEasyGlobalItems.Insert(Index: Integer; Data: TObject = nil): TEasyItem; +var + Item: TEasyItem; +begin + Item := GetItemInternal(Index); + if Item = nil then + Result := Add + else + Result := Item.OwnerItems.Insert(Item.Index, Data); +end; + +function TEasyGlobalItems.InsertCustom(Index: Integer; CustomItem: TEasyItemClass; Data: TObject = nil): TEasyItem; +var + Item: TEasyItem; +begin + Item := GetItemInternal(Index); + if Item = nil then + Result := AddCustom(CustomItem, Data) + else + Result := Item.OwnerItems.InsertCustom(Item.Index, CustomItem, Data); +end; + +function TEasyGlobalItems.InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject = nil): TEasyItemInterfaced; +var + Item: TEasyItem; +begin + Item := GetItemInternal(Index); + if Item = nil then + Result := AddInterfaced(DataInf, Data) + else + Result := Item.OwnerItems.InsertInterfaced(Item.Index, DataInf, Data); +end; + +function TEasyGlobalItems.InsertVirtual(Index: Integer; Data: TObject = nil): TEasyItemVirtual; +var + Item: TEasyItem; +begin + Item := GetItemInternal(Index); + if Item = nil then + Result := AddVirtual + else + Result := Item.OwnerItems.InsertVirtual(Item.Index, Data); +end; + +procedure TEasyGlobalItems.SetItem(Index: Integer; const Value: TEasyItem); +var + Item: TEasyItem; +begin + Item := Items[Index]; + Item.OwnerItems[Item.Index] := Value; +end; + +procedure TEasyGlobalItems.SetReIndexDisable(const Value: Boolean); +begin + EnsureFirstGroup; + FOwner.Groups.ReIndexDisable := Value; +end; + +{ TEasyGroups } + +constructor TEasyGroups.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FItemClass := TEasyGroupStored; + FStreamGroups := True +end; + +destructor TEasyGroups.Destroy; +begin + inherited Destroy; +end; + +function TEasyGroups.Add(Data: TObject = nil): TEasyGroup; +begin + Result := TEasyGroup( inherited Add(Data)); +end; + +function TEasyGroups.AddCustom(CustomGroup: TEasyGroupClass; Data: TObject = nil): TEasyGroup; +begin + Result := nil; + if Assigned(CustomGroup) then + begin + Result := CustomGroup.Create(Self); + FList.Add(Result); + ReIndexItems; + Result.Data := Data; + DoItemAdd(Result, FList.Count - 1); + DoStructureChange + end +end; + +function TEasyGroups.AddInterfaced(const DataInf: IUnknown; Data: TObject = nil): TEasyGroupInterfaced; +begin + Result := nil; + if Assigned(DataInf) then + begin + Result := TEasyGroupInterfaced.Create(Self); + FList.Add(Result); + ReIndexItems; + Result.DataInf := DataInf; + Result.Data := Data; + DoItemAdd(Result, FList.Count - 1); + DoStructureChange + end +end; + +function TEasyGroups.AddVirtual(Data: TObject = nil): TEasyGroupVirtual; +begin + Result := TEasyGroupVirtual.Create(Self); + FList.Add(Result); + ReIndexItems; + Result.Data := Data; + DoItemAdd(Result, FList.Count - 1); + DoStructureChange +end; + +function TEasyGroups.AdjacentItem(Item: TEasyItem; + Direction: TEasyAdjacentCellDir): TEasyItem; +begin + Result := nil; + if Assigned(Item) then + Result := Item.OwnerGroup.Grid.AdjacentItem(Item, Direction); +end; + +function TEasyGroups.CanMoveDown: Boolean; +begin + Result := not OwnerListview.Sort.AutoSort and (Count > 0) and + ((LastItem.Index < OwnerListview.Items.Count - 1) or (LastItem.Index - FirstItem.Index > Count - 1)); +end; + +function TEasyGroups.CanMoveUp: Boolean; +begin + Result := not OwnerListview.Sort.AutoSort and (Count > 0) and + ((FirstItem.Index > 0) or (LastItem.Index - FirstItem.Index > Count - 1)); +end; + +function TEasyGroups.FirstGroup: TEasyGroup; +begin + Result := FirstGroupInternal(False) +end; + +function TEasyGroups.FirstGroupInRect(ViewportRect: TRect): TEasyGroup; +// +// Find the first group in the passed rectangle. It implicitly assumes +// Visible Groups +// +var + i: Integer; + R: TRect; +begin + Result := nil; + i := 0; + while (i < Count) and not Assigned(Result) do + begin + if Groups[i].Visible then + if IntersectRect(R, Groups[i].DisplayRect, ViewportRect) then + Result := Groups[i]; + Inc(i) + end +end; + +function TEasyGroups.FirstGroupInternal(VisibleOnly: Boolean): TEasyGroup; +var + GroupIndex: Integer; +begin + Result := nil; + GroupIndex := 0; + if Count > 0 then + begin + while not Assigned(Result) and (GroupIndex < Count) do + begin + if VisibleOnly then + begin + if Groups[GroupIndex].Visible then + Result := Groups[GroupIndex] + end else + Result := Groups[GroupIndex]; + Inc(GroupIndex) + end; + end +end; + +function TEasyGroups.FirstInGroup(Group: TEasyGroup): TEasyItem; +begin + Result := FirstInGroupInternal(Group, False) +end; + +function TEasyGroups.FirstInGroupInternal(Group: TEasyGroup; VisibleOnly: Boolean): TEasyItem; +var + ItemIndex: Integer; +begin + Result := nil; + ItemIndex := 0; + if Assigned(Group) then + begin + if Assigned(Group.Items) then + begin + if Group.Items.Count > 0 then + begin + if VisibleOnly then + begin + while not Assigned(Result) and (ItemIndex < Group.Items.Count) do + begin + if Group.Items[ItemIndex].Visible then + Result := Group.Items[ItemIndex]; + Inc(ItemIndex) + end + end else + Result := Group.Items[ItemIndex] + end + end + end +end; + +function TEasyGroups.FirstInitializedItem: TEasyItem; +begin + Result := FirstItemInternal(enitInitialized) +end; + +function TEasyGroups.FirstItem: TEasyItem; +begin + Result := FirstItemInternal(enitAny) +end; + +function TEasyGroups.FirstItemInRect(ViewportRect: TRect): TEasyItem; +// +// Find the first Item in the passed rectangle. It implicitly assumes +// Visible Items +// +var + Group: TEasyGroup; + i: Integer; + R, FullDisplayRect: TRect; +begin + Result := nil; + i := 0; + + if OwnerListview.View = elsReport then + begin + Group := FirstGroupInRect(ViewportRect); + while not Assigned(Result) and Assigned(Group) do + begin + if (Group.Items.Count > 0) and Group.Expanded then + begin + while not Assigned(Result) and (i < Group.Items.Count) do + begin + FullDisplayRect := OwnerListview.Header.ViewRect; + FullDisplayRect.Top := Group.Items[i].DisplayRect.Top; + FullDisplayRect.Bottom := Group.Items[i].DisplayRect.Bottom; + + if Group.Items[i].Visible and IntersectRect(R, FullDisplayRect, ViewportRect) then + Result := Group.Items[i] + else + Inc(i) + end + end; + i := 0; + Group := NextGroupInRect(Group, ViewportRect); + end + end else + begin + Group := FirstGroupInRect(ViewportRect); + while not Assigned(Result) and Assigned(Group) do + begin + if (Group.Items.Count > 0) and Group.Expanded then + begin + while not Assigned(Result) and (i < Group.Items.Count) do + begin + if Group.Items[i].Visible and IntersectRect(R, Group.Items[i].DisplayRect, ViewportRect) then + Result := Group.Items[i] + else + Inc(i) + end + end; + i := 0; + Group := NextGroupInRect(Group, ViewportRect); + end + end +end; + +function TEasyGroups.FirstItemInternal(NextItemType: TEasyNextItemType): TEasyItem; +var + GroupIndex, ItemIndex: Integer; +begin + Result := nil; + GroupIndex := 0; + ItemIndex := 0; + if Count > 0 then + begin + while not Assigned(Result) and (GroupIndex < Count) do + begin + if Assigned(Groups[GroupIndex].Items) then + begin + if Groups[GroupIndex].Items.Count > 0 then + begin + case NextItemType of + enitVisible: + begin + while not Assigned(Result) and (ItemIndex < Groups[GroupIndex].Items.Count) do + begin + if Groups[GroupIndex].Items[ItemIndex].Visible then + Result := Groups[GroupIndex].Items[ItemIndex]; + Inc(ItemIndex) + end + end; + enitInitialized: + begin + while not Assigned(Result) and (ItemIndex < Groups[GroupIndex].Items.Count) do + begin + if Groups[GroupIndex].Items[ItemIndex].Initialized then + Result := Groups[GroupIndex].Items[ItemIndex]; + Inc(ItemIndex) + end + end; + else + Result := Groups[GroupIndex].Items[0]; + end + end; + end; + ItemIndex := 0; + Inc(GroupIndex) + end + end +end; + +function TEasyGroups.FirstVisibleGroup: TEasyGroup; +begin + Result := FirstGroupInternal(True) +end; + +function TEasyGroups.FirstVisibleInGroup(Group: TEasyGroup): TEasyItem; +begin + Result := FirstInGroupInternal(Group, True) +end; + +function TEasyGroups.FirstVisibleItem: TEasyItem; +begin + Result := FirstItemInternal(enitVisible) +end; + +function TEasyGroups.GetCellHeight: Integer; +begin + if Count > 0 then + Result := Groups[0].Grid.CellSize.Height + else + Result := 0 +end; + +function TEasyGroups.GetCellWidth: Integer; +begin + if Count > 0 then + Result := Groups[0].Grid.CellSize.Width + else + Result := 0 +end; + +function TEasyGroups.GetGroup(Index: Integer): TEasyGroup; +begin + // Bottleneck, no inherited call + Result := TEasyGroup( FList.List[Index]) +end; + +function TEasyGroups.GetItemCount: Integer; +var + i: Integer; +begin + Result := 0; + for i := 0 to FList.Count - 1 do + Result := Result + TEasyGroup(FList[i]).ItemCount +end; + +function TEasyGroups.GetViewRect: TRect; +begin + Result := Rect(0, 0, 0, 0); + if LastVisibleGroup <> nil then + Result.BottomRight := LastVisibleGroup.DisplayRect.BottomRight; +end; + +function TEasyGroups.GetVisibleGroup(Index: Integer): TEasyGroup; +begin + Result := nil; + if (Index > -1) and (Index < VisibleCount) then + Result := TEasyGroup( VisibleList[Index]) +end; + +function TEasyGroups.GroupByPoint(ViewportPoint: TPoint): TEasyGroup; +var + i: Integer; +begin + Result := nil; + i := 0; + while (i < Count) and not Assigned(Result) do + begin + if Groups[i].Visible and Groups[i].Enabled then + if PtInRect(Groups[i].DisplayRect, ViewportPoint) then + Result := Groups[i]; + Inc(i) + end +end; + +function TEasyGroups.Insert(Index: Integer; Data: TObject = nil): TEasyGroup; +begin + Result := TEasyGroup( inherited Insert(Index, Data)) +end; + +function TEasyGroups.InsertCustom(Index: Integer; CustomGroup: TEasyGroupClass; Data: TObject = nil): TEasyGroup; +begin + Result := nil; + if Assigned(CustomGroup) then + begin + Result := CustomGroup.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyGroups.InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject): TEasyGroupInterfaced; +begin + Result := nil; + if Assigned(Data) then + begin + Result := TEasyGroupInterfaced.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.DataInf := DataInf; + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyGroups.InsertVirtual(Index: Integer; Data: TObject = nil): TEasyGroupVirtual; +begin + Result := TEasyGroupVirtual.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange +end; + +function TEasyGroups.ItemByPoint(ViewportPoint: TPoint): TEasyItem; +var + Group: TEasyGroup; +begin + Result := nil; + Group := GroupByPoint(ViewportPoint); + if Assigned(Group) then + Result := Group.ItemByPoint(ViewportPoint) +end; + +function TEasyGroups.LastGroup: TEasyGroup; +begin + Result := LastGroupInternal(False) +end; + +function TEasyGroups.LastGroupInternal(VisibleOnly: Boolean): TEasyGroup; +var + GroupIndex: Integer; +begin + Result := nil; + if Count > 0 then + begin + if VisibleOnly then + begin + GroupIndex := Count - 1; + while not Assigned(Result) and (GroupIndex > -1) do + begin + if Groups[GroupIndex].Visible then + Result := Groups[GroupIndex] + else + Dec(GroupIndex) + end + end else + Result := Groups[Count - 1] + end +end; + +function TEasyGroups.LastInGroup(Group: TEasyGroup): TEasyItem; +begin + Result := LastInGroupInternal(Group, False) +end; + +function TEasyGroups.LastInGroupInternal(Group: TEasyGroup; VisibleOnly: Boolean): TEasyItem; +var + ItemIndex: Integer; +begin + Result := nil; + if Assigned(Group) then + begin + if Assigned(Group.Items) then + begin + ItemIndex := Group.Items.Count - 1; + if VisibleOnly then + begin + while not Assigned(Result) and (ItemIndex > -1) do + begin + if Group.Items[ItemIndex].Visible then + Result := Group.Items[ItemIndex] + else + Dec(ItemIndex) + end + end else + Result := Group.Items[Group.Items.Count - 1] + end + end +end; + +function TEasyGroups.LastInitializedItem: TEasyItem; +begin + Result := LastItemInternal(enitInitialized) +end; + +function TEasyGroups.LastItem: TEasyItem; +begin + Result := LastItemInternal(enitAny) +end; + +function TEasyGroups.LastItemInternal(NextItemType: TEasyNextItemType): TEasyItem; +var + ItemIndex, GroupIndex: Integer; +begin + Result := nil; + if Count > 0 then + begin + GroupIndex := Count - 1; + while not Assigned(Result) and (GroupIndex > -1) do + begin + if Assigned(Groups[GroupIndex].Items) then + begin + ItemIndex := Groups[GroupIndex].Items.Count - 1; + while not Assigned(Result) and (ItemIndex > -1) do + begin + case NextItemType of + enitVisible: + begin + if Groups[GroupIndex].Items[ItemIndex].Visible then + Result := Groups[GroupIndex].Items[ItemIndex] + else + Dec(ItemIndex) + end; + enitInitialized: + begin + if Groups[GroupIndex].Items[ItemIndex].Visible then + Result := Groups[GroupIndex].Items[ItemIndex] + else + Dec(ItemIndex) + end + else + Result := Groups[GroupIndex].Items[ItemIndex] + end + end + end; + Dec(GroupIndex); + end + end +end; + +function TEasyGroups.LastVisibleGroup: TEasyGroup; +begin + Result := LastGroupInternal(True) +end; + +function TEasyGroups.LastVisibleInGroup(Group: TEasyGroup): TEasyItem; +begin + Result := LastInGroupInternal(Group, True) +end; + +function TEasyGroups.LastVisibleItem: TEasyItem; +begin + Result := LastItemInternal(enitVisible) +end; + +function TEasyGroups.MoveDown: Boolean; +var + AItem, ANextItem: TEasyItem; +begin + Result := CanMoveDown; + if not Result then + Exit; + + OwnerListview.BeginUpdate; + try + AItem := LastItem; + while Assigned(AItem) do + begin + if AItem.Index < OwnerListview.Items.Count - 1 then + begin + ANextItem := OwnerListview.Items[AItem.Index + 1]; + if not ANextItem.Selected then + OwnerListview.Items.Exchange(AItem.Index, ANextItem.Index); + end; + AItem := PrevItem(AItem); + end; + finally + OwnerListview.EndUpdate; + end; + LastItem.MakeVisible(emvAuto); + OwnerListview.DoItemSelectionsChanged; +end; + +function TEasyGroups.MoveUp: Boolean; +var + AItem, APrevItem: TEasyItem; +begin + Result := CanMoveUp; + if not Result then + Exit; + + OwnerListview.BeginUpdate; + try + AItem := FirstItem; + while Assigned(AItem) do + begin + if AItem.Index > 0 then + begin + APrevItem := OwnerListview.Items[AItem.Index - 1]; + if not APrevItem.Selected then + OwnerListview.Items.Exchange(AItem.Index, APrevItem.Index); + end; + AItem := NextItem(AItem); + end; + finally + OwnerListview.EndUpdate; + end; + FirstItem.MakeVisible(emvAuto); + OwnerListview.DoItemSelectionsChanged; +end; + +function TEasyGroups.NextEditableItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitEditable, esdForward) +end; + +function TEasyGroups.NextGroup(Group: TEasyGroup): TEasyGroup; +begin + Result := NavigateGroupInternal(Group, False, esdForward) +end; + +function TEasyGroups.NextGroupInRect(Group: TEasyGroup; ViewportRect: TRect): TEasyGroup; +// +// Find the next Groups in the passed rectangle. It implicitly assumes +// Visible Groups +// +var + i: Integer; + ScratchR: TRect; + Done: Boolean; +begin + Result := nil; + Done := False; + if Assigned(Group) then + begin + i := Group.Index + 1; + while not Assigned(Result) and (i < Count) and not Done do + begin + if Groups[i].Visible then + begin + if IntersectRect(ScratchR, Groups[i].DisplayRect, ViewportRect) then + Result := Groups[i] + else + Done := True + end; + Inc(i) + end + end +end; + +function TEasyGroups.NavigateGroupInternal(Group: TEasyGroup; + VisibleOnly: Boolean; Direction: TEasySearchDirection): TEasyGroup; +var + GroupIndex: Integer; +begin + Result := nil; + GroupIndex := Group.Index; + if Direction = esdForward then + Inc(GroupIndex) + else + Dec(GroupIndex); + while not Assigned(Result) and (GroupIndex < Count) and (GroupIndex > -1) do + begin + if VisibleOnly then + begin + if Groups[GroupIndex].Expanded and Groups[GroupIndex].Visible then + Result := Groups[GroupIndex] + else begin + if Direction = esdForward then + Inc(GroupIndex) + else + Dec(GroupIndex); + end + end else + Result := Groups[GroupIndex] + end +end; + +function TEasyGroups.NextInitializedItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitInitialized, esdForward) +end; + +function TEasyGroups.NextVisibleGroupWithVisibleItems(Group: TEasyGroup): TEasyGroup; +// +// Returns the next Visible Group that has at least one Visible Item +// +var + Done: Boolean; +begin + Result := nil; + if Assigned(Group) then + begin + Done := False; + Result := Group; + while not Done do + begin + Result := NavigateGroupInternal(Result, True, esdForward); + if Assigned(Result) then + Done := Result.VisibleCount > 0 + else + Done := True + end + end +end; + +function TEasyGroups.NextInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; +begin + Result := NavigateInGroupInternal(Group, Item, False, esdForward) +end; + +function TEasyGroups.NavigateInGroupInternal(Group: TEasyGroup; Item: TEasyItem; + VisibleOnly: Boolean; Direction: TEasySearchDirection): TEasyItem; +var + ItemIndex: Integer; + TempItem: TEasyItem; + Count: Integer; +begin + Result := nil; + if Assigned(Group) and Assigned(Item) then + begin + if Assigned(Group.Items) then + begin + ItemIndex := Item.FIndex; // Direct access for speed + if Direction = esdForward then + Inc(ItemIndex) + else + Dec(ItemIndex); + Count := Group.Items.FList.Count; + while not Assigned(Result) and (ItemIndex < Count) and (ItemIndex > -1) do + begin + // Direct Access for speed + TempItem := Group.Items.FList.List[ItemIndex]; + if VisibleOnly then + begin + // Direct access for speed + if esosVisible in TempItem.State then + Result := TempItem + else begin + if Direction = esdForward then + Inc(ItemIndex) + else + Dec(ItemIndex) + end + end else + Result := TempItem + end + end + end +end; + +function TEasyGroups.NextItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitAny, esdForward) +end; + +function TEasyGroups.NextItemInRect(Item: TEasyItem; ViewportRect: TRect): TEasyItem; +// +// Find the next Item in the passed rectangle. It implicitly assumes +// Visible Items +// +var + Group: TEasyGroup; + i: Integer; + R, FullDisplayRect: TRect; + Done: Boolean; +begin + Result := nil; + Done := False; + Group := Item.OwnerGroup; + i := Item.Index + 1; + + if OwnerListview.View = elsReport then + begin + while not Assigned(Result) and Assigned(Group) and not Done do + begin + if (i < Group.Items.Count) and Group.Expanded and not Done then + begin + FullDisplayRect := OwnerListview.Header.ViewRect; + FullDisplayRect.Top := Group.Items[i].DisplayRect.Top; + FullDisplayRect.Bottom := Group.Items[i].DisplayRect.Bottom; + + if Group.Items[i].Visible then + if IntersectRect(R, FullDisplayRect, ViewportRect) then + Result := Group.Items[i] + else + Done := True + else + Inc(i) + end else + begin + i := 0; + Group := NextGroupInRect(Group, ViewportRect) + end + end + end else + begin + while not Assigned(Result) and Assigned(Group) and not Done do + begin + if (i < Group.Items.Count) and Group.Expanded and not Done then + begin + if Group.Items[i].Visible then + begin + if IntersectRect(R, Group.Items[i].DisplayRect, ViewportRect) then + Result := Group.Items[i] + else begin + if OwnerListview.IsVertView then + Done := Group.Items[i].DisplayRect.Top > ViewportRect.Bottom + else + Done := Group.Items[i].DisplayRect.Left > ViewportRect.Right + end + end; + Inc(i) + end else + begin + i := 0; + Group := NextGroupInRect(Group, ViewportRect) + end + end + end +end; + +function TEasyGroups.NavigateItemInternal(Item: TEasyItem; NextItemType: TEasyNextItemType; Direction: TEasySearchDirection): TEasyItem; +var + GroupIndex, ItemIndex, Column: Integer; + Allow: Boolean; +begin + Result := nil; + if Assigned(Item) then + begin + ItemIndex := Item.Index; + GroupIndex := Item.OwnerGroup.Index; + + if Direction = esdForward then + Inc(ItemIndex) + else + Dec(ItemIndex); + + while not Assigned(Result) and (GroupIndex < Count) and (GroupIndex > -1) do + begin + if Groups[GroupIndex].Expanded and Groups[GroupIndex].Enabled then + begin + while not Assigned(Result) and (ItemIndex < Groups[GroupIndex].Items.Count) and (ItemIndex > -1) do + begin + if NextItemType in [enitVisible, enitEditable] then + begin + if Assigned(Groups[GroupIndex].Items) then + begin + if Groups[GroupIndex].Items[ItemIndex].Visible then + begin + Result := Groups[GroupIndex].Items[ItemIndex]; + if NextItemType = enitEditable then + begin + Allow := True; + OwnerListview.DoItemEditBegin(Result, Column, Allow); + if not Allow then + Result := nil; + end + end + end; + if Direction = esdForward then + Inc(ItemIndex) + else + Dec(ItemIndex) + end else + if NextItemType = enitInitialized then + begin + if Assigned(Groups[GroupIndex].Items) then + begin + if Groups[GroupIndex].Items[ItemIndex].Initialized then + Result := Groups[GroupIndex].Items[ItemIndex] + end; + if Direction = esdForward then + Inc(ItemIndex) + else + Dec(ItemIndex) + end else + Result := Groups[GroupIndex].Items[ItemIndex]; + end; + if Direction = esdForward then + begin + Inc(GroupIndex); + ItemIndex := 0 + end else + begin + Dec(GroupIndex); + if (GroupIndex > -1) and Assigned(Groups[GroupIndex].Items) then + ItemIndex := Groups[GroupIndex].Items.Count - 1; + end + end else + begin + ItemIndex := 0; + if Direction = esdForward then + Inc(GroupIndex) + else + Dec(GroupIndex); + end + end + end +end; + +function TEasyGroups.NextVisibleGroup(Group: TEasyGroup): TEasyGroup; +begin + Result := NavigateGroupInternal(Group, True, esdForward) +end; + +function TEasyGroups.NextVisibleInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; +begin + Result := NavigateInGroupInternal(Group, Item, True, esdForward) +end; + +function TEasyGroups.NextVisibleItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitVisible, esdForward) +end; + +function TEasyGroups.PrevEditableItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitEditable, esdBackward) +end; + +function TEasyGroups.PrevGroup(Group: TEasyGroup): TEasyGroup; +begin + Result := NavigateGroupInternal(Group, False, esdBackward) +end; + +function TEasyGroups.PrevInitializedItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitInitialized, esdBackward) +end; + +function TEasyGroups.PrevVisibleGroupWithVisibleItems(Group: TEasyGroup): TEasyGroup; +// +// Returns the prev Visible Group that has at least one Visible Item +// +var + Done: Boolean; +begin + Result := nil; + if Assigned(Group) then + begin + Done := False; + Result := Group; + while not Done do + begin + Result := NavigateGroupInternal(Result, True, esdBackward); + if Assigned(Result) then + Done := Result.VisibleCount > 0 + else + Done := True + end + end +end; + +function TEasyGroups.PrevInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; +begin + Result := NavigateInGroupInternal(Group, Item, False, esdBackward) +end; + +function TEasyGroups.PrevItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitAny, esdBackward) +end; + +function TEasyGroups.PrevVisibleGroup(Group: TEasyGroup): TEasyGroup; +begin + Result := NavigateGroupInternal(Group, True, esdBackward) +end; + +function TEasyGroups.PrevVisibleInGroup(Group: TEasyGroup; Item: TEasyItem): TEasyItem; +begin + Result := NavigateInGroupInternal(Group, Item, True, esdBackward) +end; + +function TEasyGroups.PrevVisibleItem(Item: TEasyItem): TEasyItem; +begin + Result := NavigateItemInternal(Item, enitVisible, esdBackward) +end; + +procedure TEasyGroups.Clear(FreeItems: Boolean = True); +begin + if Assigned(OwnerListview.Selection) then + begin + OwnerListview.Selection.IncMultiChangeCount; + OwnerListview.Selection.GroupSelectBeginUpdate; + end; + inherited Clear(FreeItems); + if Assigned(OwnerListview.Selection) then + begin + OwnerListview.Selection.DecMultiChangeCount; + OwnerListview.Selection.GroupSelectEndUpdate; + end; +end; + +procedure TEasyGroups.CollapseAll; +var + i: Integer; +begin + OwnerListview.BeginUpdate; + try + for i := 0 to Count - 1 do + Groups[i].Expanded := False + finally + OwnerListview.EndUpdate + end +end; + +procedure TEasyGroups.DeleteGroup(Group: TEasyGroup); +var + Done: Boolean; + TestGroup: TEasyGroup; +begin + Done := False; + TestGroup := FirstGroup; + while Assigned(TestGroup) and not Done do + begin + Done := TestGroup = Group; + if Done then + Delete(Group.Index) + else + TestGroup := NextGroup(TestGroup) + end +end; + +procedure TEasyGroups.DeleteItem(Item: TEasyItem); +var + Done: Boolean; + TestItem: TEasyItem; + Group: TEasyGroup; +begin + Done := False; + TestItem := FirstItem; + while Assigned(TestItem) and not Done do + begin + Done := TestItem = Item; + if Done then + begin + Group := TestItem.OwnerGroup; + Group.Items.Delete(Item.Index); + end else + TestItem := NextItem(TestItem) + end +end; + +procedure TEasyGroups.DeleteItems(ItemArray: TEasyItemArray); +// +// Optimized method of deleting multiple items, the items can be in any group +// +var + i: Integer; + Temp: TEasyItem; +begin + OwnerListview.Selection.IncMultiChangeCount; + OwnerListview.Selection.GroupSelectBeginUpdate; + try + for i := 0 to Length(ItemArray) - 1 do + begin + Temp := ItemArray[i].OwnerGroup.FItems[ItemArray[i].Index]; + Temp.Focused := False; + Temp.Selected := False; + Temp.Visible := False; + end; + + for i := 0 to Length(ItemArray) - 1 do + begin + Temp := ItemArray[i].OwnerGroup.FItems[ItemArray[i].Index]; + ItemArray[i].OwnerGroup.FItems[ItemArray[i].Index] := nil; + Temp.Free; + end; + for i := 0 to Count - 1 do + begin + TEasyGroup( List[i]).FItems.FList.Pack; + TEasyGroup( List[i]).FItems.ReIndexItems + end + finally + OwnerListview.Selection.GroupSelectEndUpdate; + OwnerListview.Selection.DecMultiChangeCount + end +end; + +procedure TEasyGroups.DoStructureChange; +begin + inherited DoStructureChange; + Rebuild(False) +end; + +procedure TEasyGroups.ExpandAll; +var + i: Integer; +begin + OwnerListview.BeginUpdate; + try + for i := 0 to Count - 1 do + Groups[i].Expanded := True + finally + OwnerListview.EndUpdate + end +end; + +procedure TEasyGroups.InitializeAll; +var + i, j: Integer; +begin + for i := 0 to Count - 1 do + begin + if Assigned(Groups[i].Items) then + begin + for j := 0 to Groups[i].Items.Count - 1 do + Groups[i][j].Initialized := True + end + end +end; + +procedure TEasyGroups.InvalidateItem(Item: TEasyCollectionItem; ImmediateUpdate: Boolean); +begin + if Assigned(Item) then + Item.Invalidate(ImmediateUpdate) +end; + +{$IFDEF COMPILER_6_UP} +{$ELSE} +{$ENDIF COMPILER_6_UP} + +procedure TEasyGroups.LoadFromStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited LoadFromStream(S, Version); + if StreamGroups then + ReadItems(S); +end; + +procedure TEasyGroups.MakeAllVisible; +var + i, j: Integer; +begin + OwnerListview.BeginUpdate; + try + for i := 0 to Count - 1 do + begin + Groups[i].Visible := True; + for j := 0 to Groups[i].ItemCount - 1 do + Groups[i].Item[j].Visible := True + end + finally + OwnerListview.EndUpdate() + end +end; + +procedure TEasyGroups.Move(Item: TEasyItem; NewGroup: TEasyGroup); +begin + if Assigned(Item) and Assigned(NewGroup) then + begin + Item.OwnerGroup.Items.Delete(Item.Index); + NewGroup.Items.Add(Item); + Item.FCollection := NewGroup.Items; + DoStructureChange; + end +end; + +procedure TEasyGroups.Rebuild(Force: Boolean = False); +var + i, VisibleGroupIndex, VisibleItemIndex: Integer; + ViewRect: TRect; +begin + if ((OwnerListview.UpdateCount = 0) or Force) and not(csLoading in OwnerListview.ComponentState) and (OwnerListview.HandleAllocated) then + begin + Include(FGroupsState, egsRebuilding); + + try + VisibleList.Clear; + VisibleList.Capacity := Count; + VisibleGroupIndex := 0; + VisibleItemIndex := 0; + + OwnerListview.Header.Rebuild(Force); + SetRect(ViewRect, 0, 0, 0, 0); + for i := 0 to Count - 1 do + begin + + if Groups[i].Visible then + begin + VisibleList.Add(Groups[i]); + Groups[i].FVisibleIndex := VisibleGroupIndex; + Inc(VisibleGroupIndex); + end else + Groups[i].FVisibleIndex := -1; + + if i > 0 then + Groups[i].Rebuild(Groups[i-1], VisibleItemIndex) + else + Groups[i].Rebuild(nil, VisibleItemIndex); + + UnionRect(ViewRect, ViewRect, Groups[i].DisplayRect); + ViewRect.Left := 0; + ViewRect.Top := 0; + Groups[i].Items.ReIndexItems + end; + if OwnerListview.Selection.GroupSelections then + OwnerListview.Selection.BuildSelectionGroupings(False); + OwnerListview.Scrollbars.SetViewRect(ViewRect, True); + finally + Exclude(FGroupsState, egsRebuilding); + end + end +end; + +procedure TEasyGroups.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S, Version); + if StreamGroups then + WriteItems(S); +end; + +procedure TEasyGroups.SetCellHeight(Value: Integer); +var + i: Integer; +begin + OwnerListview.BeginUpdate; + try + for i := 0 to Count - 1 do + Groups[i].Grid.CellSize.Height := Value + finally + OwnerListview.EndUpdate + end +end; + +procedure TEasyGroups.SetCellWidth(Value: Integer); +var + i: Integer; +begin + OwnerListview.BeginUpdate; + try + for i := 0 to Count - 1 do + Groups[i].Grid.CellSize.Width := Value + finally + OwnerListview.EndUpdate + end +end; + +procedure TEasyGroups.SetGroup(Index: Integer; Value: TEasyGroup); +begin + inherited Items[Index] := Value +end; + +procedure TEasyGroups.UnInitializeAll; +var + i, j: Integer; +begin + for i := 0 to Count - 1 do + begin + if Assigned(Groups[i].Items) then + begin + for j := 0 to Groups[i].Items.Count - 1 do + Groups[i][j].Initialized := False + end + end +end; + +{ TEasyColumns } + +constructor TEasyColumns.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FItemClass := TEasyColumnStored +end; + +destructor TEasyColumns.Destroy; +begin + inherited; +end; + +function TEasyColumns.Add(Data: TObject = nil): TEasyColumn; +begin + Result := TEasyColumn( inherited Add(Data)); + Result.Color := OwnerListview.Header.Color; +end; + +function TEasyColumns.AddCustom(CustomItem: TEasyColumnClass; Data: TObject = nil): TEasyColumn; +begin + Result := nil; + if Assigned(CustomItem) then + begin + Result := CustomItem.Create(Self); + FList.Add(Result); + Result.Color := OwnerListview.Header.Color; + ReIndexItems; + Result.Data := Data; + DoItemAdd(Result, FList.Count - 1); + DoStructureChange + end +end; + +function TEasyColumns.AddInterfaced(const DataInf: IUnknown; Data: TObject): TEasyColumnInterfaced; +begin + Result := nil; + if Assigned(DataInf) then + begin + Result := TEasyColumnInterfaced.Create(Self); + FList.Add(Result); + Result.Color := OwnerListview.Header.Color; + ReIndexItems; + Result.DataInf := DataInf; + Result.Data := Data; + DoItemAdd(Result, FList.Count - 1); + DoStructureChange + end +end; + +function TEasyColumns.AddVirtual(Data: TObject = nil): TEasyColumnVirtual; +begin + Result := TEasyColumnVirtual.Create(Self); + FList.Add(Result); + Result.Color := OwnerListview.Header.Color; + ReIndexItems; + Result.Data := Data; + DoItemAdd(Result, FList.Count - 1); + DoStructureChange +end; + +function TEasyColumns.ColumnByPoint(ViewportPoint: TPoint): TEasyColumn; +var + i: Integer; +begin + Result := nil; + i := 0; + // Careful with a binary search here are the rectangles increase with Header.Postions not the Columns property + while not Assigned(Result) and (i < Count) do + begin + if PtInRect(Columns[i].DisplayRect, ViewportPoint) then + Result := Columns[i] + else + Inc(i) + end +end; + +function TEasyColumns.GetColumns(Index: Integer): TEasyColumn; +begin + Result := TEasyColumn( FList.List[Index]) +end; + +function TEasyColumns.GetOwnerHeader: TEasyHeader; +begin + Result := OwnerListview.Header +end; + +function TEasyColumns.Insert(Index: Integer; Data: TObject = nil): TEasyColumn; +begin + Result := TEasyColumn( inherited Insert(Index, Data)) +end; + +function TEasyColumns.InsertCustom(Index: Integer; CustomColumn: TEasyColumnClass; Data: TObject = nil): TEasyColumn; +begin + Result := nil; + if Assigned(CustomColumn) then + begin + Result := CustomColumn.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyColumns.InsertInterfaced(Index: Integer; const DataInf: IUnknown; Data: TObject = nil): TEasyColumnInterfaced; +begin + Result := nil; + if Assigned(DataInf) then + begin + Result := TEasyColumnInterfaced.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.DataInf := DataInf; + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyColumns.InsertVirtual(Index: Integer; Data: TObject = nil): TEasyColumnVirtual; +begin + Result := TEasyColumnVirtual.Create(Self); + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange +end; + +procedure TEasyColumns.Clear(FreeItems: Boolean = True); +begin + inherited Clear(FreeItems); + if Assigned(OwnerHeader) and Assigned(OwnerHeader.Positions) then + begin + OwnerHeader.Positions.Clear; + OwnerHeader.Columns.VisibleList.Clear; + end +end; + +procedure TEasyColumns.DoItemAdd(Item: TEasyCollectionItem; Index: Integer); +begin + inherited DoItemAdd(Item, Index); +end; + +procedure TEasyColumns.DoStructureChange; +begin + inherited DoStructureChange; + OwnerListview.Header.Rebuild(False) +end; + +procedure TEasyColumns.SetColumns(Index: Integer; Value: TEasyColumn); +begin + inherited Items[Index] := Value +end; + +{ TEasyGlobalImageManager } + +constructor TEasyGlobalImageManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FGroupExpandButton := TBitmap.Create; + FGroupCollapseButton := TBitmap.Create; + FColumnSortUp := TBitmap.Create; + FColumnSortDown := TBitmap.Create; +end; + +destructor TEasyGlobalImageManager.Destroy; +begin + inherited; + FreeAndNil(FGroupExpandButton); + FreeAndNil(FGroupCollapseButton); + FreeAndNil(FColumnSortUp); + FreeAndNil(FColumnSortDown); +end; + +function TEasyGlobalImageManager.GetColumnSortDown: TBitmap; +begin + if FColumnSortDown.Empty then + begin + MakeTransparent(FColumnSortDown, clFuchsia); + FColumnSortDown.LoadFromResourceName(hInstance, BITMAP_SORTARROWDOWN); + end; + Result := FColumnSortDown +end; + +function TEasyGlobalImageManager.GetColumnSortUp: TBitmap; +begin + if FColumnSortUp.Empty then + begin + MakeTransparent(FColumnSortUp, clFuchsia); + FColumnSortUp.LoadFromResourceName(hInstance, BITMAP_SORTARROWUP); + end; + Result := FColumnSortUp +end; + +function TEasyGlobalImageManager.GetGroupCollapseImage: TBitmap; +begin + if FGroupCollapseButton.Empty then + begin + MakeTransparent(FGroupCollapseButton, clFuchsia); + FGroupCollapseButton.LoadFromResourceName(hInstance, BITMAP_DEFAULTGROUPCOLLAPSED); + end; + Result := FGroupCollapseButton +end; + +function TEasyGlobalImageManager.GetGroupExpandImage: TBitmap; +begin + if FGroupExpandButton.Empty then + begin + MakeTransparent(FGroupExpandButton, clFuchsia); + FGroupExpandButton.LoadFromResourceName(hInstance, BITMAP_DEFAULTGROUPEXPANDED); + end; + Result := FGroupExpandButton +end; + +procedure TEasyGlobalImageManager.MakeTransparent(Bits: TBitmap; TransparentColor: TColor); +begin + Bits.Transparent := True; + Bits.TransparentColor := TransparentColor +end; + +procedure TEasyGlobalImageManager.SetColumnSortDown(Value: TBitmap); +begin + FColumnSortDown.Assign(Value) +end; + +procedure TEasyGlobalImageManager.SetColumnSortUp(Value: TBitmap); +begin + FColumnSortUp.Assign(Value) +end; + +procedure TEasyGlobalImageManager.SetGroupCollapseImage(const Value: TBitmap); +begin + FGroupExpandButton.Assign(Value); +end; + +procedure TEasyGlobalImageManager.SetGroupExpandImage(const Value: TBitmap); +begin + GroupCollapseButton.Assign(Value); +end; + +{ TEasyGroup } + +constructor TEasyGroup.Create(ACollection: TEasyCollection); +begin + inherited; + FExpanded := True; + FItems := TEasyItems.Create(OwnerListview, Self); + FVisibleItems := TList.Create; +end; + +destructor TEasyGroup.Destroy; +begin + SetDestroyFlags; + if OwnerListview.Selection.FocusedGroup = Self then + OwnerListview.Selection.FocusedGroup := nil; + Selected := False; + Focused := False; + FItems.Free; // don't nil the reference the items may need it as they are destroyed. + inherited; + FreeAndNil(FGrid); + FreeAndNil(FVisibleItems); + FreeAndNil(FView); +end; + +function TEasyGroup.BoundsRectBottomMargin: TRect; +begin + if MarginBottom.Visible and OwnerListview.ShowGroupMargins then + begin + Result := DisplayRect; + Result.Top := Result.Bottom - MarginBottom.RuntimeSize; + Result.Right := Result.Right - MarginRight.RuntimeSize; + Result.Left := Result.Left + MarginLeft.RuntimeSize; + end else + Result := Rect(0, 0, 0, 0); +end; + +function TEasyGroup.BoundsRectLeftMargin: TRect; +begin + if MarginLeft.Visible and OwnerListview.ShowGroupMargins then + begin + Result := DisplayRect; + Result.Right := Result.Left + MarginLeft.RuntimeSize + end else + Result := Rect(0, 0, 0, 0); +end; + +function TEasyGroup.BoundsRectRightMargin: TRect; +begin + if MarginRight.Visible and OwnerListview.ShowGroupMargins then + begin + Result := DisplayRect; + Result.Left := Result.Right - MarginRight.RuntimeSize + end else + Result := Rect(0, 0, 0, 0); +end; + +function TEasyGroup.BoundsRectTopMargin: TRect; +begin + if MarginTop.Visible and OwnerListview.ShowGroupMargins then + begin + Result := DisplayRect; + Result.Bottom := Result.Top + MarginTop.RuntimeSize; + Result.Right := Result.Right - MarginRight.RuntimeSize; + Result.Left := Result.Left + MarginLeft.RuntimeSize; + end else + Result := Rect(0, 0, 0, 0); +end; + +function TEasyGroup.BoundsRectBkGnd: TRect; +begin + Result := DisplayRect; + Result.Left := Result.Left + MarginLeft.RuntimeSize; + Result.Right := Result.Right - MarginRight.RuntimeSize; + Result.Top := Result.Top + MarginTop.RuntimeSize; + Result.Bottom := Result.Bottom - MarginBottom.RuntimeSize; + if Result.Bottom < Result.Top then + Result.Bottom := Result.Top; + if Result.Right < Result.Left then + Result.Right := Result.Left +end; + +function TEasyGroup.CanChangeBold(NewValue: Boolean): Boolean; +begin + Result := True +end; + +function TEasyGroup.CanChangeCheck(NewValue: Boolean): Boolean; +begin + Result := Enabled; +end; + +function TEasyGroup.CanChangeEnable(NewValue: Boolean): Boolean; +begin + Result := True; +end; + +function TEasyGroup.CanChangeFocus(NewValue: Boolean): Boolean; +begin + // Unsupported + Result := False; +end; + +function TEasyGroup.CanChangeHotTracking(NewValue: Boolean): Boolean; +begin + // Unsupported + Result := True; +end; + +function TEasyGroup.CanChangeSelection(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoGroupSelectionChanging(Self, Result) +end; + +function TEasyGroup.CanChangeVisibility(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoGroupVisibilityChanging(Self, Result) +end; + +function TEasyGroup.DefaultImageList(ImageSize: TEasyImageSize): TCustomImageList; +begin + Result:= OwnerListview.ImagesGroup +end; + +function TEasyGroup.EditAreaHitPt(ViewportPoint: TPoint): Boolean; +begin + Result := View.EditAreaHitPt(Self, ViewportPoint) +end; + +function TEasyGroup.GetBandBlended: Boolean; +begin + Result := PaintInfo.BandBlended +end; + +function TEasyGroup.GetBandColor: TColor; +begin + Result := PaintInfo.BandColor +end; + +function TEasyGroup.GetBandColorFade: TColor; +begin + Result := PaintInfo.BandColorFade +end; + +function TEasyGroup.GetBandEnabled: Boolean; +begin + Result := PaintInfo.BandEnabled +end; + +function TEasyGroup.GetBandFullWidth: Boolean; +begin + Result := PaintInfo.BandFullWidth +end; + +function TEasyGroup.GetBandIndent: Integer; +begin + Result := PaintInfo.BandIndent +end; + +function TEasyGroup.GetBandLength: Integer; +begin + Result := PaintInfo.BandLength +end; + +function TEasyGroup.GetBandMargin: Integer; +begin + Result := PaintInfo.BandMargin +end; + +function TEasyGroup.GetBandRadius: Byte; +begin + Result := PaintInfo.BandRadius +end; + +function TEasyGroup.GetBandThickness: Integer; +begin + Result := PaintInfo.BandThickness +end; + +function TEasyGroup.GetClientRect: TRect; +begin + Result := Rect( FDisplayRect.Left + MarginLeft.RuntimeSize, + FDisplayRect.Top + MarginTop.RuntimeSize, + FDisplayRect.Right - MarginRight.RuntimeSize, + FDisplayRect.Bottom - MarginBottom.RuntimeSize) +end; + +function TEasyGroup.GetDefaultGridClass: TEasyGridGroupClass; +begin + Result := nil; + case OwnerListview.View of + elsIcon: Result := TEasyGridIconGroup; + elsSmallIcon: Result := TEasyGridSmallIconGroup; + elsList: Result := TEasyGridListGroup; + elsReport: Result := TEasyGridReportGroup; + elsThumbnail: Result := TEasyGridThumbnailGroup; + elsTile: Result := TEasyGridTileGroup; + elsFilmStrip: Result := TEasyGridFilmStripGroup; + elsGrid: Result := TEasyGridGridGroup; + end +end; + +function TEasyGroup.GetDefaultViewClass: TEasyViewGroupClass; +begin + Result := TEasyViewGroup +end; + +function TEasyGroup.GetExpandable: Boolean; +begin + Result := PaintInfo.Expandable +end; + +function TEasyGroup.GetExpandImageIndent: Integer; +begin + Result := PaintInfo.ExpandImageIndent +end; + +function TEasyGroup.GetGrid: TEasyGridGroup; +begin + if Assigned(FGrid) then + begin + if FGrid.ClassType <> GridClass then + FreeAndNil(FGrid); + end; + if not Assigned(FGrid) then + begin + FGrid := GridClass.Create(OwnerListview, Self); + case OwnerListview.View of + elsIcon: FGrid.CellSize.Assign(OwnerListview.CellSizes.Icon); + elsSmallIcon: FGrid.CellSize.Assign(OwnerListview.CellSizes.SmallIcon); + elsList: FGrid.CellSize.Assign(OwnerListview.CellSizes.List); + elsReport: FGrid.CellSize.Assign(OwnerListview.CellSizes.Report); + elsThumbnail: FGrid.CellSize.Assign(OwnerListview.CellSizes.Thumbnail); + elsTile: FGrid.CellSize.Assign(OwnerListview.CellSizes.Tile); + elsFilmStrip: FGrid.CellSize.Assign(OwnerListview.CellSizes.FilmStrip); + elsGrid: FGrid.CellSize.Assign(OwnerListview.CellSizes.Grid); + end + end; + Result := FGrid; +end; + +function TEasyGroup.GetGridClass: TEasyGridGroupClass; +begin + Result := nil; + OwnerListview.DoCustomGrid(Self, OwnerListview.View, Result); + if not Assigned(Result) then + Result := GetDefaultGridClass +end; + +function TEasyGroup.GetItem(Index: Integer): TEasyItem; +begin + Result := Items[Index] +end; + +function TEasyGroup.GetItemCount: Integer; +begin + Result := Items.Count +end; + +function TEasyGroup.GetMarginBottom: TEasyFooterMargin; +begin + Result := PaintInfo.MarginBottom as TEasyFooterMargin +end; + +function TEasyGroup.GetMarginLeft: TEasyMargin; +begin + Result := PaintInfo.MarginLeft +end; + +function TEasyGroup.GetMarginRight: TEasyMargin; +begin + Result := PaintInfo.MarginRight +end; + +function TEasyGroup.GetMarginTop: TEasyHeaderMargin; +begin + Result := PaintInfo.MarginTop +end; + +function TEasyGroup.GetOwnerGroups: TEasyGroups; +begin + Result := TEasyGroups( Collection) +end; + +function TEasyGroup.GetOwnerListview: TCustomEasyListview; +begin + Result := TEasyGroups( Collection).OwnerListview +end; + +function TEasyGroup.GetPaintInfo: TEasyPaintInfoBaseGroup; +begin + Result := inherited PaintInfo as TEasyPaintInfoBaseGroup +end; + +function TEasyGroup.GetView: TEasyViewGroup; +begin + if Assigned(FView) then + begin + if FView.ClassType <> ViewClass then + FreeAndNil(FView) + end; + if not Assigned(FView) then + FView := ViewClass.Create(Self); + Result := FView +end; + +function TEasyGroup.GetViewClass: TEasyViewGroupClass; +begin + Result := nil; + if Assigned(OwnerListview) then + OwnerListview.DoGroupCustomView(Self, OwnerListview.View, Result); + if not Assigned(Result) then + Result := GetDefaultViewClass +end; + +function TEasyGroup.GetVisibleCount: Integer; +begin + Result := FVisibleItems.Count +end; + +function TEasyGroup.GetVisibleItem(Index: Integer): TEasyItem; +begin + Result := nil; + if (Index > -1) and (Index < VisibleItems.Count) then + Result := TEasyItem( VisibleItems[Index]) +end; + +function TEasyGroup.HitTestAt(ViewportPoint: TPoint; + var HitInfo: TEasyGroupHitTestInfoSet): Boolean; +/// +// Returns information about what, if anything, was hit at the passed point in +// the group. Returns true if anything was hit. +// +var + RectArray: TEasyRectArrayObject; + R: TRect; +begin + HitInfo := []; + + // First need to see what Frame of the group was hit, and then the individual + // rectangle for each element in the Frame is retrieved + if PtInRect(BoundsRectTopMargin, ViewportPoint) then + begin + Include(HitInfo, egtOnHeader); + View.GroupRectArray(Self, egmeTop, BoundsRectTopMargin, RectArray); + end else + if PtInRect(BoundsRectBottomMargin, ViewportPoint) then + begin + Include(HitInfo, egtOnFooter); + View.GroupRectArray(Self, egmeBottom, BoundsRectBottomMargin, RectArray); + end else + if PtInRect(BoundsRectLeftMargin, ViewportPoint) then + begin + Include(HitInfo, egtOnLeftMargin); + View.GroupRectArray(Self, egmeLeft, BoundsRectLeftMargin, RectArray); + end else + if PtInRect(BoundsRectRightMargin, ViewportPoint) then + begin + Include(HitInfo, egtOnRightMargin); + View.GroupRectArray(Self, egmeRight, BoundsRectRightMargin, RectArray); + end; + + if HitInfo <> [] then + begin + R := RectArray.IconRect; + // Make the blank area between the image and text part of the image + R.Right := R.Right + OwnerListview.PaintInfoGroup.CaptionIndent; + if PtInRect(R, ViewportPoint) then + Include(HitInfo, egtOnIcon) + else + if PtInRect(RectArray.TextRect, ViewportPoint) then + Include(HitInfo, egtOnText) + else + if PtInRect(RectArray.LabelRect, ViewportPoint) then + Include(HitInfo, egtOnLabel) + else + if PtInRect(RectArray.ExpandButtonRect, ViewportPoint) then + Include(HitInfo, egtOnExpandButton) + else + if PtInRect(RectArray.BandRect, ViewportPoint) then + Include(HitInfo, egtOnBand) + else + if PtInRect(RectArray.CheckRect, ViewportPoint) then + Include(HitInfo, egtOnCheckbox); + + end; + Result := HitInfo <> [] +end; + +function TEasyGroup.ItemByPoint(ViewportPoint: TPoint): TEasyItem; +var + i: Integer; +begin + Result := nil; + i := 0; + while not Assigned(Result) and (i < Items.Count) do + begin + if PtInRect(Items[i].DisplayRect, ViewportPoint) then + Result := Items[i]; + Inc(i) + end; +end; + +function TEasyGroup.LocalPaintInfo: TEasyPaintInfoBasic; +begin + Result := OwnerListview.PaintInfoGroup +end; + +function TEasyGroup.SelectionHit(SelectViewportRect: TRect; + SelectType: TEasySelectHitType): Boolean; +begin + Result := View.SelectionHit(Self, SelectViewPortRect, SelectType) +end; + +function TEasyGroup.SelectionHitPt(ViewportPoint: TPoint; + SelectType: TEasySelectHitType): Boolean; +begin + Result := View.SelectionHitPt(Self, ViewportPoint, SelectType) +end; + +procedure TEasyGroup.Freeing; +begin + OwnerListview.DoGroupFreeing(Self) +end; + +procedure TEasyGroup.GainingBold; +begin + Invalidate(False) +end; + +procedure TEasyGroup.GainingCheck; +var + i: Integer; +begin + for i := 0 to Items.Count - 1 do + if Items[i].Visible then + Items[i].Checked := True; + if Visible then + Include(FState, esosChecked); + Invalidate(False) +end; + +procedure TEasyGroup.GainingEnable; +var + i: Integer; +begin + for i := 0 to Items.Count - 1 do + Items[i].Enabled := True; + Include(FState, esosEnabled); + Invalidate(False) +end; + +procedure TEasyGroup.GainingFocus; +begin + // Unsupported +end; + +procedure TEasyGroup.GainingGhosted; +begin + Invalidate(False) +end; + +procedure TEasyGroup.GainingHilight; +begin + // Unsupported +end; + +procedure TEasyGroup.GainingHotTracking(MousePos: TPoint); +begin + OwnerListview.DoGroupHotTrack(Self, ehsEnable, MousePos); + Invalidate(True) +end; + +procedure TEasyGroup.GainingSelection; +begin + OwnerListview.DoGroupSelectionChanged(Self) +end; + +procedure TEasyGroup.GainingVisibility; +var + i: Integer; +begin + OwnerListview.DoGroupVisibilityChanged(Self); + for i := 0 to Items.Count - 1 do + Items[i].Visible := True +end; + +procedure TEasyGroup.Initialize; +begin + OwnerListview.DoGroupInitialize(Self) +end; + +procedure TEasyGroup.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + if not Assigned(Items) then + Items := TEasyItems.Create(OwnerListview, Self) + else + Items.Clear; + Items.ReadItems(S); + OwnerListview.DoGroupLoadFromStream(Self, S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyGroup.LosingBold; +begin + Invalidate(False) +end; + +procedure TEasyGroup.LosingCheck; +var + i: Integer; +begin + for i := 0 to Items.Count - 1 do + Items[i].Checked := False; + Exclude(FState, esosChecked); + Invalidate(False) +end; + +procedure TEasyGroup.LosingEnable; +var + i: Integer; +begin + for i := 0 to Items.Count - 1 do + Items[i].Enabled := False; + Exclude(FState, esosEnabled); + Invalidate(False) +end; + +procedure TEasyGroup.LosingFocus; +begin + // Unsupported +end; + +procedure TEasyGroup.LosingGhosted; +begin + Invalidate(False) +end; + +procedure TEasyGroup.LosingHilight; +begin + // Unsupported +end; + +procedure TEasyGroup.LosingHotTracking; +begin + OwnerListview.DoGroupHotTrack(Self, ehsDisable, Point(0, 0)); + Invalidate(True) +end; + +procedure TEasyGroup.LosingSelection; +begin + OwnerListview.DoGroupSelectionChanged(Self) +end; + +procedure TEasyGroup.LosingVisibility; +var + i: Integer; +begin + for i := 0 to Items.Count - 1 do + Items[i].Visible := False; + OwnerListview.DoGroupVisibilityChanged(Self); +end; + +procedure TEasyGroup.Paint(MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; ACanvas: TCanvas); +begin + View.Paint(Self, MarginEdge, ObjRect, ACanvas) +end; + +procedure TEasyGroup.Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); +begin + if Assigned(Grid) then + Grid.Rebuild(PrevGroup, NextVisibleItemIndex) +end; + +procedure TEasyGroup.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + Items.WriteItems(S); + OwnerListview.DoGroupSaveToStream(Self, S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyGroup.SetBandBlended(Value: Boolean); +begin + if Value <> BandBlended then + begin + PaintInfo.BandBlended := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandColor(Value: TColor); +begin + if Value <> BandColor then + begin + PaintInfo.BandColor := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandColorFade(Value: TColor); +begin + if Value <> BandColorFade then + begin + PaintInfo.BandColorFade := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandEnabled(Value: Boolean); +begin + if Value <> BandEnabled then + begin + PaintInfo.BandEnabled := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandFullWidth(Value: Boolean); +begin + if Value <> BandFullWidth then + begin + PaintInfo.BandFullWidth := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandIndent(Value: Integer); +begin + if Value <> BandIndent then + begin + PaintInfo.BandIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandLength(Value: Integer); +begin + if Value <> BandLength then + begin + PaintInfo.BandLength := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandMargin(Value: Integer); +begin + if Value <> BandMargin then + begin + PaintInfo.BandMargin := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandRadius(Value: Byte); +begin + if Value <> BandRadius then + begin + PaintInfo.BandRadius:= Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetBandThickness(Value: Integer); +begin + if Value <> BandThickness then + begin + PaintInfo.BandThickness := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetExpandable(Value: Boolean); +begin + if Value <> Expandable then + begin + PaintInfo.Expandable := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetExpanded(Value: Boolean); +begin + if Value <> FExpanded then + begin + OwnerListview.BeginUpdate; + try + FExpanded := Value; + if Value then + OwnerListview.DoGroupExpand(Self) + else + OwnerListview.DoGroupCollapse(Self); + OwnerListview.Groups.Rebuild(True); + finally + OwnerListview.EndUpdate; + end + end +end; + +procedure TEasyGroup.SetExpandImageIndent(Value: Integer); +begin + if Value <> ExpandImageIndent then + begin + PaintInfo.ExpandImageIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetItem(Index: Integer; Value: TEasyItem); +begin + if (Index > -1) and (Index < Items.Count) then + Items[Index] := Value +end; + +procedure TEasyGroup.SetMarginBottom(Value: TEasyFooterMargin); +begin + if Value <> MarginBottom then + begin + PaintInfo.MarginBottom := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetMarginLeft(Value: TEasyMargin); +begin + if Value <> MarginLeft then + begin + PaintInfo.MarginLeft := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetMarginRight(Value: TEasyMargin); +begin + if Value <> MarginRight then + begin + PaintInfo.MarginRight := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetMarginTop(Value: TEasyHeaderMargin); +begin + if Value <> MarginTop then + begin + PaintInfo.MarginTop := Value; + Invalidate(False) + end +end; + +procedure TEasyGroup.SetPaintInfo(const Value: TEasyPaintInfoBaseGroup); +begin + inherited PaintInfo := Value +end; + +function TEasyViewGroup.CustomExpandImages: Boolean; +begin + Result := not OwnerListview.GroupCollapseButton.Empty or not OwnerListview.GroupExpandButton.Empty +end; + +function TEasyViewGroup.EditAreaHitPt(Group: TEasyGroup; ViewportPoint: TPoint): Boolean; +begin + Result := False +end; + +function TEasyViewGroup.GetImageList(Group: TEasyGroup): TCustomImageList; +begin + Result := Group.ImageList[-1, eisSmall] +end; + +function TEasyViewGroup.SelectionHit(Group: TEasyGroup; + SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; +begin + Result := False +end; + +function TEasyViewGroup.SelectionHitPt(Group: TEasyGroup; ViewportPoint: TPoint; + SelectType: TEasySelectHitType): Boolean; +begin + Result := False +end; + +{ TEasyGroupView } + +procedure TEasyViewGroup.GetCollapseExpandImages(var Expand, Collapse: TBitmap); +begin + Expand := nil; + Collapse := nil; + if not OwnerListview.GroupCollapseButton.Empty then + Collapse := OwnerListview.GroupCollapseButton + else + Collapse := OwnerListview.GlobalImages.GroupCollapseButton; + + if not OwnerListview.GroupExpandButton.Empty then + Expand := OwnerListview.GroupExpandButton + else + Expand := OwnerListview.GlobalImages.GroupExpandButton; +end; + +procedure TEasyViewGroup.GetExpandImageSize(Group: TEasyGroup; var ImageW, ImageH: Integer); +var + ExpandImage, CollapseImage: TBitmap; +begin + ImageW := 0; + ImageH := 0; + GetCollapseExpandImages(ExpandImage, CollapseImage); + if Assigned(ExpandImage) and Assigned(CollapseImage) then + begin + ImageW := ExpandImage.Width; + ImageH := ExpandImage.Height; + if CollapseImage.Width > ImageW then + ImageW := CollapseImage.Width; + if CollapseImage.Height > ImageH then + ImageH := CollapseImage.Height + end +end; + +procedure TEasyViewGroup.GetImageSize(Group: TEasyGroup; var ImageW, ImageH: Integer); +var + Images: TCustomImageList; + IsCustom: Boolean; +begin + ImageW := 0; + ImageH := 0; + Group.ImageDrawIsCustom(nil, IsCustom); + if IsCustom then + Group.ImageDrawGetSize(nil, ImageW, ImageH) + else begin + Images := GetImageList(Group); + if (Group.ImageIndexes[0] > -1) and Assigned(Images) then + begin + ImageW := Images.Width; + ImageH := Images.Height + end + end; +end; + +procedure TEasyViewGroup.GroupRectArray(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; + ObjRect: TRect; var RectArray: TEasyRectArrayObject); +// +// Grabs all the rectangles for the items within a cell in one call +// If PaintInfo is nil then the information is fetched automaticlly +// +var + TextSize: TSize; + HeaderBand, FooterBand: TRect; + TempRectArray: TEasyRectArrayObject; + ImageW, ImageH, ExpandImageW, ExpandImageH, BandOffset: Integer; +begin + Group.Initialized := True; + + FillChar(RectArray, SizeOf(RectArray), #0); + + RectArray.GroupRect := ObjRect; + RectArray.BackGndRect := Group.BoundsRectBkGnd; + + GetImageSize(Group, ImageW, ImageH); + GetExpandImageSize(Group, ExpandImageW, ExpandImageH); + ExpandImageW := Round( ExpandImageW + GetDeviceCaps(OwnerListview.Canvas.Handle, LOGPIXELSX)/96); + + if MarginEdge in [egmeTop, egmeBottom] then + begin + + if Group.BandEnabled then + BandOffset := Group.BandThickness + 2 * Group.BandMargin + else + BandOffset := 0; + + // Calculate the Expansion button first for the Header only + if Group.Expandable and (MarginEdge = egmeTop) then + RectArray.ExpandButtonRect := Rect(RectArray.GroupRect.Left + Group.ExpandImageIndent, + RectArray.GroupRect.Top, + RectArray.GroupRect.Left + ExpandImageW + Group.ExpandImageIndent, + RectArray.GroupRect.Bottom - BandOffset) + else // Make the ExpandButton R a width of 0 + RectArray.ExpandButtonRect := Rect(RectArray.GroupRect.Left, + RectArray.GroupRect.Top, + RectArray.GroupRect.Left, + RectArray.GroupRect.Bottom - BandOffset); + + if (Group.CheckType <> ectNone) and (MarginEdge in [egmeTop]) then + begin + RectArray.CheckRect := Checks.Bound[Group.CheckSize]; + case Group.VAlignment of + cvaTop: OffsetRect(RectArray.CheckRect, RectArray.ExpandButtonRect.Right + Group.CheckIndent, ObjRect.Top + 2); + cvaBottom: OffsetRect(RectArray.CheckRect, RectArray.ExpandButtonRect.Right + Group.CheckIndent, ObjRect.Bottom - BandOffset - RectHeight(RectArray.CheckRect) - 2); + cvaCenter: OffsetRect(RectArray.CheckRect, RectArray.ExpandButtonRect.Right + Group.CheckIndent, + (ObjRect.Top + ((RectHeight(ObjRect) - BandOffset) - RectHeight(RectArray.CheckRect)) div 2)); + end + end else + begin + // CheckRect is a 0 width + RectArray.CheckRect := ObjRect; + RectArray.CheckRect.Left := RectArray.ExpandButtonRect.Right; + RectArray.CheckRect.Right := RectArray.ExpandButtonRect.Right; + end; + + + // Now Calculate the image for the header or the footer + if Group.ImageIndex > -1 then + RectArray.IconRect := Rect(RectArray.CheckRect.Right + Group.ImageIndent, + RectArray.GroupRect.Top, + RectArray.CheckRect.Right + ImageW + Group.ImageIndent, + RectArray.GroupRect.Bottom - BandOffset) + else // Make the IconR a width of 0 + RectArray.IconRect := Rect(RectArray.CheckRect.Right, + RectArray.CheckRect.Top, + RectArray.CheckRect.Right, + RectArray.CheckRect.Bottom - BandOffset); + + // Now the Label rect may be calculated for the header or footer + RectArray.LabelRect := Rect(RectArray.IconRect.Right + Group.CaptionIndent, + RectArray.ExpandButtonRect.Top, + RectArray.GroupRect.Right, + RectArray.ExpandButtonRect.Bottom); + + + // Calculate the text size for the text based on the above font + if Assigned(OwnerListview.ScratchCanvas) then + begin + LoadTextFont(Group, OwnerListview.ScratchCanvas); + TextSize := TextExtentW(Group.Caption, OwnerListview.ScratchCanvas.Font); + end else + begin + TextSize.cx := 0; + TextSize.cy := 0; + end; + + // Use the calculated label rectangle to position where the text goes + RectArray.TextRect := Rect(RectArray.LabelRect.Left, + RectArray.LabelRect.Top, + RectArray.LabelRect.Left + TextSize.cx, + RectArray.LabelRect.Top + TextSize.cy); + + if RectArray.TextRect.Right > RectArray.LabelRect.Right then + RectArray.TextRect.Right := RectArray.LabelRect.Right; + if RectArray.TextRect.Bottom > RectArray.LabelRect.Bottom then + RectArray.TextRect.Bottom := RectArray.LabelRect.Bottom; + + case Group.Alignment of + taLeftJustify: OffsetRect(RectArray.TextRect, 0, 0); + taRightJustify: OffsetRect(RectArray.TextRect, RectWidth(RectArray.LabelRect) - (RectWidth(RectArray.TextRect)), 0); + taCenter: OffsetRect(RectArray.TextRect, (RectWidth(RectArray.LabelRect) - RectWidth(RectArray.TextRect)) div 2, 0); + end; + + case Group.VAlignment of + cvaBottom: OffsetRect(RectArray.TextRect, 0, RectHeight(RectArray.GroupRect) - (RectHeight(RectArray.TextRect) + BandOffset)); + cvaCenter: OffsetRect(RectArray.TextRect, 0, ((RectHeight(RectArray.GroupRect) - BandOffset) - RectHeight(RectArray.TextRect)) div 2); + end; + + if Group.BandEnabled then + begin + if Group.BandFullWidth then + RectArray.BandRect := Rect(RectArray.GroupRect.Left, + RectArray.GroupRect.Bottom - Group.BandMargin - Group.BandThickness, + RectArray.GroupRect.Right, + RectArray.GroupRect.Bottom - Group.BandMargin) + else + RectArray.BandRect := Rect(RectArray.GroupRect.Left, + RectArray.GroupRect.Bottom - 2 * Group.BandMargin - Group.BandThickness, + RectArray.GroupRect.Left + Group.BandLength, + RectArray.GroupRect.Bottom - Group.BandMargin); + + OffsetRect(RectArray.BandRect, Group.BandIndent, 0); + + end; + + end else + begin // Calculate the margin rectangles + + // Need to send nil so the user attributes are fetched for the header + GroupRectArray(Group, egmeTop, Group.BoundsRectTopMargin, TempRectArray); + HeaderBand := TempRectArray.BandRect; + + // Need to send nil so the user attributes are fetched for the footer + GroupRectArray(Group, egmeBottom, Group.BoundsRectBottomMargin, TempRectArray); + FooterBand := TempRectArray.BandRect; + + if MarginEdge = egmeLeft then + RectArray.BandRect := Rect(RectArray.GroupRect.Left + (RectWidth(RectArray.GroupRect) - Group.BandThickness) div 2, + HeaderBand.Top, + RectArray.GroupRect.Right, + FooterBand.Bottom - 1); + if MarginEdge = egmeRight then + RectArray.BandRect := Rect(RectArray.GroupRect.Left, + HeaderBand.Top, + RectArray.GroupRect.Right - (RectWidth(RectArray.GroupRect) - Group.BandThickness) div 2, + FooterBand.Bottom - 1) + end; +end; + +procedure TEasyViewGroup.LoadTextFont(Group: TEasyGroup; ACanvas: TCanvas); +begin + if Assigned(ACanvas) then + begin + ACanvas.Font.Assign(OwnerListview.GroupFont); + ACanvas.Brush.Style := bsClear; + if Group.Focused then + begin + if OwnerListview.Focused then + ACanvas.Font.Color := clHighlightText; + end; + if Group.Bold then + ACanvas.Font.Style := ACanvas.Font.Style + [fsBold]; + + OwnerListview.DoGroupPaintText(Group, ACanvas); + end +end; + +procedure TEasyViewGroup.Paint(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; ACanvas: TCanvas); +// +// Calls the sub Paint methods to do a complete Paint cycle for the Group +// +var + RectArray: TEasyRectArrayObject; +begin + if not IsRectEmpty(ObjRect) then + begin + CanvasStore.StoreCanvasState(ACanvas); + try + GroupRectArray(Group, MarginEdge, ObjRect, RectArray); + PaintBefore(Group, ACanvas, MarginEdge, ObjRect, RectArray); + PaintBackground(Group, ACanvas, MarginEdge, ObjRect, RectArray); + if MarginEdge = egmeTop then + PaintCheckBox(Group, ACanvas, RectArray); + PaintSelectionRect(Group, ACanvas, ObjRect, RectArray); + PaintFocusRect(Group, ACanvas, MarginEdge, ObjRect, RectArray); + PaintText(Group, MarginEdge, ACanvas, ObjRect, RectArray); + PaintBand(Group, ACanvas, MarginEdge, ObjRect, RectArray); + PaintExpandButton(Group, ACanvas, MarginEdge, ObjRect, RectArray); + PaintImage(Group, ACanvas, MarginEdge, ObjRect, RectArray); + PaintAfter(Group, ACanvas, MarginEdge, ObjRect, RectArray); + finally + CanvasStore.RestoreCanvasState(ACanvas) + end + end +end; + +procedure TEasyViewGroup.PaintAfter(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +begin + +end; + +procedure TEasyViewGroup.PaintBackground(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge;ObjRect: TRect; RectArray: TEasyRectArrayObject); +begin + +end; + +procedure TEasyViewGroup.PaintBand(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +// +// Paints the banding in none, one, ..., all margins of the Group +var + i: Integer; + Red1, Red2, Green1, Green2, Blue1, Blue2, RC, GC, BC, BandTop: Integer; + RStep, GStep, BStep : Double; + RGBVal, BlendStop: Longword; + CellR: TRect; +begin + if Group.BandEnabled and not IsRectEmpty(RectArray.BandRect) then + begin + CellR := ObjRect; + if MarginEdge in [egmeBottom, egmeTop] then + begin + BandTop := RectArray.BandRect.Top + Group.BandMargin; + + // Draw the Banding + if Group.BandBlended then + begin + if (Group.BandLength > 0) then + begin + // Calulate the stepping to create the blended banding + RGBVal := ColorToRGB(Group.BandColor); + Red1 := GetRValue(RGBVal); + Green1 := GetGValue(RGBVal); + Blue1 := GetBValue(RGBVal); + + RGBVal := ColorToRGB(Group.BandColorFade); + Red2 := GetRValue(RGBVal); + Green2 := GetGValue(RGBVal); + Blue2 := GetBValue(RGBVal); + + + if Group.BandFullWidth then + BlendStop := RectWidth(CellR) + else + BlendStop := Group.BandLength; + + RStep := (Red2-Red1)/BlendStop; + GStep := (Green2-Green1)/BlendStop; + BStep := (Blue2-Blue1)/BlendStop; + + ACanvas.Pen.Color := Group.BandColor; + + // Draw the Banding + for i := 0 to BlendStop do + begin + if Group.BandFullWidth then + begin + ACanvas.MoveTo(CellR.Left + i, BandTop); + ACanvas.LineTo(CellR.Left + i, BandTop + Group.BandThickness); + end else + begin + ACanvas.MoveTo(RectArray.BandRect.Left + i, BandTop); + ACanvas.LineTo(RectArray.BandRect.Left + i, BandTop + Group.BandThickness); + end; + RC:=Round(Red1 + i*RStep); + GC:=Round(Green1 +i*GStep); + BC:=Round(Blue1 + i*BStep); + ACanvas.Pen.Color := RGB(RC, GC, BC); + end + end + end else + begin + ACanvas.Pen.Color := Group.BandColor; + + if Group.BandFullWidth then + begin + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(CellR.Left, BandTop + i); + ACanvas.LineTo(CellR.Right, BandTop + i); + end + end else + begin + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left, BandTop + i); + ACanvas.LineTo(RectArray.BandRect.Left + Group.BandLength, BandTop + i); + end + end + end + end else + begin + if (MarginEdge in [egmeRight]) and Group.BandBlended then + ACanvas.Pen.Color := Group.BandColorFade + else + ACanvas.Pen.Color := Group.BandColor; + + if MarginEdge = egmeLeft then + begin + // Draw the horizontal stubs on the top and bottom + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left + Group.BandRadius, RectArray.BandRect.Top + i); + ACanvas.LineTo(RectArray.BandRect.Right + 1, RectArray.BandRect.Top + i) + end; + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left + Group.BandRadius, RectArray.BandRect.Bottom - i); + ACanvas.LineTo(RectArray.BandRect.Right + 1, RectArray.BandRect.Bottom - i) + end; + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left + i, RectArray.BandRect.Top + Group.BandRadius); + ACanvas.LineTo(RectArray.BandRect.Left + i, RectArray.BandRect.Bottom - Group.BandRadius + 1) + end; + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left + Group.BandRadius, RectArray.BandRect.Top); + AngleArc(ACanvas.Handle, + RectArray.BandRect.Left + Group.BandRadius, + RectArray.BandRect.Top + Group.BandRadius, + Group.BandRadius - i, + 90, + 90); + + ACanvas.MoveTo(RectArray.BandRect.Left, RectArray.BandRect.Bottom - Group.BandRadius); + AngleArc(ACanvas.Handle, + RectArray.BandRect.Left + Group.BandRadius, + RectArray.BandRect.Bottom - Group.BandRadius, + Group.BandRadius - i, + 180, + 90); + end + end else + begin + // Draw the horizontal stubs on the top and bottom + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left, RectArray.BandRect.Top + i); + ACanvas.LineTo(RectArray.BandRect.Right - Group.BandRadius + 1, RectArray.BandRect.Top + i) + end; + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Left, RectArray.BandRect.Bottom - i); + ACanvas.LineTo(RectArray.BandRect.Right - Group.BandRadius + 1, RectArray.BandRect.Bottom - i) + end; + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Right - i, RectArray.BandRect.Top + Group.BandRadius); + ACanvas.LineTo(RectArray.BandRect.Right - i, RectArray.BandRect.Bottom - Group.BandRadius + 1) + end; + for i := 0 to Group.BandThickness - 1 do + begin + ACanvas.MoveTo(RectArray.BandRect.Right, RectArray.BandRect.Top + Group.BandRadius); + AngleArc(ACanvas.Handle, + RectArray.BandRect.Right - Group.BandRadius, + RectArray.BandRect.Top + Group.BandRadius, + Group.BandRadius - i, + 0, + 90); + + ACanvas.MoveTo(RectArray.BandRect.Right - Group.BandRadius, RectArray.BandRect.Bottom); + AngleArc(ACanvas.Handle, + RectArray.BandRect.Right - Group.BandRadius, + RectArray.BandRect.Bottom - Group.BandRadius, + Group.BandRadius - i, + 270, + 90); + end + end + end + end +end; + +procedure TEasyViewGroup.PaintBefore(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +begin +end; + +procedure TEasyViewGroup.PaintCheckBox(Group: TEasyGroup; ACanvas: TCanvas; + RectArray: TEasyRectArrayObject); +begin + if not ((Group.CheckType = ectNone) or (Group.CheckType = ettNoneWithSpace)) then + PaintCheckboxCore(Group.CheckType, // TEasyCheckType + OwnerListview, // TCustomEasyListview + ACanvas, // TCanvas + RectArray.CheckRect, // TRect + Group.Enabled, // IsEnabled + Group.Checked, // IsChecked + Group.CheckPending and (ebcsCheckboxClickPending in OwnerListview.States), // IsHot + Group.CheckFlat, // IsFlat + Group.CheckHovering, // IsHovering + Group.CheckPending, // IsPending + Group, + Group.CheckSize); +end; + +procedure TEasyViewGroup.PaintExpandButton(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +// +// Paints the [+] button for collapable groups +// +var + Image, ExpandImage, CollapseImage: TBitmap; + {$IFDEF USETHEMES} + Part, uState: Longword; + R: TRect; + {$ENDIF} +begin + if MarginEdge in [egmeTop] then + begin + GetCollapseExpandImages(ExpandImage, CollapseImage); + + {$IFDEF USETHEMES} + if Group.OwnerListview.DrawWithThemes and not CustomExpandImages then + begin + Part := TVP_GLYPH; + if Group.Expanded then + uState := GLPS_OPENED + else + uState := GLPS_CLOSED; + + R := RectArray.ExpandButtonRect; + R.Top := R.Top + (RectHeight(RectArray.ExpandButtonRect) - RectWidth(RectArray.ExpandButtonRect)) div 2; + R.Bottom := R.Top + RectWidth(R); + DrawThemeBackground(Group.OwnerListview.Themes.TreeviewTheme, ACanvas.Handle, + Part, uState, R, nil); + Exit; + end; + {$ENDIF} + + // If the border is the header and it is expandable then must draw the + // "+" expand box + if Group.Expandable and (MarginEdge = egmeTop) then + begin + // Choose correct image + if Group.Expanded then + Image := CollapseImage + else + Image := ExpandImage; + + // Draw the image + if Assigned(Image) then + begin + case Group.VAlignment of + cvaTop: ACanvas.Draw(RectArray.ExpandButtonRect.Left + (RectWidth(RectArray.ExpandButtonRect) - Image.Width) div 2, RectArray.ExpandButtonRect.Top + 2, Image); + cvaBottom: ACanvas.Draw(RectArray.ExpandButtonRect.Left + (RectWidth(RectArray.ExpandButtonRect) - Image.Width) div 2, RectArray.ExpandButtonRect.Bottom - 2 - Image.Height, Image); + cvaCenter: ACanvas.Draw(RectArray.ExpandButtonRect.Left + (RectWidth(RectArray.ExpandButtonRect) - Image.Width) div 2, + RectArray.ExpandButtonRect.Top + (RectHeight(RectArray.ExpandButtonRect) - Image.Height) div 2, Image); + end + end + end + end else + begin + end +end; + +procedure TEasyViewGroup.PaintFocusRect(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +// +// Paint the caption area of a group margin for a focused state +// +var + R: TRect; +begin + if Group.Focused and (MarginEdge = egmeForeground) and not IsRectEmpty(RectArray.GroupRect) then + begin + R := RectArray.GroupRect; + InflateRect(R, -4, -4); + ACanvas.Brush.Color := Group.OwnerListview.Color; + ACanvas.Font.Color := clBlack; + DrawFocusRect(ACanvas.Handle, R); + end +end; + +procedure TEasyViewGroup.PaintImage(Group: TEasyGroup; ACanvas: TCanvas; + MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +// +// Paints the Icon/Bitmap to the group margin +// +var + ImageIndex, OverlayIndex, fStyle: Integer; + Images: TCustomImageList; + IsCustom: Boolean; +begin + if MarginEdge in [egmeTop, egmeBottom] then + begin + Group.ImageDrawIsCustom(nil, IsCustom); + if IsCustom then + Group.ImageDraw(nil, ACanvas, RectArray, AlphaBlender) + else begin + + Images := GetImageList(Group); + + if MarginEdge = egmeTop then + begin + ImageIndex := Group.ImageIndex; + OverlayIndex := Group.ImageOverlayIndex + end else + begin + ImageIndex := Group.MarginBottom.ImageIndex; + OverlayIndex := Group.MarginBottom.ImageOverlayIndex + end; + + // Draw the image in the ImageList if available + if Assigned(Images) and (Group.ImageIndex > -1) then + begin + fStyle := ILD_TRANSPARENT; + + if OverlayIndex > -1 then + begin + ImageList_SetOverlayImage(Images.Handle, OverlayIndex, 1); + fStyle := fStyle or INDEXTOOVERLAYMASK(1) + end; + + // Get the "normalized" rectangle for the image + RectArray.IconRect.Left := RectArray.IconRect.Left + (RectWidth(RectArray.IconRect) - Images.Width) div 2; + + + case Group.VAlignment of + cvaTop: RectArray.IconRect.Top := RectArray.IconRect.Top + 2; + cvaBottom: RectArray.IconRect.Top := RectArray.IconRect.Bottom - (Images.Height + 2); + cvaCenter: RectArray.IconRect.Top := RectArray.IconRect.Top + (RectHeight(RectArray.IconRect) - Images.Height) div 2; + end; + + ImageList_DrawEx(Images.Handle, + ImageIndex, + ACanvas.Handle, + RectArray.IconRect.Left, + RectArray.IconRect.Top, + 0, + 0, + CLR_NONE, + CLR_NONE, + fStyle); + end + end + end +end; + +procedure TEasyViewGroup.PaintSelectionRect(Group: TEasyGroup; ACanvas: TCanvas; + ObjRect: TRect; RectArray: TEasyRectArrayObject); +// +// Paint the caption area of a group margin for a selected state +// +begin + if Group.Selected and not IsRectEmpty(RectArray.TextRect) and (Group.Caption <> '') then + begin + ACanvas.Brush.Color := clHighlight; + InflateRect(RectArray.TextRect, 2, 2); + ACanvas.FillRect(RectArray.TextRect); + InflateRect(RectArray.TextRect, 2, 2); + end +end; + +procedure TEasyViewGroup.PaintText(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; + ACanvas: TCanvas; ObjRect: TRect; RectArray: TEasyRectArrayObject); +// +// Paints the caption within the group margin +// +var + DrawTextFlags: TCommonDrawTextWFlags; + Caption: WideString; + Alignment: TAlignment; + VAlignment: TCommonVAlignment; +begin + if not IsRectEmpty(RectArray.TextRect) and (Group.Caption <> '') then + begin + LoadTextFont(Group, ACanvas); + + if MarginEdge = egmeTop then + begin + Caption := Group.Caption; + Alignment := Group.Alignment; + VAlignment := Group.VAlignment; + end else + begin + Caption := Group.MarginBottom.Caption; + Alignment := Group.MarginBottom.Alignment; + VAlignment := Group.MarginBottom.VAlignment; + end; + DrawTextFlags := [dtEndEllipsis]; + + // if PaintInfo.Caption.RTLReading then + // Include(DrawTextFlags, dtRTLReading); + + case Alignment of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + case VAlignment of + cvaTop: Include(DrawTextFlags, dtTop); + cvaCenter: Include(DrawTextFlags, dtVCenter); + cvaBottom: Include(DrawTextFlags, dtBottom); + end; + +// if PaintInfo.Caption.RTLReading then +// Include(DrawTextFlags, dtRTLReading); + + DrawTextFlags := DrawTextFlags + [dtSingleLine]; + + DrawTextWEx(ACanvas.Handle, Caption, RectArray.TextRect, DrawTextFlags, 1); + end +end; + +{ TEasyColumn } + +constructor TEasyColumn.Create(ACollection: TEasyCollection); +begin + inherited; + FDropDownButton := TEasyColumnDropDownButton.Create(Self); + FSortDirection := esdNone; + FAutoToggleSortGlyph := True; + FClickable := True; + FWidth := 50; + FPosition := OwnerColumns.Count; + AutoSizeOnDblClk := True; +end; + +destructor TEasyColumn.Destroy; +begin + SetDestroyFlags; + if OwnerListview.Selection.FFocusedColumn = Self then + OwnerListview.Selection.FocusedColumn := nil; + if OwnerListview.Header.HotTrackedColumn = Self then + OwnerListview.Header.HotTrackedColumn := nil; + if OwnerListview.Header.PressColumn = Self then + OwnerListview.Header.PressColumn := nil; + if OwnerListview.EditManager.TabMoveFocusColumn = Self then + OwnerListview.EditManager.TabMoveFocusColumn := nil; + if OwnerListview.Selection.FocusedColumn = Self then + OwnerListview.Selection.FocusedColumn := nil; + if OwnerListview.Header.DropDownHoverColumn = Self then + OwnerListview.Header.DropDownHoverColumn := nil; + FreeAndNil(FDropDownButton); + inherited Destroy; + FreeAndNil(FView); +end; + +function TEasyColumn.CanChangeBold(NewValue: Boolean): Boolean; +begin + Result := True +end; + + +function TEasyColumn.CanChangeCheck(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoColumnCheckChanging(Self, Result) +end; + +function TEasyColumn.CanChangeEnable(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoColumnEnableChanging(Self, Result) +end; + +function TEasyColumn.CanChangeFocus(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoColumnFocusChanging(Self, Result) +end; + +function TEasyColumn.CanChangeHotTracking(NewValue: Boolean): Boolean; +begin + Result := True; +end; + +function TEasyColumn.CanChangeSelection(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoColumnSelectionChanging(Self, Result) +end; + +function TEasyColumn.CanChangeVisibility(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoColumnVisibilityChanging(Self, Result) +end; + +function TEasyColumn.DefaultImageList(ImageSize: TEasyImageSize): TCustomImageList; +begin + Result := OwnerListview.Header.Images +end; + +function TEasyColumn.EditAreaHitPt(ViewportPoint: TPoint): Boolean; +begin + Result := View.EditAreaHitPt(Self, ViewportPoint) +end; + +function TEasyColumn.GetAlignment: TAlignment; +begin + Result := FAlignment +end; + +function TEasyColumn.GetColor: TColor; +begin + Result := PaintInfo.Color +end; + +function TEasyColumn.GetDefaultViewClass: TEasyViewColumnClass; +begin + Result := TEasyViewColumn +end; + +function TEasyColumn.GetHotTrack: Boolean; +begin + Result := PaintInfo.HotTrack +end; + +function TEasyColumn.GetImagePosition: TEasyHeaderImagePosition; +begin + Result := PaintInfo.ImagePosition +end; + +function TEasyColumn.GetOwnerColumns: TEasyColumns; +begin + Result := TEasyColumns(Collection) +end; + +function TEasyColumn.GetOwnerHeader: TEasyHeader; +begin + Result := OwnerListview.Header +end; + +function TEasyColumn.GetPaintInfo: TEasyPaintInfoColumn; +begin + // Dangerous but necessary. The TaskPanel has its own PaintInfo to not publish + // any properites. It will have a class type error using "is". The two types + // are "equal" from a memory foot print so this will work. + Result := TEasyPaintInfoColumn( inherited PaintInfo) +end; + +function TEasyColumn.GetSortGlyphAlign: TEasySortGlyphAlign; +begin + Result := PaintInfo.SortGlyphAlign +end; + +function TEasyColumn.GetSortGlyphIndent: Integer; +begin + Result := PaintInfo.SortGlyphIndent +end; + +function TEasyColumn.GetStyle: TEasyHeaderButtonStyle; +begin + Result := PaintInfo.Style +end; + +function TEasyColumn.GetView: TEasyViewColumn; +begin + if Assigned(FView) then + begin + if ViewClass <> FView.ClassType then + FreeAndNil(FView) + end; + if not Assigned(FView) then + FView := ViewClass.Create(OwnerListview); + Result := FView; +end; + +function TEasyColumn.GetViewClass: TEasyViewColumnClass; +begin + Result := nil; + if Assigned(OwnerListview) then + OwnerListview.DoColumnCustomView(Self, Result); + if not Assigned(Result) then + Result := GetDefaultViewClass +end; + +function TEasyColumn.LocalPaintInfo: TEasyPaintInfoBasic; +begin + Result := OwnerListview.PaintInfoColumn +end; + +function TEasyColumn.PaintMouseHovering: Boolean; +begin + Result := (OwnerListview.Header.HotTrackedColumn = Self) and + HotTrack and not (OwnerListview.DragManager.Dragging or + OwnerListview.DragRect.Dragging) +end; + +function TEasyColumn.SelectionHit(SelectViewportRect: TRect; + SelectType: TEasySelectHitType): Boolean; +begin + Result := View.SelectionHit(Self, SelectViewportRect, SelectType) +end; + +function TEasyColumn.SelectionHitPt(ViewportPoint: TPoint; + SelectType: TEasySelectHitType): Boolean; +begin + Result := View.SelectionHitPt(Self, ViewportPoint, SelectType) +end; + +procedure TEasyColumn.AutoSizeToFit; +var + iIndex: Integer; + W, i, j: Integer; + Group: TEasyGroup; + Canvas: TCanvas; + Item: TEasyItem; + Caption: WideString; + Size: TSize; + ImageW, ImageH: Integer; +begin + iIndex := Index; + Canvas := OwnerListview.Canvas; + W := 0; + for i := 0 to OwnerListview.Groups.Count - 1 do + for j := 0 to OwnerListview.Groups[i].ItemCount - 1 do + begin + Group := OwnerListview.Groups[i]; + Item := Group.Items[j]; + Item.View.LoadTextFont(Item, iIndex, Canvas, False); + OwnerListview.DoItemPaintText(Item, Index, Canvas); + Caption := Item.Captions[iIndex]; + Size := TextExtentW(Caption, Canvas); + Size.cx := Size.cx + {2 * LABEL_MARGIN +} 8; + + Item.View.GetImageSize(Item, Self, ImageW, ImageH, eikNormal); + if ImageW > 0 then + Size.cx := Size.cx + ImageW + ImageIndent; + Item.View.GetImageSize(Item, Self, ImageW, ImageH, eikState); + if ImageW > 0 then + Size.cx := Size.cx + ImageW; + + if CheckType <> ectNone then + Size.cx := Size.cx + CheckIndent + RectWidth(Checks.Bound[CheckSize]); + if Size.cx > W then + W := Size.cx; + end; + OwnerListview.Groups.BeginUpdate(False); + try + Width := W; + if OwnerListview.Selection.FullRowSelect then + OwnerListview.Groups.Rebuild(True); + finally + OwnerListview.Groups.EndUpdate; + end +end; + +procedure TEasyColumn.Freeing; +begin + OwnerListview.DoColumnFreeing(Self) +end; + +procedure TEasyColumn.GainingBold; +begin + Invalidate(False) +end; + +procedure TEasyColumn.GainingCheck; +begin + OwnerListview.DoColumnCheckChanged(Self) +end; + +procedure TEasyColumn.GainingEnable; +begin + OwnerListview.DoColumnEnableChanged(Self) +end; + +procedure TEasyColumn.GainingFocus; +begin + OwnerListview.DoColumnFocusChanged(Self) +end; + +procedure TEasyColumn.GainingGhosted; +begin + Invalidate(False) +end; + +procedure TEasyColumn.GainingHilight; +begin + // Unsupported +end; + +procedure TEasyColumn.GainingHotTracking(MousePos: TPoint); +begin + // Unsupported +end; + +procedure TEasyColumn.GainingSelection; +begin + OwnerListview.DoColumnSelectionChanged(Self) +end; + +procedure TEasyColumn.GainingVisibility; +begin + OwnerListview.BeginUpdate; + OwnerListview.DoColumnVisibilityChanged(Self); + OwnerListview.EndUpdate(False); +end; + +function TEasyColumn.HitTestAt(ViewportPoint: TPoint; var HitInfo: TEasyColumnHitTestInfoSet): Boolean; +var + RectArray: TEasyRectArrayObject; + R: TRect; +begin + HitInfo := []; + if Assigned(View) then + begin + View.ItemRectArray(Self, RectArray); + R := RectArray.IconRect; + // Make the blank area between the image and text part of the image + R.Right := R.Right + OwnerListview.PaintInfoColumn.CaptionIndent; + if PtInRect(R, ViewportPoint) then + Include(HitInfo, ectOnText); + if PtInRect(RectArray.IconRect, ViewportPoint) then + Include(HitInfo, ectOnIcon); + if PtInRect(RectArray.CheckRect, ViewportPoint) then + Include(HitInfo, ectOnCheckbox); + if PtInRect(RectArray.LabelRect, ViewportPoint) then + Include(HitInfo, ectOnLabel); + end; + Result := HitInfo <> []; +end; + +procedure TEasyColumn.Initialize; +begin + OwnerListview.DoColumnInitialize(Self) +end; + +procedure TEasyColumn.Invalidate(ImmediateUpdate: Boolean); +var + R: TRect; +begin + if OwnerListview.UpdateCount = 0 then + begin + if OwnerListview.HandleAllocated then + begin + R := Rect(0, 0, OwnerListview.ClientWidth, OwnerHeader.Height); + OwnerListview.SafeInvalidateRect(@R, ImmediateUpdate); + end + end +end; + +procedure TEasyColumn.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + S.ReadBuffer(FAlignment, SizeOf(FAlignment)); + S.ReadBuffer(FAutoSizeOnDblClk, SizeOf(FAutoSizeOnDblClk)); + if Version > 1 then + S.ReadBuffer(FAutoSortOnClick, SizeOf(FAutoSortOnClick)); + S.ReadBuffer(FAutoSpring, SizeOf(FAutoSpring)); + S.ReadBuffer(FAutoToggleSortGlyph, SizeOf(FAutoToggleSortGlyph)); + S.ReadBuffer(FPosition, SizeOf(FPosition)); + S.ReadBuffer(FSortDirection, SizeOf(FSortDirection)); + S.ReadBuffer(FStyle, SizeOf(FStyle)); + S.ReadBuffer(FClickable, SizeOf(FClickable)); + S.ReadBuffer(FWidth, SizeOf(FWidth)); + OwnerListview.DoColumnLoadFromStream(Self, S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyColumn.LosingBold; +begin + Invalidate(False) +end; + +procedure TEasyColumn.LosingCheck; +begin + OwnerListview.DoColumnCheckChanged(Self) +end; + +procedure TEasyColumn.LosingEnable; +begin + OwnerListview.DoColumnEnableChanged(Self) +end; + +procedure TEasyColumn.LosingFocus; +begin + OwnerListview.DoColumnFocusChanged(Self) +end; + +procedure TEasyColumn.LosingGhosted; +begin + Invalidate(False) +end; + +procedure TEasyColumn.LosingHilight; +begin + // Unsupported +end; + +procedure TEasyColumn.LosingHotTracking; +begin + // Unsupported +end; + +procedure TEasyColumn.LosingSelection; +begin + OwnerListview.DoColumnSelectionChanged(Self) +end; + +procedure TEasyColumn.LosingVisibility; +begin + OwnerListview.BeginUpdate; + OwnerListview.DoColumnVisibilityChanged(Self); + OwnerListview.EndUpdate(False); +end; + +procedure TEasyColumn.MakeVisible(Position: TEasyMakeVisiblePos); +var + RectArray: TEasyRectArrayObject; + ViewRect: TRect; + ColumnW, ViewW: Integer; +begin + if Visible then + begin + View.ItemRectArray(Self, RectArray); + ViewRect := OwnerListview.ClientInViewportCoords; + ColumnW := RectArray.BoundsRect.Right - RectArray.BoundsRect.Left; + ViewW := RectWidth(ViewRect); + if not ((RectArray.BoundsRect.Left >= ViewRect.Left) and ( RectArray.BoundsRect.Right <= ViewRect.Right)) then + begin + case Position of + emvTop: // or Left + begin + if ViewRect.Left < RectArray.BoundsRect.Left then + OwnerListview.Scrollbars.OffsetX := RectArray.BoundsRect.Left; + end; + emvMiddle: + begin + if ColumnW < ViewW then + OwnerListview.Scrollbars.OffsetX := RectArray.BoundsRect.Left - ((ViewW - ColumnW) div 2); + end; + emvBottom: // or right + begin + OwnerListview.Scrollbars.OffsetX := RectArray.BoundsRect.Right - ColumnW; + end; + emvAuto: + begin + if ViewRect.Left < RectArray.BoundsRect.Left then + OwnerListview.Scrollbars.OffsetX := RectArray.BoundsRect.Left; + end + end + end + end +end; + +procedure TEasyColumn.Paint(ACanvas: TCanvas; HeaderType: TEasyHeaderType); +begin + View.Paint(Self, ACanvas, HeaderType) +end; + +procedure TEasyColumn.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + S.WriteBuffer(FAlignment, SizeOf(FAlignment)); + S.WriteBuffer(FAutoSizeOnDblClk, SizeOf(FAutoSizeOnDblClk)); + S.WriteBuffer(FAutoSortOnClick, SizeOf(FAutoSortOnClick)); + S.WriteBuffer(FAutoSpring, SizeOf(FAutoSpring)); + S.WriteBuffer(FAutoToggleSortGlyph, SizeOf(FAutoToggleSortGlyph)); + S.WriteBuffer(FPosition, SizeOf(FPosition)); + S.WriteBuffer(FSortDirection, SizeOf(FSortDirection)); + S.WriteBuffer(FStyle, SizeOf(FStyle)); + S.WriteBuffer(FClickable, SizeOf(FClickable)); + S.WriteBuffer(FWidth, SizeOf(FWidth)); + OwnerListview.DoColumnSaveToStream(Self, S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyColumn.SetAlignment(Value: TAlignment); +begin + if Value <> FAlignment then + begin + FAlignment := Value; + Invalidate(False); + end +end; + +procedure TEasyColumn.SetAutoSpring(const Value: Boolean); +begin + FAutoSpring := Value; +end; + +procedure TEasyColumn.SetColor(Value: TColor); +begin + PaintInfo.Color := Value +end; + +procedure TEasyColumn.SetHotTrack(Value: Boolean); +begin + PaintInfo.HotTrack := Value +end; + +procedure TEasyColumn.SetImagePosition(Value: TEasyHeaderImagePosition); +begin + PaintInfo.ImagePosition := Value +end; + +procedure TEasyColumn.SetPaintInfo(Value: TEasyPaintInfoColumn); +begin + inherited PaintInfo := Value +end; + +procedure TEasyColumn.SetPosition(Value: Integer); +var + OldPos, i: Integer; +begin + if Value > OwnerColumns.Count - 1 then + Value := OwnerColumns.Count - 1 + else + if Value < 0 then + Value := 0; + + if OwnerColumns.Count = 1 then + FPosition := 0 + else begin + if Value <> FPosition then + begin + OldPos := FPosition; + if Value > OldPos then + begin + for i := 0 to OwnerColumns.Count - 1 do + begin + if (OwnerColumns[i].FPosition >= OldPos) and (OwnerColumns[i].FPosition <= Value) then + Dec(OwnerColumns[i].FPosition) + end + end else + begin + for i := 0 to OwnerColumns.Count - 1 do + begin + if (OwnerColumns[i].FPosition >= Value) and (OwnerColumns[i].FPosition <= OldPos) then + Inc(OwnerColumns[i].FPosition) + end + end; + FPosition := Value; + end; + OwnerHeader.Rebuild(False); + OwnerHeader.Invalidate(False) + end +end; + +procedure TEasyColumn.SetSortDirection(Value: TEasySortDirection); +begin + if Value <> FSortDirection then + begin + FSortDirection := Value; + OwnerHeader.Invalidate(False); + if FSortDirection <> esdNone then + begin + OwnerListview.Selection.FocusedColumn := Self; + if OwnerListview.Sort.AutoSort then + OwnerListview.Sort.SortAll + end + end +end; + +procedure TEasyColumn.SetSortGlpyhAlign(Value: TEasySortGlyphAlign); +begin + PaintInfo.SortGlyphAlign := Value +end; + +procedure TEasyColumn.SetSortGlyphIndent(Value: Integer); +begin + PaintInfo.SortGlyphIndent := Value +end; + +procedure TEasyColumn.SetStyle(Value: TEasyHeaderButtonStyle); +begin + if FStyle <> Value then + begin + FStyle := Value; + Invalidate(False) + end +end; + +procedure TEasyColumn.SetWidth(Value: Integer); +var + R: TRect; +begin + if FWidth <> Value then + begin + if Value < 0 then + Value := 0; + FWidth := Value; + OwnerHeader.Rebuild(False); + if OwnerListview.View = elsReport then + begin + // if OwnerHeader.ViewRect.Right > OwnerListview.ClientWidth then + begin + R := OwnerListview.Scrollbars.ViewRect; + R.Right := OwnerHeader.ViewRect.Right; + OwnerListview.Scrollbars.SetViewRect(R, True) + end; + end + end +end; + +{ TEasyEditManager } + +function TEasyEditManager.GetEditing: Boolean; +begin + Result := FEditing or Assigned(TabMoveFocusItem); +end; + +procedure TEasyEditManager.BeginEdit(Item: TEasyItem; Column: TEasyColumn); +// +// Starts an editor within the passed Item +// We create a local message loop and break out of it when any of the normal +// conditions are met to stop the edit, such as: Hitting the Escape key, +// scrolling with the wheel, clicking out side of the editor and switching +// away from the application. +// +var + Msg: TMSG; + Pt: TPoint; + Allow, Dispatch, EditDone: Boolean; + NCHit: Longword; + OldFocus: TWinControl; + iColumn: Integer; + + procedure FinishEdit; + begin + if not EditDone then + begin + Editor.Hide; + FEditing := False; + OwnerListview.DoItemEditEnd(Item); + Editor.Finalize; + FEditItem := nil; + FEditFinished := True; + EditDone := True + end + end; + + function TestAcceptEdit: Boolean; + begin + Result := Editor.AcceptEdit; + if not Result then + Editor.SetEditorFocus + end; + +begin + if not Editing and not (csDestroying in OwnerListview.ComponentState) then + begin + EditDone := False; + FEditFinished := False; + if Assigned(Item) and Enabled then + begin + Item.MakeVisible(emvAuto); + FEditItem := Item; + Allow := True; + if Assigned(Column) then + iColumn := Column.Index + else + iColumn := 0; + OwnerListview.DoItemEditBegin(Item, iColumn, Allow); + if (OwnerListview.View = elsReport) and (iColumn < OwnerListview.Header.Columns.Count) then + begin + OwnerListview.Header.Columns[iColumn].MakeVisible(emvAuto); + end else + iColumn := 0; + if OwnerListview.Header.Columns.Count > iColumn then + EditColumn := OwnerListview.Header.Columns[iColumn] + else + EditColumn := nil; + if Allow then + begin + Application.HookMainWindow(MainWindowHook); + AppHooked := True; + Editor := nil; + OwnerListview.DoItemCreateEditor(Item, FEditor); + if Assigned(Editor) then + begin + OldFocus := Screen.ActiveControl; + Editor.Initialize(Item, EditColumn); + FEditing := True; + Item.Invalidate(True); + Editor.Show; + Editor.SetEditorFocus; + try + while not FEditFinished do + begin + GetMessage(Msg, 0, 0, 0); + + Dispatch := True; + + if Msg.message = WM_SETFOCUS then + beep; + + if not FEditFinished then + begin + if Msg.message = WM_KEYDOWN then + begin + if Msg.wParam = VK_ESCAPE then + FinishEdit + end + end; + + // Need to pass the tab to the lsitview if TabMoveFocus is enabled + if Msg.message = WM_KEYDOWN then + begin + // This key combo selects all text in the interface objects, don't allow it to beep + if ((GetKeyState(VK_CONTROL) and $8000 <> 0) and ((Msg.wParam = Ord('a')) or (Msg.wParam = Ord('A')))) then + begin + Editor.SelectAll; + Dispatch := False; + end; + + + if (Msg.wParam = VK_TAB) and OwnerListview.EditManager.TabMoveFocus then + begin + if TestAcceptEdit then + begin + if GetAsyncKeyState(VK_CONTROL) and $8000 <> 0 then + begin + if OwnerListview.EditManager.TabEditColumns then + begin + OwnerListview.EditManager.TabMoveFocusColumn := OwnerListview.Header.PrevVisibleColumn(EditColumn); + // Stay on the same item if there is another column + if Assigned(OwnerListview.EditManager.TabMoveFocusColumn) then + OwnerListview.EditManager.TabMoveFocusItem := OwnerListview.EditManager.EditItem + else begin + OwnerListview.EditManager.TabMoveFocusItem := OwnerListview.Groups.PrevEditableItem(OwnerListview.EditManager.EditItem); + OwnerListview.EditManager.TabMoveFocusColumn := OwnerListview.Header.LastColumn; + end + end else + OwnerListview.EditManager.TabMoveFocusItem := OwnerListview.Groups.PrevEditableItem(OwnerListview.EditManager.EditItem); + end else + begin + if OwnerListview.EditManager.TabEditColumns then + begin + OwnerListview.EditManager.TabMoveFocusColumn := OwnerListview.Header.NextVisibleColumn(EditColumn); + // Stay on the same item if there is another column + if Assigned(OwnerListview.EditManager.TabMoveFocusColumn) then + OwnerListview.EditManager.TabMoveFocusItem := OwnerListview.EditManager.EditItem + else + OwnerListview.EditManager.TabMoveFocusItem := OwnerListview.Groups.NextEditableItem(OwnerListview.EditManager.EditItem); + end else + OwnerListview.EditManager.TabMoveFocusItem := OwnerListview.Groups.NextEditableItem(OwnerListview.EditManager.EditItem); + end; + EndEdit; + PostMessage(OwnerListview.Handle, WM_TABMOVEFOCUS, 0, 0); + Dispatch := False; + end + end + end; + + if not FEditFinished then + if (Msg.message = WM_LBUTTONDOWN) or + (Msg.message = WM_MBUTTONDOWN) or + (Msg.message = WM_RBUTTONDOWN) then + begin + Pt := SmallPointToPoint(TSmallPoint(Msg.lParam)); + ClientToScreen(Msg.hwnd, Pt); + ScreenToClient(OwnerListview.Handle, Pt); + if not Editor.PtInEditControl(Pt) then + begin + Dispatch := False; + if TestAcceptEdit then + begin + FinishEdit; + // Allow the default click action to occur after canceling the edit. + Dispatch := True + end + end; + end; + + if not FEditFinished then + begin + if (Msg.message = WM_MOUSEWHEEL) or + (Msg.message = CM_MOUSEWHEEL) then + begin + FinishEdit + end + end; + + if not FEditFinished then + if (Msg.message = WM_NCLBUTTONDOWN) or + (Msg.message = WM_NCMBUTTONDOWN) or + (Msg.message = WM_NCRBUTTONDOWN) then + begin + NCHit := SendMessage(Msg.hWnd, WM_NCHITTEST, Msg.wParam, Msg.lParam); + if not (NCHit = HTCAPTION) then + begin + FinishEdit; + end + end; + + if not FEditFinished then + begin + if (Msg.message = WM_HOOKAPPACTIVATE) then + begin + FinishEdit + end + end; + + if Dispatch then + begin + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end + finally + if AppHooked then + Application.UnhookMainWindow(MainWindowHook); + AppHooked := False; + FinishEdit; + OldFocus.SetFocus; + Editor := nil; + EditColumn := nil; + end + end; + end + end + end; +end; + +constructor TEasyEditManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FFont := TFont.Create; + Color := clWindow; + Font.Assign(AnOwner.Font); + AutoEditDelayTime := 300; +end; + +destructor TEasyEditManager.Destroy; +begin + FreeAndNil(FFont); + inherited; +end; + +procedure TEasyEditManager.EndEdit; +// +// Flags the Edit Manager to stop editing. The local message loop in BeginEdit +// alway polls this flag to quit +// +begin + StopAutoEditTimer; + if AppHooked and not (csDestroying in OwnerListview.ComponentState) then + Application.UnhookMainWindow(MainWindowHook); + AppHooked := False; + FEditFinished := True +end; + +function TEasyEditManager.MainWindowHook(var Message: TMessage): Boolean; +// +// Need to hook the Main so we can end the edit if the application is switched +// away from +// +begin + Result := False; + if Assigned(OwnerListview) then + begin + if (Message.Msg = WM_ACTIVATEAPP) and OwnerListview.HandleAllocated then + PostMessage(OwnerListview.Handle, WM_HOOKAPPACTIVATE, 0, 0) + end +end; + +procedure TEasyEditManager.SetEnabled(const Value: Boolean); +begin + FEnabled := Value; + EndEdit; +end; + +procedure TEasyEditManager.SetFont(const Value: TFont); +begin + Font.Assign(Value) +end; + +procedure TEasyEditManager.StartAutoEditTimer; +// +// Starts the AutoEditTimer, the timer will be cancelled if the user moves the +// mouse a specified distance before the timer elapses +// +begin + StopAutoEditTimer; + if Enabled then + begin + Timer := TTimer.Create(nil); + Timer.OnTimer := TimerEvent; + Timer.Interval := AutoEditDelayTime; + Timer.Enabled := True; + FTimerRunning := True + end +end; + +procedure TEasyEditManager.TimerEvent(Sender: TObject); +// +// The Timer Event method. If called the Focused Item will be edited. +// +begin + StopAutoEditTimer; + if Assigned(OwnerListview.Selection.FocusedItem) then + BeginEdit(OwnerListview.Selection.FocusedItem as TEasyItem, nil) +end; + +procedure TEasyEditManager.StopAutoEditTimer; +// +// Shuts down the AutoEditTimer +// +begin + if TimerRunning then + begin + if Assigned(Timer) then + FreeAndNil(FTimer); + FTimerRunning := False + end +end; + +{ TEasyEnumFormatEtcManager } + +function TEasyEnumFormatEtcManager.Clone(out Enum: IEnumFormatEtc): HResult; +// Creates a exact copy of the current object. +var + EnumFormatEtc: TEasyEnumFormatEtcManager; +begin + Result := S_OK; // Think positive + EnumFormatEtc := TEasyEnumFormatEtcManager.Create; // Does not increase COM reference + if Assigned(EnumFormatEtc) then + begin + SetLength(EnumFormatEtc.FFormats, Length(Formats)); + + // Make copy of Format info + Move(FFormats[0], EnumFormatEtc.FFormats[0], Length(Formats) * SizeOf(TFormatEtc)); + + // Set COM reference to 1 + Enum := EnumFormatEtc as IEnumFormatEtc; + end else + Result := E_UNEXPECTED +end; + +constructor TEasyEnumFormatEtcManager.Create; +begin + inherited Create; + InternalIndex := 0; +end; + +destructor TEasyEnumFormatEtcManager.Destroy; +begin + inherited; +end; + +function TEasyEnumFormatEtcManager.Next(celt: Integer; out elt; + pceltFetched: PLongint): HResult; +// Another EnumXXXX function. This function returns the number of objects +// requested by the caller in celt. The return buffer, elt, is a pointer to an} +// array of, in this case, TFormatEtc structures. The total number of +// structures returned is placed in pceltFetched. pceltFetched may be nil if +// celt is only asking for one structure at a time. +var + i: integer; +begin + if Assigned(Formats) then + begin + i := 0; + while (i < celt) and (InternalIndex < Length(Formats)) do + begin + TeltArray( elt)[i] := Formats[InternalIndex]; + inc(i); + inc(FInternalIndex); + end; // while + if assigned(pceltFetched) then + pceltFetched^ := i; + if i = celt then + Result := S_OK + else + Result := S_FALSE + end else + Result := E_UNEXPECTED +end; + +function TEasyEnumFormatEtcManager.Reset: HResult; +begin + InternalIndex := 0; + Result := S_OK +end; + +function TEasyEnumFormatEtcManager.Skip(celt: Integer): HResult; +// Allows the caller to skip over unwanted TFormatEtc structures. Simply adds +// celt to the index as long as it does not skip past the last structure in +// the list. +begin + if Assigned(Formats) then + begin + if InternalIndex + celt < Length(Formats) then + begin + InternalIndex := InternalIndex + celt; + Result := S_OK + end else + Result := S_FALSE + end else + Result := E_UNEXPECTED +end; + +procedure TEasyDataObjectManager.DoGetCustomFormats(var Formats: TFormatEtcArray); +begin + if Assigned(Listview) then + Listview.DoOLEGetCustomFormats(Formats); +end; + +procedure TEasyDataObjectManager.DoOnGetData(const FormatEtcIn: TFormatEtc; var Medium: TStgMedium; var Handled: Boolean); +begin + if Assigned(Listview) then + Listview.DoOLEGetData(FormatEtcIn, Medium, Handled); +end; + +procedure TEasyDataObjectManager.DoOnQueryGetData(const FormatEtcIn: TFormatEtc; var FormatAvailable: Boolean; var Handled: Boolean); +begin + if Assigned(Listview) then + Listview.DoQueryOLEData(FormatEtcIn, FormatAvailable, Handled); +end; + +procedure TEasyOLEDragManager.ClearDragItem; +begin + FDragItem := nil +end; + +procedure TEasyOLEDragManager.ClearDropTarget; +begin + // Unhilight the current Drop Target + if Assigned(DropTarget) then + begin + DropTarget.Hilighted := False; + OwnerListview.Groups.InvalidateItem(DropTarget, True); + end; + FDropTarget := nil; +end; + +constructor TEasyOLEDragManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + HilightDropTarget := True +end; + +destructor TEasyOLEDragManager.Destroy; +begin + Registered := False; + inherited; +end; + +procedure TEasyOLEDragManager.DefaultImage(Sender: TCustomEasyListview; Image: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); +var + R: TRect; + Bits: TBitmap; +begin + if Assigned(Image) then + begin + TransparentColor := OwnerListview.Color; + R := Rect(DragStartPt.X - (Image.Width div 2), + DragStartPt.Y - (Image.Height div 2), + DragStartPt.X + (Image.Width div 2), + DragStartPt.Y + (Image.Height div 2)); + + HotSpot.X := (R.Right - R.Left) div 2; + HotSpot.Y := (R.Bottom - R.Top) div 2; + + if R.Left < 0 then + HotSpot.X := HotSpot.X + R.Left; + if R.Top < 0 then + HotSpot.Y := HotSpot.Y + R.Top; + + IntersectRect(R, R, OwnerListview.ClientRect); + Bits := TBitmap.Create; + try + Bits.PixelFormat := pf32Bit; + Bits.Width := Sender.Width; + Bits.Height := Sender.Height; + Bits.Canvas.Brush.Color := OwnerListview.Color; + Bits.Canvas.FillRect(Rect(0, 0, Sender.Width, Sender.Height)); + OwnerListview.DoPaintRect(Bits.Canvas, R, True); + BitBlt(Image.Canvas.Handle, 0, 0, Image.Width, Image.Height, Bits.Canvas.Handle, R.Left, R.Top, SRCCOPY); + finally + Bits.Free; + end; + Handled := True; + end +end; + +procedure TEasyOLEDragManager.DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +var + ViewPortPoint: TPoint; + Item: TEasyItem; +begin + if OwnerListview.IsHeaderMouseMsg(PointToSmallPoint(WindowPoint), True) then + Effects := cdeNone + else begin + ViewPortPoint := OwnerListview.Scrollbars.MapWindowToView(WindowPoint); + Item := OwnerListview.Groups.ItemByPoint(ViewportPoint); + if Assigned(Item) then + begin + if Item.SelectionHitPt(ViewportPoint, eshtClickSelect) then + begin + if Item <> DropTarget then + ClearDropTarget; + FDropTarget := Item; + if Assigned(DropTarget) then + begin + if HilightDropTarget then + Item.Hilighted := True; + OwnerListview.Groups.InvalidateItem(Item, True) + end + end else + ClearDropTarget + end else + ClearDropTarget + end +end; + +procedure TEasyOLEDragManager.DoDragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + ClearDragItem; + ClearDropTarget; + FDragTarget := False; +end; + +procedure TEasyOLEDragManager.DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + ClearDropTarget; + FDragTarget := False; +end; + +procedure TEasyOLEDragManager.DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + FDragTarget := True; +end; + +procedure TEasyOLEDragManager.DoGetDragImage(Bitmap: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); +begin + OwnerListview.DoGetDragImage(Bitmap, DragStartPt, HotSpot, TransparentColor, Handled); +end; + +procedure TEasyOLEDragManager.DoOLEDragEnd(const ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); +begin + OwnerListview.DoOLEDragEnd(ADataObject, DragResult, ResultEffect, KeyStates); + DataObject := nil; +end; + +procedure TEasyOLEDragManager.DoOLEDragStart(const ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); +begin + OwnerListview.DoOLEDragStart(ADataObject, AvailableEffects, AllowDrag); +end; + +function TEasyOLEDragManager.DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; +begin + Result := WindowPoint.Y > OwnerListview.ClientHeight - AutoScrollMargin +end; + +function TEasyOLEDragManager.DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; +begin + Result := WindowPoint.Y - OwnerListview.Header.RuntimeHeight < AutoScrollMargin +end; + +procedure TEasyOLEDragManager.FinalizeDrag(KeyState: TCommonKeyStates); +// Does not mean the action actually occured it means that InitializeDrag was +// called and this is it matching call. EndDrag means that the drag actually +// occured +begin + inherited; + ClearDragItem; +end; + +function TEasyOLEDragManager.InitializeDrag(HitItem: TEasyItem; WindowPoint: TPoint; + KeyState: TCommonKeyStates): Boolean; +// Does not mean that the action will be a Drag, it just means get ready for one +// just in case. +begin + Result := False; + if Enabled then + begin + if Assigned(HitItem) and ( ((cksLButton in KeyState) and (cmbLeft in MouseButton)) or + ((cksMButton in KeyState) and (cmbMiddle in MouseButton)) or + ((cksRButton in KeyState) and (cmbRight in MouseButton))) then + begin + if HitItem.SelectionHitPt(OwnerListview.Scrollbars.MapWindowToView(WindowPoint), eshtClickSelect) then + begin + FDragItem := HitItem; + Result := True + end + end else + FDragItem := nil + end +end; + +procedure TEasyOLEDragManager.ImageSize(var Width: Integer; var Height: Integer); +begin + Width := DragImageWidth; + Height := DragImageHeight +end; + +procedure TEasyOLEDragManager.SetEnabled(const Value: Boolean); +begin + inherited; + Registered := Value; +end; + +procedure TEasyOLEDragManager.VCLDragStart; +begin + FDragItem := OwnerListview.Selection.FocusedItem; + if DragMode = dmAutomatic then + OwnerListview.BeginDrag(True); +end; + +{ TEasySelectionManager } + +function TEasySelectionManager.GetFocusedColumn: TEasyColumn; +begin + if not Assigned(FFocusedColumn) then + FFocusedColumn := OwnerListview.Header.FirstColumn; + Result := FFocusedColumn; +end; + +function TEasySelectionManager.SelectedToArray: TEasyItemArray; +var + Item: TEasyItem; + i: Integer; +begin + SetLength(Result, Count); + Item := First; + i := 0; + while Assigned(Item) do + begin + Result[i] := Item; + Inc(i); + Item := Next(Item) + end +end; + +procedure TEasySelectionManager.ActOnAll(SelectType: TEasySelectionType; + ExceptItem: TEasyItem); +var + i, j: Integer; +begin + if Enabled then + begin + IncMultiChangeCount; + GroupSelectBeginUpdate; + try + // If unselecting we can optimize for the more common situation by stopping when + // there are no more selected items. + if SelectType = ecstUnSelect then + begin + i := 0; + while (i < OwnerListview.Groups.Count) and (Count > 0) do + begin + j := 0; + while (j < OwnerListview.Groups[i].Items.Count) and (Count > 0) do + begin + if ExceptItem <> OwnerListview.Groups[i].Items[j] then + OwnerListview.Groups[i].Items[j].Selected := False; + Inc(j) + end; + Inc(i) + end + end else + begin + for i := 0 to OwnerListview.Groups.Count - 1 do + begin + case SelectType of + ecstSelect: + begin + j := 0; + while (j < OwnerListview.Groups[i].Items.Count) do + begin + if ExceptItem <> OwnerListview.Groups[i].Items[j] then + OwnerListview.Groups[i].Items[j].Selected := True; + Inc(j) + end; + end; + ecstInvert: + begin + j := 0; + while (j < OwnerListview.Groups[i].Items.Count) do + begin + if ExceptItem <> OwnerListview.Groups[i].Items[j] then + OwnerListview.Groups[i].Items[j].Selected := not OwnerListview.Groups[i].Items[j].Selected; + Inc(j) + end; + end; + end + end + end; + OwnerListview.DragManager.ClearDragItem; + finally + GroupSelectEndUpdate; + DecMultiChangeCount + end + end +end; + +procedure TEasySelectionManager.BuildSelectionGroupings(Force: Boolean); +// +// Builds the necessary information to group the selections like eMule, called +// for every selection change. This could get slow with thousands of items. +// +var + i: Integer; + GroupList: TEasySelectionGroupList; + Group: TEasyGroup; + Item, NextItem: TEasyItem; +begin + // It is possible that during streaming the items can be created but + if not (csLoading in OwnerListview.ComponentState) and + (Force or (GroupSelections and (FGroupSelectUpdateCount = 0){ and (OwnerListview.UpdateCount = 0) won't work with keyboard})) then + begin + // Windows.Beep(5000, 200); + GroupList := nil; + for i := 0 to OwnerListview.Groups.Count - 1 do + begin + Group := TEasyGroup( OwnerListview.Groups.List[i]); + Item := OwnerListview.Groups.FirstVisibleInGroup(Group); + while Assigned(Item) do + begin + // Do a ReleaseSelectionGroup directly for speed + if Assigned(Item) and Assigned(Item.SelectionGroup) then + begin + Item.FSelectionGroup.DecRef; + Item.FSelectionGroup := nil + end; + + if (esosSelected in Item.State) then + begin + NextItem := OwnerListview.Groups.NextVisibleInGroup(Group, Item); + + // Do a ReleaseSelectionGroup directly for speed + if Assigned(NextItem) and Assigned(NextItem.SelectionGroup) then + begin + NextItem.FSelectionGroup.DecRef; + NextItem.FSelectionGroup := nil + end; + + // Direct access for speed + while Assigned(NextItem) and (esosSelected in NextItem.State) do + begin + if not Assigned(GroupList) then + begin + GroupList := TEasySelectionGroupList.Create; + GroupList.Add(Item); + GroupList.IncRef; + GroupList.DisplayRect := Item.DisplayRect; + GroupList.FirstItem := Item; + Item.SelectionGroup := GroupList; + end; + GroupList.Add(NextItem); + UnionRect(Item.SelectionGroup.FDisplayRect, Item.SelectionGroup.DisplayRect, NextItem.DisplayRect); + GroupList.IncRef; + NextItem.SelectionGroup := GroupList; + NextItem := OwnerListview.Groups.NextVisibleInGroup(Group, NextItem); + end; + GroupList := nil; + Item := NextItem; + end; + Item := OwnerListview.Groups.NextVisibleInGroup(Group, Item); + end; + end + end +end; + +procedure TEasySelectionManager.ClearAll; +begin + ActOnAll(ecstUnSelect, nil); +end; + +procedure TEasySelectionManager.ClearAllExcept(Item: TEasyItem); +begin + ActOnAll(ecstUnSelect, Item); + OwnerListview.DragManager.ClearDragItem; +end; + +constructor TEasySelectionManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FEnabled := True; + FColor := clHighlight; + FBorderColor := clHighlight; + FInactiveBorderColor := clInactiveBorder; + FInactiveColor := clInactiveBorder; + FInactiveTextColor := clBlack; + FTextColor := clHighlightText; + FRoundRectRadius := 4; + FBlendColorSelRect := clHighlight; + FBorderColorSelRect := clHighlight; + FBlendColorIcon := clHighlight; + BlendAlphaImage := 128; + BlendAlphaSelRect := 70; + BlendAlphaTextRect := 128; + FAlphaBlend := False; + FUseFocusRect := True; + FMouseButton := [cmbLeft]; + MouseButtonSelRect := [cmbLeft, cmbRight]; + FGradientColorBottom := $FCEFD5; + FGradientColorTop := $FDF8F1; + FBlendIcon := True +end; + +destructor TEasySelectionManager.Destroy; +begin + inherited; +end; + +procedure TEasySelectionManager.DecMultiChangeCount; +begin + Dec(FMultiChangeCount); + if MultiChangeCount <= 0 then + begin + MultiChangeCount := 0; + if ItemsToggled > 0 then + OwnerListview.DoItemSelectionsChanged + end +end; + +procedure TEasySelectionManager.DeleteSelected(SelectPrevItem: Boolean = False); +var + NextToSelect: Integer; + AItem: TEasyItem; +begin + if Count <> 0 then + begin + NextToSelect := -1; + OwnerListview.BeginUpdate; + try + if SelectPrevItem then + NextToSelect := First.Index - 1; + OwnerListview.Groups.DeleteItems(SelectedToArray); + finally + OwnerListview.EndUpdate; + if SelectPrevItem and (OwnerListview.Groups.ItemCount > 0) then + begin + if NextToSelect < 0 then + NextToSelect := 0 + else + if NextToSelect >= OwnerListview.Groups.ItemCount then + NextToSelect := OwnerListview.Groups.ItemCount - 1; + AItem := OwnerListview.Items[NextToSelect]; + AItem.Selected := True; + AItem.Focused := True; + end + end + end +end; + +procedure TEasySelectionManager.DragSelect(KeyStates: TCommonKeyStates); +// Handles the selection of items during a drag select operation +var + CoverR: TRect; + Item: TEasyItem; +begin + if Enabled and MultiSelect then + begin + IncMultiChangeCount; + GroupSelectBeginUpdate; + try + // Get the rectangle that covers any area that need to be tested for change + UnionRect(CoverR, OwnerListview.DragRect.PrevRect, OwnerListview.DragRect.SelectionRect); + + if not IsRectEmpty(CoverR) then + begin + Item := OwnerListview.Groups.FirstItemInRect(CoverR); + while Assigned(Item) do + begin + if cksControl in KeyStates then + begin + if Item.SelectionHit( OwnerListview.DragRect.SelectionRect, eshtDragSelect) xor + Item.SelectionHit(OwnerListview.DragRect.PrevRect, eshtDragSelect) + then + Item.Selected := not Item.Selected; + end else + begin + // First see if we need to select an item + if Item.SelectionHit(OwnerListview.DragRect.SelectionRect, eshtDragSelect) then + Item.Selected := True + else begin + // If we did not select the item see if it is in the Previous rectanagle + // and it needs to be unselected + if Item.SelectionHit(OwnerListview.DragRect.PrevRect, eshtDragSelect) then + Item.Selected := False; + end + end; + Item := OwnerListview.Groups.NextItemInRect(Item, CoverR) + end + end + finally + GroupSelectEndUpdate; + DecMultiChangeCount + end + end +end; + +function TEasySelectionManager.First: TEasyItem; +// +// Gets the first Selected item +// +var + Item: TEasyItem; +begin + Result := nil; + Item := OwnerListview.Groups.FirstVisibleItem; + while not Assigned(Result) and Assigned(Item) do + begin + if Item.Selected then + Result := Item; + Item := OwnerListview.Groups.NextVisibleItem(Item) + end +end; + +function TEasySelectionManager.FirstInGroup(Group: TEasyGroup): TEasyItem; +// +// Gets the first Selected item in the specified group from UIObject list +// +var + Item: TEasyItem; +begin + Result := nil; + Item := OwnerListview.Groups.FirstInGroup(Group); + while not Assigned(Result) and Assigned(Item) do + begin + if Item.Selected then + Result := Item; + Item := OwnerListview.Groups.NextInGroup(Group, Item) + end +end; + +procedure TEasySelectionManager.FocusFirst; +var + Item: TEasyItem; +begin + ClearAll; + Item := OwnerListview.Groups.FirstItem; + if Assigned(Item) and Enabled then + Item.Focused := True; +end; + +procedure TEasySelectionManager.GainingSelection(Item: TEasyItem); +begin + if not MultiSelect then + ClearAllExcept(Item); + Inc(OwnerListview.Selection.FCount); + if not MultiSelect then + FocusedItem := Item; + Inc(FItemsToggled); + NotifyOwnerListview +end; + +function TEasySelectionManager.GetAutoScroll: Boolean; +begin + Result := OwnerListview.DragRect.AutoScroll +end; + +function TEasySelectionManager.GetAutoScrollAccelerator: Byte; +begin + Result := OwnerListview.DragRect.AutoScrollAccelerator +end; + +function TEasySelectionManager.GetAutoScrollDelay: Integer; +begin + Result := OwnerListview.DragRect.AutoScrollDelay +end; + +function TEasySelectionManager.GetAutoScrollMargin: Integer; +begin + Result := OwnerListview.DragRect.AutoScrollMargin +end; + +function TEasySelectionManager.GetAutoScrollTime: Integer; +begin + Result := OwnerListview.DragRect.AutoScrollTime +end; + +function TEasySelectionManager.GetEnableDragSelect: Boolean; +begin + Result := OwnerListview.DragRect.Enabled +end; + +function TEasySelectionManager.GeTCommonMouseButton: TCommonMouseButtons; +begin + Result := FMouseButton +end; + +function TEasySelectionManager.GetMouseButtonSelRect: TCommonMouseButtons; +begin + Result := OwnerListview.DragRect.MouseButton +end; + +function TEasySelectionManager.GetSelecting: Boolean; +begin + Result := OwnerListview.DragRect.Dragging +end; + +procedure TEasySelectionManager.GroupSelectBeginUpdate; +begin + Inc(FGroupSelectUpdateCount) +end; + +procedure TEasySelectionManager.GroupSelectEndUpdate; +begin + Dec(FGroupSelectUpdateCount); + if FGroupSelectUpdateCount <= 0 then + begin + FGroupSelectUpdateCount := 0; + // OwnerListview.Groups.ReIndexItems(nil, True); + BuildSelectionGroupings(False); + end +end; + +procedure TEasySelectionManager.IncMultiChangeCount; +begin + if MultiChangeCount = 0 then + ItemsToggled := 0; + Inc(FMultiChangeCount) +end; + +procedure TEasySelectionManager.InvalidateVisibleSelected(ValidateWindow: Boolean); +var + Item: TEasyItem; +begin + if Enabled then + begin + Item := OwnerListview.Groups.FirstItemInRect(OwnerListview.ClientRect); + while Assigned(Item) do + begin + if Item.Selected or Item.Focused then + Item.Invalidate(False); + Item := OwnerListview.Groups.NextItemInRect(Item, OwnerListview.ClientRect) + end + end +end; + +procedure TEasySelectionManager.Invert; +begin + ActOnAll(ecstInvert, nil); +end; + +procedure TEasySelectionManager.LosingSelection(Item: TEasyItem); +begin + Dec(OwnerListview.Selection.FCount); + Item.ReleaseSelectionGroup; + Inc(FItemsToggled); + NotifyOwnerListview +end; + +procedure TEasySelectionManager.NotifyOwnerListview; +begin + if (MultiChangeCount = 0) and (ItemsToggled > 0) then + begin + OwnerListview.DoItemSelectionsChanged; + ItemsToggled := 0 + end +end; + +procedure TEasySelectionManager.SelectAll; +begin + if MultiSelect then + ActOnAll(ecstSelect, nil); +end; + +function TEasySelectionManager.Next(Item: TEasyItem): TEasyItem; +// +// Gets the next Selected item in the UIObject list +// +begin + Result := nil; + Item := OwnerListview.Groups.NextVisibleItem(Item); + while not Assigned(Result) and Assigned(Item) do + begin + if Item.Selected then + Result := Item; + Item := OwnerListview.Groups.NextVisibleItem(Item) + end +end; + +function TEasySelectionManager.NextInGroup(Group: TEasyGroup; + Item: TEasyItem): TEasyItem; + // +// Gets the next Selected item in the specified group from UIObject list +// +begin + Result := nil; + Item := OwnerListview.Groups.NextInGroup(Group, Item); + while not Assigned(Result) and Assigned(Item) do + begin + if Item.Selected then + Result := Item; + Item := OwnerListview.Groups.NextInGroup(Group, Item) + end +end; + +procedure TEasySelectionManager.SelectFirst; +var + Item: TEasyItem; +begin + ClearAll; + Item := OwnerListview.Groups.FirstItem; + if Assigned(Item) and Enabled then + begin + Item.Focused := True; + Item.Selected := True + end +end; + +procedure TEasySelectionManager.SelectGroupItems(Group: TEasyGroup; ClearOtherItems: Boolean); +var + i, j: Integer; +begin + if Enabled and MultiSelect and Assigned(Group) then + begin + IncMultiChangeCount; + GroupSelectBeginUpdate; + try + if ClearOtherItems then + begin + for i := 0 to OwnerListview.Groups.Count - 1 do + begin + if OwnerListview.Groups[i] <> Group then + for j := 0 to OwnerListview.Groups[i].Items.Count - 1 do + OwnerListview.Groups[i].Items[j].Selected := False; + end; + end; + + for i := 0 to Group.Items.Count - 1 do + Group.Items[i].Selected := True + finally + GroupSelectEndUpdate; + DecMultiChangeCount + end + end +end; + +procedure TEasySelectionManager.SelectRange(FromItem, ToItem: TEasyItem; RectSelect: Boolean; ClearFirst: Boolean); + + procedure SwapItems(var Item1, Item2: TEasyItem); + var + Temp: TEasyItem; + begin + Temp := Item1; + Item1 := Item2; + Item2 := Temp + end; + +var + R: TRect; +begin + if Enabled and MultiSelect then + begin + IncMultiChangeCount; + GroupSelectBeginUpdate; + try + if ClearFirst then + ClearAll; + if Assigned(FromItem) and Assigned(ToItem) then + begin + if RectSelect then + begin + UnionRect(R, FromItem.DisplayRect, ToItem.DisplayRect); + SelectRect(R, False); + end else + begin + if FromItem.OwnerGroup = ToItem.OwnerGroup then + begin + if FromItem.Index > ToItem.Index then + SwapItems(FromItem, ToItem) + end else + begin + if FromItem.OwnerGroup.Index > ToItem.OwnerGroup.Index then + SwapItems(FromItem, ToItem) + end; + + while Assigned(FromItem) and (FromItem <> ToItem) do + begin + FromItem.Selected := True; + FromItem := OwnerListview.Groups.NextVisibleItem(FromItem) + end; + ToItem.Selected := True; + end + end + finally + GroupSelectEndUpdate; + DecMultiChangeCount + end + end +end; + +procedure TEasySelectionManager.SelectRect(ViewportSelRect: TRect; ClearFirst: Boolean); +var + Temp: TEasyItem; +begin + if Enabled and MultiSelect then + begin + GroupSelectBeginUpdate; + IncMultiChangeCount; + try + if ClearFirst then + ClearAll; + Temp := OwnerListview.Groups.FirstItemInRect(ViewportSelRect); + while Assigned(Temp) do + begin + Temp.Selected := True; + Temp := OwnerListview.Groups.NextItemInRect(Temp, ViewportSelRect); + end + finally + GroupSelectEndUpdate; + DecMultiChangeCount + end + end +end; + +procedure TEasySelectionManager.SetAnchorItem(Value: TEasyItem); +begin + if Assigned(Value) then + begin + if Value.Visible and Value.Enabled then + FAnchorItem := Value; + end else + FAnchorItem := nil +end; + +procedure TEasySelectionManager.SetAutoScroll(Value: Boolean); +begin + OwnerListview.DragRect.AutoScroll := Value +end; + +procedure TEasySelectionManager.SetAutoScrollAccelerator(Value: Byte); +begin + OwnerListview.DragRect.AutoScrollAccelerator := Value +end; + +procedure TEasySelectionManager.SetAutoScrollDelay(Value: Integer); +begin + OwnerListview.DragRect.AutoScrollDelay := Value +end; + +procedure TEasySelectionManager.SetAutoScrollMargin(Value: Integer); +begin + OwnerListview.DragRect.AutoScrollMargin := Value +end; + +procedure TEasySelectionManager.SetAutoScrollTime(Value: Integer); +begin + OwnerListview.DragRect.AutoScrollTime := Value +end; + +procedure TEasySelectionManager.SetBlendIcon(Value: Boolean); +begin + if FBlendIcon <> Value then + begin + FBlendIcon := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetBlurAlphaBkGnd(const Value: Boolean); +begin + if FBlurAlphaBkGnd <> Value then + begin + FBlurAlphaBkGnd := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetEnabled(const Value: Boolean); +begin + if FEnabled <> Value then + begin + if not Value then + ClearAll; + FEnabled := Value; + end; +end; + +procedure TEasySelectionManager.SetEnableDragSelect(Value: Boolean); +begin + OwnerListview.DragRect.Enabled := Value +end; + +procedure TEasySelectionManager.SetFocusedColumn(Value: TEasyColumn); +var + OldFocused: TEasyColumn; +begin + if FFocusedColumn <> Value then + begin + OldFocused := FFocusedColumn; + FFocusedColumn := Value; + if Assigned(FFocusedColumn) then + FFocusedColumn.Invalidate(True); + if Assigned(OldFocused) then + OldFocused.Invalidate(True); + end +end; + +procedure TEasySelectionManager.SetFocusedGroup(const Value: TEasyGroup); +//var +// ChangeFocus: Boolean; +// OldGroup: TEasyGroup; +begin +// OldGroup := FFocusedGroup; +(* if Assigned(Value) then + begin + if Value.Visible and Value.Enabled then + begin + if FFocusedGroup <> Value then + begin + if Assigned(OldGroup) then + OldGroup.Focused := False; + + ChangeFocus := True; + // The user may not have allowed the focus to change + if Assigned(OldGroup) then + ChangeFocus := not OldGroup.Focused; + + if ChangeFocus then + begin + Value.Focused := True; + FFocusedGroup := Value + end + end + end + end else + begin + FFocusedGroup := nil; + if Assigned(OldGroup) then + OldGroup.Focused := False; + end *) +end; + +procedure TEasySelectionManager.SetFocusedItem(Value: TEasyItem); +var + ChangeFocus: Boolean; + OldItem: TEasyCollectionItem; + RectArray: TEasyRectArrayObject; +begin + OldItem := FFocusedItem; + if Assigned(Value) then + begin + if Value.Visible and Value.Enabled then + begin + if FFocusedItem <> Value then + begin + if Assigned(OldItem) then + OldItem.Focused := False; + + ChangeFocus := True; + // The user may not have allowed the focus to change + if Assigned(OldItem) then + ChangeFocus := not OldItem.Focused; + + if ChangeFocus then + begin + FFocusedItem := Value; + // Resize the Groups in case the full focus text was bigger than + // the group + Value.Focused := True; + // During Deletion this can lead to weird recurssion + if not Value.Destroying then + begin + Value.ItemRectArray(nil, OwnerListview.ScratchCanvas, RectArray); + // Rebuild the grid if the focused text will overlap the bottom of the + // group + if RectArray.FullTextRect.Bottom > Value.OwnerGroup.ClientRect.Bottom then + Value.OwnerListview.Groups.Rebuild(True); + end + end + end + end + end else + begin + FFocusedItem := nil; + if Assigned(OldItem) then + begin + if Assigned(OldItem) then + begin + OldItem.Focused := False; + // Resize the Groups in case the full focus text was bigger than + // the group + // During Deletion this can lead to weird recurssion + if not OldItem.Destroying then + begin + (* OwnerListview.Grid.CacheGroupInfo; + OwnerListview.Scrollbars.SetViewRect(OwnerListview.Grid.ViewRect, True); *) + end + end + end + end +end; + +procedure TEasySelectionManager.SeTCommonMouseButton(Value: TCommonMouseButtons); +begin + FMouseButton := Value +end; + +procedure TEasySelectionManager.SetFullCellPaint(Value: Boolean); +begin + if Value <> FFullCellPaint then + begin + FFullCellPaint := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetFullItemPaint(Value: Boolean); +begin + if Value <> FFullItemPaint then + begin + FFullItemPaint := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetGradient(const Value: Boolean); +begin + if FGradient <> Value then + begin + FGradient := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetGradientColorBottom(const Value: TColor); +begin + if FGradientColorBottom <> Value then + begin + FGradientColorBottom := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetGradientColorTop(const Value: TColor); +begin + if FGradientColorTop <> Value then + begin + FGradientColorTop := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasySelectionManager.SetGroupSelections(Value: Boolean); +begin + if Value <> FGroupSelections then + begin + OwnerListview.BeginUpdate; + try + FGroupSelections := Value; + BuildSelectionGroupings(True) + finally + OwnerListview.EndUpdate + end + end +end; + +procedure TEasySelectionManager.SetMouseButtonSelRect(Value: TCommonMouseButtons); +begin + OwnerListview.DragRect.MouseButton := Value +end; + +procedure TEasySelectionManager.SetMultiSelect(const Value: Boolean); +begin + if FMultiSelect <> Value then + begin + FMultiSelect := Value; + ClearAll + end +end; + +{ TEasyCheckManager } + +function TEasyCheckManager.CheckedToArray: TEasyItemArray; +var + Item: TEasyItem; + i: Integer; +begin + SetLength(Result, Count); + Item := First; + i := 0; + while Assigned(Item) do + begin + Result[i] := Item; + Inc(i); + Item := Next(Item) + end +end; + +procedure TEasyCheckManager.CheckAll; +// +// Checks all the Visible items in the EasyControl +// +var + i: Integer; +begin + for i := 0 to OwnerListview.Groups.Count - 1 do + OwnerListview.Groups.Groups[i].Checked := True +end; + +procedure TEasyCheckManager.CheckAllInGroup(Group: TEasyGroup); +// +// Checks all the Visible items in a particular group +// +begin + Group.Checked := True +end; + +function TEasyCheckManager.First: TEasyItem; +// +// Gets the first checked item in the control and prepares for the GetNext iteration +// +//var +// Found: Boolean; +// i: Integer; +begin +// Found := False; +// i := 0; +(* while (i < OwnerListview.UIObjects.ItemCount) and not Found do + begin + Result := OwnerListview.UIObjects.Items[i]; + Found := Result.Checked; + if not Found then + Inc(i) + end; + if not Found then *) + Result := nil; +end; + +function TEasyCheckManager.FirstInGroup(Group: TEasyGroup): TEasyCollectionItem; +// +// Gets the first checked item in a particular grouip and prepares for the GetNextInGroup iteration +// +var + Found: Boolean; + i: Integer; +begin + Result := nil; + Exit; + + Found := False; + i := 0; + while (i < Group.Items.Count) and not Found do + begin + Result := Group.Items[i]; + // By definition if the item is checked is must be visible + Found := Result.Checked; + if not Found then + Inc(i) + end; + if not Found then + Result := nil; +end; + +function TEasyCheckManager.Next(Item: TEasyItem): TEasyItem; +// +// Gets the next checked item in the control, depends on GetFirst to be called first +// +//var +// Found: Boolean; +// i: Integer; +begin +// Found := False; +(* i := Item.VisibleIndex; + Inc(i); + while (i < OwnerListview.UIObjects.ItemCount) and not Found do + begin + Result := OwnerListview.UIObjects.Items[i]; + Found := Result.Checked; + if not Found then + Inc(i) + end; + if not Found then *) + Result := nil; +end; + +function TEasyCheckManager.NextInGroup(Item: TEasyItem): TEasyItem; +// +// Gets the next checked item in a particular group, depends on GetFirstInGroup to be called first +// +begin + Result := nil; + Assert(True = False, 'TEasyCheckManager.GetNextCheckedInGroup not implemented yet'); + Exit; + +end; + +procedure TEasyCheckManager.DeleteChecked; +var + Items: TEasyItemArray; + i: Integer; +begin + OwnerListview.BeginUpdate; + try + Items := CheckedToArray; + // Set the item in the list to nil and free the item + try + for i := 0 to Length(Items) - 1 do + begin + Items[i].OwnerGroup.Items[Items[i].Index] := nil; + Items[i].Free; + end; + finally + // now pack the group lists to elimiate the nil pointers + for i := 0 to OwnerListview.Groups.Count - 1 do + OwnerListview.Groups[i].Items.FList.Pack; + end; + finally + OwnerListview.EndUpdate; + end +end; + +procedure TEasyCheckManager.SetPendingObject(Value: TEasyCollectionItem); +begin + if Value <> FPendingObject then + begin + if Assigned(FPendingObject) then + FPendingObject.CheckPending := False; + FPendingObject := Value; + if Assigned(FPendingObject) then + FPendingObject.CheckPending := True; + end +end; + +procedure TEasyCheckManager.UnCheckAll; +// +// Unchecks all Visible items in the control +// +var + i: Integer; +begin + OwnerListview.BeginUpdate; + try + for i := 0 to OwnerListview.Groups.Count - 1 do + OwnerListview.Groups.Groups[i].Checked := False; + finally + OwnerListview.EndUpdate; + end +end; + +procedure TEasyCheckManager.UnCheckAllInGroup(Group: TEasyGroup); +// +// Unchecks all Visible items in a particular group +// +begin + OwnerListview.BeginUpdate; + try + Group.Checked := False + finally + OwnerListview.EndUpdate; + end +end; + +{ TEasyScrollbarManager } + +constructor TEasyScrollbarManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FHorzEnabled := True; + FVertEnabled := True; + FSnapHorzView := True; +end; + +destructor TEasyScrollbarManager.Destroy; +begin + inherited; +end; + +function TEasyScrollbarManager.GetHorzBarVisible: Boolean; +begin + if Assigned(OwnerListview) and OwnerListview.HandleAllocated then + Result := GetWindowLong(OwnerListview.Handle, GWL_STYLE) and WS_HSCROLL <> 0 + else + Result := False; +end; + +function TEasyScrollbarManager.GetLine: Integer; +begin + Result := OwnerListview.Groups.CellHeight +end; + +function TEasyScrollbarManager.GetMaxOffsetX: Integer; +var + ScrollTmp: Integer; +begin + Result := ViewWidth - OwnerListview.ClientWidth; + + if (not OwnerListview.IsVertView) and (HorzBarVisible) then + begin + ScrollTmp := Result - (Result mod OwnerListview.CellSizes.List.Width); + Result := ScrollTmp + OwnerListview.CellSizes.List.Width; + end; + if Result < 0 then + Result := 0; +end; + +function TEasyScrollbarManager.GetMaxOffsetY: Integer; +begin + Result := ViewHeight - + OwnerListview.ClientHeight + + OwnerListview.Header.RuntimeHeight {+ + OwnerListview.Columns.Footer.SizeTotal}; + + if Result < 0 then + Result := 0; +end; + +function TEasyScrollbarManager.GetVertBarVisible: Boolean; +begin + if Assigned(OwnerListview) and OwnerListview.HandleAllocated then + Result := GetWindowLong(OwnerListview.Handle, GWL_STYLE) and WS_VSCROLL <> 0 + else + Result := False; +end; + +function TEasyScrollbarManager.GetViewHeight: Integer; +begin + Result := ViewRect.Bottom - ViewRect.Top +end; + +function TEasyScrollbarManager.GetViewWidth: Integer; +begin + Result := ViewRect.Right - ViewRect.Left +end; + +function TEasyScrollbarManager.MapViewToWindow(ViewportPoint: TPoint; AccountForHeader: Boolean = True): TPoint; +begin + Result.X := ViewportPoint.X - + OffsetX; + Result.Y := ViewportPoint.Y - + OffsetY; + if AccountForHeader then + Inc(Result.Y, OwnerListview.Header.RuntimeHeight) +end; + +function TEasyScrollbarManager.MapViewRectToWindowRect(ViewPortRect: TRect; AccountForHeader: Boolean = True): TRect; +begin + Result.TopLeft := MapViewToWindow(ViewPortrect.TopLeft, AccountForHeader); + Result.BottomRight := MapViewToWindow(ViewPortRect.BottomRight, AccountForHeader); +end; + +function TEasyScrollbarManager.MapViewToWindow(ViewportPoint: TSmallPoint; AccountForHeader: Boolean = True): TPoint; +begin + Result := MapViewToWindow(SmallPointToPoint(ViewportPoint), AccountForHeader) +end; + +function TEasyScrollbarManager.MapWindowToView(WindowPoint: TPoint; AccountForHeader: Boolean = True): TPoint; +begin + Result.X := WindowPoint.X + OffsetX; + Result.Y := WindowPoint.Y + OffsetY; + if AccountForHeader then + Dec(Result.Y, OwnerListview.Header.RuntimeHeight) +end; + +function TEasyScrollbarManager.MapWindowRectToViewRect(WindowRect: TRect; AccountForHeader: Boolean = True): TRect; +begin + Result.TopLeft := MapWindowToView(WindowRect.TopLeft, AccountForHeader); + Result.BottomRight := MapWindowToView(WindowRect.BottomRight, AccountForHeader); +end; + +function TEasyScrollbarManager.MapWindowToView(WindowPoint: TSmallPoint; AccountForHeader: Boolean = True): TPoint; +begin + Result := MapWindowToView(SmallPointToPoint(WindowPoint), AccountForHeader); +end; + +procedure TEasyScrollbarManager.ReCalculateScrollbars(Redraw: Boolean; + Force: Boolean); +const + ALL_SCROLLFLAGS = SIF_PAGE or SIF_POS or SIF_RANGE; +var + Info: TScrollInfo; + HorzWasVisible, VertWasVisible, HorzNeeded, VertNeeded, RebuildNeeded: Boolean; + R: TRect; +begin + // Performance hit if not checking for update. + if not Rebuilding and (Assigned(OwnerListview) and OwnerListview.HandleAllocated) and + ((OwnerListview.UpdateCount = 0) or Force) then + begin + FRebuilding := True; + HorzWasVisible := False; + VertWasVisible := False; + try + // If the window is resizing our offset may become invalid and we need to + // "pull" the offset with the resize + ValidateOffsets(FOffsetX, FOffsetY); + + HorzWasVisible := HorzBarVisible; + HorzNeeded := (ViewWidth - 1 > OwnerListview.ClientWidth) and (OwnerListview.Height > GetSystemMetrics(SM_CYHSCROLL)); + VertWasVisible := VertBarVisible; + VertNeeded := (ViewHeight + OwnerListview.Header.RuntimeHeight - 1 > OwnerListview.ClientHeight) and (OwnerListview.Width > GetSystemMetrics(SM_CYVSCROLL)); + + GetClientRect(OwnerListview.Handle, R); + RebuildNeeded := False; + if HorzEnabled then + begin + if HorzWasVisible xor HorzNeeded then + begin + ShowScrollBar(OwnerListview.Handle, SB_HORZ, HorzNeeded); + RebuildNeeded := True; + end + end else + ShowScrollBar(OwnerListview.Handle, SB_HORZ, False); + + if VertEnabled then + begin + if VertWasVisible xor VertNeeded then + begin + ShowScrollBar(OwnerListview.Handle, SB_VERT, VertNeeded); + RebuildNeeded := True; + end; + end else + ShowScrollBar(OwnerListview.Handle, SB_VERT, False);; + + if RebuildNeeded then + OwnerListview.Groups.Rebuild(True); + + FillChar(Info, SizeOf(Info), #0); + Info.cbSize := SizeOf(Info); + Info.fMask := ALL_SCROLLFLAGS; + Info.nMin := 0; + if VertEnabled and VertBarVisible then + begin + Info.nMax := ViewHeight + OwnerListview.Header.RuntimeHeight - 1; + Info.nPos := Abs(OffsetY); + if OwnerListview.ClientHeight < 0 then + Info.nPage := 0 + else + Info.nPage := OwnerListview.ClientHeight; + end else + begin + Info.nMax := 0; + Info.nPos := 0; + Info.nPage := 0; + end; + SetScrollInfo(OwnerListview.Handle, SB_VERT, Info, Redraw); + + FillChar(Info, SizeOf(Info), #0); + Info.cbSize := SizeOf(Info); + Info.fMask := ALL_SCROLLFLAGS; + Info.nMin := 0; + + if HorzEnabled and HorzBarVisible then + begin + Info.nMax := ViewWidth - 1; + Info.nPos := Abs(OffsetX); + if OwnerListview.ClientWidth < 0 then + Info.nPage := 0 + else + Info.nPage := OwnerListview.ClientWidth; + end else + begin + Info.nMax := 0; + Info.nPos := 0; + Info.nPage := 0; + end; + SetScrollInfo(OwnerListview.Handle, SB_HORZ, Info, Redraw); + + // If the window is resizing our offset may become invalid and we need to + // "pull" the offset with the resize + ValidateOffsets(FOffsetX, FOffsetY); + finally + FRebuilding := False; + if (not HorzWasVisible and HorzBarVisible) or (not VertWasVisible and VertBarVisible) then + RedrawWindow(OwnerListview.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_ERASENOW); + end + end +end; + +procedure TEasyScrollbarManager.SetHorzEnabled( + const Value: Boolean); +begin + if FHorzEnabled <> Value then + begin + FHorzEnabled := Value; + ReCalculateScrollbars(True, False); + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyScrollbarManager.SetOffsetX(const Value: Integer); +begin + if FOffsetX <> Value then + Scroll(Value - OffsetX, 0); +end; + +procedure TEasyScrollbarManager.SetOffsetY(const Value: Integer); +begin + if FOffsetY <> Value then + Scroll(0, Value - OffsetY); +end; + +procedure TEasyScrollbarManager.SetVertEnabled( + const Value: Boolean); +begin + if FVertEnabled <> Value then + begin + FVertEnabled := Value; + ReCalculateScrollbars(True, False); + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyScrollbarManager.SetViewRect(AViewRect: TRect; InvalidateWindow: Boolean); +var + WasX, WasY: Boolean; +begin + if not EqualRect(AViewRect, FViewRect) then + begin + WasX := HorzBarVisible; + WasY := VertBarVisible; + FViewRect := AViewRect; + ReCalculateScrollbars(True, False); + if (InvalidateWindow or (WasX and not HorzBarVisible) or (WasY and not VertBarVisible)) then + OwnerListview.SafeInvalidateRect(nil, False); + end else + if InvalidateWindow then + OwnerListview.SafeInvalidateRect(nil, False); +end; + +procedure TEasyScrollbarManager.ValidateOffsets(var AnOffsetX, AnOffsetY: Integer); +// "Pulls" the offset to keep in sync with the client window. This is especially +// for when the window is resizing and the offset is near the bottom of the page. +// Without this the Scroll Manager could detect that the scrollbars are not needed +// any more and hide them leaving the window scrolled to the last known point! +var + LastCol: Boolean; +begin + if Assigned(OwnerListview) then + begin + if SnapHorzView and not OwnerListview.IsVertView then + begin + LastCol := AnOffsetX > ViewWidth - OwnerListview.CellSizes.List.Width; + if AnOffsetX mod OwnerListview.CellSizes.List.Width <> 0 then + AnOffsetX := OwnerListview.CellSizes.List.Width * (AnOffsetX div OwnerListview.CellSizes.List.Width); + if (AnOffsetX mod OwnerListview.CellSizes.List.Width > OwnerListview.CellSizes.List.Width div 2) or LastCol then + AnOffsetX := AnOffsetX + OwnerListview.CellSizes.List.Width + end; + + if AnOffsetY > MaxOffsetY then + AnOffsetY := MaxOffsetY; + if AnOffsetX > MaxOffsetX then + AnOffsetX := MaxOffsetX; + if AnOffsetY < 0 then + AnOffsetY := 0; + if AnOffsetX < 0 then + AnOffsetX := 0; + end else + begin + AnOffsetX := 0; + AnOffsetY := 0 + end +end; + +function TEasyScrollbarManager.ViewableViewportRect: TRect; +// +// Returns, in Viewport Coordinates, the rectangle that is current visible to +// the user in the window. +// +begin + Result := MapWindowRectToViewRect(OwnerListview.ClientRect) +end; + +procedure TEasyScrollbarManager.WMHScroll(var Msg: TWMVScroll); +// Called from the WM_HSCROLL message of the owner window to implement the scroll +var + Info: TScrollInfo; + ClientR: TRect; + DeltaX: Integer; +begin + if Assigned(OwnerListview) then + begin + DeltaX := 0; + // Get the 32 Bit Position + FillChar(Info, SizeOf(Info), #0); + Info.cbSize := SizeOf(Info); + Info.fMask := SIF_POS or SIF_TRACKPOS; + GetScrollInfo(OwnerListview.Handle, SB_HORZ, Info); + ClientR :=OwnerListview.ClientRect; + + if not OwnerListview.IsVertView and SnapHorzView then + begin + case Msg.ScrollCode of + SB_BOTTOM: DeltaX := (ViewRect.Right - ViewRect.Left) - OffsetX; + SB_ENDSCROLL: DeltaX := 0; + SB_LINEDOWN: DeltaX := OwnerListview.CellSizes.List.Width; + SB_LINEUP: DeltaX := -OwnerListview.CellSizes.List.Width; + SB_PAGEDOWN: DeltaX := OwnerListview.CellSizes.List.Width; + SB_PAGEUP: DeltaX := -OwnerListview.CellSizes.List.Width; + SB_THUMBPOSITION: + begin + DeltaX := Info.nPos - OffsetX; + DeltaX := (DeltaX - (DeltaX mod OwnerListview.CellSizes.List.Width)); + end; + SB_THUMBTRACK: + begin + DeltaX := Info.nTrackPos - OffsetX; + if ((MaxOffsetX - Info.nTrackPos) < OwnerListview.CellSizes.List.Width) then + DeltaX := MaxOffsetX + else + DeltaX := (DeltaX - (DeltaX mod OwnerListview.CellSizes.List.Width)); + end; + + SB_TOP: DeltaX := -(ViewRect.Right - ViewRect.Left) - OffsetX; + end // case + end else + begin + case Msg.ScrollCode of + SB_BOTTOM: DeltaX := (ViewRect.Right - ViewRect.Left) - OffsetX; + SB_ENDSCROLL: DeltaX := 0; + SB_LINEDOWN: DeltaX := Line; + SB_LINEUP: DeltaX := -Line; + SB_PAGEDOWN: DeltaX := ClientR.Right - ClientR.Left; + SB_PAGEUP: DeltaX := -(ClientR.Right - ClientR.Left); + SB_THUMBPOSITION: DeltaX := Info.nTrackPos - OffsetX; + SB_THUMBTRACK: DeltaX := Info.nTrackPos - OffsetX; + SB_TOP: DeltaX := -OffsetY + end; + end; + Scroll(DeltaX, 0); + end else + OffsetX := 0 +end; + +procedure TEasyScrollbarManager.WMKeyDown(var Msg: TWMKeyDown); +// Call from the WM_KEYDOWN message of the owner window to check for keys that +// are related to scrolling the window +var + NewMsg: TWMScroll; + SkipScroll: Boolean; +begin + FillChar(NewMsg, SizeOf(NewMsg), #0); + SkipScroll := False; + case Msg.CharCode of + VK_HOME: NewMsg.ScrollCode := SB_TOP; + VK_END: NewMsg.ScrollCode := SB_BOTTOM; + VK_NEXT: NewMsg.ScrollCode := SB_PAGEDOWN; + VK_PRIOR: NewMsg.ScrollCode := SB_PAGEUP; + VK_UP: NewMsg.ScrollCode := SB_LINEUP; + VK_DOWN: NewMsg.ScrollCode := SB_LINEDOWN; + VK_LEFT: NewMsg.ScrollCode := SB_LINEUP; + VK_RIGHT: NewMsg.ScrollCode := SB_LINEDOWN; + else + SkipScroll := True; + end; + if not SkipScroll then + begin + if Msg.CharCode in [VK_LEFT, VK_RIGHT] then + WMHScroll(NewMsg) + else + WMVScroll(NewMsg) + end +end; + +procedure TEasyScrollbarManager.WMVScroll(var Msg: TWMVScroll); +// Call from the WM_VSCROLL message of the owner window to implement the scroll +var + Info: TScrollInfo; + ClientR: TRect; + DeltaY: Integer; +begin + if Assigned(OwnerListview) then + begin + DeltaY := 0; + // Get the 32 Bit Position + FillChar(Info, SizeOf(Info), #0); + Info.cbSize := SizeOf(Info); + Info.fMask := SIF_TRACKPOS; + GetScrollInfo(OwnerListview.Handle, SB_VERT, Info); + ClientR := OwnerListview.ClientRect; + case Msg.ScrollCode of + SB_BOTTOM: DeltaY := (ViewRect.Bottom - ViewRect.Top) - OffsetY; + SB_ENDSCROLL: DeltaY := 0; + SB_LINEDOWN: DeltaY := Line; + SB_LINEUP: DeltaY := -Line; + SB_PAGEDOWN: DeltaY := (ClientR.Bottom - ClientR.Top); + SB_PAGEUP: DeltaY := -(ClientR.Bottom - ClientR.Top); + SB_THUMBPOSITION: DeltaY := Info.nTrackPos - OffsetY; + SB_THUMBTRACK: DeltaY := Info.nTrackPos - OffsetY; + SB_TOP: DeltaY := -OffsetY; + end; + Scroll(0, DeltaY); + end else + OffsetY := 0 +end; + +procedure TEasyScrollbarManager.Scroll(DeltaX, DeltaY: Integer); +var + OldOffsetX, OldOffsetY: Integer; +begin + OldOffsetY := OffsetY; + OldOffsetX := OffsetX; + + FOffsetX := OffsetX + DeltaX; + FOffsetY := OffsetY + DeltaY; + + ValidateOffsets(FOffsetX, FOffsetY); + + if (OffsetX <> OldOffsetX) or (OffsetY <> OldOffsetY) then + begin + ReCalculateScrollbars(True, True); + OwnerListview.DoScroll(OldOffsetX - FOffsetX, OldOffsetY - FOffsetY); + OwnerListview.SafeInvalidateRect(nil, False); + end +end; + +{ TEasyBackgroundManager } + +procedure TEasyBackgroundManager.Assign(Source: TPersistent); +var + ASource: TEasyBackgroundManager; +begin + if Source is TEasyBackgroundManager then + begin + ASource := TEasyBackgroundManager(Source); + Image.Assign(ASource.Image); + FEnabled := ASource.Enabled; + FOffsetX := ASource.OffsetX; + FOffsetY := ASource.OffsetY; + FTile := ASource.Tile; + end +end; + +procedure TEasyBackgroundManager.AssignTo(Target: TPersistent); +var + ATarget: TEasyBackgroundManager; +begin + if Target is TEasyBackgroundManager then + begin + ATarget := TEasyBackgroundManager(Target); + ATarget.Image.Assign(Image); + ATarget.FEnabled := Enabled; + ATarget.FOffsetX := OffsetX; + ATarget.FOffsetY := OffsetY; + ATarget.FTile := Tile; + end +end; + +procedure TEasyBackgroundManager.ChangeBitmapBits(Sender: TObject); +begin + Image.PixelFormat := pf32Bit; + AlphaImage.PixelFormat := pf32Bit; + OwnerListview.SafeInvalidateRect(nil, False); +end; + +constructor TEasyBackgroundManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FImage := TBitmap.Create; + FImage.PixelFormat := pf32Bit; + FImage.OnChange := ChangeBitmapBits; + FAlphaImage := TBitmap.Create; + FAlphaImage.PixelFormat := pf32Bit; + FAlphaImage.OnChange := ChangeBitmapBits; + FTile := True; + FOffsetX := 0; + FOffsetY := 0; + FBlendMode := cbmConstantAlphaAndColor; + FBlendAlpha := 128; + FAlphaBlend := False; + FCaptionAlignment := taCenter; + FCaptionVAlignment := cvaCenter; + FCaptionSingleLine := True; + FCaptionShowOnlyWhenEmpty := True; + FAlphaBlender := TEasyAlphaBlender.Create; +end; + +destructor TEasyBackgroundManager.Destroy; +begin + FImage.OnChange := nil; + FreeAndNil(FImage); + FreeAndNil(FAlphaImage); + FreeAndNil(FAlphaBlender); + inherited; +end; + +procedure TEasyBackgroundManager.PaintTo(ACanvas: TCanvas; ARect: TRect; PaintDefault: Boolean); +var + Row, Column, X, Y: Integer; + BkGndR, TempR: TRect; + OldOrigin: TPoint; + Bitmap: TBitmap; + DrawTextFlags: TCommonDrawTextWFlags; + ShowCaption, DoDefault: Boolean; +begin + DoDefault := True; + OwnerListview.DoPaintBkGnd(ACanvas, ARect, AlphaBlender, DoDefault); + if DoDefault then + begin + if Assigned(Image) and not Image.Empty and Enabled then + begin + ACanvas.Brush.Color := OwnerListview.Color; + ACanvas.FillRect(ARect); + if AlphaBlend and HasMMX then + begin + Bitmap := TBitmap.Create; + Bitmap.Width := Image.Width; + Bitmap.Height := Image.Height; + Bitmap.PixelFormat := pf32Bit; + Bitmap.Assign(Image); + + if BlendMode = cbmConstantAlphaAndColor then + MPCommonUtilities.AlphaBlend(0, Bitmap.Canvas.Handle, + Rect(0, 0, Bitmap.Width, Bitmap.Height), Point(0, 0), + BlendMode, BlendAlpha, ColorToRGB(OwnerListview.Color)) + else + if (Image.Width = AlphaImage.Width) and (Image.Height = AlphaImage.Height) + then + // AlphaBlend it with the background bitmap + MPCommonUtilities.AlphaBlend(AlphaImage.Canvas.Handle, Bitmap.Canvas.Handle, + Rect(0, 0, Bitmap.Width, Bitmap.Height), Point(0, 0), + BlendMode, BlendAlpha, ColorToRGB(OwnerListview.Color)); + end else + Bitmap := Image; + + Bitmap.Canvas.Lock; + try + // Needed to make IntersectRect work correctly. + InflateRect(ARect, Bitmap.Width, Bitmap.Height); + if Tile then + begin + // Need to keep BitBlt from needing negative numbers. It will not work with them + X := OffsetX mod Bitmap.Width; + if OffsetX > 0 then + X := -(Bitmap.Width - X); + Y := OffsetY mod Bitmap.Height; + if OffsetY > 0 then + Y := -(Bitmap.Height - Y); + + SetViewportOrgEx(ACanvas.Handle, X, Y, @OldOrigin); + try + BkGndR := Rect(0, 0, Bitmap.Width, Bitmap.Height); + for Row := 0 to (OwnerListview.ClientHeight div Bitmap.Height + 1) do + begin + for Column := 0 to (OwnerListview.ClientWidth div Bitmap.Width + 1) do + begin + if IntersectRect(TempR, ARect, BkGndR) then + begin + if Transparent then + ACanvas.Draw(BkGndR.Left, BkGndR.Top, Bitmap) + else + BitBlt(ACanvas.Handle, BkGndR.Left, BkGndR.Top, BkGndR.Right, BkGndR.Bottom, + Bitmap.Canvas.Handle, 0, 0, SRCCOPY) + end; + OffsetRect(BkGndR, Bitmap.Width, 0); + end; + OffsetRect(BkGndR, -BkGndR.Left, Bitmap.Height); + end; + finally + SetViewportOrgEx(ACanvas.Handle, OldOrigin.X, OldOrigin.Y, nil); + InflateRect(ARect, -Bitmap.Width, -Bitmap.Height); + end + end else + begin + SetViewportOrgEx(ACanvas.Handle, OffsetX, OffsetY, @OldOrigin); + BkGndR := Rect(0, 0, Bitmap.Width, Bitmap.Height); + if Transparent then + ACanvas.Draw(BkGndR.Left, BkGndR.Top, Bitmap) + else + BitBlt(ACanvas.Handle, BkGndR.Left, BkGndR.Top, BkGndR.Right, BkGndR.Bottom, + Bitmap.Canvas.Handle, 0, 0, SRCCOPY); + SetViewportOrgEx(ACanvas.Handle, OldOrigin.X, OldOrigin.Y, nil); + end + finally + Bitmap.Canvas.UnLock; + if AlphaBlend then + Bitmap.Free + end + end else + if PaintDefault then + begin + ACanvas.Brush.Color := OwnerListview.Color; + ACanvas.FillRect(ARect); + end; + if CaptionShow then + begin + if CaptionShowOnlyWhenEmpty then + ShowCaption := (OwnerListview.Groups.ItemCount = 0) and (Caption <> '') + else + ShowCaption := Caption <> ''; + + if ShowCaption then + begin + BkGndR := OwnerListview.ClientRect; + if IntersectRect(TempR, ARect, BkGndR) then + begin + InflateRect(BkGndR, -8, -8); + ACanvas.Font.Assign(OwnerListview.Font); + ACanvas.Brush.Style := bsClear; + + DrawTextFlags := [dtEndEllipsis]; + case CaptionAlignment of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + case CaptionVAlignment of + cvaTop: Include(DrawTextFlags, dtTop); + cvaBottom: Include(DrawTextFlags, dtBottom); + cvaCenter: Include(DrawTextFlags, dtVCenter); + end; + + if CaptionSingleLine then + Include(DrawTextFlags, dtSingleLine); + + DrawTextWEx(ACanvas.Handle, Caption, BkGndR, DrawTextFlags, -1); + end + end + end + end +end; + +procedure TEasyBackgroundManager.SetAlphaBlend(const Value: Boolean); +begin + if FAlphaBlend <> Value then + begin + FAlphaBlend := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetAlphaImage(const Value: TBitmap); +begin + FAlphaImage.Assign(Value); + OwnerListview.SafeInvalidateRect(nil, False) +end; + +procedure TEasyBackgroundManager.SetBlendAlpha(const Value: Integer); +begin + if FBlendAlpha <> Value then + begin + FBlendAlpha := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCaption(const Value: WideString); +begin + if FCaption <> Value then + begin + FCaption := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCaptionAlignment(const Value: TAlignment); +begin + if FCaptionAlignment <> Value then + begin + FCaptionAlignment := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCaptionShow(const Value: Boolean); +begin + if FCaptionShow <> Value then + begin + FCaptionShow := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCaptionShowOnlyWhenEmpty(const Value: Boolean); +begin + if FCaptionShowOnlyWhenEmpty <> Value then + begin + FCaptionShowOnlyWhenEmpty := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCaptionSingleLine(const Value: Boolean); +begin + if FCaptionSingleLine <> Value then + begin + FCaptionSingleLine := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCaptionVAlignment(const Value: TCommonVAlignment); +begin + if FCaptionVAlignment <> Value then + begin + FCaptionVAlignment := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetCommonBlendMode(const Value: TCommonBlendMode); +begin + if FBlendMode <> Value then + begin + FBlendMode := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetEnabled(const Value: Boolean); +begin + if FEnabled <> Value then + begin + FEnabled := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetImage(const Value: TBitmap); +begin + FImage.Assign(Value); + OwnerListview.SafeInvalidateRect(nil, False) +end; + +procedure TEasyBackgroundManager.SetOffsetX(const Value: Integer); +begin + if FOffsetX <> Value then + begin + FOffsetX := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetOffsetY(const Value: Integer); +begin + if FOffsetY <> Value then + begin + FOffsetY := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetTile(const Value: Boolean); +begin + if FTile <> Value then + begin + FTile := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyBackgroundManager.SetTransparent(const Value: Boolean); +begin + if FTransparent <> Value then + begin + FTransparent := Value; + OwnerListview.SafeInvalidateRect(nil, False); + Image.Transparent := Value; + Image.TransparentMode := tmAuto; + end +end; + +procedure TEasyBackgroundManager.WMWindowPosChanging(var Msg: TWMWindowPosChanging); +begin + if OffsetTrack then + begin + // If SWP_NOSIZE is in the flags then the cx, cy params can be garbage + if Msg.WindowPos.flags and SWP_NOSIZE = 0 then + begin + FOffsetX := FOffsetX + (Msg.WindowPos.cx - OwnerListview.Width); + FOffsetY := FOffsetY + (Msg.WindowPos.cy - OwnerListview.Height); + end + end +end; + +function TEasyDropTargetManager.DragEnter(const dataObj: IDataObject; + grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult; +var + Effect: TCommonDropEffect; + Effects: TCommonDropEffects; + Keys: TCommonKeyStates; + StgMedium: TStgMedium; +begin + if Assigned(DropTargetHelper) then + DropTargetHelper.DragEnter(Owner.Handle, dataObj, Pt, dwEffect); + + if Owner.DragManager.Enabled then + begin + Keys := KeyToKeyStates(grfKeyState); + Effects := DropEffectToDropEffectStates(dwEffect); + + // Get the "Windows Style" effect with the key modifiers + Effect := KeyStateToDropEffect(Keys); + + Owner.DoOLEDropTargetDragEnter(dataObj, KeyToKeyStates(grfKeyState), pt, DropEffectToDropEffectStates(dwEffect), Effect); + + // Decide if this is a Header Drag and Drop or an Item Drag and Drop + // Note that if we use a Windows supplied IDataObject it will return TRUE for QueryGetData + // so we must really try to get the data to be sure + if Succeeded(dataObj.GetData(HeaderClipFormat, StgMedium)) then + DragManager := Owner.Header.DragManager + else + DragManager := Owner.DragManager; + + if Assigned(DragManager) then + DragManager.DragEnter(dataObj, nil, Owner.ScreenToClient(pt), Keys, Effect); + + dwEffect := DropEffectStateToDropEffect(Effect); + end else + dwEffect := DROPEFFECT_NONE; + Result := S_OK; +end; + +function TEasyDropTargetManager.DragLeave: HResult; +begin + if Assigned(DropTargetHelper) then + DropTargetHelper.DragLeave; + + Owner.DoOLEDropTargetDragLeave; + + // Just pass some dummy parameters as they are not important for OLE drag drop + if Assigned(DragManager) then + DragManager.DragEnd(nil, Point(0, 0), []); + + Result := S_OK +end; + +function TEasyDropTargetManager.DragOver(grfKeyState: Integer; pt: TPoint; + var dwEffect: Integer): HResult; +var + Effect: TCommonDropEffect; + Effects: TCommonDropEffects; + Keys: TCommonKeyStates; +begin + if Assigned(DropTargetHelper) then + DropTargetHelper.DragOver(Pt, dwEffect); + + if Owner.DragManager.Enabled then + begin + Keys := KeyToKeyStates(grfKeyState); + Effects := DropEffectToDropEffectStates(dwEffect); + + // Get the "Windows Style" effect with the key modifiers + Effect := KeyStateToDropEffect(Keys); + Owner.DoOLEDropTargetDragOver(KeyToKeyStates(grfKeyState), pt, Effects, Effect); + + if Assigned(DragManager) then + DragManager.Drag(nil, Owner.ScreenToClient(pt), Keys, Effect); + + dwEffect := DropEffectStateToDropEffect(Effect); + end else + dwEffect := DROPEFFECT_NONE; + Result := S_OK +end; + +function TEasyDropTargetManager.Drop(const dataObj: IDataObject; + grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult; +var + Effect: TCommonDropEffect; + Effects: TCommonDropEffects; + Keys: TCommonKeyStates; + Handled: Boolean; +begin + if Assigned(DropTargetHelper) then + DropTargetHelper.Drop(dataObj, Pt, dwEffect); + + Keys := KeyToKeyStates(grfKeyState); + Effects := DropEffectToDropEffectStates(dwEffect); + + // Get the "Windows Style" effect with the key modifiers + Effect := KeyStateToDropEffect(Keys); + Handled := False; + Owner.DoOLEDropTargetDragDrop(dataObj, KeyToKeyStates(grfKeyState), pt, DropEffectToDropEffectStates(dwEffect), Effect, Handled); + + if Assigned(DragManager) and not Handled then + DragManager.DragDrop(Owner.ScreenToClient(pt), Keys, Effect); + + dwEffect := DropEffectStateToDropEffect(Effect); + Result := S_OK +end; + +function TEasyDropTargetManager.GetDropTargetHelper: IDropTargetHelper; +begin + if not Assigned(FDropTargetHelper) and IsWin2000 then + if CoCreateInstance(CLSID_DragDropHelper, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IID_IDropTargetHelper, FDropTargetHelper) <> S_OK then + FDropTargetHelper := nil; + Result := FDropTargetHelper +end; + +{ TEasyDropSourceManager } + +function TEasyDropSourceManager.GiveFeedback(dwEffect: Integer): HResult; +var + UseDefaultCursors: Boolean; +begin + Result := DRAGDROP_S_USEDEFAULTCURSORS; + UseDefaultCursors := True; + Owner.DoOLEDropSourceGiveFeedback(DropEffectToDropEffectStates(dwEffect), UseDefaultCursors); + // The application has set the cursor style + if not UseDefaultCursors then + Result := S_OK +end; + +function TEasyDropSourceManager.QueryContinueDrag(fEscapePressed: BOOL; + grfKeyState: Integer): HResult; +var + QueryResult: TEasyQueryDragResult; + KeyStates: TCommonKeyStates; +begin + KeyStates := KeyToKeyStates(grfKeyState); + if fEscapePressed then + QueryResult := eqdrQuit + else begin + if cksButton in KeyStates then + QueryResult := eqdrContinue + else + QueryResult := eqdrQuit + end; + + // If no buttons are down anymore then the user dropped the objects + if not(cksButton in KeyStates) then + QueryResult := eqdrDrop; + + // Allow the application to modify if desired + Owner.DoOLEDropSourceQueryContineDrag(fEscapePressed, KeyStates, QueryResult); + if QueryResult = eqdrQuit then + Result := DRAGDROP_S_CANCEL + else + if QueryResult = eqdrContinue then + Result := S_OK + else + if QueryResult = eqdrDrop then + Result := DRAGDROP_S_DROP + else + Result := E_UNEXPECTED +end; + +function TCustomEasyDragManagerBase.DoPtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; +begin + Result := False; +end; + +function TCustomEasyDragManagerBase.DoPtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; +begin + Result := False; +end; + +{ TEasyBaseDragManager } + +procedure TCustomEasyDragManagerBase.AutoScrollWindow; +// This is called to autoscroll the window +var + Pt: TPoint; +begin + if Assigned(OwnerListview.Scrollbars) and OwnerListview.HandleAllocated then + begin + // Only scroll after an initial delay is met. This is defined as the mouse + // is in constantly the autoscroll area for AutoScrollDelay time + if AutoScrollDelayMet then + begin + // It is just easier to grab the mouse position on the screen to do the + // autoscroll for various operation (drag drop, drag select, etc.) + Pt := OwnerListview.ScreenToClient(Mouse.CursorPos); + + if PtInAutoScrollUpRegion(Pt) then + DoAutoScroll(0, -(ScrollDeltaUp(Pt) * AutoScrollAccelerator)) + else + if PtInAutoScrollDownRegion(Pt) then + DoAutoScroll(0, ScrollDeltaDown(Pt) * AutoScrollAccelerator); + + if OwnerListview.Scrollbars.SnapHorzView then + begin + if PtInAutoScrollLeftRegion(Pt) then + DoAutoScroll(-(OwnerListview.CellSizes.List.Width), 0) + else + if PtInAutoScrollRightRegion(Pt) then + DoAutoScroll(OwnerListview.CellSizes.List.Width, 0) + end else + begin + if PtInAutoScrollLeftRegion(Pt) then + DoAutoScroll(-(ScrollDeltaLeft(Pt) * AutoScrollAccelerator), 0) + else + if PtInAutoScrollRightRegion(Pt) then + DoAutoScroll(ScrollDeltaRight(Pt) * AutoScrollAccelerator, 0) + end + end + end; +end; + +procedure TCustomEasyDragManagerBase.BeginDrag(WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + DoDragBegin(WindowPoint, KeyState); +end; + +constructor TCustomEasyDragManagerBase.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FAutoScrollDelay := _AUTOSCROLLDELAY; + FAutoScrollTime := _AUTOSCROLLTIME; + FAutoScroll := True; + FAutoScrollAccelerator := 2; + FAutoScrollMargin := 15; + FMouseButton := [cmbLeft]; +end; + +destructor TCustomEasyDragManagerBase.Destroy; +begin + inherited; +end; + +procedure TCustomEasyDragManagerBase.DoAfterAutoScroll; +begin + +end; + +procedure TCustomEasyDragManagerBase.DoAutoScroll(DeltaX, DeltaY: Integer); +var + Msg: TWMMouse; +// Usually called from AutoScrollWindow which calcualate how to do the scroll. +begin + // Need to flag the controls paint method to not worry about the selection + // rect as we take care of it in the auto scroll + DoBeforeAutoScroll; + Include(FDragState, edmsAutoScrolling); + OwnerListview.Scrollbars.Scroll(DeltaX, DeltaY); + UpdateAfterAutoScroll; + // Need to fake a mouse move to update any drag selection after a scroll + Msg.Pos := PointToSmallPoint( OwnerListview.ScreenToClient(Mouse.CursorPos)); + Msg.Keys := 0; + Msg.Msg := WM_MOUSEMOVE; + OwnerListview.WMMouseMove(Msg); + Exclude(FDragState, edmsAutoScrolling); + DoAfterAutoScroll; +end; + +procedure TCustomEasyDragManagerBase.DoBeforeAutoScroll; +begin + +end; + +procedure TCustomEasyDragManagerBase.DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoDragBegin(WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoDragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoEnable(Enable: Boolean); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoGetDragImage(Bitmap: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoOLEDragEnd(const ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); +begin + +end; + +procedure TCustomEasyDragManagerBase.DoOLEDragStart(const ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); +begin + +end; + +function TCustomEasyDragManagerBase.DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; +begin + Result := False +end; + +function TCustomEasyDragManagerBase.DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; +begin + Result := False +end; + +procedure TCustomEasyDragManagerBase.Drag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + // Watch for an auto scroll + if AutoScroll then + begin + // If the mouse is not in the window start the timer and prepare for autoscroll + // If is then reset the flags and wait for the next time the mouse leaves the window + if PtInAutoScrollRegion(WindowPoint) then + Timer.Enabled := True + else begin + FAutoScrollDelayMet := False; + Timer.Enabled := False + end; + end; + LastKeyState := KeyState; + DoDrag(Canvas, WindowPoint, KeyState, Effects) +end; + +procedure TCustomEasyDragManagerBase.DragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + FreeAndNil(FTimer); + LastKeyState := []; + Exclude(FDragState, edmsDragging); + DoDragDrop(WindowPoint, KeyState, Effects); + DataObject := nil; +end; + +procedure TCustomEasyDragManagerBase.DragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + FreeAndNil(FTimer); + LastKeyState := []; + Exclude(FDragState, edmsDragging); + DoDragEnd(Canvas, WindowPoint, KeyState); + DataObject := nil; +end; + +procedure TCustomEasyDragManagerBase.DragEnter(const ADataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + Include(FDragState, edmsDragging); + DataObject := ADataObject; + Timer.Enabled := False; + Timer.OnTimer := HandleTimer; + Timer.Interval := AutoScrollDelay; + FAutoScrollDelayMet := False; + DoDragEnter(ADataObject, Canvas, WindowPoint, KeyState, Effects) +end; + +function TCustomEasyDragManagerBase.GetAutoScrolling: Boolean; +begin + Result := edmsAutoScrolling in DragState +end; + +function TCustomEasyDragManagerBase.GetDragging: Boolean; +begin + Result := edmsDragging in DragState +end; + +function TCustomEasyDragManagerBase.GetTimer: TTimer; +begin + if not Assigned(FTimer) then + FTimer := TTimer.Create(nil); + Result := FTimer; +end; + +procedure TCustomEasyDragManagerBase.HandleTimer(Sender: TObject); +begin + if AutoScrollDelayMet then + AutoScrollWindow + else begin + FAutoScrollDelayMet := True; + Timer.Interval := AutoScrollTime; + end +end; + +function TCustomEasyDragManagerBase.PtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; +begin + Result := DoPtInAutoScrollDownRegion(WindowPoint) +end; + +function TCustomEasyDragManagerBase.PtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; +begin + Result := DoPtInAutoScrollLeftRegion(WindowPoint) +end; + +function TCustomEasyDragManagerBase.PtInAutoScrollRegion(WindowPoint: TPoint): Boolean; +begin + Result := PtInAutoScrollDownRegion(WindowPoint) or PtInAutoScrollLeftRegion(WindowPoint) or + PtInAutoScrollRightRegion(WindowPoint) or PtInAutoScrollUpRegion(WindowPoint) +end; + +function TCustomEasyDragManagerBase.PtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; +begin + Result := DoPtInAutoScrollRightRegion(WindowPoint) +end; + +function TCustomEasyDragManagerBase.PtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; +begin + Result := DoPtInAutoScrollUpRegion(WindowPoint) +end; + +function TCustomEasyDragManagerBase.ScrollDeltaDown(WindowPoint: TPoint): Integer; +begin + Result := Abs(OwnerListview.ClientHeight - WindowPoint.Y - AutoScrollMargin) +end; + +function TCustomEasyDragManagerBase.ScrollDeltaLeft(WindowPoint: TPoint): Integer; +begin + Result := Abs(WindowPoint.X - AutoScrollMargin) +end; + +function TCustomEasyDragManagerBase.ScrollDeltaRight(WindowPoint: TPoint): Integer; +begin + Result := Abs(OwnerListview.ClientWidth - WindowPoint.X - AutoScrollMargin ) +end; + +function TCustomEasyDragManagerBase.ScrollDeltaUp(WindowPoint: TPoint): Integer; +begin + Result := Abs(WindowPoint.Y - OwnerListview.Header.RuntimeHeight - AutoScrollMargin) +end; + +procedure TCustomEasyDragManagerBase.RegisterOLEDragDrop(DoRegister: Boolean); +begin + if OwnerListview.HandleAllocated then + begin + if DoRegister then + begin + if not (ebcsOLERegistered in OwnerListview.States) then + begin + RegisterDragDrop(OwnerListview.Handle, OwnerListview.DropTarget); + Include(OwnerListview.FStates, ebcsOLERegistered) + end + end else + begin + if ebcsOLERegistered in OwnerListview.States then + begin + RevokeDragDrop(OwnerListview.Handle); + Exclude(OwnerListview.FStates, ebcsOLERegistered) + end + end; + end +end; + +procedure TCustomEasyDragManagerBase.SetEnabled(const Value: Boolean); +begin + if FEnabled <> Value then + begin + DoEnable(Value); + FEnabled := Value; + end +end; + +procedure TCustomEasyDragManagerBase.SetRegistered(Value: Boolean); +begin + if Value <> FRegistered then + begin + RegisterOLEDragDrop(Value); + FRegistered := Value; + end +end; + +procedure TCustomEasyDragManagerBase.UpdateAfterAutoScroll; +begin + +end; + +procedure TCustomEasyDragManagerBase.VCLDragStart; +begin + +end; + +procedure TCustomEasyDragManagerBase.WMKeyDown(var Msg: TWMKeyDown); +begin + case Msg.CharCode of + VK_HOME: DoAutoScroll(-OwnerListview.Scrollbars.OffsetX, -OwnerListview.Scrollbars.OffsetY); + VK_END: DoAutoScroll(OwnerListview.Scrollbars.ViewWidth-OwnerListview.ClientWidth, + OwnerListview.Scrollbars.ViewHeight-OwnerListview.ClientHeight); + VK_NEXT: DoAutoScroll(0, OwnerListview.ClientHeight); + VK_PRIOR: DoAutoScroll(0, -OwnerListview.ClientHeight); + VK_UP: DoAutoScroll(0, -OwnerListview.Scrollbars.Line); + VK_DOWN: DoAutoScroll(0, OwnerListview.Scrollbars.Line); + VK_LEFT: DoAutoScroll(-OwnerListview.Scrollbars.Line, 0); + VK_RIGHT: DoAutoScroll(OwnerListview.Scrollbars.Line, 0); + end; +end; + +constructor TEasyDragRectManager.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FMouseButton := [cmbLeft, cmbRight]; + FEnabled := False; +end; + +destructor TEasyDragRectManager.Destroy; +begin + inherited; +end; + +function TEasyDragRectManager.DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; +begin + Result := (WindowPoint.Y > OwnerListview.ClientHeight - AutoScrollMargin) and + (OwnerListview.Scrollbars.OffsetY < OwnerListview.Scrollbars.MaxOffsetY) +end; + +function TEasyDragRectManager.DoPtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; +begin + Result := (WindowPoint.X < AutoScrollMargin) and (OwnerListview.Scrollbars.OffsetX > 0) +end; + +function TEasyDragRectManager.DoPtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; +begin + Result := (WindowPoint.X > (OwnerListview.ClientWidth - AutoScrollMargin)) and + (OwnerListview.Scrollbars.OffsetX < OwnerListview.Scrollbars.MaxOffsetX) +end; + +function TEasyDragRectManager.DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; +begin + Result := (WindowPoint.Y - OwnerListview.Header.RuntimeHeight < AutoScrollMargin) and (OwnerListview.Scrollbars.OffsetY > 0) +end; + +procedure TEasyDragRectManager.DoAfterAutoScroll; +begin + inherited; +end; + +procedure TEasyDragRectManager.DoAutoScroll(DeltaX, DeltaY: Integer); +// Usually called from AutoScrollWindow which calcualate how to do the scroll. +// This method is usually overridden to perform the scroll in the passed direction +begin + inherited; +end; + +procedure TEasyDragRectManager.DoBeforeAutoScroll; +begin + inherited; + // Keep the Dragpoint in sync with the current view + // Need to map the dragged point to a new point after a scroll + FOldOffsets.X := OwnerListview.Scrollbars.OffsetX; + FOldOffsets.Y := OwnerListview.Scrollbars.OffsetY; +end; + +procedure TEasyDragRectManager.DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +var + ARect: TRect; +begin + // Update the Selection due to this drag + OwnerListview.Selection.DragSelect(KeyState); + + // Get the last rectangle + FPrevRect := SelectionRect; + inherited; + + // Update the drag point + DragPoint := OwnerListview.Scrollbars.MapWindowToView(WindowPoint); + // Map it to the Client window coordinates + ARect := SelRectInWindowCoords; + // Make sure it is confined in the visible window + IntersectRect(ARect, ARect, OwnerListview.ClientRect); + + // May need to update the last rectangle to if the drag rect is getting smaller + UnionRect(ARect, ARect, OwnerListview.Scrollbars.MapViewRectToWindowRect(PrevRect)); + + // Reentrant possibility + if not(edmsAutoScrolling in DragState) then + AutoScrollWindow; + + // Always have to update if the selection rectangle if it gets smaller or full + // update if full row select (leaves white bands at the column interfaces) + if OwnerListview.Selection.FullRowSelect then + OwnerListview.SafeInvalidateRect(nil, True) + else + OwnerListview.SafeInvalidateRect(@ARect, True); + +end; + +procedure TEasyDragRectManager.DoDragBegin(WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + inherited; + FPrevRect := SelectionRect; +end; + +procedure TEasyDragRectManager.DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); +var + ARect: TRect; +begin + // Erase the selection rectangle, mainly for the XOR FocusRect when not DoubleBuffered + inherited; + // Get the last rectangle + ARect := SelRectInWindowCoords; + // Make sure it is confined in the visible window + IntersectRect(ARect, ARect, OwnerListview.ClientRect); + + // Redraw the window + if OwnerListview.Selection.FullRowSelect then + OwnerListview.SafeInvalidateRect(nil, True) + else + OwnerListview.SafeInvalidateRect(@ARect, True); + + AnchorPoint := Point(0, 0); + DragPoint := Point(0, 0); + FPrevRect := Rect(0, 0, 0, 0); +end; + +procedure TEasyDragRectManager.DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + inherited DoDragEnter(DataObject, Canvas, WindowPoint, KeyState, Effects); + FDragPoint := WindowPoint +end; + +procedure TEasyDragRectManager.FinalizeDrag(KeyState: TCommonKeyStates); +// Does not mean the action actually occured it means that InitializeDrag was +// called and this is it matching call. EndDrag means that the drag actually +// occured +begin + +end; + +function TEasyDragRectManager.GetSelectionRect: TRect; +begin + Result := ProperRect(Rect(AnchorPoint.X, AnchorPoint.Y, DragPoint.X, DragPoint.Y)); + if Result.Top = Result.Bottom then // added + Inc(Result.Bottom); + if Result.Left = Result.Right then // added + Inc(Result.Right); +end; + +function TEasyDragRectManager.InitializeDrag(WindowPoint: TPoint; KeyState: TCommonKeyStates): Boolean; +// Does not mean that the action will be a Selection Drag, it just means get +// ready for one just in case. +begin + Result := False; + if Enabled then + begin + if ((cksLButton in KeyState) and (cmbLeft in MouseButton)) or + ((cksMButton in KeyState) and (cmbMiddle in MouseButton)) or + ((cksRButton in KeyState) and (cmbRight in MouseButton)) + then begin + AnchorPoint := OwnerListview.Scrollbars.MapWindowToView(WindowPoint); + DragPoint := AnchorPoint; + Result := True + end + end +end; + +procedure TEasyDragRectManager.PaintRect(Canvas: TCanvas); +// Paints the selection rectangle to the canvas: +// NOTE: DO NOT USE THIS METHOD DIRECTLY use the PaintSelectionRect to draw +// the rectangle +// If not DoubleBuffered it is assumed that the Canvas is a Screen DC else it is +// assumed to be a Bitmap Compatiable Memory DC +var + SelectRect: TRect; +begin + SelectRect.TopLeft := OwnerListview.Scrollbars.MapViewToWindow(AnchorPoint); + SelectRect.BottomRight := OwnerListview.Scrollbars.MapViewToWindow(DragPoint); + SelectRect := ProperRect(SelectRect); + IntersectRect(SelectRect, SelectRect, OwnerListview.ClientRect); + + if (OwnerListview.ViewSupportsHeader) and (OwnerListview.Header.Visible) then + begin + if SelectRect.Top < OwnerListview.Header.Height then + SelectRect.Top := OwnerListview.Header.Height; + end; + + if OwnerListview.Selection.AlphaBlendSelRect and HasMMX then + begin + Canvas.Brush.Color := OwnerListview.Selection.BorderColorSelRect; + MPCommonUtilities.AlphaBlend(0, Canvas.Handle, SelectRect, Point(0, 0), + cbmConstantAlphaAndColor, OwnerListview.Selection.BlendAlphaSelRect, + ColorToRGB(OwnerListview.Selection.BlendColorSelRect)); + Canvas.FrameRect(SelectRect); + end else + begin + Canvas.Font.Assign(OwnerListview.Font); + Canvas.Brush.Color := OwnerListview.Color; + Canvas.Font.Color := clBlack; + DrawFocusRect(Canvas.Handle, SelectRect); + end +end; + +procedure TEasyDragRectManager.PaintSelectionRect(Canvas: TCanvas); + // Causes the Selection Rectangle to be drawn or "erased" (erased is just redrawn + // again in the same place so the XOR mode will clear the rectangle) + // NOTE: Use this method and not the PaintRect method directly +begin + PaintRect(Canvas); +end; + +function TEasyDragRectManager.SelRectInWindowCoords: TRect; +// Gets the selection rectangle in the current Window coordinates then trims off +// the pieces that do not lie in the current window rectangle +begin + Result.TopLeft := OwnerListview.Scrollbars.MapViewToWindow(AnchorPoint); + Result.BottomRight := OwnerListview.Scrollbars.MapViewToWindow(DragPoint); + Result := ProperRect(Result); +end; + +procedure TEasyDragRectManager.SetAnchorPoint(ViewportAnchor: TPoint); +begin + FAnchorPoint := ViewportAnchor +end; + +procedure TEasyDragRectManager.SetDragPoint(const Value: TPoint); +begin + FDragPoint := Value +end; + +procedure TEasyDragRectManager.UpdateAfterAutoScroll; +begin + inherited UpdateAfterAutoScroll; + // Keep the Dragpoint in sync with the current view + // Need to map the dragged point to a new point after a scroll + FDragPoint.X := DragPoint.X + (OwnerListview.Scrollbars.OffsetX - OldOffsets.X); + FDragPoint.Y := DragPoint.Y + (OwnerListview.Scrollbars.OffsetY - OldOffsets.Y); +end; + +procedure TEasyDragRectManager.WMKeyDown(var Msg: TWMKeyDown); +begin + inherited; +end; + +{ TCustomEasyListview } +constructor TCustomEasyListview.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FGesture := TEasyGestureManager.Create(Self); + NCCanvas := TCanvas.Create; + FGroupFont := TFont.Create; + FPaintInfoGroup := CreateGroupPaintInfo; + FPaintInfoItem := CreateItemPaintInfo; + FPaintInfoColumn := CreateColumnPaintInfo; + PaintInfoGroup.FMarginBottom.FPaintInfo := TEasyPaintInfoGroup.Create(Self); + FHotTrack := TEasyHotTrackManager.Create(Self); + Canvas.Control := Self; + ParentColor := False; + Brush.Color := clWindow; + Color := clWindow; + BevelInner := bvLowered; + BevelKind := bkTile; + ControlStyle := ControlStyle - [csCaptureMouse, csOpaque, csAcceptsControls]; // We will do this ourselves + FBackGround := TEasyBackgroundManager.Create(Self); + FScrollbars := TEasyScrollbarManager.Create(Self); + FDropTarget := TEasyDropTargetManager.Create(Self); + FDragRect := TEasyDragRectManager.Create(Self); + FDragManager := TEasyOLEDragManager.Create(Self); + FCheckManager := TEasyCheckManager.Create(Self); + FSelection := TEasySelectionManager.Create(Self); + FGroups := CreateGroups; + FHeader := TEasyHeader.Create(Self); + FEditManager := TEasyEditManager.Create(Self); + FGlobalImages := TEasyGlobalImageManager.Create(Self); + HintInfo := TEasyHintInfo.Create(Self); + FCellSizes := TEasyCellSizes.Create(Self); + FSort := TEasySortManager.Create(Self); + TabStop := True; + FWheelMouseDefaultScroll := edwsVert; + FWheelMouseScrollModifierEnabled := True; + FGroupCollapseButton := TBitmap.Create; + FGroupExpandButton := TBitmap.Create; + FItems := TEasyGlobalItems.Create(Self); + FShowGroupMargins := False; + FShowThemedBorder := True; + DisabledBlendAlpha := 128; + DisabledBlendColor := clWindow; + FIncrementalSearch := TEasyIncrementalSearchManager.Create(Self); + FScratchCanvas := TControlCanvas.Create; + FScratchCanvas.Control := Self; + {$IFNDEF COMPILER_6_UP} + Width := 100; + Height := 200; + {$ENDIF COMPILER_6_UP} + if IsUnicode then + begin +// GroupFont.Name := 'MS Shell Dlg 2'; + // Font.Name := 'MS Shell Dlg 2'; + // Header.Font.Name := 'MS Shell Dlg 2'; + end +end; + +destructor TCustomEasyListview.Destroy; +begin + Groups.Clear; // Clear the items first so there is no chance of trying to draw them after the window is destroyed + Header.Columns.Clear; // Clear the columns first so there is no chance of trying to draw them after the window is destroyed + inherited Destroy; + DropTarget := nil; + // Don't destroy these objects until the Window is destroyed + GroupExpandButton.Canvas.Unlock; + GroupCollapseButton.Canvas.Unlock; + FreeAndNil(FGesture); + FreeAndNil(FItems); + FreeAndNil(FNCCanvas); + FreeAndNil(FGroupExpandButton); + FreeAndNil(FGroupCollapseButton); + FreeAndNil(FBackGround); + FreeAndNil(FBackBits); + FreeAndNil(FScrollbars); + FreeAndNil(FDragRect); + FreeAndNil(FDragManager); + FreeAndNil(FCheckManager); + FreeAndNil(FSelection); + FreeAndNil(FHeader); + FreeAndNil(FEditManager); + FreeAndNil(FGlobalImages); + FreeAndNil(FCellSizes); + {$IFDEF COMPILER_5_UP} + FreeAndNil(FGroupFont); // Bug in D4 + {$ENDIF COMPILER_5_UP} + FreeAndNil(FPaintInfoGroup); + FreeAndNil(FPaintInfoItem); + FreeAndNil(FPaintInfoColumn); + FreeAndNil(FHotTrack); + FreeAndNil(FHintInfo); + FreeAndNil(FSort); + FreeAndNil(FIncrementalSearch); + FreeAndNil(FScratchCanvas); + FreeAndNil(FGroups); // Always make Last +end; + +function TCustomEasyListview.ClickTestGroup(ViewportPoint: TPoint; + KeyStates: TCommonKeyStates; var HitInfo: TEasyGroupHitTestInfoSet): TEasyGroup; +// +// Handles any default behavior of clicking on a group and returns true if the +// click was on a group object +// +begin + HitInfo := []; + Result := Groups.GroupByPoint(ViewportPoint); + if Assigned(Result) then + Result.HitTestAt(ViewportPoint, HitInfo); +end; + +function TCustomEasyListview.ClickTestItem(ViewportPoint: TPoint; + Group: TEasyGroup; KeyStates: TCommonKeyStates; + var HitInfo: TEasyItemHitTestInfoSet): TEasyItem; +begin + Result := nil; + HitInfo := []; + + if not Assigned(Group) then + Group := Groups.GroupByPoint(ViewportPoint); + if Assigned(Group) then + Result := Group.ItembyPoint(ViewportPoint); + // Result := Groups.ItcmbyPoint(ViewportPoint); + + if Assigned(Result) then + Result.HitTestAt(ViewportPoint, HitInfo); +end; + +function TCustomEasyListview.ClientInViewportCoords: TRect; +begin + Result := ClientRect; + Result.Top := Result.Top + Header.RuntimeHeight; + Result := Scrollbars.MapWindowRectToViewRect(Result) +end; + +function TCustomEasyListview.CreateColumnPaintInfo: TEasyPaintInfoBaseColumn; +begin + Result := TEasyPaintInfoColumn.Create(Self) +end; + +function TCustomEasyListview.CreateGroupPaintInfo: TEasyPaintInfoBaseGroup; +begin + Result := TEasyPaintInfoGroup.Create(Self) +end; + +function TCustomEasyListview.CreateGroups: TEasyGroups; +begin + Result := TEasyGroups.Create(Self); +end; + +function TCustomEasyListview.CreateItemPaintInfo: TEasyPaintInfoBaseItem; +begin + Result := TEasyPaintInfoItem.Create(Self); +end; + +function TCustomEasyListview.DoMouseWheel(Shift: TShiftState; + WheelDelta: Integer; MousePos: TPoint): Boolean; +var + LocalMouseScroll: TEasyDefaultWheelScroll; + uiParam, pvParam: UINT; + IsNeg: Boolean; +begin + IsNeg := WheelDelta < 0; + + uiParam := 0; + pvParam := 3; + + if IsWinNT then + SystemParametersInfo(SPI_GETWHEELSCROLLLINES, uiParam, @pvParam, 0); + + if WheelMouseDefaultScroll = edwsVert then + WheelDelta := Groups.CellHeight * Integer(pvParam) // Sroll down n Cells + else + WheelDelta := Groups.CellWidth {* Integer(pvParam)}; // Scroll sideways is different only one cell + + if IsNeg then + WheelDelta := -WheelDelta; + + Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos); + + LocalMouseScroll := WheelMouseDefaultScroll; + + if WheelMouseScrollModifierEnabled then + begin + if (ssShift in Shift) then + begin + if WheelMouseDefaultScroll = edwsVert then + LocalMouseScroll := edwsHorz + else + LocalMouseScroll := edwsVert + end; + if ssCtrl in Shift then + begin + if LocalMouseScroll = edwsVert then + WheelDelta := ClientHeight - Header.RuntimeHeight + else + WheelDelta := ClientWidth; + if IsNeg then + WheelDelta := -WheelDelta; + end + end; + + if LocalMouseScroll = edwsVert then + Scrollbars.Scroll(0, -WheelDelta) + else + if LocalMouseScroll = edwsHorz then + Scrollbars.Scroll(-WheelDelta, 0); + + if not Result then + Result := True; +end; + +function TCustomEasyListview.DoMouseWheelDown(Shift: TShiftState; + MousePos: TPoint): Boolean; +begin + Result := inherited DoMouseWheelDown(Shift, MousePos); +end; + +function TCustomEasyListview.DoMouseWheelUp(Shift: TShiftState; + MousePos: TPoint): Boolean; +begin + Result := inherited DoMouseWheelUp(Shift, MousePos); +end; + +function TCustomEasyListview.DragInitiated: Boolean; +begin + Result := [ebcsDragSelecting, ebcsDragging, ebcsDragSelectPending, ebcsDragPending] * States <> [] +end; + +function TCustomEasyListview.ExecuteDragDrop(AvailableEffects: TCommonDropEffects; + DataObjectInf: IDataObject; DropSource: IDropSource; var dwEffect: Integer): HRESULT; +begin + Result := ActiveX.DoDragDrop(DataObjectInf, DropSource, DropEffectStatesToDropEffect(AvailableEffects), dwEffect); +end; + +function TCustomEasyListview.GetGroupCollapseImage: TBitmap; +begin + Result := FGroupCollapseButton +end; + +function TCustomEasyListview.GetGroupExpandImage: TBitmap; +begin + Result := FGroupExpandButton +end; + +function TCustomEasyListview.GetHintType: TEasyHintType; +begin + Result := HintInfo.HintType +end; + +function TCustomEasyListview.GetPaintInfoColumn: TEasyPaintInfoBaseColumn; +begin + Result := FPaintInfoColumn; +end; + +function TCustomEasyListview.GetPaintInfoGroup: TEasyPaintInfoBaseGroup; +begin + Result := FPaintInfoGroup; +end; + +function TCustomEasyListview.GetPaintInfoItem: TEasyPaintInfoBaseItem; +begin + Result := FPaintInfoItem; +end; + +function TCustomEasyListview.GetScratchCanvas: TControlCanvas; +begin + if HandleAllocated then + Result := FScratchCanvas + else + Result := nil +end; + +function TCustomEasyListview.GetSortColumn: TEasyColumn; +begin + Result := Selection.FocusedColumn +end; + +function TCustomEasyListview.GetTopItem: TEasyItem; +begin + Result := Groups.FirstItemInRect( Scrollbars.MapWindowRectToViewRect(ClientRect, False)) +end; + +function TCustomEasyListview.GroupTestExpand(HitInfo: TEasyGroupHitTestInfoSet): Boolean; +begin + Result := egtOnExpandButton in HitInfo +end; + +function TCustomEasyListview.IsFontStored: Boolean; +begin + Result := not ParentFont and not DesktopFont; +end; + +function TCustomEasyListview.IsHeaderMouseMsg(MousePos: TSmallPoint; ForceTest: Boolean = False): Boolean; +var + R: TRect; +begin + Result := False; + if not (DragRect.Dragging or DragManager.Dragging or Header.DragManager.Dragging) or ForceTest then + begin + R := Header.DisplayRect; + R.Bottom := Header.RuntimeHeight; + Result := (ViewSupportsHeader and PtInRect(R, SmallPointToPoint(MousePos))) or + (ebcsHeaderCapture in States) or Assigned(Header.HotTrackedColumn) + end +end; + +function TCustomEasyListview.IsThumbnailView: Boolean; +begin + Result := View in THUMBNAILVIEWS +end; + +function TCustomEasyListview.IsVertView: Boolean; +begin + Result := View in VERTICALVIEWS +end; + +function TCustomEasyListview.ScrollHeaderHorz: Boolean; +begin + Result := not (Header.ShowInAllViews and (View = elsList)) +end; + +function TCustomEasyListview.ToolTipNeeded(TargetObj: TEasyCollectionItem; + var TipCaption: WideString): Boolean; +// Calcuates if the text is being truncated in the current view of the object +// If so the result is true. +var + TextFlags: TCommonDrawTextWFlags; + RectArray: TEasyRectArrayObject; + R: TRect; + LineCount: Integer; + Item: TEasyItem; +begin + Result := False; + TipCaption := ''; + if TargetObj is TEasyItem then + begin + Item := TEasyItem( TargetObj); + if not Item.Focused then + begin + Item.ItemRectArray(nil, Canvas, RectArray); + TextFlags := [dtLeft, dtCalcRect, dtCalcRectAdjR]; + + R := RectArray.LabelRect; + LineCount := Item.View.PaintTextLineCount(Item, nil); + Item.View.LoadTextFont(Item, 0, Canvas, False); + DrawTextWEx(Canvas.Handle, Item.Caption, R, TextFlags, LineCount); + + + if (RectWidth(RectArray.TextRect) < RectWidth(R)) or + (RectHeight(RectArray.TextRect) < RectHeight(R)) then + begin + TipCaption := Item.Caption; + Result := True; + end + end + end +end; + +function TCustomEasyListview.UseInternalDragImage: Boolean; +begin + Result := True +end; + +function TCustomEasyListview.ViewSupportsHeader: Boolean; +begin + Result := (View in HEADERSUPPORTEDVIEWS) or Header.ShowInAllViews +end; + +procedure TCustomEasyListview.AutoFitAllCells(VisibleOnly: Boolean); +var + i: Integer; +begin + case View of + elsReport: + begin + BeginUpdate; + try + for i := 0 to Header.Columns.Count - 1 do + begin + if VisibleOnly then + begin + if Header.Columns[i].Visible then + Header.Columns[i].AutoSizeToFit + end else + Header.Columns[i].AutoSizeToFit + end + finally + EndUpdate + end + end; + elsSmallIcon: + begin + BeginUpdate; + try + CellSizes.SmallIcon.AutoSize := True; + finally + EndUpdate + end + end; + elsList: + begin + BeginUpdate; + try + CellSizes.List.AutoSize := True; + finally + EndUpdate + end + end; + elsGrid: + begin + BeginUpdate; + try + CellSizes.Grid.AutoSize := True; + finally + EndUpdate + end + end; + end +end; + +procedure TCustomEasyListview.BeginUpdate; +begin + inherited BeginUpdate; +// Sort.BeginUpdate; +end; + +procedure TCustomEasyListview.CancelCut; +var + Item: TEasyItem; +begin + Item := Groups.FirstItem; + while Assigned(Item) do + begin + Item.Cut := False; + Item := Groups.NextItem(Item) + end +end; + +procedure TCustomEasyListview.CheckFocus; +begin + if not Focused then + begin + if CanFocus and not (csDesigning in ComponentState) and HandleAllocated then + SetFocus; + end; +end; + +procedure TCustomEasyListview.ClearPendingDrags; +begin + States := States - [ebcsDragPending, ebcsDragSelectPending]; + DragManager.ClearDragItem; +end; + +procedure TCustomEasyListview.ClearStates; +begin + Exclude(FStates, ebcsLButtonDown); + Exclude(FStates, ebcsMButtonDown); + Exclude(FStates, ebcsRButtonDown); + Exclude(FStates, ebcsDragSelecting); + Exclude(FStates, ebcsDragSelectPending); + Exclude(FStates, ebcsDragSelecting); + Exclude(FStates, ebcsDragPending); + Exclude(FStates, ebcsDragging); + Exclude(FStates, ebcsScrollButtonDown); + Exclude(FStates, ebcsVCLDrag); + Exclude(FStates, ebcsCheckboxClickPending); + Exclude(FStates, ebcsHeaderCapture); + Exclude(FStates, ebcsGroupExpandPending); + if not Themed then + CheckManager.PendingObject := nil; +end; + +procedure TCustomEasyListview.ClipHeader(ACanvas: TCanvas; ResetClipRgn: Boolean); +var + OldOrg: TPoint; +begin + if ResetClipRgn then + SelectClipRgn(ACanvas.Handle, 0); + if Header.RuntimeHeight > 0 then + begin + SetWindowOrgEx(ACanvas.Handle, 0, 0, @OldOrg); + if ViewSupportsHeader and (Header.Visible) then + ExcludeClipRect(ACanvas.Handle, 0, 0, ClientWidth, Header.RuntimeHeight); + SetWindowOrgEx(ACanvas.Handle, OldOrg.X, OldOrg.Y, nil); + end +end; + +procedure TCustomEasyListview.CMDrag(var Msg: TCMDrag); +// Called during a VCL drag and drop operation +var + Keys: TCommonKeyStates; + P: TPoint; + Effects: TCommonDropEffect; + + {$IFDEF LOG_VCL_CMDRAG} + F: TFileStream; + S: string; + Buffer: array[0..MAX_PATH] of char; + {$ENDIF} +begin + + {$IFDEF LOG_VCL_CMDRAG} + FillChar(Buffer, SizeOf(Buffer), #0); + GetModuleFileName(hInstance, Buffer, MAX_PATH); + S := ExtractFilePath(Buffer) + 'VCL Drag.log'; + try + F := TFileStream.Create(S, fmOpenReadWrite or fmShareExclusive); + except + F := TFileStream.Create(S, fmCreate or fmShareExclusive); + end; + F.Seek(0, soFromEnd); + + case Msg.DragMessage of + dmDragEnter: S := 'dmDragEnter'; + dmDragLeave: S := 'dmDragLeave'; + dmDragMove: S := 'dmDragMove'; + dmDragDrop: S := 'dmDragDrop'; + dmDragCancel: S := 'dmDragCancel'; + dmFindTarget: S := 'dmFindTarget'; + end; + S := S + #13+#10; + F.Write(PChar(S)^, Length(S)); + F.Free; + {$ENDIF} + + Keys := []; + Effects := cdeNone; + case Msg.DragMessage of + dmDragEnter: + begin + DragManager.DragEnter(nil, nil, ScreenToClient(Msg.DragRec^.Pos), Keys, Effects); + inherited; + end; + dmDragLeave: + begin + // The VCL DD stupidly sends a Drag Leave before the Drag Drop. This + // causes problems since I use DragEnd to reset a lot of the DragManagers + // flags. Check if the drop was on this window. If it was skip the + // Drag end and wait for the Drag Drop + GetCursorPos(P); + if WindowFromPoint(P) <> Handle then + begin + DragManager.DragEnd(nil, ScreenToClient(Msg.DragRec^.Pos), Keys); + ClearStates; + end; + inherited; + end; + dmDragMove: + begin + DragManager.Drag(nil, ScreenToClient(Msg.DragRec^.Pos), Keys, Effects); + inherited; + end; + dmDragDrop: + begin + inherited; + DragManager.DragDrop(ScreenToClient(Msg.DragRec^.Pos), Keys, Effects); + ClearStates; + end; + dmDragCancel: + begin + DragManager.DragEnd(nil, ScreenToClient(Msg.DragRec^.Pos), Keys); + inherited; + ClearStates; + end; + else + inherited; + end; +end; + +procedure TCustomEasyListview.CMHintShow(var Message: TCMHintShow); +var + Allow: Boolean; + TargetObj: TEasyCollectionItem; + ItemHitInfo: TEasyItemHitTestInfoSet; + GroupHitInfo: TEasyGroupHitTestInfoSet; + ViewPt: TPoint; +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('CMHintShow'); + {$ENDIF GXDEBUG_HINT} + + ViewPt := Scrollbars.MapWindowToView(Message.HintInfo^.CursorPos); + + // See if we have hit any objects of interest + TargetObj := Groups.ItembyPoint(ViewPt); + if Assigned(TargetObj) then + begin + TEasyItem( TargetObj).HitTestAt(ViewPt, ItemHitInfo); + if not(ehtOnClickselectBounds in ItemHitInfo) then + TargetObj := nil + end; + + if not Assigned(TargetObj) then + begin + TargetObj := Groups.GroupByPoint(ViewPt); + if Assigned(TargetObj) then + TEasyGroup( TargetObj).HitTestAt(ViewPt, GroupHitInfo); + end; + + // Default hint type is Text + FHintData.HintType := HintInfo.HintType; + + FHintData.HintStr := Hint; + FHintData.ReshowTimeout := Message.HintInfo^.ReshowTimeout; + FHintData.HideTimeout := Message.HintInfo^.HideTimeout; + + // Allow the application to modify the HintData + Allow := False; + DoHintPopup(TargetObj, FHintData.HintType, Message.HintInfo^.CursorPos, FHintData.HintStr, FHintData.HideTimeout, FHintData.ReshowTimeout, Allow); + if FHintData.HintStr = '' then + Allow := False; + + Message.HintInfo^.ReshowTimeout := FHintData.ReshowTimeout; + Message.HintInfo^.HideTimeout := FHintData.HideTimeout; + + SetRect(FHintData.ToolTipRect, 0, 0, Screen.Width, 0); + + // If the type is ToolTip then calculate if it is necessary + if (FHintData.HintType = ehtToolTip) then + begin + if TargetObj is TEasyItem then + Allow := ToolTipNeeded(TargetObj, FHintData.HintStr) + else + Allow := False; + end; + + if Allow then + begin + Message.HintInfo.HintWindowClass := TEasyHintWindow; + + // Send our HintData to the Hint Window through the supplied Data parameter + Message.HintInfo.HintData := @FHintData; + if Message.HintInfo.HintStr = '' then + Message.HintInfo.HintStr := 'Dummy'; + + // Area where the tip is defined, once outside the Hint testing will resume + if TargetObj is TEasyItem then + Message.HintInfo^.CursorRect := TargetObj.DisplayRect; + + if TargetObj is TEasyGroup then + begin + if egtOnRightMargin in GroupHitInfo then + Message.HintInfo^.CursorRect := TEasyGroup( TargetObj).BoundsRectRightMargin + else + if egtOnLeftMargin in GroupHitInfo then + Message.HintInfo^.CursorRect := TEasyGroup( TargetObj).BoundsRectLeftMargin + else + if egtOnHeader in GroupHitInfo then + Message.HintInfo^.CursorRect := TEasyGroup( TargetObj).BoundsRectTopMargin + else + if egtOnFooter in GroupHitInfo then + Message.HintInfo^.CursorRect := TEasyGroup( TargetObj).BoundsRectBottomMargin; + end; + + Message.HintInfo^.CursorRect := Scrollbars.MapViewRectToWindowRect(Message.HintInfo^.CursorRect); + + FHintData.Listview := Self; + FHintData.HintControl := Message.HintInfo^.HintControl; + FHintData.HintWindowClass := Message.HintInfo^.HintWindowClass; + FHintData.HintPos := Message.HintInfo^.HintPos; + FHintData.HintMaxWidth := Message.HintInfo^.HintMaxWidth; + FHintData.HintColor := Message.HintInfo^.HintColor; + FHintData.CursorRect := Message.HintInfo^.CursorRect; + FHintData.CursorPos := Message.HintInfo^.CursorPos; + FHintData.HintData := nil; + FHintData.TargetObj := TargetObj; + inherited; + end else + Message.Result := 1; // Message is handled, don't show the hint +end; + +procedure TCustomEasyListview.CMHintShowPause(var Message: TCMHintShow); +var + HintShowing: Boolean; + PauseTime: PInteger; +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('CMHintShowPause'); + {$ENDIF GXDEBUG_HINT} + PauseTime := PInteger(TMessage(Message).LParam); + HintShowing := Boolean( TMessage(Message).wParam); + DoHintShowPause(HintShowing, PauseTime^); + inherited +end; + +procedure TCustomEasyListview.CMMouseWheel(var Msg: TWMMouseWheel); +begin + inherited +end; + +procedure TCustomEasyListview.CMParentFontChanged(var Msg: TMessage); +begin + inherited; + if ParentFont then + begin + if Msg.wParam <> 0 then + begin + GroupFont.Assign(TFont(Msg.lParam)); + Header.Font.Assign(TFont(Msg.lParam)); + end else + begin + GroupFont.Assign(TWinControlCracker(Parent).Font); + Header.Font.Assign(TWinControlCracker(Parent).Font); + end + end +end; + +procedure TCustomEasyListview.CopyToClipboard; +begin + +end; + +procedure TCustomEasyListview.CreateParams(var Params: TCreateParams); +begin + inherited; + Params.WindowClass.Style := Params.WindowClass.Style or CS_DBLCLKS and not (CS_HREDRAW or CS_VREDRAW); + Params.Style := Params.Style or WS_CLIPCHILDREN or WS_CLIPSIBLINGS; + AddBiDiModeExStyle(Params.ExStyle); +end; + +procedure TCustomEasyListview.CreateWnd; +begin + inherited; + DoUpdate; + // The Window Handle is now valid + DragManager.Registered := DragManager.Enabled; + Header.DragManager.Registered := Header.DragManager.Enabled; + ResizeBackBits(ClientWidth, ClientHeight); +end; + +procedure TCustomEasyListview.CutToClipboard; +var + Handled, Mark: Boolean; +begin + Handled := False; + Mark := True; + DoClipboardCut(Handled, Mark); + if Handled and Mark then + MarkSelectedCut +end; + +procedure TCustomEasyListview.DestroyWnd; +begin + inherited; +end; + +procedure TCustomEasyListview.DoAfterPaint(ACanvas: TCanvas; ClipRect: TRect); +begin + if Assigned(OnAfterPaint) then + OnAfterPaint(Self, ACanvas, ClipRect) +end; + +procedure TCustomEasyListview.DoAutoGroupGetKey(Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; var Key: LongWord); +begin + if Assigned(OnAutoGroupGetKey) then + OnAutoGroupGetKey(Self, Item, ColumnIndex, Groups, Key) +end; + +procedure TCustomEasyListview.DoAutoSortGroupCreate(Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; var Group: TEasyGroup; var DoDefaultAction: Boolean); +begin + if Assigned(OnAutoSortGroupCreate) then + OnAutoSortGroupCreate(Self, Item, ColumnIndex, Groups, Group, DoDefaultAction); + if not Assigned(Group) then + Group := Groups.Add +end; + +procedure TCustomEasyListview.DoClipboardCopy(var Handled: Boolean); +begin + if Assigned(OnClipboardCopy) then + OnClipboardCopy(Self, Handled); +end; + +procedure TCustomEasyListview.DoClipboardCut(var MarkAsCut, Handled: Boolean); +begin + if Assigned(OnClipboardCut) then + OnClipboardCut(Self, MarkAsCut, Handled); +end; + +procedure TCustomEasyListview.DoClipboardPaste(var Handled: Boolean); +begin + if Assigned(OnClipboardPaste) then + OnClipboardPaste(Self, Handled); +end; + +procedure TCustomEasyListview.DoColumnCheckChanged(Column: TEasyColumn); +begin + if Assigned(OnColumnCheckChanged) and not (csDestroying in ComponentState) then + OnColumnCheckChanged(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnCheckChanging(Column: TEasyColumn; var Allow: Boolean); +begin + if Assigned(OnColumnCheckChanging) and not (csDestroying in ComponentState) then + OnColumnCheckChanging(Self, Column, Allow) +end; + +procedure TCustomEasyListview.DoColumnClick(Button: TCommonMouseButton; + const Column: TEasyColumn); +begin + if Assigned(OnColumnClick) then + OnColumnClick(Self, Button, Column) +end; + +procedure TCustomEasyListview.DoColumnContextMenu(HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; var Menu: TPopupMenu); +begin + if Assigned(OnColumnContextMenu) then + OnColumnContextMenu(Self, HitInfo, WindowPoint, Menu); +end; + +procedure TCustomEasyListview.DoColumnDblClick(Button: TCommonMouseButton; ShiftState: TShiftState; MousePos: TPoint; Column: TEasyColumn); +begin + if Assigned(OnColumnDblClick) then + OnColumnDblClick(Self, Button, MousePos, Column) +end; + +procedure TCustomEasyListview.DoColumnDropDownButtonClick(Column: TEasyColumn; Button: TCommonMouseButton; ShiftState: TShiftState; MousePos: TPoint; var DoDefault: Boolean); +begin + if Assigned(OnColumnDropDownButtonClick) then + OnColumnDropDownButtonClick(Self, Column, Button, ShiftState, MousePos, DoDefault) +end; + +procedure TCustomEasyListview.DoColumnEnableChanged(Column: TEasyColumn); +begin + if Assigned(OnColumnEnableChanged) and not (csDestroying in ComponentState) then + OnColumnEnableChanged(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnEnableChanging(Column: TEasyColumn; var Allow: Boolean); +begin + if Assigned(OnColumnEnableChanging) and not (csDestroying in ComponentState) then + OnColumnEnableChanging(Self, Column, Allow) +end; + +procedure TCustomEasyListview.DoColumnFocusChanged(Column: TEasyColumn); +begin + if Assigned(OnColumnFocusChanged) and not (csDestroying in ComponentState) then + OnColumnFocusChanged(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnFocusChanging(Column: TEasyColumn; var Allow: Boolean); +begin + if Assigned(OnColumnFocusChanging) and not (csDestroying in ComponentState) then + OnColumnFocusChanging(Self, Column, Allow) +end; + +procedure TCustomEasyListview.DoColumnFreeing(Column: TEasyColumn); +begin + if Assigned(OnColumnFreeing) then + OnColumnFreeing(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnGetCaption(Column: TEasyColumn; Line: Integer; var Caption: WideString); +begin + if Assigned(OnColumnGetCaption) then + OnColumnGetCaption(Self, Column, Line, Caption) +end; + +procedure TCustomEasyListview.DoColumnGetDetail(Column: TEasyColumn; Line: Integer; var Detail: Integer); +begin + if Assigned(OnColumnGetDetail) then + OnColumnGetDetail(Self, Column, Line, Detail) +end; + +procedure TCustomEasyListview.DoColumnGetDetailCount(Column: TEasyColumn; var Count: Integer); +begin + if Assigned(OnColumnGetDetailCount) then + OnColumnGetDetailCount(Self, Column, Count) +end; + +procedure TCustomEasyListview.DoColumnGetImageIndex(Column: TEasyColumn; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); +begin + if Assigned(OnColumnGetImageIndex) then + OnColumnGetImageIndex(Self, Column, ImageKind, ImageIndex) +end; + +procedure TCustomEasyListview.DoColumnGetImageList(Column: TEasyColumn; var ImageList: TCustomImageList); +begin + if Assigned(OnColumnGetImageList) then + OnColumnGetImageList(Self, Column, ImageList) +end; + +procedure TCustomEasyListview.DoColumnImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + if Assigned(OnColumnImageDraw) then + OnColumnImageDraw(Self, Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TCustomEasyListview.DoColumnImageGetSize(Column: TEasyColumn; var ImageWidth, ImageHeight: Integer); +begin + if Assigned(OnColumnImageGetSize) then + OnColumnImageGetSize(Self, Column, ImageWidth, ImageHeight) +end; + +procedure TCustomEasyListview.DoColumnImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +begin + if Assigned(OnColumnImageDrawIsCustom) then + OnColumnImageDrawIsCustom(Self, Column, IsCustom) +end; + +procedure TCustomEasyListview.DoColumnInitialize(Column: TEasyColumn); +begin + if Assigned(OnColumnInitialize) then + OnColumnInitialize(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnLoadFromStream(Column: TEasyColumn; S: TStream; Version: Integer); +begin + if Assigned(OnColumnLoadFromStream) then + OnColumnLoadFromStream(Self, Column, S, Version); +end; + +procedure TCustomEasyListview.DoColumnPaintText(Column: TEasyColumn; + ACanvas: TCanvas); +begin + if Assigned(OnColumnPaintText) then + OnColumnPaintText(Self, Column, ACanvas) +end; + +procedure TCustomEasyListview.DoColumnSaveToStream(Column: TEasyColumn; S: TStream; Version: Integer); +begin + if Assigned(OnColumnSaveToStream) then + OnColumnSaveToStream(Self, Column, S, Version); +end; + +procedure TCustomEasyListview.DoColumnSelectionChanged(Column: TEasyColumn); +begin + if Assigned(OnColumnSelectionChanged) and not (csDestroying in ComponentState) then + OnColumnSelectionChanged(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnSelectionChanging(Column: TEasyColumn; var Allow: Boolean); +begin + if Assigned(OnColumnSelectionChanging) and not (csDestroying in ComponentState) then + OnColumnSelectionChanging(Self, Column, Allow) +end; + +procedure TCustomEasyListview.DoColumnSetCaption(Column: TEasyColumn; const Caption: WideString); +begin + if Assigned(OnColumnSetCaption) then + OnColumnSetCaption(Self, Column, Caption) +end; + +procedure TCustomEasyListview.DoColumnSetDetail(Column: TEasyColumn; Line: Integer; Detail: Integer); +begin + if Assigned(OnColumnSetDetail) then + OnColumnSetDetail(Self, Column, Line, Detail) +end; + +procedure TCustomEasyListview.DoColumnSetDetailCount(Column: TEasyColumn; DetailCount: Integer); +begin + /// +end; + +procedure TCustomEasyListview.DoColumnSetImageIndex(Column: TEasyColumn; ImageKind: TEasyImageKind; ImageIndex: Integer); +begin + if Assigned(OnColumnSetImageIndex) then + OnColumnSetImageIndex(Self, Column, ImageKind, ImageIndex) +end; + +procedure TCustomEasyListview.DoColumnSizeChanged(Column: TEasyColumn); +begin + if Assigned(OnColumnSizeChanged) and not (csDestroying in ComponentState) then + OnColumnSizeChanged(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnSizeChanging(Column: TEasyColumn; Size, NewSize: Integer; var Allow: Boolean); +begin + if Assigned(OnColumnSizeChanging) and not (csDestroying in ComponentState) then + OnColumnSizeChanging(Self, Column, Size, NewSize, Allow) +end; + +procedure TCustomEasyListview.DoColumnStructureChange; +begin + if Assigned(OnColumnStructureChange) then + OnColumnStructureChange(Self) +end; + +procedure TCustomEasyListview.DoColumnThumbnailDraw(Column: TEasyColumn; ACanvas: TCanvas; ARect: TRect; var DoDefault: Boolean); +begin + +end; + +procedure TCustomEasyListview.DoColumnVisibilityChanged(Column: TEasyColumn); +begin + if Assigned(OnColumnVisibilityChanged) then + OnColumnVisibilityChanged(Self, Column) +end; + +procedure TCustomEasyListview.DoColumnVisibilityChanging(Column: TEasyColumn; var Allow: Boolean); +begin + if Assigned(OnColumnVisibilityChanging) then + OnColumnVisibilityChanging(Self, Column, Allow) +end; + +procedure TCustomEasyListview.DoContextMenu(MousePt: TPoint; var Handled: Boolean); +begin + if Assigned(OnContextMenu) then + OnContextMenu(Self, MousePt, Handled) +end; + +procedure TCustomEasyListview.DoColumnCustomView(Column: TEasyColumn; var ViewClass: TEasyViewColumnClass); +begin + if Assigned(OnColumnCustomView) then + OnColumnCustomView(Self, Column, ViewClass); +end; + +procedure TCustomEasyListview.DoCustomGrid(Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass); +begin + if Assigned(OnCustomGrid) then + OnCustomGrid(Self, Group, ViewStyle, Grid) +end; + +procedure TCustomEasyListview.DoGesture(Gesture: WideString; + var Handled: Boolean); +begin + if Assigned(OnMouseGesture) then + OnMouseGesture(Self, Gesture, Handled) +end; + +procedure TCustomEasyListview.DoGroupCustomView(Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass); +begin + if Assigned(OnGroupCustomView) then + OnGroupCustomView(Self, Group, ViewStyle, View) +end; + +procedure TCustomEasyListview.DoGroupStructureChange; +begin + if Assigned(OnGroupStructureChange) then + OnGroupStructureChange(Self) +end; + +procedure TCustomEasyListview.DoItemCustomView(Item: TEasyItem; ViewStyle: TEasyListStyle; var View: TEasyViewItemClass); +begin + if Assigned(OnItemCustomView) then + OnItemCustomView(Self, Item, ViewStyle, View) +end; + +procedure TCustomEasyListview.DoDblClick(Button: TCommonMouseButton; MousePos: TPoint; + ShiftState: TShiftState); +begin + if Assigned(OnDblClick) then + OnDblClick(Self, Button, MousePos, ShiftState) +end; + +procedure TCustomEasyListview.DoGetDragImage(Bitmap: TBitmap; + DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; + var Handled: Boolean); +begin + if Assigned(OnGetDragImage) then + OnGetDragImage(Self, Bitmap, DragStartPt, HotSpot, TransparentColor, Handled); +end; + +procedure TCustomEasyListview.DoGroupClick(Group: TEasyGroup; KeyStates: TCommonKeyStates; HitTest: TEasyGroupHitTestInfoSet); +begin + if Assigned(OnGroupClick) then + OnGroupClick(Self, Group, KeyStates, HitTest) +end; + +procedure TCustomEasyListview.DoGroupCollapse(Group: TEasyGroup); +begin + if Assigned(OnGroupCollapse) and not (csDestroying in ComponentState) then + OnGroupCollapse(Self, Group); +end; + +procedure TCustomEasyListview.DoGroupCollapsing(Group: TEasyGroup; var Allow: Boolean); +begin + if Assigned(OnGroupCollapsing) and not (csDestroying in ComponentState) then + OnGroupCollapsing(Self, Group, Allow); +end; + +function TCustomEasyListview.DoGroupCompare(Column: TEasyColumn; Group1, + Group2: TEasyGroup): Integer; +begin + if Assigned(OnGroupCompare) then + Result := OnGroupCompare(Self, Group1, Group2) + else + Result := DefaultSort(Column, Group1, Group2) +end; + +procedure TCustomEasyListview.DoGroupContextMenu(HitInfo: TEasyHitInfoGroup; + WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean); +begin + if Assigned(OnGroupContextMenu) then + OnGroupContextMenu(Self, HitInfo, WindowPoint, Menu, Handled); +end; + +procedure TCustomEasyListview.DoGroupDblClick(Button: TCommonMouseButton; + MousePos: TPoint; HitInfo: TEasyHitInfoGroup); +begin + if Assigned(OnGroupDblClick) then + OnGroupDblClick(Self, Button, MousePos, HitInfo) +end; + +procedure TCustomEasyListview.DoGroupExpand(Group: TEasyGroup); +begin + Groups.Rebuild; + if Assigned(OnGroupExpand) then + OnGroupExpand(Self, Group) +end; + +procedure TCustomEasyListview.DoGroupExpanding(Group: TEasyGroup; var Allow: Boolean); +begin + if Assigned(OnGroupExpanding) then + OnGroupExpanding(Self, Group, Allow) +end; + +procedure TCustomEasyListview.DoGroupHotTrack(Group: TEasyGroup; State: TEasyHotTrackstate; MousePos: TPoint); +begin + if Assigned(OnGroupHotTrack) then + OnGroupHotTrack(Self, Group, State, MousePos) +end; + +procedure TCustomEasyListview.DoGroupFreeing(Group: TEasyGroup); +begin + if Assigned(OnGroupFreeing) then + OnGroupFreeing(Self, Group) +end; + +procedure TCustomEasyListview.DoGroupGetCaption(Group: TEasyGroup; var Caption: WideString); +begin + if Assigned(OnGroupGetCaption) then + OnGroupGetCaption(Self, Group, Caption) +end; + +procedure TCustomEasyListview.DoGroupGetDetail(Group: TEasyGroup; Line: Integer; var Detail: Integer); +begin + if Assigned(OnGroupGetDetail) then + OnGroupGetDetail(Self, Group, Line, Detail) +end; + +procedure TCustomEasyListview.DoGroupGetDetailCount(Group: TEasyGroup; var Count: Integer); +begin + if Assigned(OnGroupGetDetailCount) then + OnGroupGetDetailCount(Self, Group, Count) +end; + +procedure TCustomEasyListview.DoGroupGetImageIndex(Group: TEasyGroup; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); +begin + if Assigned(OnGroupGetImageIndex) then + OnGroupGetImageIndex(Self, Group, ImageKind, ImageIndex) +end; + +procedure TCustomEasyListview.DoGroupGetImageList(Group: TEasyGroup; var ImageList: TCustomImageList); +begin + if Assigned(OnGroupGetImageList) then + OnGroupGetImageList(Self, Group, ImageList) +end; + +procedure TCustomEasyListview.DoGroupImageDraw(Group: TEasyGroup; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + if Assigned(OnGroupImageDraw) then + OnGroupImageDraw(Self, Group, ACanvas, RectArray, AlphaBlender) +end; + +procedure TCustomEasyListview.DoGroupImageGetSize(Group: TEasyGroup; var ImageWidth, ImageHeight: Integer); +begin + if Assigned(OnGroupImageGetSize) then + OnGroupImageGetSize(Self, Group, ImageWidth, ImageHeight) +end; + +procedure TCustomEasyListview.DoGroupImageDrawIsCustom(Group: TEasyGroup; + var IsCustom: Boolean); +begin + if Assigned(OnGroupImageDrawIsCustom) then + OnGroupImageDrawIsCustom(Self, Group, IsCustom) +end; + +procedure TCustomEasyListview.DoGroupInitialize(Group: TEasyGroup); +begin + if Assigned(OnGroupInitialize) then + OnGroupInitialize(Self, Group) +end; + +procedure TCustomEasyListview.DoGroupLoadFromStream(Group: TEasyGroup; S: TStream; Version: Integer); +begin + if Assigned(OnGroupLoadFromStream) then + OnGroupLoadFromStream(Self, Group, S, Version) +end; + +procedure TCustomEasyListview.DoGroupPaintText(Group: TEasyGroup; + ACanvas: TCanvas); +begin + if Assigned(OnGroupPaintText) then + OnGroupPaintText(Self, Group, ACanvas) +end; + +procedure TCustomEasyListview.DoGroupSaveToStream(Group: TEasyGroup; S: TStream; Version: Integer); +begin + if Assigned(OnGroupSaveToStream) then + OnGroupSaveToStream(Self, Group, S, Version) +end; + +procedure TCustomEasyListview.DoGroupSelectionChanged(Group: TEasyGroup); +begin + if Assigned(OnGroupSelectionChanged) then + OnGroupSelectionChanged(Self, Group) +end; + +procedure TCustomEasyListview.DoGroupSelectionChanging(Group: TEasyGroup; var Allow: Boolean); +begin + if Assigned(OnGroupSelectionChanging) then + OnGroupSelectionChanging(Self, Group, Allow) +end; + +procedure TCustomEasyListview.DoGroupSetCaption(Group: TEasyGroup; const Caption: WideString); +begin + if Assigned(OnGroupSetCaption) then + OnGroupSetCaption(Self, Group, Caption) +end; + +procedure TCustomEasyListview.DoGroupSetDetailCount(Group: TEasyGroup; DetailCount: Integer); +begin + /// +end; + +procedure TCustomEasyListview.DoGroupSetImageIndex(Group: TEasyGroup; ImageKind: TEasyImageKind; ImageIndex: Integer); +begin + if Assigned(OnGroupSetImageIndex) then + OnGroupSetImageIndex(Self, Group, ImageKind, ImageIndex) +end; + +procedure TCustomEasyListview.DoGroupSetDetail(Group: TEasyGroup; Line: Integer; Detail: Integer); +begin + if Assigned(OnGroupSetDetail) then + OnGroupSetDetail(Self, Group, Line, Detail) +end; + +procedure TCustomEasyListview.DoGroupThumbnailDraw(Group: TEasyGroup; ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin +// not implemented +end; + +procedure TCustomEasyListview.DoGroupVisibilityChanged(Group: TEasyGroup); +begin + if Assigned(OnGroupVisibilityChanged) and not (csDestroying in ComponentState) then + OnGroupVisibilityChanged(Self, Group) +end; + +procedure TCustomEasyListview.DoGroupVisibilityChanging(Group: TEasyGroup; var Allow: Boolean); +begin + if Assigned(OnGroupVisibilityChanging) and not (csDestroying in ComponentState) then + OnGroupVisibilityChanging(Self, Group, Allow) +end; + +procedure TCustomEasyListview.DoHeaderDblClick(Button: TCommonMouseButton; MousePos: TPoint; + ShiftState: TShiftState); +begin + if Assigned(OnHeaderDblClick) then + OnHeaderDblClick(Self, Button, MousePos, ShiftState) +end; + +procedure TCustomEasyListview.DoHintCustomInfo(TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo); +begin + if Assigned(OnHintCustomInfo) then + OnHintCustomInfo(Self, TargetObj, Info); +end; + +procedure TCustomEasyListview.DoHintCustomDraw(TargetObj: TEasyCollectionItem; const Info: TEasyHintInfo); +begin + if Assigned(OnHintCustomDraw) then + OnHintCustomDraw(Self, TargetObj, Info); +end; + +procedure TCustomEasyListview.DoHintPopup(TargetObj: TEasyCollectionItem; HintType: TEasyHintType; MousePos: TPoint; var AText: WideString; var HideTimeout, ReshowTimeout: Integer; var Allow: Boolean); +begin + if Assigned(OnHintPopup) then + OnHintPopup(Self, TargetObj, HintType, MousePos, AText, HideTimeout, ReshowTimeout, Allow) +end; + +procedure TCustomEasyListview.DoHintShowPause(HintShowingNow: Boolean; + var PauseTime: Integer); +begin + if Assigned(OnHintPauseTime) then + OnHintPauseTime(Self, HintShowingNow, PauseTime) +end; + +procedure TCustomEasyListview.DoIncrementalSearch(Item: TEasyItem; + const SearchBuffer: WideString; var CompareResult: Integer); +var + Handled: Boolean; +begin + CompareResult := 0; + Handled := False; + if Assigned(OnIncrementalSearch) then + OnIncrementalSearch(Item, SearchBuffer, Handled, CompareResult); + if not Handled then + CompareResult := WideIncrementalSearch(Item.Caption, SearchBuffer) +end; + +procedure TCustomEasyListview.DoItemCheckChanged(Item: TEasyItem); +begin + if Assigned(OnItemCheckChange) and not (csDestroying in ComponentState) then + OnItemCheckChange(Self, Item) +end; + +procedure TCustomEasyListview.DoItemCheckChanging(Item: TEasyItem; + var Allow: Boolean); +begin + if Assigned(OnItemCheckChanging) and not (csDestroying in ComponentState) then + OnItemCheckChanging(Self, Item, Allow); +end; + +procedure TCustomEasyListview.DoItemClick(Item: TEasyItem; + KeyStates: TCommonKeyStates; HitInfo: TEasyItemHitTestInfoSet); +begin + if Assigned(OnItemClick) then + OnItemClick(Self, Item, KeyStates, HitInfo) +end; + +function TCustomEasyListview.DoItemCompare(Column: TEasyColumn; + Group: TEasyGroup; Item1, Item2: TEasyItem): Integer; +var + DoDefault: Boolean; +begin + Result := 0; + DoDefault := True; + if Assigned(OnItemCompare) then + Result := OnItemCompare(Self, Column, Group, Item1, Item2, DoDefault); + if DoDefault then + Result := DefaultSort(Column, Item1, Item2) +end; + +procedure TCustomEasyListview.DoItemContextMenu(HitInfo: TEasyHitInfoItem; + WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean); +begin + Menu := nil; + if Assigned(OnItemContextMenu) then + OnItemContextMenu(Self, HitInfo, WindowPoint, Menu, Handled); +end; + +procedure TCustomEasyListview.DoItemCreateEditor(Item: TEasyItem; + var Editor: IEasyCellEditor); +begin + if Assigned(OnItemCreateEditor) then + OnItemCreateEditor(Self, Item, Editor); + if not Assigned(Editor) then + begin + if View in MULTILINEVIEWS then + Editor := TEasyMemoEditor.Create + else + Editor := TEasyStringEditor.Create; + end +end; + +procedure TCustomEasyListview.DoItemDblClick(Button: TCommonMouseButton; + MousePos: TPoint; HitInfo: TEasyHitInfoItem); +begin + if Assigned(OnItemDblClick) then + OnItemDblClick(Self, Button, MousePos, HitInfo) +end; + +procedure TCustomEasyListview.DoItemEditBegin(Item: TEasyItem; var Column: Integer; var Allow: Boolean); +begin + if Assigned(OnItemEditBegin) then + OnItemEditBegin(Self, Item, Column, Allow) +end; + +procedure TCustomEasyListview.DoItemEdited(Item: TEasyItem; + var NewValue: Variant; var Accept: Boolean); +begin + if Assigned(OnItemEdited) then + OnItemEdited(Self, Item, NewValue, Accept); +end; + +procedure TCustomEasyListview.DoItemEditEnd(Item: TEasyItem); +begin + if Assigned(OnItemEditEnd) then + OnItemEditEnd(Self, Item); +end; + +procedure TCustomEasyListview.DoItemEnableChanged(Item: TEasyItem); +begin + if Assigned(OnItemEnableChange) then + OnItemEnableChange(Self, Item) +end; + +procedure TCustomEasyListview.DoItemEnableChanging(Item: TEasyItem; + var Allow: Boolean); +begin + if Assigned(OnItemEnableChanging) then + OnItemEnableChanging(Self, Item, Allow) +end; + +procedure TCustomEasyListview.DoItemFocusChanged(Item: TEasyItem); +begin + if Assigned(OnItemFocusChanged) then + OnItemFocusChanged(Self, Item) +end; + +procedure TCustomEasyListview.DoItemFocusChanging(Item: TEasyItem; + var Allow: Boolean); +begin + if Assigned(OnItemFocusChanging) then + OnItemFocusChanging(Self, Item, Allow) +end; + +procedure TCustomEasyListview.DoItemFreeing(Item: TEasyItem); +begin + if Assigned(OnItemFreeing) then + OnItemFreeing(Self, Item) +end; + +procedure TCustomEasyListview.DoItemGetCaption(Item: TEasyItem; Column: Integer; var ACaption: WideString); +begin + if Assigned(OnItemGetCaption) then + OnItemGetCaption(Self, Item, Column, ACaption) +end; + +procedure TCustomEasyListview.DoItemGetEditCaption(Item: TEasyItem; Column: TEasyColumn; var Caption: WideString); +begin + if Assigned(OnItemGetEditCaption) then + OnItemGetEditCaption(Self, Item, Column, Caption) +end; + +procedure TCustomEasyListview.DoItemGetEditMenu(Editor: TEasyBaseEditor; var Menu: TPopupMenu); +begin + if Assigned(OnItemGetEditMenu) then + OnItemGetEditMenu(Self, Editor, Menu) +end; + +procedure TCustomEasyListview.DoItemGetGroupKey(Item: TEasyItem; + FocusedColumn: Integer; var Key: LongWord); +begin + if Assigned(OnItemGetGroupKey) then + OnItemGetGroupKey(Self, Item, FocusedColumn, Key) +end; + +procedure TCustomEasyListview.DoItemGetImageIndex(Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; var ImageIndex: TCommonImageIndexInteger); +begin + if Assigned(OnItemGetImageIndex) then + OnItemGetImageIndex(Self, Item, Column, ImageKind, ImageIndex) +end; + +procedure TCustomEasyListview.DoItemGetImageList(Item: TEasyItem; Column: Integer; var ImageList: TCustomImageList); +begin + if Assigned(OnItemGetImageList) then + OnItemGetImageList(Self, Item, Column, ImageList) +end; + +procedure TCustomEasyListview.DoItemGetStateImageList(Item: TEasyItem; Column: Integer; var ImageList: TCustomImageList); +begin + if Assigned(OnItemGetStateImageList) then + OnItemGetStateImageList(Self, Item, Column, ImageList) +end; + +procedure TCustomEasyListview.DoItemGetTileDetail(Item: TEasyItem; Line: Integer; var Detail: Integer); +begin + if Assigned(OnItemGetTileDetail) then + OnItemGetTileDetail(Self, Item, Line, Detail) +end; + +procedure TCustomEasyListview.DoItemGetTileDetailCount(Item: TEasyItem; var Count: Integer); +begin + if Assigned(OnItemGetTileDetailCount) then + OnItemGetTileDetailCount(Self, Item, Count) +end; + +procedure TCustomEasyListview.DoItemImageDraw(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + if Assigned(OnItemImageDraw) then + OnItemImageDraw(Self, Item, Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TCustomEasyListview.DoItemImageGetSize(Item: TEasyItem; Column: TEasyColumn; var ImageWidth, ImageHeight: Integer); +begin + if Assigned(OnItemImageGetSize) then + OnItemImageGetSize(Self, Item, Column, ImageWidth, ImageHeight) +end; + +procedure TCustomEasyListview.DoItemImageDrawIsCustom(Column: TEasyColumn; + Item: TEasyItem; var IsCustom: Boolean); +begin + if Assigned(OnItemImageDrawIsCustom) then + OnItemImageDrawIsCustom(Self, Item, Column, IsCustom) +end; + +procedure TCustomEasyListview.DoItemHotTrack(Item: TEasyItem; State: TEasyHotTrackstate; MousePos: TPoint); +begin + if HotTrack.Enabled then + if Assigned(OnItemHotTrack) then + OnItemHotTrack(Self, Item, State, MousePos) +end; + +procedure TCustomEasyListview.DoItemInitialize(Item: TEasyItem); +begin + if Assigned(OnItemInitialize) then + OnItemInitialize(Self, Item) +end; + +procedure TCustomEasyListview.DoItemLoadFromStream(Item: TEasyItem; S: TStream; Version: Integer); +begin + if Assigned(OnItemLoadFromStream) then + OnItemLoadFromStream(Self, Item, S, Version) +end; + +procedure TCustomEasyListview.DoItemMouseDown(Item: TEasyItem; Button: TCommonMouseButton; var DoDefault: Boolean); +begin + if Assigned(OnItemMouseDown) then + OnItemMouseDown(Self, Item, Button, DoDefault) +end; + +procedure TCustomEasyListview.DoItemMouseUp(Item: TEasyItem; Button: TCommonMouseButton; var DoDefault: Boolean); +begin + if Assigned(OnItemMouseUp) then + OnItemMouseUp(Self, Item, Button, DoDefault) +end; + +procedure TCustomEasyListview.DoItemPaintText(Item: TEasyItem; Position: Integer; ACanvas: TCanvas); +begin + if Assigned(OnItemPaintText) then + OnItemPaintText(Self, Item, Position, ACanvas) +end; + +procedure TCustomEasyListview.DoItemSaveToStream(Item: TEasyItem; S: TStream; Version: Integer); +begin + if Assigned(OnItemSaveToStream) then + OnItemSaveToStream(Self, Item, S, Version) +end; + +procedure TCustomEasyListview.DoItemSelectionChanged(Item: TEasyItem); +begin + if Assigned(OnItemSelectionChanged) and not (csDestroying in ComponentState) then + OnItemSelectionChanged(Self, Item) +end; + +procedure TCustomEasyListview.DoItemSelectionChanging(Item: TEasyItem; + var Allow: Boolean); +begin + if Assigned(OnItemSelectionChanging) and not (csDestroying in ComponentState) then + OnItemSelectionChanging(Self, Item, Allow) +end; + +procedure TCustomEasyListview.DoItemSelectionsChanged; +begin + if Assigned(OnItemSelectionsChanged) and not (csDestroying in ComponentState) then + OnItemSelectionsChanged(Self) +end; + +procedure TCustomEasyListview.DoItemSetCaption(Item: TEasyItem; Column: Integer; const Caption: WideString); +begin + if Assigned(OnItemSetCaption) then + OnItemSetCaption(Self, Item, Column, Caption) +end; + +procedure TCustomEasyListview.DoItemSetGroupKey(Item: TEasyItem; + FocusedColumn: Integer; Key: LongWord); +begin + if Assigned(OnItemSetGroupKey) then + OnItemSetGroupKey(Self, Item, FocusedColumn, Key) +end; + +procedure TCustomEasyListview.DoItemSetImageIndex(Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; ImageIndex: Integer); +begin + if Assigned(OnItemSetImageIndex) then + OnItemSetImageIndex(Self, Item, Column, ImageKind, ImageIndex) +end; + +procedure TCustomEasyListview.DoItemSetTileDetail(Item: TEasyItem; Line: Integer; Detail: Integer); +begin + if Assigned(OnItemSetTileDetail) then + OnItemSetTileDetail(Self, Item, Line, Detail) +end; + +procedure TCustomEasyListview.DoItemSetTileDetailCount(Item: TEasyItem; Detail: Integer); +begin + // +end; + +procedure TCustomEasyListview.DoItemStructureChange; +begin + if Assigned(OnItemStructureChange) then + OnItemStructureChange(Self) +end; + +procedure TCustomEasyListview.DoItemThumbnailDraw(Item: TEasyItem; + ACanvas: TCanvas; ARect: TRect; AlphaBlender: TEasyAlphaBlender; + var DoDefault: Boolean); +begin + if Assigned(OnItemThumbnailDraw) then + OnItemThumbnailDraw(Self, Item, ACanvas, ARect, AlphaBlender, DoDefault) +end; + +procedure TCustomEasyListview.DoItemVisibilityChanged(Item: TEasyItem); +begin + if Assigned(OnItemVisibilityChanged) and not (csDestroying in ComponentState) then + OnItemVisibilityChanged(Self, Item) +end; + +procedure TCustomEasyListview.DoItemVisibilityChanging(Item: TEasyItem; + var Allow: Boolean); +begin + if Assigned(OnItemVisibilityChanging) and not (csDestroying in ComponentState)then + OnItemVisibilityChanging(Self, Item, Allow) +end; + +procedure TCustomEasyListview.DoKeyAction(var CharCode: Word; + var Shift: TShiftState; var DoDefault: Boolean); +begin + if Assigned(OnKeyAction) then + OnKeyAction(Self, CharCode, Shift, DoDefault) +end; + +procedure TCustomEasyListview.DoOLEDragEnd(ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); +begin + if Assigned(OnOLEDragEnd) then + OnOLEDragEnd(Self, ADataObject, DragResult, ResultEffect, KeyStates); +end; + +procedure TCustomEasyListview.DoOLEDragStart(ADataObject: IDataObject; + var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); +begin + if Assigned(OnOLEDragStart) then + OnOLEDragStart(Self, ADataObject, AvailableEffects, AllowDrag); +end; + +procedure TCustomEasyListview.DoOLEDropSourceGiveFeedback( + Effect: TCommonDropEffects; var UseDefaultCursors: Boolean); +// When the control is the OLE Drag source, this is called when OLE subsystem +// wants to display a different drag cursor (different than the drag image). By +// default the built in cursors are used but the application may set the cursors +// itself in this event +begin + if Assigned(OnOLEGiveFeedback) then + OnOLEGiveFeedback(Self, Effect, UseDefaultCursors) +end; + +procedure TCustomEasyListview.DoOLEDropSourceQueryContineDrag( + EscapeKeyPressed: Boolean; KeyStates: TCommonKeyStates; + var QueryResult: TEasyQueryDragResult); +// When the control is the OLE Drag source the OLE subsystem calls back to the +// source to query if the source would like to contine the drag, quit the drag, +// or drop the object where it is. +begin + if Assigned(OnOLEQueryContineDrag) then + OnOLEQueryContineDrag(Self, EscapeKeyPressed, KeyStates, QueryResult) +end; + +procedure TCustomEasyListview.DoOLEDropTargetDragDrop(DataObject: IDataObject; + KeyState: TCommonKeyStates; WindowPt: TPoint; + AvailableEffects: TCommonDropEffects; var DesiredEffect: TCommonDropEffect; + var Handled: Boolean); +// When the control is the OLE Drag target this is called when the data object is +// dropped on the control +begin + if Assigned(OnOLEDragDrop) then + OnOLEDragDrop(Self, DataObject, KeyState, WindowPt, AvailableEffects, DesiredEffect, Handled) +end; + +procedure TCustomEasyListview.DoOLEDropTargetDragEnter(DataObject: IDataObject; + KeyState: TCommonKeyStates; WindowPt: TPoint; AvailableEffects: TCommonDropEffects; + var DesiredEffect: TCommonDropEffect); +// When the control is the OLE Drag target this is called when the drag object +// first enters the controls client window +begin + if Assigned(OnOLEDragEnter) then + OnOLEDragEnter(Self, DataObject, KeyState, WindowPt, AvailableEffects, DesiredEffect) +end; + +procedure TCustomEasyListview.DoOLEDropTargetDragLeave; +// When the control is the OLE Drag target this is called when the data object +// leaves the controls client window +begin + if Assigned(OnOLEDragLeave) then + OnOLEDragLeave(Self) +end; + +procedure TCustomEasyListview.DoOLEDropTargetDragOver(KeyState: TCommonKeyStates; + WindowPt: TPoint; AvailableEffects: TCommonDropEffects; + var DesiredEffect: TCommonDropEffect); +// When the control is the OLE Drag target this is called when the data object is +// moving over the controls client window +begin + if Assigned(OnOLEDragOver) then + OnOLEDragOver(Self, KeyState, WindowPt, AvailableEffects, DesiredEffect) +end; + +procedure TCustomEasyListview.DoOLEGetCustomFormats(var Formats: TFormatEtcArray); +begin + if Assigned(OnOLEGetCustomFormats) then + OnOLEGetCustomFormats(Self, Formats) +end; + +procedure TCustomEasyListview.DoOLEGetData(const FormatEtcIn: TFormatEtc; + var Medium: TStgMedium; var Handled: Boolean); +// Called from the IDataObject when a target wants the source (us) to give it the +// OLE data +begin + FillChar(Medium, SizeOf(Medium), #0); + Handled := False; + if Assigned(OnOLEGetData) then + OnOLEGetData(Self, FormatEtcIn, Medium, Handled); +end; + +procedure TCustomEasyListview.DoOLEGetDataObject(var DataObject: IDataObject); +begin + DataObject := nil; + if Assigned(OnOLEGetDataObject) then + OnOLEGetDataObject(Self, DataObject) +end; + +procedure TCustomEasyListview.DoPaintBkGnd(ACanvas: TCanvas; AWindowRect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + if Assigned(OnPaintBkGnd) then + OnPaintBkGnd(Self, ACanvas, AWindowRect, AlphaBlender, DoDefault) +end; + +procedure TCustomEasyListview.DoPaintHeaderBkGnd(ACanvas: TCanvas; ARect: TRect; var Handled: Boolean); +begin + if Assigned(OnPaintHeaderBkGnd) then + OnPaintHeaderBkGnd(Self, ACanvas, ARect, Handled) +end; + +procedure TCustomEasyListview.DoPaintRect(ACanvas: TCanvas; WindowClipRect: TRect; + SelectedOnly: Boolean); +// Paints the control defined by Rect to the passed canvas. Called from the +// WM_PAINT message or can be called to make a snapshot of the control +// ARect is in Window coordinates. + + procedure PaintAndGetNextColumn(var Column: TEasyColumn; Item: TEasyItem; ItemRect, ViewClipRect: TRect; OrgPt: TPoint; Clip, ForceSelectionRectDraw: Boolean); + begin + ClipHeader(ACanvas, True); + SetWindowOrgEx(ACanvas.Handle, Scrollbars.OffsetX, Scrollbars.OffsetY - Header.RuntimeHeight, nil); + if Clip then + begin + IntersectRect(ItemRect, ItemRect, ViewClipRect); + IntersectClipRect(ACanvas.Handle, ItemRect.Left, ItemRect.Top, ItemRect.Right, ItemRect.Bottom); + end; + Item.Paint(ACanvas, ViewClipRect, Column, ForceSelectionRectDraw); + + Column := Header.NextColumnInRect(Column, ViewClipRect); + end; + + procedure PaintReportView(Item: TEasyItem; ViewClipRect: TRect; OrgPt: TPoint); + var + R: TRect; + Column: TEasyColumn; + RectArray: TEasyRectArrayObject; + begin + Column := Header.FirstColumnInRect(ViewClipRect); + + if Item.Selected or Item.Hilighted then + begin + if Selection.GroupSelections then + PaintAndGetNextColumn(Column, Item, Item.DisplayRect, ViewClipRect, OrgPt, False, True) + else + if Selection.FullRowSelect then + PaintAndGetNextColumn(Column, Item, Item.DisplayRect, ViewClipRect, OrgPt, True, True); + end; + + while Assigned(Column) do + PaintAndGetNextColumn(Column, Item, Item.DisplayRect, ViewClipRect, OrgPt, False, False); + + // Special processing for Full Row Select + if Selection.FullRowSelect and Focused and Selection.UseFocusRect and Item.Focused and not SelectedOnly then + begin + // Draw a Focus Rectangle around focused item + ClipHeader(ACanvas, True); + ACanvas.Brush.Color := Color; + ACanvas.Font.Color := clBlack; + Item.ItemRectArray(Header.FirstColumnByPosition, ACanvas, RectArray); + R := Selection.FocusedItem.DisplayRect; + if not Selection.FullCellPaint then + if not Selection.FullItemPaint then + R.Left := RectArray.SelectionRect.Left; + DrawFocusRect(ACanvas.Handle, R); + end + end; + +var + Group, FirstVisibleGroup: TEasyGroup; + Item: TEasyItem; + Column: TEasyColumn; + OrgPt: TPoint; + ViewClipRect, R: TRect; +begin + GroupCollapseButton.Canvas.Lock; + GroupExpandButton.Canvas.Lock; + GetWindowOrgEx(Canvas.Handle, OrgPt); + try + // Header accounted for in the DC Offset + ViewClipRect := Scrollbars.MapWindowRectToViewRect(WindowClipRect, True); + + if not SelectedOnly then + begin + if Assigned(Background) and not SelectedOnly then + BackGround.PaintTo(ACanvas, WindowClipRect, False); + SelectClipRgn(Canvas.Handle, 0); + + if ScrollHeaderHorz then + begin + SetWindowOrgEx(ACanvas.Handle, Scrollbars.OffsetX, 0, nil); + if ViewSupportsHeader and Header.Visible then + Header.PaintTo(ACanvas, ViewClipRect); + end else + begin + if ViewSupportsHeader and Header.Visible then + Header.PaintTo(ACanvas, Rect(0, 0, ClientWidth, Header.RuntimeHeight)); + end; + + ClipHeader(ACanvas, True); + + SetWindowOrgEx(ACanvas.Handle, Scrollbars.OffsetX, Scrollbars.OffsetY - Header.RuntimeHeight, nil); + Group := Groups.FirstGroupInRect(ViewClipRect); + while Assigned(Group) do + begin + Group.Paint(egmeBackground, Group.DisplayRect, ACanvas); + Group.Paint(egmeTop, Group.BoundsRectTopMargin, ACanvas); + Group.Paint(egmeBottom, Group.BoundsRectBottomMargin, ACanvas); + Group.Paint(egmeLeft, Group.BoundsRectLeftMargin, ACanvas); + Group.Paint(egmeRight, Group.BoundsRectRightMargin, ACanvas); + Group.Paint(egmeForeground, Group.DisplayRect, ACanvas); + Group := Groups.NextGroupInRect(Group, ViewClipRect) + end; + end; + + SetWindowOrgEx(ACanvas.Handle, Scrollbars.OffsetX, Scrollbars.OffsetY - Header.RuntimeHeight, nil); + SelectClipRgn(ACanvas.Handle, 0); + + // Paint the colored column background for the focused node + if not SelectedOnly and ((View = elsReport) or (View = elsGrid)) then + begin + if PaintInfoColumn.HilightFocused and Assigned(Selection.FocusedColumn) then + begin + if Selection.FocusedColumn.SortDirection <> esdNone then + begin + ACanvas.Brush.Color := PaintInfoColumn.HilightFocusedColor; + Group := Groups.FirstVisibleGroup; + while Assigned(Group) do + begin + R := Selection.FocusedColumn.DisplayRect; + R.Top := Scrollbars.OffsetY; + R.Bottom := Scrollbars.OffsetY + (ClientHeight - Header.RuntimeHeight); + if IntersectRect(R, ViewClipRect, R) then + if IntersectRect(R, R, Group.BoundsRectBkGnd) then + ACanvas.FillRect(R); + Group := Groups.NextVisibleGroup(Group) + end + end + end + end; + + Item := Groups.FirstItemInRect(ViewClipRect); + // If GroupSelection we always need to paint the first item + if Assigned(Item) and (View = elsReport) and Selection.GroupSelections then + begin + // Need to paint the first item in a selection group + if Assigned(Item.SelectionGroup) then + begin + if not SelectedOnly or (SelectedOnly and Item.Selected) then + begin + PaintReportView(Item.SelectionGroup.FirstItem, ViewClipRect, OrgPt); + // Don't Repaint it + if Item.SelectionGroup.FirstItem = Item then + Item := Groups.NextItemInRect(Item, ViewClipRect); + end + end + end; + while Assigned(Item) do + begin + ClipHeader(ACanvas, True); + // Need to paint the focused item last if its text may overlap another cell when focused + if not Item.Focused or not Item.View.OverlappedFocus then + begin + if not SelectedOnly or (SelectedOnly and Item.Selected) then + begin + if View = elsReport then + PaintReportView(Item, ViewClipRect, OrgPt) + else + Item.Paint(ACanvas, ViewClipRect, nil, False); + end + end; + Item := Groups.NextItemInRect(Item, ViewClipRect); + end; + + if Assigned(Selection.FocusedItem) then + if Selection.FocusedItem.View.OverlappedFocus then + Selection.FocusedItem.Paint(ACanvas, ViewClipRect, nil, False); + + if not SelectedOnly and ((View = elsReport) or (View = elsGrid)) then + begin + // Paint the Grid Lines + if PaintInfoItem.GridLines then + begin + ClipHeader(ACanvas, True); + FirstVisibleGroup := Groups.FirstVisibleGroup; + ACanvas.Pen.Color := PaintInfoItem.GridLineColor; + Column := Header.FirstColumnInRect(ViewClipRect); + while Assigned(Column) do + begin + Group := FirstVisibleGroup; + while Assigned(Group) do + begin + R := Column.DisplayRect; + ACanvas.MoveTo(R.Right, Group.BoundsRectBkGnd.Top); + ACanvas.LineTo(R.Right, Group.BoundsRectBkGnd.Bottom); + Group := Groups.NextVisibleGroup(Group) + end; + Column := Header.NextColumnInRect(Column, ViewClipRect); + end; + Item := Groups.FirstItemInRect(ViewClipRect); + while Assigned(Item) do + begin + R := Item.DisplayRect; + ACanvas.MoveTo(Scrollbars.OffsetX, R.Bottom-1); + ACanvas.LineTo(Scrollbars.OffsetX + ClientWidth, R.Bottom-1); + Item := Groups.NextItemInRect(Item, ViewClipRect) + end + end + end; + + finally + SetWindowOrgEx(ACanvas.Handle, OrgPt.X, OrgPt.Y, nil); + GroupCollapseButton.Canvas.UnLock; + GroupExpandButton.Canvas.UnLock; + end +end; + +procedure TCustomEasyListview.DoQueryOLEData(const FormatEtcIn: TFormatEtc; + var FormatAvailable: Boolean; var Handled: Boolean); +// Called from the IDataObject when a target wants the source (us) to tell it +// what formats the DataObject supports +begin + Handled := False; + FormatAvailable := False; + if Assigned(OnOLEQueryData) then + OnOLEQueryData(Self, FormatEtcIn, FormatAvailable, Handled) +end; + +procedure TCustomEasyListview.DoResize(DeltaX, DeltaY: Integer); +begin + +end; + +procedure TCustomEasyListview.DoScroll(DeltaX, DeltaY: Integer); +begin + if Assigned(OnScroll) then + OnScroll(Self, DeltaX, DeltaY) +end; + +procedure TCustomEasyListview.DoThreadCallback(var Msg: TWMThreadRequest); +begin + +end; + +procedure TCustomEasyListview.DoUpdate; +begin + if not(csDestroying in ComponentState) then + begin + Groups.Rebuild(True); + Scrollbars.ReCalculateScrollbars(True, False); + end; +end; + +procedure TCustomEasyListview.DoViewChange; +begin + if Assigned(OnViewChange) then + OnViewChange(Self) +end; + +procedure TCustomEasyListview.EndUpdate(Invalidate: Boolean = True); +begin +// Sort.EndUpdate; + inherited EndUpdate(Invalidate); +end; + +procedure TCustomEasyListview.FinalizeDrag(WindowPoint: TPoint; + KeyState: TCommonKeyStates); +// Called after the mouse is released and a Drag Selection or a D&D operation +// was completed. It cleans up and resets the flags. +begin + // Do these after the flags have been reset in case a resulting operation of + // these calls checks if the dragging is still occuring + if ebcsDragging in States then + begin + Exclude(FStates, ebcsDragging); + DragManager.DragEnd(Canvas, WindowPoint, KeyState); + end; + if ebcsDragSelecting in States then + begin + Exclude(FStates, ebcsDragSelecting); + DragRect.DragEnd(Canvas, WindowPoint, KeyState); + end; + + ClearStates; + Mouse.Capture := 0; +end; + +procedure TCustomEasyListview.HandleDblClick(Button: TCommonMouseButton; Msg: TWMMouse); +var + Group: TEasyGroup; + Keys: TCommonKeyStates; + GroupHitInfo: TEasyGroupHitTestInfoSet; + GroupInfo: TEasyHitInfoGroup; + Item: TEasyItem; + ItemHitInfo: TEasyItemHitTestInfoSet; + ItemInfo: TEasyHitInfoItem; + ViewPt: TPoint; +begin + Keys := KeyToKeyStates(Msg.Keys); + ViewPt := Scrollbars.MapWindowToView(Msg.Pos); + if ViewSupportsHeader and (Header.Visible) and (Msg.YPos < Header.Height) then + Header.WMLButtonDblClk(Msg) + else begin + Item := Groups.ItembyPoint(ViewPt); + DoDblClick(Button, SmallPointToPoint(Msg.Pos), KeysToShiftState(Msg.Keys)); + if Assigned(Item) then + begin + Item.HitTestAt(ViewPt, ItemHitInfo); + ItemInfo.Group := Item.OwnerGroup; + ItemInfo.Item := Item; + if ViewSupportsHeader then + ItemInfo.Column := Header.Columns.ColumnByPoint(ViewPt) + else + ItemInfo.Column := nil; + ItemInfo.HitInfo := ItemHitInfo; + DoItemDblClick(Button, SmallPointToPoint(Msg.Pos), ItemInfo) + end else + begin + Group := Groups.GroupByPoint(ViewPt); + if Assigned(Group) then + begin + Group.HitTestAt(ViewPt, GroupHitInfo); + GroupInfo.Group := Group; + GroupInfo.HitInfo := GroupHitInfo; + DoGroupDblClick(Button, SmallPointToPoint(Msg.Pos), GroupInfo) + end + end + end +end; + +procedure TCustomEasyListview.HandleKeyDown(Msg: TWMKeyDown); + + procedure MoveFocus(KeyStates: TShiftState; Item: TEasyItem); + begin + if Assigned(Item) then + begin + // Do this underhanded so we don't cause a grid rebuild but will keep the + // window from getting WM_PAINT messages until we are done + Inc(FUpdateCount); + try + if Selection.FocusedItem <> Item then + begin + if not Selection.Enabled and Selection.UseFocusRect then + Selection.FocusedItem := Item + else + if ssCtrl in KeyStates then + Selection.FocusedItem := Item + else + if ssShift in KeyStates then + begin + if Assigned(Selection.AnchorItem) then + begin + Selection.SelectRange(Selection.AnchorItem, Item, Selection.RectSelect, True); + Selection.FocusedItem := Item; + Selection.FocusedItem.Selected := True; + end else + begin + Selection.ClearAll; + Selection.FocusedItem := Item; + Selection.FocusedItem.Selected := True; + end + end else + begin + Selection.ClearAll; + Selection.FocusedItem := Item; + Selection.FocusedItem.Selected := True; + Selection.AnchorItem := Selection.FocusedItem; + end; + end; + finally + if Assigned(Selection.FocusedItem) then + begin + if Selection.FocusedItem.DisplayRect.Top < ClientInViewportCoords.Top + (RectHeight(ClientInViewportCoords) div 2) then + Selection.FocusedItem.MakeVisible(emvAuto {emvTop}) + else + Selection.FocusedItem.MakeVisible(emvAuto{emvBottom}); + end; + Dec(FUpdateCount); + UpdateWindow(Handle); + end + end + end; + + function FocusFirst: Boolean; + var + Item: TEasyItem; + begin + Result := False; + if not Assigned(Selection.FocusedItem) then + begin + Item := Groups.FirstVisibleItem; + if Assigned(Item) then + begin + Selection.FocusedItem := Item; + Result := True + end + end + end; + +var + Item: TEasyItem; + KeyStates: TShiftState; + Handled, Mark: Boolean; +begin + KeyStates := KeyDataToShiftState(Msg.KeyData); + + Selection.IncMultiChangeCount; + try + case Msg.CharCode of + VK_RIGHT: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.AdjacentItem(Selection.FocusedItem, acdRight); + MoveFocus(KeyStates, Item); + end + end else + Scrollbars.OffsetX := Scrollbars.OffsetX + 1; + end; + VK_LEFT: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.AdjacentItem(Selection.FocusedItem, acdLeft); + MoveFocus(KeyStates, Item); + end + end else + Scrollbars.OffsetX := Scrollbars.OffsetX - 1; + end; + VK_UP: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.AdjacentItem(Selection.FocusedItem, acdUp); + MoveFocus(KeyStates, Item); + end + end else + Scrollbars.OffsetY := Scrollbars.OffsetY + 1; + end; + VK_DOWN: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.AdjacentItem(Selection.FocusedItem, acdDown); + // Special case with one item + if not Assigned(Item) and (Selection.Count = 0) and (Groups.ItemCount = 1) then + begin + Selection.FocusedItem := nil; + Item := Groups.FirstItem; + end; + MoveFocus(KeyStates, Item); + end + end else + Scrollbars.OffsetY := Scrollbars.OffsetY + 1; + end; + VK_HOME: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.FirstVisibleItem; + MoveFocus(KeyStates, Item); + end + end else + begin + Scrollbars.OffsetX := 0; + Scrollbars.OffsetY := 0; + end + end; + VK_END: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.LastVisibleItem; + MoveFocus(KeyStates, Item); + end + end else + begin + Scrollbars.OffsetX := Scrollbars.MaxOffsetX; + Scrollbars.OffsetY := Scrollbars.MaxOffsetY; + end + end; + VK_NEXT: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.AdjacentItem(Selection.FocusedItem, acdPageDown); + MoveFocus(KeyStates, Item); + end + end else + Scrollbars.OffsetY := Scrollbars.OffsetY + ClientHeight; + end; + VK_PRIOR: + begin + if Selection.Enabled or Selection.UseFocusRect then + begin + if not FocusFirst then + begin + Item := Groups.AdjacentItem(Selection.FocusedItem, acdPageUp); + MoveFocus(KeyStates, Item); + end + end else + Scrollbars.OffsetY := Scrollbars.OffsetY - ClientHeight; + end; + VK_F2: + begin + if Assigned(Selection.FocusedItem) then + begin + EditManager.BeginEdit(Selection.FocusedItem, nil) + end; + end; + VK_SPACE: + begin + if Assigned(Selection.FocusedItem) then + if Selection.FocusedItem.PaintInfo.CheckType in [ectBox, ectRadio] then + Selection.FocusedItem.Checked := not Selection.FocusedItem.Checked + end; + VK_ADD: + begin + if (ssCtrl in KeyStates) then + AutoFitAllCells(True) + end; + Ord('A'), + Ord('a'): + begin + if ssCtrl in KeyStates then + Selection.SelectAll + end; + Ord('C'), Ord('c'): // Ctrl + 'C' Copy + begin + if ssCtrl in KeyStates then + begin + Handled := False; + DoClipboardCopy(Handled); + if not Handled then + CopyToClipboard; + end + end; + Ord('X'), Ord('x'): // Ctrl + 'X' Cut + begin + if ssCtrl in KeyStates then + begin + Handled := False; + Mark := True; + DoClipboardCut(Mark, Handled); + if not Handled then + CutToClipboard + else + if Mark then + MarkSelectedCut + end + end; + Ord('V'), Ord('v'): // // Ctrl + 'V' Paste + begin + if ssCtrl in KeyStates then + begin + Handled := False; + DoClipboardPaste(Handled); + if not Handled then + PasteFromClipboard; + end + end; + VK_ESCAPE: + begin + CancelCut; + Invalidate; + end; + end + finally + Selection.DecMultiChangeCount + end +end; + +procedure TCustomEasyListview.HandleMouseDown(Button: TCommonMouseButton; Msg: TWMMouse); +var + WindowPt: TPoint; + KeyState: TCommonKeyStates; + Group: TEasyGroup; + Item: TEasyItem; + GroupHitInfo: TEasyGroupHitTestInfoSet; + ItemHitInfo: TEasyItemHitTestInfoSet; + MouseDown, StartTimer, CtlDown, ShiftDown: Boolean; + Allow, DoDefaultItemDown: Boolean; +begin + Item := nil; + KeyState := KeyToKeyStates(Msg.Keys); + WindowPt := Scrollbars.MapWindowToView(Msg.Pos); + MouseDown := KeyState * [cksLButton, cksMButton, cksRButton] <> []; + CtlDown := cksControl in KeyState; + ShiftDown := cksShift in KeyState; + + Gesture.Path := ''; + + Group := ClickTestGroup(WindowPt, KeyState, GroupHitInfo); + if Assigned(Group) then + begin + // First see if the group expand button or checkbox was hit + if GroupTestExpand(GroupHitInfo) then + begin + // Only the left button can expand + if Button = cmbLeft then + begin + // Deal with the expansion in the mouse down + Allow := True; + if Group.Expanded then + DoGroupCollapsing(Group, Allow) + else + DoGroupExpanding(Group, Allow); + if Allow then + begin + BeginUpdate; + try + Include(FStates, ebcsGroupExpandPending); + Group.Expanded := not Group.Expanded; + // Need to make sure focused item is not in the collapsed group. + if not Group.Expanded and Assigned(Selection.FocusedItem) then + begin + if Selection.FocusedItem.OwnerGroup = Group then + begin + Item := Groups.NextVisibleItem(Selection.FocusedItem); + while Assigned(Item) do + begin + if Item.Enabled then + Break + else + Item := Groups.NextVisibleItem(Item) + end; + Selection.FocusedItem := Item; + end + end + finally + EndUpdate + end + end; + end + end else + // Next see if it hit the Group CheckBox + if egtOnCheckbox in GroupHitInfo then + begin + // Only the left button can Check Groups + if Button = cmbLeft then + begin + Include(FStates, ebcsCheckboxClickPending); + HotTrack.PendingObjectCheck := nil; + CheckManager.PendingObject := Group; + end + end else + begin + if Group.Expanded then + begin + // Exhausted Group hit tests, move into Item level testing + Item := ClickTestItem(WindowPt, Group, KeyState, ItemHitInfo); + if Assigned(Item) then + begin + DoDefaultItemDown := True; + DoItemMouseDown(Item, Button, DoDefaultItemDown); + if DoDefaultItemDown then + begin + // First see it the hit was on the items check box + if ehtOnCheck in ItemHitInfo then + begin + // Only the left button can Check Items + if Button = cmbLeft then + begin + Include(FStates, ebcsCheckboxClickPending); + HotTrack.PendingObjectCheck := nil; + CheckManager.PendingObject := Item; + end + end else + // Next see if Selection is enabled and if so handle item selection + // through direct hit or drag rectangle + if Selection.Enabled then + begin + Selection.IncMultiChangeCount; + Selection.GroupSelectBeginUpdate; + try + if Item.SelectionHitPt(WindowPt, eshtClickselect) then + begin + if MouseDown and (Button in Selection.MouseButton) then + begin + // See if the user click on the item a second time, if so get ready for + // an edit + StartTimer := (Button = cmbLeft) and ((Selection.Count = 1) and ((Selection.FocusedItem = Item) and Item.EditAreaHitPt(WindowPt) and Item.Selected)) and Focused; + + if Selection.MultiSelect then + begin + // Multi Selection Mode......... + if not Item.Selected and not(CtlDown or ShiftDown) then + Selection.ClearAll; + + // Focus the item if the Ctl key is not down. It will be done in the ButtonUp event + if (Selection.FocusedItem <> Item) and not CtlDown then + Selection.FocusedItem := Item; + + if not( CtlDown or ShiftDown) then + begin + Selection.AnchorItem := Item; + end else + begin + if not ShiftDown then + Selection.AnchorItem := Item + else + Selection.SelectRange(Selection.AnchorItem, Item, Selection.RectSelect, not CtlDown); + end + end else + begin + // Single Selection Mode......... + // Set the Focus to the hit item + if (Selection.FocusedItem <> Item) then + Selection.FocusedItem := Item; + Selection.AnchorItem := Item; + Selection.ClearAll; + end; + + // CtlClick then it will be selected in the Mouse Up + if not CtlDown then + Item.Selected := True; + + // This test allows descendent to cancel out of drags incase they do something in the Focus or Selection Changing events + if (((Button in DragRect.MouseButton) or (Button in DragManager.MouseButton)) and (States * [ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] <> [])) then + InitializeDragPendings(Item, SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys), Item.AllowDrag(WindowPt), True); + + if StartTimer then + begin + EditManager.AutoEditStartClickPt := WindowPt; + EditManager.StartAutoEditTimer; + end + end else + begin + if (Button in DragManager.MouseButton) and (States * [ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] <> []) then + InitializeDragPendings(Item, SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys), True, False); + end + end else + begin + // All mouse button down actions trigger the same events + // Since it is unknown what the user is trying to do yet + if (Button in DragRect.MouseButton) and (States * [ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] <> []) then + InitializeDragPendings(Item, SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys), False, True); + end + finally + Selection.GroupSelectEndUpdate; + Selection.DecMultiChangeCount + end + end else + if Selection.UseFocusRect then + begin + if Item.SelectionHitPt(WindowPt, eshtClickselect) then + Selection.FocusedItem := Item + end + end + end else + begin + // All mouse button down actions trigger the same events + // Since it is unknown what the user is trying to do yet + if (Button in DragRect.MouseButton) and (States * [ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] <> []) then + InitializeDragPendings(Item, SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys), False, True); + end + end else + // Did not hit an anything so get ready for a drag rectangle + if (Button in DragRect.MouseButton) and (States * [ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] <> []) then + InitializeDragPendings(Item, SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys), False, True); + end; + end else + begin + // All mouse button down actions trigger the same events + // Since it is unknown what the user is trying to do yet + // Did not hit a group so get ready for a drag rectangle + if (Button in DragRect.MouseButton) and (States * [ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] <> []) then + InitializeDragPendings(Item, SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys), False, True); + end; +end; + +procedure TCustomEasyListview.HandleMouseUp(Button: TCommonMouseButton; Msg: TWMMouse); +// Called when the Left Mouse button is released +var + Pt: TPoint; + KeyState: TCommonKeyStates; + GroupHitInfo: TEasyGroupHitTestInfoSet; + ItemHitInfo: TEasyItemHitTestInfoSet; + Group: TEasyGroup; + Item: TEasyItem; + GesturedHandled: Boolean; + CtlDown, ShiftDown, DoDefaultItemUp: Boolean; +begin + Group := nil; + KeyState := KeyToKeyStates(Msg.Keys); + CtlDown := cksControl in KeyState; + ShiftDown := cksShift in KeyState; + Pt := Scrollbars.MapWindowToView(Msg.Pos); + + GesturedHandled := False; + + if Gesture.Enabled and (Gesture.Path <> '') and ([ebcsGroupExpandPending, ebcsCheckboxClickPending, ebcsDragSelecting, ebcsDragging] * States = []) then + DoGesture(Gesture.Path, GesturedHandled); + + // In some cases we can get a mouse up message without a corresponding mouse + // down message. For example if we full expand the application if the mouse + // is over the Easy window after the expand we get a mouse up message + if ([ebcsLButtonDown, ebcsRButtonDown, ebcsMButtonDown] * States <> []) then + begin + if ebcsGroupExpandPending in States then + begin + // Don't do any other processing if the group expand button was clicked + end else + if ebcsCheckboxClickPending in States then + begin + Group := ClickTestGroup(Pt, KeyState, GroupHitInfo); + if CheckManager.PendingObject is TEasyGroup then + begin + if (egtOnCheckbox in GroupHitInfo) and Assigned(Group) then + Group.Checked := not Group.Checked; + end else + if CheckManager.PendingObject is TEasyItem then + begin + Item := ClickTestItem(Pt, Group, KeyState, ItemHitInfo); + if (ehtOnCheck in ItemHitInfo) and Assigned(Item) then + Item.Checked := not Item.Checked + end; + CheckManager.PendingObject.CheckHovering := False; + CheckManager.PendingObject.CheckPending := False; + CheckManager.PendingObject := nil; + end else + if ebcsDragSelecting in States then + begin + FinalizeDrag(SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys)); + end else + if ebcsDragging in States then + begin + // The VCL will send us a fake mouse button up when the drag starts. + // This screws everything. We will send a mouse up after the drag ends + // with the cbcsVCLDrag cleared + if not(ebcsVCLDrag in States) then + FinalizeDrag(SmallPointToPoint(Msg.Pos), KeyToKeyStates(Msg.Keys)); + end else + begin + // If not dragging or drag selecting then check if it is necessary to unselect + // the items + if not GesturedHandled then + begin + Item := ClickTestItem(Pt, Group, KeyState, ItemHitInfo); + if Assigned(Item) then + begin + DoDefaultItemUp := True; + DoItemMouseUp(Item, Button, DoDefaultItemUp); + if DoDefaultItemUp then + begin + DoItemClick(Item, KeyToKeyStates(Msg.Keys), ItemHitInfo); + if not Item.SelectionHitPt(Pt, eshtClickselect) then + Selection.ClearAll + else begin + // Allow MultiSelect + if Selection.MultiSelect then + begin + if not (ShiftDown or CtlDown) and (not Item.Selected or (Button = cmbLeft)) then + Selection.ClearAllExcept(Item) + else begin + if CtlDown then + begin + EditManager.StopAutoEditTimer; + if not ShiftDown then + Item.Selected := not Item.Selected; + Item.Focused := True; + end + end + end + end + end + end else + begin + Group := ClickTestGroup(Pt, KeyToKeyStates(Msg.Keys), GroupHitInfo); + if Assigned(Group) then + DoGroupClick(Group, KeyToKeyStates(Msg.Keys), GroupHitInfo); + Selection.ClearAll + end + end + end + end; +end; + +procedure TCustomEasyListview.InitializeDragPendings(HitItem: TEasyItem; WindowPoint: TPoint; KeyState: TCommonKeyStates; AllowDrag, AllowDragRect: Boolean); +// Called from the mouse down messages. It initializes the DragManager and the +// DragSelection Manager to prepare for a possible action. If the click was not +// on an item then it is interperted as a drag select. If it hit an item it +// is interperted as a D&D action. +var + StartSelectDrag, StartDrag: Boolean; + Pt: TPoint; +begin + // At least NT4 does not set the focus on a mouse click + CheckFocus; + + Mouse.Capture := Handle; + + // Initialize both Drag Select and Drag object just in case + StartSelectDrag := AllowDragRect and DragRect.InitializeDrag(WindowPoint, KeyState); + StartDrag := AllowDrag and DragManager.InitializeDrag(HitItem, WindowPoint, KeyState); + + Pt := Scrollbars.MapWindowToView(WindowPoint); + + if Assigned(DragManager.DragItem) and StartDrag then + begin + Include(FStates, ebcsDragPending); + DragRect.FinalizeDrag(KeyState) + end else + if StartSelectDrag then + begin + Include(FStates, ebcsDragSelectPending); + DragManager.FinalizeDrag(KeyState) + end; +end; + +function TCustomEasyListview.IsGrouped: Boolean; +begin + // Default definition that the control is in grouped mode is if the Top Margin is enabled + Result := PaintInfoGroup.MarginTop.Visible +end; + +procedure TCustomEasyListview.Loaded; +begin + inherited; + DoUpdate; +end; + +procedure TCustomEasyListview.LoadFromFile(FileName: WideString; Mode: Word); +var + F: TWideFileStream; +begin + F := TWideFileStream.Create(FileName, Mode); + try + LoadFromStream(F) + finally + F.Free + end +end; + +procedure TCustomEasyListview.LoadFromStream(S: TStream); +var + Version: Integer; + AView: TEasyListStyle; +begin + BeginUpdate; + try + S.Read(Version, SizeOf(Version)); + if Version > 0 then + begin + S.Read(AView, SizeOf(AView)); + View := AView; + Groups.LoadFromStream(S, Version); + Header.LoadFromStream(S, Version); + Groups.Rebuild(True); + end; + { if Version > n then + begin + end; } + finally + EndUpdate + end +end; + +procedure TCustomEasyListview.MarkSelectedCut; +var + Item: TEasyItem; +begin + CancelCut; + Item := Selection.First; + while Assigned(Item) do + begin + Item.Cut := True; + Item := Selection.Next(Item) + end +end; + +procedure TCustomEasyListview.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if Operation = opRemove then + begin + if AComponent = FImagesGroup then + FImagesGroup := nil; + if AComponent = FImagesExLarge then + FImagesExLarge := nil; + if AComponent = FImagesLarge then + FImagesLarge := nil; + if AComponent = FImagesSmall then + FImagesSmall := nil; + if AComponent = FImagesState then + FImagesState := nil; + if AComponent = Header.Images then + Header.Images := nil; + end +end; + +procedure TCustomEasyListview.PasteFromClipboard; +var + Handled: Boolean; +begin + Handled := False; + DoClipboardPaste(Handled) +end; + +procedure TCustomEasyListview.ResizeBackBits(NewWidth, NewHeight: Integer); +// Resizes the Bitmap for the DoubleBuffering. Called mainly when the window +// is resized. Note the bitmap only gets larger to maximize speed during dragging +begin + if CacheDoubleBufferBits and Assigned(BackBits) then + begin + // The Backbits grow to the largest window size + if (NewWidth > BackBits.Width) then + begin + if NewWidth > 0 then + BackBits.Width := NewWidth + else + BackBits.Width := 1 + end; + if NewHeight > BackBits.Height then + begin + if NewHeight > 0 then + BackBits.Height := NewHeight + else + BackBits.Height := 1; + end + end +end; + +procedure TCustomEasyListview.SaveToFile(FileName: WideString; Mode: Word); +var + F: TWideFileStream; +begin + F := TWideFileStream.Create(FileName, Mode); + try + SaveToStream(F) + finally + F.Free + end +end; + +procedure TCustomEasyListview.SaveToStream(S: TStream); +var + Version: Integer; +begin + Version := EASYLISTVIEW_STREAM_VERSION; + S.Write(Version, SizeOf(Version)); + S.Write(View, SizeOf(View)); + Groups.SaveToStream(S, Version); + Header.SaveToStream(S, Version) +end; + +procedure TCustomEasyListview.SetBackGround(const Value: TEasyBackgroundManager); +begin + if Assigned(FBackGround) then + FreeAndNil(FBackGround); + FBackGround := Value; +end; + +procedure TCustomEasyListview.SetCacheDoubleBufferBits(const Value: Boolean); +begin + if FCacheDoubleBufferBits <> Value then + begin + FCacheDoubleBufferBits := Value; + if Value then + begin + if not Assigned(FBackBits) then + begin + FBackBits := TBitmap.Create; + FBackBits.PixelFormat := pf32Bit + end + end else + FreeAndNil(FBackBits) + end +end; + +procedure TCustomEasyListview.SetGroupCollapseImage(Value: TBitmap); +begin + FGroupCollapseButton.Assign(Value); + if Assigned(FGroupCollapseButton) then + FGroupCollapseButton.PixelFormat := pf32Bit +end; + +procedure TCustomEasyListview.SetGroupExpandImage(Value: TBitmap); +begin + FGroupExpandButton.Assign(Value); + if Assigned(FGroupExpandButton) then + FGroupExpandButton.PixelFormat := pf32Bit +end; + +procedure TCustomEasyListview.SetGroupFont(Value: TFont); +begin + FGroupFont.Assign(Value) +end; + +procedure TCustomEasyListview.SetHintType(Value: TEasyHintType); +begin + HintInfo.HintType := Value +end; + +procedure TCustomEasyListview.SetImagesExLarge(Value: TCustomImageList); +begin + if Value <> FImagesExLarge then + begin + FImagesExLarge := Value; + SafeInvalidateRect(nil, False); + end +end; + +procedure TCustomEasyListview.SetImagesGroup(Value: TCustomImageList); +begin + if Value <> FImagesGroup then + begin + FImagesGroup := Value; + SafeInvalidateRect(nil, False); + end +end; + +procedure TCustomEasyListview.SetImagesLarge(Value: TCustomImageList); +begin + if Value <> FImagesLarge then + begin + FImagesLarge := Value; + SafeInvalidateRect(nil, False); + end +end; + +procedure TCustomEasyListview.SetImagesSmall(Value: TCustomImageList); +begin + if Value <> FImagesSmall then + begin + FImagesSmall := Value; + SafeInvalidateRect(nil, False); + end +end; + +procedure TCustomEasyListview.SetImagesState(const Value: TCustomImageList); +begin + if Value <> FImagesState then + begin + FImagesState := Value; + SafeInvalidateRect(nil, False); + end +end; + +procedure TCustomEasyListview.SetPaintInfoColumn(const Value: TEasyPaintInfoBaseColumn); +begin + if Value <> FPaintInfoColumn then + begin + FreeAndNil(FPaintInfoColumn); + FPaintInfoColumn := Value; + end +end; + +procedure TCustomEasyListview.SetPaintInfoGroup(const Value: TEasyPaintInfoBaseGroup); +begin + if Value <> FPaintInfoGroup then + begin + FreeAndNil(FPaintInfoGroup); + FPaintInfoGroup := Value; + end +end; + +procedure TCustomEasyListview.SetPaintInfoItem(const Value: TEasyPaintInfoBaseItem); +begin + if Value <> FPaintInfoItem then + begin + FreeAndNil(FPaintInfoItem); + FPaintInfoItem := Value; + end +end; + +procedure TCustomEasyListview.SetSelection(Value: TEasySelectionManager); +begin + if Value <> FSelection then + begin + FreeAndNil(FSelection); + FSelection := Value + end +end; + +procedure TCustomEasyListview.SetShowGroupMargins(const Value: Boolean); +begin + if FShowGroupMargins <> Value then + begin + FShowGroupMargins := Value; + DoUpdate; + end; +end; + +procedure TCustomEasyListview.SetShowInactive(const Value: Boolean); +begin + if FShowInactive <> Value then + begin + FShowInactive := Value; + SafeInvalidateRect(nil, True) + end +end; + +procedure TCustomEasyListview.SetShowThemedBorder(Value: Boolean); +begin + if Value <> FShowThemedBorder then + begin + FShowThemedBorder := Value; + // Need to modify the NonClient area + RecreateWnd; + end +end; + +procedure TCustomEasyListview.SetView(Value: TEasyListStyle); +begin + if FView <> Value then + begin + FView := Value; + Groups.Rebuild(True); + + if IsVertView then + WheelMouseDefaultScroll := edwsVert + else + WheelMouseDefaultScroll := edwsHorz; + end +end; + +procedure TCustomEasyListview.WMChar(var Msg: TWMChar); +begin + inherited; + IncrementalSearch.HandleWMChar(Msg); +end; + +procedure TCustomEasyListview.WMClose(var Msg: TWMClose); +begin + EditManager.EndEdit; + inherited; +end; + +procedure TCustomEasyListview.WMContextMenu(var Msg: TMessage); +var + Item: TEasyItem; + Group: TEasyGroup; + Pt: TPoint; + HitInfoGroup: TEasyHitInfoGroup; + HitInfoItem: TEasyHitInfoItem; + Menu: TPopupMenu; + Handled, SkipHitTest, MenuKey: Boolean; +begin + if not EditManager.Editing and not (Gesture.Enabled and (Gesture.Path <> '')) then + begin + Handled := False; + MenuKey := False; + if not (ebcsCancelContextMenu in States) then + begin + SkipHitTest := False; + // Support Dual monitors with SmallPointToPoint + Pt:= SmallPointToPoint(SmallPoint(Msg.LParamLo, Msg.LParamHi)); + if ((Pt.X = 65535) and (Pt.Y = 65535)) or ((Pt.X = -1) and (Pt.Y = -1)) then + begin + MenuKey := True; + Pt := ScreenToClient(Mouse.CursorPos); + if not PtInRect(ClientRect, Pt) or (Selection.Count = 0) then + begin + Pt.X := 0; + Pt.Y := 0; + SkipHitTest := True; + end; + Pt := ClientToScreen(Pt); + end; + + if MenuKey and (Selection.Count > 0) then + begin + HitInfoItem.Item := Selection.First; + Pt := ClientToScreen(HitInfoItem.Item.DisplayRect.TopLeft); + Pt.Y := Pt.Y + Header.RuntimeHeight; + HitInfoItem.Column := nil; + HitInfoItem.Group := HitInfoItem.Item.OwnerGroup; + HitInfoItem.HitInfo := [ehtOnLabel, ehtOnIcon]; + DoItemContextMenu(HitInfoItem, Pt, Menu, Handled) + end else + if not SkipHitTest then + begin + if IsHeaderMouseMsg(PointToSmallPoint( ScreenToClient(Pt))) then + begin + Pt := ClientToScreen(Pt); + Header.WMContextMenu(Msg); + Handled := True; + end else + begin + Menu := nil; + Exclude(FStates, ebcsDragSelectPending); + Exclude(FStates, ebcsDragPending); + + Handled := False; + Group := Groups.GroupByPoint(Scrollbars.MapWindowToView(ScreenToClient(Pt))); + if Assigned(Group) then + begin + // The hit was in a group so now see if it was in an item + Item := Group.ItembyPoint(Scrollbars.MapWindowToView( ScreenToClient(Pt))); + if Assigned(Item) then + begin + if Item.HitTestAt(Scrollbars.MapWindowToView( ScreenToClient(Pt)), HitInfoItem.HitInfo) then + begin + HitInfoItem.Column := nil; + HitInfoItem.Group := Group; + HitInfoItem.Item := Item; + DoItemContextMenu(HitInfoItem, Pt, Menu, Handled) + end + end; + if not Assigned(Menu) and not Handled then + begin + HitInfoGroup.Group := Group; + Group.HitTestAt(Scrollbars.MapWindowToView(ScreenToClient(Pt)), HitInfoGroup.HitInfo); + DoGroupContextMenu(HitInfoGroup, Pt, Menu, Handled) + end + end + end + end; + if not Handled then + DoContextMenu(Pt, Handled); + + if Assigned(Menu) and not Handled then + begin + Menu.Popup(Msg.LParamLo, Msg.LParamHi); + Msg.Result := 1 + end else + if not Handled then + inherited // Use the PopupMenu property from TControl + end; + end else + begin + Msg.Result := 1; + inherited + end; + Exclude(FStates, ebcsCancelContextMenu); +end; + +procedure TCustomEasyListview.WMDestroy(var Msg: TMessage); +begin + EditManager.EndEdit; + DragManager.Registered := False; + Header.DragManager.Registered := False; + inherited; +end; + +procedure TCustomEasyListview.WMEasyThreadCallback(var Msg: TWMThreadRequest); +begin + DoThreadCallback(Msg) +end; + +procedure TCustomEasyListview.WMEraseBkGnd(var Msg: TWMEraseBkGnd); +begin + Msg.Result := 1; +end; + +procedure TCustomEasyListview.WMGetDlgCode(var Msg: TWMGetDlgCode); +// The VCL forms use the Dialog Window Proc so we need to tell windows we want +// the arrow keys for navigation +begin + Msg.Result := Msg.Result or DLGC_WANTALLKEYS or DLGC_WANTARROWS or DLGC_WANTCHARS; +end; + +procedure TCustomEasyListview.WMHScroll(var Msg: TWMHScroll); +// Called to scroll the Window, the Window is responsible for actually performing +// the scroll +begin + inherited; + if Msg.ScrollCode <> SB_ENDSCROLL then + Include(FStates, ebcsScrolling) + else + Exclude(FStates, ebcsScrolling); + ScrollBars.WMHScroll(Msg); + SafeInvalidateRect(nil, False); +end; + +procedure TCustomEasyListview.WMKeyDown(var Msg: TWMKeyDown); +// Called when the user pressed a key on the keyboard. The Scrollbars need to +// know in case the user is scrolling using the keys. +var + Shift: TShiftState; + DoDefault: Boolean; +begin + inherited; + if (ebcsDragSelecting in States) then + begin + DragRect.WMKeyDown(Msg); + end else + begin + IncrementalSearch.HandleWMKeyDown(Msg); + + Shift := KeyDataToShiftState(Msg.KeyData); + DoDefault := True; + DoKeyAction(Msg.CharCode, Shift, DoDefault); + if DoDefault then + HandleKeyDown(Msg); + end; +end; + +procedure TCustomEasyListview.WMKillFocus(var Msg: TWMKillFocus); +begin + inherited; + if HotTrack.OnlyFocused then + HotTrack.PendingObject[Point(0, 0)] := nil; + SafeInvalidateRect(nil, True); +end; + +procedure TCustomEasyListview.WMLButtonDblClk(var Msg: TWMLButtonDblClk); +begin + // Cancel the edit (called in WMLButtonDown) + EditManager.EndEdit; + + inherited; + HandleDblClick(cmbLeft, Msg); +end; + +procedure TCustomEasyListview.WMLButtonDown(var Msg: TWMLButtonDown); +// Called when the Left Mouse button is pressed +begin + Include(FStates, ebcsLButtonDown); + CheckFocus; + if IsHeaderMouseMsg(Msg.Pos) then + begin + // Should this call a Column manager or a Column? + if Assigned(Header) then + begin + Header.CaptureMouse; + Header.WMLButtonDown(Msg); + end + end else + begin + inherited; + HandleMouseDown(cmbLeft, Msg) + end; + LastMousePos := Msg.Pos +end; + +procedure TCustomEasyListview.WMLButtonUp(var Msg: TWMLButtonUp); +// Called when the Left Mouse button is released +begin + if IsHeaderMouseMsg(Msg.Pos) then + begin + // Should this call a Column manager or a Column? + if Assigned(Header) then + begin + Header.WMLButtonUp(Msg); + // Need to allow HotTracking to finish up. + Header.WMMouseMove(Msg); + Header.ReleaseMouse; + end + end else + begin + // The VCL D&D will "Perform" a Left Button Up when StartDrag is called. As such + // a lot of the State Flags get prematurely reset. + if not (ebcsVCLDrag in States) then + ClearPendingDrags; + inherited; + HandleMouseUp(cmbLeft, Msg); + Mouse.Capture := 0; + end; + // ClearStates will get called from the VCL end Drag event + if not (ebcsVCLDrag in States) then + ClearStates; +end; + +procedure TCustomEasyListview.WMMButtonDblClk(var Msg: TWMMButtonDblClk); +begin + inherited; + HandleDblClick(cmbMiddle, Msg) +end; + +procedure TCustomEasyListview.WMMButtonDown(var Msg: TWMMButtonDown); +begin + Include(FStates, ebcsMButtonDown); + CheckFocus; + inherited; + HandleMouseDown(cmbMiddle, Msg); + LastMousePos := Msg.Pos +end; + +procedure TCustomEasyListview.WMMButtonUp(var Msg: TWMMButtonUp); +begin + HandleMouseUp(cmbMiddle, Msg); + ClearPendingDrags; + inherited; + Mouse.Capture := 0; + ClearStates; +end; + +procedure TCustomEasyListview.WMMouseActivate(var Msg: TWMMouseActivate); +// Called when the mouse is clicked in a window and the window does not have +// focus. By responding MA_ACTIVATE the window should recieve focus but this +// does not seem to happen on NT4. Necded a SetFocus when the mouse is pressed +begin + inherited; + if not EditManager.Editing then + begin + CheckFocus; + Msg.Result := MA_ACTIVATE; + end else + Msg.Result := MA_NOACTIVATE; +end; + +procedure TCustomEasyListview.WMMouseMove(var Msg: TWMMouseMove); +// Called when the mouse is moved +var + KeyState: TCommonKeyStates; + GroupHitInfo: TEasyGroupHitTestInfoSet; + ItemHitInfo: TEasyItemHitTestInfoSet; + Effects: TCommonDropEffect; + Group: TEasyGroup; + HotTrackCheckObj, HotTrackObj: TEasyCollectionItem; + Item: TEasyItem; + Pt: TPoint; + Dx, Dy: Integer; + LocalGesture: WideChar; +begin + KeyState := KeyToKeyStates(Msg.Keys); + Pt := Scrollbars.MapWindowToView(Msg.Pos); + HotTrackCheckObj := nil; + + if Gesture.Enabled then + begin + Dx := Msg.XPos - LastMousePos.x; + Dy := Msg.YPos - LastMousePos.y; + if ((cksLButton in KeyState) and (cmbLeft in Gesture.Button)) or + ((cksRButton in KeyState) and (cmbRight in Gesture.Button)) or + ((cksMButton in KeyState) and (cmbMiddle in Gesture.Button)) then + begin + LocalGesture := '*'; + if (Dx > Gesture.Tolerance) and (Abs(Dy) < 2 * Gesture.Tolerance) then + LocalGesture := 'R' + else if (-Dx > Gesture.Tolerance) and (Abs(Dy) < 2 * Gesture.Tolerance) then + LocalGesture := 'L' + else if (Dy > Gesture.Tolerance) and (Abs(Dx) < 2 * Gesture.Tolerance) then + LocalGesture := 'D' + else if (-Dy > Gesture.Tolerance) and (Abs(Dx) < 2 * Gesture.Tolerance) then + LocalGesture := 'U'; + if LocalGesture <> '*' then + begin + if Length(Gesture.Path) > 0 then + begin + if Gesture.Path[Length(Gesture.Path)] <> LocalGesture then + Gesture.Path := Gesture.Path + LocalGesture + end else + Gesture.Path := LocalGesture + end + end + end; + + if IsHeaderMouseMsg(Msg.Pos) then + begin + HotTrack.PendingObject[Point(0, 0)] := nil; + Header.WMMouseMove(Msg) + end else + begin + if not Assigned(HotTrack.PendingObject[Point(0,0)]) then + Cursor := crDefault; + + // First see if there is any kind of drag operation pending or occuring + if DragInitiated then + begin + // First check for special cases, such as when the drag selection rectangle + // is active or an item is being dragged in a D&D operation. If not see if + // this is the first move after a mouse press and one of the above cases is + // pending. If we then detect a drag start then setup the flags and initialize + // the action with the appropiate mananger. + if ebcsDragSelecting in States then + DragRect.Drag(Canvas, SmallPointToPoint(Msg.Pos), KeyState, Effects) + else + if ebcsDragging in States then + // his only works for VCL drag and drop. The System takes the mouse for OLE + DragManager.Drag(Canvas, SmallPointToPoint(Msg.Pos), KeyState, Effects) + else + // We are not drag selecting; check if we have a drag pending + if [ebcsDragSelectPending, ebcsDragPending] * States <> [] then + begin + if DragDetectPlus(Handle, SmallPointToPoint(Msg.Pos)) then + begin + // The decision to if the mouse was a drag or a select was made when the + // mouse was pressed, based on the area of the control the click occured + if ebcsDragSelectPending in States then + begin + // We are now drag selecting so update the states + Include(FStates, ebcsDragSelecting); + Exclude(FStates, ebcsDragSelectPending); + if KeyState * [cksShift, cksControl] = [] then + Include(FStates, ebcsDragSelecting); + Exclude(FStates, ebcsDragSelectPending); + if KeyState * [cksShift, cksControl] = [] then + Selection.ClearAll; + EditManager.StopAutoEditTimer; + DragRect.BeginDrag(SmallPointToPoint(Msg.Pos), KeyState); + // Since for a selection rect we have the mouse captured we can just + // call DragEnter once here and be done with it + DragRect.DragEnter(nil, Canvas, ScreenToClient(Mouse.CursorPos), KeyState, Effects); + end else + if ebcsDragPending in States then + begin + Item := Groups.ItembyPoint(Scrollbars.MapWindowToView(SmallPointToPoint(Msg.Pos))); + if Assigned(Item) then + begin + // Since we don't select until a MouseUp on Ctl-Click we must do it here just in case + if cksControl in KeyState then + begin + Item.Selected := True; + Item.Focused := True; + end; + Include(FStates, ebcsDragging); + if edtVCL = DragManager.DragType then + Include(FStates, ebcsVCLDrag); + Exclude(FStates, ebcsDragPending); + EditManager.StopAutoEditTimer; + try + DragManager.BeginDrag(SmallPointToPoint(Msg.Pos), KeyState); + finally + // If was an OLE drag then the subsystem has taken the mouse and we + // will never get a mouse up so fake it, the VCL system fakes it on + // its own but if the drag/drop is not enabled then it never will so + // fake it for all cases + + if not(ebcsVCLDrag in States) then + begin + if ebcsLButtonDown in States then + Perform(WM_LBUTTONUP, TMessage(Msg).wParam, TMessage(Msg).LParam) + else + if ebcsRButtonDown in States then + begin + // Don't want to show the context menu after a drag drop with + // the right button + Include(FStates, ebcsCancelContextMenu); + Perform(WM_RBUTTONUP, TMessage(Msg).wParam, TMessage(Msg).LParam) + end else + if ebcsMButtonDown in States then + Perform(WM_MBUTTONUP, TMessage(Msg).wParam, TMessage(Msg).LParam) + end + end + end else + begin + Selection.ClearAll; + // Switch from a DragDrop Pending to a DragSelect Pending + Exclude(FStates, ebcsDragPending); + if DragRect.Enabled then + Include(FStates, ebcsDragSelectPending); + end + end + end + end + end else // Not DragInitiated + begin + HotTrackObj := nil; + + Group := Groups.GroupByPoint(Pt); + if Assigned(Group) then + begin + if Group.HitTestAt(Pt, GroupHitInfo) then + // See if it is in a Group Check box first + if egtOnCheckbox in GroupHitInfo then + HotTrackCheckObj := Group + else begin + if (htgAnyWhere in HotTrack.GroupTrack) or + ((htgIcon in HotTrack.GroupTrack) and (egtOnIcon in GroupHitInfo)) or + ((htgText in HotTrack.GroupTrack) and (egtOnText in GroupHitInfo)) or + ((htgTopMargin in HotTrack.GroupTrack) and (egtOnHeader in GroupHitInfo)) or + ((htgBottomMargin in HotTrack.GroupTrack) and (egtOnFooter in GroupHitInfo)) or + ((htgLeftMargin in HotTrack.GroupTrack) and (egtOnLeftMargin in GroupHitInfo)) or + ((htgRightMargin in HotTrack.GroupTrack) and (egtOnRightMargin in GroupHitInfo)) then + HotTrackObj := Group; + end + end; + + // Next See if it is in an Item Check box + if not (Assigned(HotTrackCheckObj) or Assigned(HotTrackObj)) then + begin + Item := Groups.ItembyPoint(Pt); + if Assigned(Item) then + begin + if Item.HitTestAt(Pt, ItemHitInfo) then + begin + if ehtOnCheck in ItemHitInfo then + HotTrackCheckObj := Item + else begin + if (htiAnyWhere in HotTrack.ItemTrack) or + ((htiIcon in HotTrack.ItemTrack) and (ehtOnIcon in ItemHitInfo)) or + ((htiText in HotTrack.ItemTrack) and (ehtOnText in ItemHitInfo)) then + HotTrackObj := Item + end + end + end + end; + + if (ebcsCheckboxClickPending in States) then + begin + if Assigned(HotTrackCheckObj) then + begin + if CheckManager.PendingObject <> HotTrackCheckObj then + begin + CheckManager.PendingObject.CheckHovering := True; + HotTrackCheckObj := nil + end else + CheckManager.PendingObject.CheckHovering := False; + end else + begin + CheckManager.PendingObject.CheckHovering := True; + end; + if HotTrackCheckObj <> nil then + HotTrackCheckObj := nil; + end; + + if not Assigned(CheckManager.PendingObject) and (Self.Focused or not HotTrack.OnlyFocused) and + PtInRect(ClientRect, SmallPointToPoint(Msg.Pos)) and (Assigned(HotTrackObj) and (HotTrackObj.Enabled)) then + HotTrack.PendingObject[SmallPointToPoint(Msg.Pos)] := HotTrackObj + else + HotTrack.PendingObject[SmallPointToPoint(Msg.Pos)] := nil; + + HotTrack.PendingObjectCheck := HotTrackCheckObj; + + // We are not drag selecting and do not have a drag pending so it is a normal + // mouse move + inherited; + end + end; + LastMousePos := Msg.Pos; +end; + +procedure TCustomEasyListview.WMNCCalcSize(var Msg: TWMNCCalcSize); +{$IFDEF USETHEMES} +var + R: TRect; +{$ENDIF USETHEMES} +begin + if DrawWithThemes then + begin + DefaultHandler(Msg); + {$IFDEF USETHEMES} + if succeeded(GetThemeBackgroundContentRect(Themes.ListviewTheme, Canvas.Handle, LVP_EMPTYTEXT, LIS_NORMAL, Msg.CalcSize_Params^.rgrc[0], @R)) then + begin + InflateRect(R, -1-BorderWidth, -1-BorderWidth); + Msg.CalcSize_Params^.rgrc[0] := R; + end + {$ENDIF USETHEMES} + end else + begin + inherited; + end +end; + +procedure TCustomEasyListview.WMNCPaint(var Msg: TWMNCPaint); +// The VCL screws this up and draws over the scrollbars making them flicker and +// be covered up by backgound painting when dragging the the window from off the +// screen +const + InnerStyles: array[TBevelCut] of Integer = (0, BDR_SUNKENINNER, BDR_RAISEDINNER, 0); + OuterStyles: array[TBevelCut] of Integer = (0, BDR_SUNKENOUTER, BDR_RAISEDOUTER, 0); + EdgeStyles: array[TBevelKind] of Integer = (0, 0, BF_SOFT, BF_FLAT); + Ctl3DStyles: array[Boolean] of Integer = (BF_MONO, 0); +var + ClientR, WindowR, WindowROrig, Filler: TRect; + DC: HDC; + Style, StyleEx: Longword; + Pt: TPoint; + {$IFDEF USETHEMES} + R: TRect; + {$ENDIF USETHEMES} +begin + // Let Windows paint the scrollbars first + DefaultHandler(Msg); + // Always paint the NC area as refreshing it can be tricky and it sometimes + // is not redrawn on startup +// if UpdateCount = 0 then + begin + DC := GetWindowDC(Handle); + try + NCCanvas.Handle := DC; + + if (BevelKind <> bkNone) or (BorderWidth > 0){ or DrawWithThemes} then + begin + Windows.GetClientRect(Handle, ClientR); + Windows.GetWindowRect(Handle, WindowR); + Pt := WindowR.TopLeft; + Windows.ScreenToClient(Handle, Pt); + // Map the screen coordinates of the WindowRect to a 0,0 offset + OffsetRect(WindowR, -WindowR.Left, -WindowR.Top); + // Make a copy + WindowROrig := WindowR; + // Map the ClientRect to Window coordinates + OffsetRect(ClientR, -Pt.X, -Pt.Y); + Style := GetWindowLong(Handle, GWL_STYLE); + if (Style and WS_VSCROLL) <> 0 then + begin + StyleEx := GetWindowLong(Handle, GWL_EXSTYLE); + if (StyleEx and WS_EX_LEFTSCROLLBAR) <> 0 then + Dec(ClientR.Left, GetSystemMetrics(SM_CYVSCROLL)) + else + Inc(ClientR.Right, GetSystemMetrics(SM_CYVSCROLL)) + end; + if (Style and WS_HSCROLL) <> 0 then + Inc(ClientR.Bottom, GetSystemMetrics(SM_CYHSCROLL)); + + // Paint the little square in the corner made by the scroll bars + if ((Style and WS_VSCROLL) <> 0) and ((Style and WS_HSCROLL) <> 0) then + begin + Filler := ClientR; + Filler.Left := Filler.Right - GetSystemMetrics(SM_CYVSCROLL); + Filler.Top := Filler.Bottom - GetSystemMetrics(SM_CYHSCROLL); + NCCanvas.Brush.Color := clBtnFace; + NCCanvas.FillRect(Filler); + end; + + // if not DrawWithThemes then + // Punch out the client area and the scroll bar area + ExcludeClipRect(DC, ClientR.Left, ClientR.Top, ClientR.Right, ClientR.Bottom); + + if DrawWithThemes then + begin + {$IFDEF USETHEMES} + if not ShowThemedBorder then + begin + R := Rect(0, 0, 0, 0); + GetThemeBackgroundExtent(Themes.ListviewTheme, NCCanvas.Handle, LVP_EMPTYTEXT, LIS_NORMAL, ClientRect, R); + InflateRect(WindowROrig, R.Left - ClientRect.Left, R.Top - ClientRect.Top); + end; + DrawThemeBackground(Themes.ListviewTheme, NCCanvas.Handle, LVP_EMPTYTEXT, LIS_NORMAL, WindowROrig, nil); + {$ENDIF USETHEMES} + end else + begin + Windows.FillRect(DC, WindowR, Brush.Handle); + DrawEdge(DC, WindowROrig, InnerStyles[BevelInner] or OuterStyles[BevelOuter], + Byte(BevelEdges) or EdgeStyles[BevelKind] or Ctl3DStyles[Ctl3D] or BF_ADJUST); + end + end else + begin + Windows.GetWindowRect(Handle, WindowR); + end; + finally + NCCanvas.Handle := 0; + ReleaseDC(Handle, DC); + end + end +end; + +procedure TCustomEasyListview.WMPaint(var Msg: TWMPaint); +// The VCL does a poor job at optimizing the paint messages. It does not look +// to see what rectangle the system actually needs painted. Sometimes it only +// needs a small slice of the window painted, why paint it all? This implementation +// also handles DoubleBuffering better +var + PaintInfo: TPaintStruct; + ClientR: TRect; +begin + BeginPaint(Handle, PaintInfo); + try + if (UpdateCount = 0) or ForcePaint then + begin + try + if not CacheDoubleBufferBits then + begin + BackBits := TBitmap.Create; + BackBits.PixelFormat := pf32Bit; + Windows.GetClientRect(Handle, ClientR); + if ClientWidth > 0 then + BackBits.Width := ClientWidth + else + BackBits.Width := 1; + if ClientHeight > 0 then + BackBits.Height := ClientHeight + else + BackBits.Height := 1; + end; + BackBits.Canvas.Lock; + try + if not IsRectEmpty(PaintInfo.rcPaint) and (ClientWidth > 0) and (ClientHeight > 0) then + begin + // Assign attributes to the Canvas used + BackBits.Canvas.Font.Assign(Font); + BackBits.Canvas.Brush.Color := Color; + BackBits.Canvas.Brush.Assign(Brush); + + SetWindowOrgEx(BackBits.Canvas.Handle, 0, 0, nil); + SetViewportOrgEx(BackBits.Canvas.Handle, 0, 0, nil); + FillRect(BackBits.Canvas.Handle, PaintInfo.rcPaint, Brush.Handle); + SelectClipRgn(BackBits.Canvas.Handle, 0); // Remove the clipping region we created + + // Paint the rectangle that is needed + DoPaintRect(BackBits.Canvas, PaintInfo.rcPaint, False); + + // Remove any clipping regions applied by the views. + SelectClipRgn(BackBits.Canvas.Handle, 0); + // Redraw the drag selecting rectangle + if (ebcsDragSelecting in States) then + DragRect.PaintSelectionRect(BackBits.Canvas); + + DoAfterPaint(BackBits.Canvas, PaintInfo.rcPaint); + + // Blast the bits to the screen + BitBlt(PaintInfo.hdc, PaintInfo.rcPaint.Left, PaintInfo.rcPaint.Top, + PaintInfo.rcPaint.Right - PaintInfo.rcPaint.Left, + PaintInfo.rcPaint.Bottom - PaintInfo.rcPaint.Top, + BackBits.Canvas.Handle, PaintInfo.rcPaint.Left, PaintInfo.rcPaint.Top, SRCCOPY); + end + finally + BackBits.Canvas.Unlock; + end; + finally + if not CacheDoubleBufferBits then + FreeAndNil(FBackBits) + end; + end + finally + EndPaint(Handle, PaintInfo); + end +end; + +procedure TCustomEasyListview.WMRButtonDblClk(var Msg: TWMRButtonDblClk); +begin + inherited; + HandleDblClick(cmbRight, Msg) +end; + +procedure TCustomEasyListview.WMRButtonDown(var Msg: TWMRButtonDown); +begin + Include(FStates, ebcsRButtonDown); + CheckFocus; + if IsHeaderMouseMsg(Msg.Pos) then + begin + // Should this call a Column manager or a Column? + if Assigned(Header) then + begin + Header.WMRButtonDown(Msg); + Header.ReleaseMouse; + end + end else + begin + inherited; + HandleMouseDown(cmbRight, Msg) + end; + LastMousePos := Msg.Pos +end; + +procedure TCustomEasyListview.WMRButtonUp(var Msg: TWMRButtonUp); +begin + if IsHeaderMouseMsg(Msg.Pos) then + begin + // Should this call a Column manager or a Column? + if Assigned(Header) then + begin + inherited; + // ContextMenu handled it + if Msg.Result = 0 then + Header.WMRButtonUp(Msg); + // Need to allow HotTracking to finish up. + if Assigned(Header.HotTrackedColumn) then + Header.WMMouseMove(Msg); + Header.ReleaseMouse; + end + end else + begin + if [ebcsDragSelecting, ebcsDragging, ebcsVCLDrag] * States <> [] then + Include(FStates, ebcsCancelContextMenu); + if Msg.Result = 0 then + HandleMouseUp(cmbRight, Msg); + ClearPendingDrags; + inherited; // Handles the context menu + Mouse.Capture := 0; + end; + ClearStates; +end; + +procedure TCustomEasyListview.WMSetCursor(var Msg: TWMSetCursor); +begin + inherited; +end; + +procedure TCustomEasyListview.WMSetFocus(var Msg: TWMSetFocus); +begin + inherited; + SafeInvalidateRect(nil, True); + //Selection.Invalidate(False)VisibleSelected(False); +end; + +procedure TCustomEasyListview.WMSize(var Msg: TWMSize); +begin + {$IFDEF GXDEBUG} + SendDebug('TCustomEasyListview.WMSize'); + {$ENDIF GXDEBUG} + Header.WMSize(Msg); // do it first + inherited; +end; + +procedure TCustomEasyListview.WMTabMoveFocus(var Msg: TMessage); +var + NextItem: TEasyItem; + JumpToNextItem: Boolean; + NextColumn: TEasyColumn; +begin + JumpToNextItem := True; + NextItem := EditManager.TabMoveFocusItem; + if EditManager.TabEditColumns then + begin + NextColumn := EditManager.TabMoveFocusColumn; + if Assigned(NextColumn) then + begin + EditManager.TabMoveFocusItem := nil; + JumpToNextItem := False; + NextColumn.MakeVisible(emvTop); + EditManager.BeginEdit(NextItem, NextColumn); + end + end; + if JumpToNextItem then + begin + EditManager.TabMoveFocusItem := nil; + if Assigned(NextItem) then + begin + NextItem.Focused := True; + NextItem.MakeVisible(emvAuto); + EditManager.BeginEdit(NextItem, nil) + end; + end +end; + +procedure TCustomEasyListview.WMVScroll(var Msg: TWMVScroll); +// Called to scroll the Window, the Window is responsible for actually performing +// the scroll +begin + inherited; + if Msg.ScrollCode <> SB_ENDSCROLL then + Include(FStates, ebcsScrolling) + else + Exclude(FStates, ebcsScrolling); + ScrollBars.WMVScroll(Msg); + SafeInvalidateRect(nil, False); +end; + +procedure TCustomEasyListview.WMWindowPosChanged(var Msg: TWMWindowPosChanged); +// Called after the window has changed size +var + YChanged, XChanged: Boolean; +begin + {$IFDEF GXDEBUG} + SendDebug('TCustomEasyListview.WMWindowPosChanged'); + {$ENDIF GXDEBUG} + YChanged := False; + XChanged := False; + // Only use cx and cy if NOSIZE is not used + if Msg.WindowPos^.flags and SWP_NOSIZE = 0 then + begin + YChanged := Height <> Msg.WindowPos.cy; + XChanged := Width <> Msg.WindowPos.cx; + end; + inherited; + if YChanged or XChanged then + begin + try + Groups.Rebuild(True); + ScrollBars.ReCalculateScrollbars(True, False); + finally + ResizeBackBits(Msg.WindowPos.cx, Msg.WindowPos.cy); + end; + end +end; + +procedure TCustomEasyListview.WMWindowPosChanging(var Msg: TWMWindowPosChanging); +// Called when the window is changing size +var + YChanged, XChanged: Boolean; +begin + {$IFDEF GXDEBUG} + SendDebug('TCustomEasyListview.WMWindowPosChanging'); + {$ENDIF GXDEBUG} + YChanged := False; + XChanged := False; + // Only use cx and cy if NOSIZE is not used + if Msg.WindowPos^.flags and SWP_NOSIZE = 0 then + begin + YChanged := Height <> Msg.WindowPos.cy; + XChanged := Width <> Msg.WindowPos.cx; + end; + + // Track the offset of the background image if desired before the control size is updated + BackGround.WMWindowPosChanging(Msg); + inherited; + if YChanged or XChanged then + DoResize(Msg.WindowPos.cx - Width, Msg.WindowPos.cy - Height) +end; + +{ TEasyItem } + +constructor TEasyCollectionItem.Create(ACollection: TEasyCollection); +begin + inherited Create(); + Collection := ACollection; + Include(FState, esosVisible); + Include(FState, esosEnabled); + FVisibleIndex := -1; +end; + +destructor TEasyCollectionItem.Destroy; +begin + SetDestroyFlags; + DataInf := nil; + if Assigned(OwnerListview) then + begin + if OwnerListview.HotTrack.PendingObjectCheck = Self then + OwnerListview.HotTrack.PendingObjectCheck := nil; + if OwnerListview.HotTrack.FPendingObject = Self then + OwnerListview.HotTrack.FPendingObject := nil; + end; + Freeing; + inherited; + if OwnsPaintInfo then + FreeAndNil(FPaintInfo); +end; + +function TEasyCollectionItem.AllowDrag(ViewportPt: TPoint): Boolean; +begin + Result := True +end; + +function TEasyCollectionItem.DefaultImageList(ImageSize: TEasyImageSize): TCustomImageList; +begin + Result := nil; + case ImageSize of + eisSmall: Result := OwnerListview.ImagesSmall; + eisLarge: Result := OwnerListview.ImagesLarge; + eisExtraLarge: Result := OwnerListview.ImagesExLarge; + end +end; + +function TEasyCollectionItem.GetAlignment: TAlignment; +begin + Result := PaintInfo.Alignment +end; + +function TEasyCollectionItem.GetBold: Boolean; +begin + Result := esosBold in State +end; + +function TEasyCollectionItem.GetBorder: Integer; +begin + Result := PaintInfo.Border +end; + +function TEasyCollectionItem.GetBorderColor: TColor; +begin + Result := PaintInfo.BorderColor +end; + +function TEasyCollectionItem.GetCaption: WideString; +begin + Result := GetCaptions(0) +end; + +function TEasyCollectionItem.GetCaptionIndent: Integer; +begin + Result := PaintInfo.CaptionIndent +end; + +function TEasyCollectionItem.GetChecked: Boolean; +begin + Result := esosChecked in State +end; + +function TEasyCollectionItem.GetCheckFlat: Boolean; +begin + Result := PaintInfo.CheckFlat +end; + +function TEasyCollectionItem.GetCheckHovering: Boolean; +begin + Result := esosCheckHover in FState +end; + +function TEasyCollectionItem.GetCheckIndent: Integer; +begin + Result := PaintInfo.CheckIndent +end; + +function TEasyCollectionItem.GetCheckPending: Boolean; +begin + Result := esosCheckPending in FState +end; + +function TEasyCollectionItem.GetChecksize: Integer; +begin + Result := PaintInfo.Checksize +end; + +function TEasyCollectionItem.GetCheckType: TEasyCheckType; +begin + Result := PaintInfo.CheckType +end; + +function TEasyCollectionItem.GetClicking: Boolean; +begin + Result := esosClicking in State +end; + +function TEasyCollectionItem.GetCut: Boolean; +begin + Result := esosCut in State +end; + +function TEasyCollectionItem.GetDataInf: IUnknown; +begin + Result := FDataInf; +end; + +function TEasyCollectionItem.GetDestroying: Boolean; +begin + Result := esosDestroying in State +end; + +function TEasyCollectionItem.GetDisplayName: WideString; +begin + if Caption <> '' then + Result := Caption + else + Result:= ClassName; +end; + +function TEasyCollectionItem.GetEnabled: Boolean; +begin + Result := esosEnabled in State +end; + +function TEasyCollectionItem.GetFocused: Boolean; +begin + Result := esosFocused in State +end; + +function TEasyCollectionItem.GetGhosted: Boolean; +begin + Result := esosGhosted in State +end; + +function TEasyCollectionItem.GetHilighted: Boolean; +begin + Result := esosHilighted in State +end; + +function TEasyCollectionItem.GetHotTracking(MousePos: TPoint): Boolean; +begin + Result := esosHotTracking in State +end; + +function TEasyCollectionItem.GetImageIndent: Integer; +begin + Result := PaintInfo.ImageIndent +end; + +function TEasyCollectionItem.GetImageIndex: TCommonImageIndexInteger; +begin + Result := GetImageIndexes(0) +end; + +function TEasyCollectionItem.GetImageOverlayIndex: TCommonImageIndexInteger; +begin + Result := GetImageOverlayIndexes(0) +end; + +function TEasyCollectionItem.GetIndex: Integer; +begin + Result := Collection.FList.IndexOf(Self) +end; + +function TEasyCollectionItem.GetInitialized: Boolean; +begin + Result := esosInitialized in State +end; + +function TEasyCollectionItem.GetOwner: TPersistent; +begin + Result := FCollection +end; + +function TEasyCollectionItem.GetOwnerListview: TCustomEasyListview; +begin + Result := TEasyCollection( Collection).FOwnerListview +end; + +function TEasyCollectionItem.GetPaintInfo: TEasyPaintInfoBasic; +begin + if Assigned(FPaintInfo) then + Result := FPaintInfo + else + Result := LocalPaintInfo +end; + +function TEasyCollectionItem.GetSelected: Boolean; +begin + Result := esosSelected in State +end; + +function TEasyCollectionItem.GetVAlignment: TCommonVAlignment; +begin + Result := PaintInfo.VAlignment +end; + +function TEasyCollectionItem.GetViewRect: TRect; +begin + Result := DisplayRect +end; + +function TEasyCollectionItem.GetVisible: Boolean; +begin + Result := esosVisible in State +end; + +function TEasyCollectionItem.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + Result := E_NOINTERFACE +end; + +function TEasyCollectionItem._AddRef: Integer; +begin + Result := -1 +end; + +function TEasyCollectionItem._Release: Integer; +begin + Result := -1 +end; + +procedure TEasyCollectionItem.Invalidate(ImmediateUpdate: Boolean); +var + R: TRect; +begin + if OwnerListview.UpdateCount = 0 then + begin + R := OwnerListview.Scrollbars.MapViewRectToWindowRect(DisplayRect); + if IntersectRect(R, R, OwnerListview.ClientRect) then + OwnerListview.SafeInvalidateRect(@R, ImmediateUpdate); + end +end; + +procedure TEasyCollectionItem.InvalidateItem(ImmediateRefresh: Boolean); +begin + Invalidate(ImmediateRefresh) +end; + +procedure TEasyCollectionItem.LoadFromStream(S: TStream; var Version: Integer); +var + Temp: TEasyStorageObjectStates; + T: Longword; +begin + S.Read(T, SizeOf(T)); + + // See if we have an old style stream + if T <> STREAM_ID_KEY then + begin + // Old poor way + S.Seek(-SizeOf(T), soFromCurrent); + Version := 2 // Use to be Collection.StreamVersion but we can hard code 2 since that appeared in version 2 only + end else + S.Read(Version, SizeOf(Version)); + + S.Read(Temp, SizeOf(Temp)); + // Add back in the stored persisted states + Selected := esosSelected in Temp; + Enabled := esosEnabled in Temp; + Visible := esosVisible in Temp; + Checked := esosChecked in Temp; + Bold := esosBold in Temp; + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyCollectionItem.MakeVisible(Position: TEasyMakeVisiblePos); +begin + +end; + +procedure TEasyCollectionItem.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +var + Temp: TEasyStorageObjectStates; + Key: Integer; +begin + Key := STREAM_ID_KEY; + S.Write(Key, SizeOf(Key)); + S.Write(Version, SizeOf(Version)); + Temp := State; + // Only save certin states that should be persistent + Temp := State * PERSISTENTOBJECTSTATES; + S.Write(Temp, SizeOf(Temp)); + + // For new objects test the stream version first + // if Version then + // begin + // WriteStream.... + // end +end; + +procedure TEasyCollectionItem.SetAlignment(Value: TAlignment); +begin + if Value <> Alignment then + begin + PaintInfo.Alignment := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetBold(const Value: Boolean); +begin + if Value xor (esosBold in FState) then + begin + if State * [esosDestroying] <> [] then + begin + Exclude(FState, esosBold); + LosingBold + end else + begin + if CanChangeBold(Value) then + begin + if Value then + begin + Include(FState, esosBold); + GainingBold + end else + begin + Exclude(FState, esosBold); + LosingBold + end + end + end + end +end; + +procedure TEasyCollectionItem.SetBorder(Value: Integer); +begin + if Value <> Border then + begin + if Value < 0 then + PaintInfo.Border := 0 + else + PaintInfo.Border := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetBorderColor(Value: TColor); +begin + if Value <> BorderColor then + begin + if Value < 0 then + PaintInfo.BorderColor := 0 + else + PaintInfo.BorderColor := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetCaption(Value: WideString); +begin + Captions[0] := Value +end; + +procedure TEasyCollectionItem.SetCaptionIndent(Value: Integer); +begin + if Value <> CaptionIndent then + begin + if Value < 0 then + PaintInfo.CaptionIndent := 0 + else + PaintInfo.CaptionIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetChecked(Value: Boolean); +begin + if Value xor (esosChecked in FState) then + begin + if State * [esosDestroying] <> [] then + begin + Exclude(FState, esosChecked); + LosingCheck + end else + begin + if CanChangeCheck(Value) then + begin + if Value then + begin + Include(FState, esosChecked); + GainingCheck + end else + begin + Exclude(FState, esosChecked); + LosingCheck + end + end + end + end +end; + +procedure TEasyCollectionItem.SetCheckFlat(Value: Boolean); +begin + if Value <> CheckFlat then + begin + PaintInfo.CheckFlat := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetCheckHovering(Value: Boolean); +begin + if Value xor (esosCheckHover in FState) then + begin + if Value then + Include(FState,esosCheckHover) + else + Exclude(FState, esosCheckHover); + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetCheckIndent(Value: Integer); +begin + if Value <> CheckIndent then + begin + if Value < 1 then + PaintInfo.CheckIndent := 0 + else + PaintInfo.CheckIndent := Value; + Invalidate(False) + end; +end; + +procedure TEasyCollectionItem.SetCheckPending(Value: Boolean); +begin + if Value xor (esosCheckPending in FState) then + begin + if Value then + Include(FState,esosCheckPending) + else + Exclude(FState, esosCheckPending); + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetChecksize(Value: Integer); +begin + if Value <> Checksize then + begin + if Value < 0 then + PaintInfo.Checksize := 0 + else + PaintInfo.Checksize := Value; + + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetCheckType(Value: TEasyCheckType); +begin + if Value <> CheckType then + begin + PaintInfo.CheckType := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetClicking(Value: Boolean); +begin + if Value then + Include(FState, esosClicking) + else + Exclude(FState, esosClicking) +end; + +procedure TEasyCollectionItem.SetCut(Value: Boolean); +begin + if Value xor (esosCut in State) then + begin + if Value then + Include(FState, esosCut) + else + Exclude(FState, esosCut); + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetData(Value: TObject); +begin + FData := Value +end; + +procedure TEasyCollectionItem.SetDataInf(const Value: IUnknown); +var + Notifier: IEasyNotifier; +begin + if Value <> FDataInf then + begin + if Supports(DataInf, IEasyNotifier, Notifier) then + Notifier.OnUnRegisterNotify(Self); + FDataInf := Value; + if Supports(DataInf, IEasyNotifier, Notifier) then + Notifier.OnRegisterNotify(Self) + end +end; + +procedure TEasyCollectionItem.SetDestroyFlags; +begin + Include(FState, esosDestroying); +end; + +procedure TEasyCollectionItem.SetEnabled(Value: Boolean); +begin + if Value xor (esosEnabled in FState) then + begin + if State * [esosDestroying] <> [] then + begin + // Disabled items can't have the focus or selection + Focused := False; + Selected := False; + Exclude(FState, esosEnabled); + LosingEnable + end else + begin + if CanChangeEnable(Value) then + begin + if Value then + begin + Include(FState, esosEnabled); + GainingEnable + end else + begin + // Disabled items can't have the focus or selection + Focused := False; + Selected := False; + Exclude(FState, esosEnabled); + LosingEnable + end + end + end + end +end; + +procedure TEasyCollectionItem.SetFocused(Value: Boolean); +begin + if Visible and Enabled then + begin + if Value xor (esosFocused in State) then + begin + if State * [esosDestroying] <> [] then + begin + Exclude(FState, esosFocused); + LosingFocus + end else + begin + if CanChangeFocus(Value) then + begin + if Value then + begin + Include(FState, esosFocused); + GainingFocus + end else + begin + Exclude(FState, esosFocused); + LosingFocus + end + end + end + end + end +end; + +procedure TEasyCollectionItem.SetGhosted(const Value: Boolean); +begin + if Value xor (esosGhosted in FState) then + begin + if State * [esosDestroying] <> [] then + begin + Exclude(FState, esosGhosted); + LosingGhosted + end else + begin + if Value then + begin + Include(FState, esosGhosted); + GainingGhosted + end else + begin + Exclude(FState, esosGhosted); + LosingGhosted + end + end + end +end; + +procedure TEasyCollectionItem.SetHilighted(Value: Boolean); +begin + if Value xor (esosHilighted in FState) then + begin + if State * [esosDestroying] <> [] then + begin + // Disabled items can't have the focus or selection + Focused := False; + Selected := False; + Exclude(FState, esosHilighted); + LosingHilight + end else + begin + if Value then + begin + Include(FState, esosHilighted); + GainingHilight + end else + begin + Exclude(FState, esosHilighted); + LosingHilight + end + end + end +end; + +procedure TEasyCollectionItem.SetHotTracking(MousePos: TPoint; Value: Boolean); +begin + if Value xor (esosHotTracking in FState) then + begin + if State * [esosDestroying] <> [] then + begin + Exclude(FState, esosHotTracking); + LosingHotTracking + end else + begin + if CanChangeHotTracking(Value) then + begin + if Value then + begin + Include(FState, esosHotTracking); + GainingHotTracking(MousePos) + end else + begin + Exclude(FState, esosHotTracking); + LosingHotTracking + end + end + end + end +end; + +procedure TEasyCollectionItem.SetImageIndent(Value: Integer); +begin + if Value <> ImageIndent then + begin + if Value < 0 then + PaintInfo.ImageIndent := 0 + else + PaintInfo.ImageIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetImageIndex(const Value: TCommonImageIndexInteger); +begin + ImageIndexes[0] := Value +end; + +procedure TEasyCollectionItem.SetImageOverlayIndex(const Value: TCommonImageIndexInteger); +begin + ImageOverlayIndexes[0] := Value +end; + +procedure TEasyCollectionItem.SetInitialized(Value: Boolean); +begin + if Value xor (esosInitialized in State) then + begin + if Value then + begin + Include(FState, esosInitialized); + Initialize; + end else + Exclude(FState, esosInitialized) + end +end; + +procedure TEasyCollectionItem.SetPaintInfo(Value: TEasyPaintInfoBasic); +begin + FPaintInfo := Value +end; + +procedure TEasyCollectionItem.SetSelected(Value: Boolean); +begin + if Visible and Enabled then + begin + if Value xor (esosSelected in State) then + begin + if State * [esosDestroying] <> [] then + begin + Exclude(FState, esosSelected); + LosingSelection + end else + begin + if CanChangeSelection(Value) then + begin + if Value then + begin + Include(FState, esosSelected); + GainingSelection + end else + begin + Exclude(FState, esosSelected); + LosingSelection + end + end + end + end + end +end; + +procedure TEasyCollectionItem.SetVAlignment(Value: TCommonVAlignment); +begin + if Value <> VAlignment then + begin + PaintInfo.VAlignment := Value; + Invalidate(False) + end +end; + +procedure TEasyCollectionItem.SetVisible(Value: Boolean); +begin + if Value xor (esosVisible in State) then + begin + if State * [esosDestroying] <> [] then + begin + // Invisible Objects can't be focused or selected + Focused := False; + Selected := False; + if not OwnerListview.AllowHiddenCheckedItems then + Checked := False; + Exclude(FState, esosVisible); + LosingVisibility; + end else + begin + if CanChangeVisibility(Value) then + begin + if Value then + begin + Include(FState, esosVisible); + GainingVisibility + end else + begin + // Invisible Objects can't be focused or selected or Focused + Focused := False; + Selected := False; + if not OwnerListview.AllowHiddenCheckedItems then + Checked := False; + Exclude(FState, esosVisible); + LosingVisibility; + end + end + end + end +end; + +procedure TEasyCollectionItem.UnRegister; +begin + FDataInf := nil +end; + +{ TEasyCollection } + +constructor TEasyCollection.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FItemClass := TEasyCollectionItem; + FList := TList.Create; + VisibleList := TList.Create; +end; + +destructor TEasyCollection.Destroy; +begin + Clear; + inherited; + FreeAndNil(FVisibleList); + FreeAndNil(FList); +end; + +function TEasyCollection.Add(Data: TObject = nil): TEasyCollectionItem; +begin + Result := ItemClass.Create(Self); + if Assigned(Result) then + begin + FList.Add(Result); + ReIndexItems; + DoItemAdd(Result, FList.Count - 1); + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyCollection.DoStore: Boolean; +begin + Result := (FList.Count > 0) and not HideFromDFM +end; + +function TEasyCollection.FirstVisible: TEasyColumn; +begin + if VisibleList.Count > 0 then + Result := TEasyColumn( VisibleList[0]) + else + Result := nil +end; + +function TEasyCollection.GetCount: Integer; +begin + Result := FList.Count +end; + +function TEasyCollection.GetItem(Index: Integer): TEasyCollectionItem; +begin + Result := TEasyCollectionItem(FList.List[Index]) +end; + + +function TEasyCollection.GetOwner: TPersistent; +begin + Result:= FOwnerListview +end; + +function TEasyCollection.GetOwnerListview: TCustomEasyListview; +begin + Result := FOwnerListview +end; + +function TEasyCollection.GetReIndexDisable: Boolean; +begin + Result := FReIndexCount > 0 +end; + +function TEasyCollection.GetVisibleCount: Integer; +begin + Result := FVisibleList.Count +end; + +function TEasyCollection.Insert(Index: Integer; Data: TObject = nil): TEasyCollectionItem; +begin + Result := ItemClass.Create(Self); + if Assigned(Result) then + begin + FList.Insert(Index, Result); + ReIndexItems; + DoItemAdd(Result, Index); + Result.Data := Data; + DoStructureChange + end +end; + +function TEasyCollection.LastVisible: TEasyColumn; +begin + if VisibleList.Count > 0 then + Result := TEasyColumn( VisibleList[VisibleList.Count - 1]) + else + Result := nil +end; + +function TEasyCollection.NextVisible(Column: TEasyColumn): TEasyColumn; +var + i: Integer; +begin + Result := nil; + if Assigned(Column) then + begin + i := Column.Index + 1; + while not Assigned(Result) and (i < Count) do + begin + if Items[i].Visible then + Result := TEasyColumn( Items[i]); + Inc(i) + end + end +end; + +function TEasyCollection.PrevVisible(Column: TEasyColumn): TEasyColumn; +var + i: Integer; +begin + Result := nil; + if Assigned(Column) then + begin + i := Column.Index - 1; + while not Assigned(Result) and (i < Count) do + begin + if Items[i].Visible then + Result := TEasyColumn( Items[i]); + Dec(i) + end + end +end; + +procedure TEasyCollection.Clear(FreeItems: Boolean = True); +var + i: Integer; +begin + if FList.Count > 0 then + begin + BeginUpdate(False); + try + // Need to make sure all items are valid so nothing unexpected happens in the + // controls events when the item state changes + for i := 0 to FList.Count - 1 do + begin + TEasyCollectionItem(FList[i]).SetDestroyFlags; + TEasyCollectionItem(FList[i]).Focused := False; + TEasyCollectionItem(FList[i]).Selected := False; + end; + + if FreeItems then + for i := FList.Count - 1 downto 0 do // Walk backwords + TEasyCollectionItem(FList[i]).Free; + finally + FList.Clear; + FVisibleList.Clear; + // The scrollbars do not update correctly on nested BeginUpdate/EndUpdate + if Assigned(OwnerListview) and OwnerListview.HandleAllocated then + begin + OwnerListview.Scrollbars.OffsetX := 0; + OwnerListview.Scrollbars.OffsetY := 0; + end; + EndUpdate; + end; + end; +end; + +procedure TEasyCollection.DefineProperties(Filer: TFiler); +begin + inherited DefineProperties(Filer); + Filer.DefineBinaryProperty('Items', ReadItems, WriteItems, DoStore); +end; + +procedure TEasyCollection.Delete(Index: Integer); +var + Item: TEasyCollectionItem; +begin + Item := FList[Index]; + Item.SetDestroyFlags; + Item.Focused := False; + Item.Selected := False; + FList.Delete(Index); + Item.Free; + ReIndexItems; + DoStructureChange +end; + +procedure TEasyCollection.DoItemAdd(Item: TEasyCollectionItem; Index: Integer); +begin + +end; + +procedure TEasyCollection.DoStructureChange; +begin + +end; + +procedure TEasyCollection.EndUpdate(Invalidate: Boolean = True); +begin + inherited; + OwnerListview.EndUpdate(Invalidate); +end; + +procedure TEasyCollection.BeginUpdate(ReIndex: Boolean); +begin + inherited; + OwnerListview.BeginUpdate; +end; + +procedure TEasyCollection.Exchange(Index1, Index2: Integer); +var + Temp: TEasyCollectionItem; +begin + Temp := TEasyCollectionItem( FList[Index1]); + FList[Index1] := FList[Index2]; + FList[Index2] := Temp; + ReIndexItems; + DoStructureChange +end; + +procedure TEasyCollection.MakeAllVisible; +var + i: Integer; +begin + for i := 0 to Count - 1 do + Items[i].Visible := True +end; + +procedure TEasyCollection.ReadItems(Stream: TStream); +var + i, ItemCount: Integer; + StreamVersion: Integer; + Cls: TClass; +begin + Clear; + StreamVersion := StreamHelper.ReadInteger(Stream); + ItemCount := StreamHelper.ReadInteger(Stream); + if StreamVersion > 4 then + begin + // Since ELV can store more than one class type of Collection Items the streaming + // must be more sophisticated (i.e. it can have virtual, custom, and stored items + // all in the listview at the same time) It must check the class type of every + // object to make sure it creates the correct item type + for i := 0 to ItemCount - 1 do + begin + Cls := GetClass(StreamHelper.ReadString(Stream)); + Assert(Cls <> nil, 'If using custom item types for Item, Groups or Columns you must register them with the streaming system with RegisterClass(TMyEasyClassItemType)'); + if Assigned(Cls) then + begin + FItemClass := TEasyCollectionItemClass( Cls); + Add.LoadFromStream(Stream, StreamVersion); + end + end + end else + begin + // Stream will fill version in on first read + for i := 0 to ItemCount - 1 do + Add.LoadFromStream(Stream, StreamVersion); + end +end; + +procedure TEasyCollection.ReIndexItems; +var + i: Integer; +begin + if not OwnerListview.Groups.ReIndexDisable then + begin + for i := 0 to List.Count - 1 do + TEasyCollectionItem( List[i]).FIndex := i + end +end; + +procedure TEasyCollection.SetItem(Index: Integer; Value: TEasyCollectionItem); +begin + FList[Index] := Value +end; + +procedure TEasyCollection.SetReIndexDisable(const Value: Boolean); +begin + if Value then + begin + Inc(FReIndexCount) + end else + begin + Dec(FReIndexCount); + if ReIndexCount <=0 then + begin + ReIndexCount := 0; + ReIndexItems + end + end +end; + +procedure TEasyCollection.WriteItems(Stream: TStream); +var + i: Integer; +begin + // Write the Current Stream Version to the stream + StreamHelper.WriteInteger(Stream, EASYLISTVIEW_STREAM_VERSION); + // Store the number of items we are storing + StreamHelper.WriteInteger(Stream, FList.Count); + for i := 0 to FList.Count - 1 do + begin + StreamHelper.WriteString(Stream, TEasyCollectionItem( Items[i]).ClassName); + TEasyCollectionItem( Items[i]).SaveToStream(Stream); // Write custom data to the stream + end +end; + +{ TEasyHeader } + +constructor TEasyHeader.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FColumns := TEasyColumns.Create(AnOwner); + FPositions := TColumnPos.Create; + FDragManager := TEasyHeaderDragManager.Create(AnOwner); + DragManager.Header := Self; + FFont := TFont.Create; + FHeight := 21; + FColor := clBtnFace; + FSizeable := True; + Draggable := True; + LastWidth := -1; + FStreamColumns := True; + FAutoSizeHeight := True; + FAutoSizeHeightMargin := 8; +end; + +destructor TEasyHeader.Destroy; +begin + Columns.Clear; + FreeAndNil(FCanvasStore); + inherited; + FreeAndNil(FColumns); + FreeAndNil(FPositions); + FreeAndNil(FFont); + FreeAndNil(FDragManager); +end; + +function TEasyHeader.FirstColumn: TEasyColumn; +begin + if Columns.Count > 0 then + Result := Columns[0] + else + Result := nil +end; + +function TEasyHeader.FirstColumnByPosition: TEasyColumn; +begin + if Positions.Count > 0 then + Result := Positions[0] + else + Result := nil +end; + +function TEasyHeader.FirstColumnInRect(ViewportRect: TRect): TEasyColumn; +// +// Always assumes by Position as this is a UI function +// +var + i: Integer; + ScratchR: TRect; +begin + Result := nil; + i := 0; + OffsetRect(ViewportRect, 0, -ViewportRect.Top); + while (i < Positions.Count) and not Assigned(Result) do + begin + if Positions[i].Visible then + if IntersectRect(ScratchR, Positions[i].DisplayRect, ViewportRect) then + Result := Positions[i]; + Inc(i) + end +end; + +function TEasyHeader.FirstVisibleColumn: TEasyColumn; +var + i: Integer; + Column: TEasyColumn; +begin + Result := nil; + Column := FirstColumn; + i := 0; + while not Assigned(Result) and (i < Columns.Count) do + begin + if Assigned(Column) then + begin + if Column.Visible then + Result := Column + else begin + Column := NextColumn(Column); + Inc(i) + end; + end + end +end; + +function TEasyHeader.GetCanvasStore: TEasyCanvasStore; +begin + if not Assigned(FCanvasStore) then + FCanvasStore := TEasyCanvasStore.Create; + Result := FCanvasStore +end; + +function TEasyHeader.GetDisplayRect: TRect; +begin + Result := Rect(0, 0, OwnerListview.ClientWidth, RuntimeHeight) +end; + +function TEasyHeader.GetDraggable: Boolean; +begin + Result := DragManager.Enabled +end; + +function TEasyHeader.GetFixedSingleColumn: Boolean; +begin + if OwnerListview.HandleAllocated then + begin + if Columns.Count = 0 then + Columns.Add.Width := OwnerListview.ClientWidth - 1 + end; + Result := FFixedSingleColumn; +end; + +function TEasyHeader.GetHeight: Integer; +var + TextMetrics: TTextMetric; + DC: HDC; + OldFont: THandle; +begin + Result := FHeight; + if AutoSizeHeight then + begin + DC := GetDC(0); + OldFont := SelectObject(DC, Font.Handle); + try + if GetTextMetrics(DC, TextMetrics) then + if TextMetrics.tmHeight + AutoSizeHeightMargin > FHeight then + Result := TextMetrics.tmHeight + AutoSizeHeightMargin; + ReleaseDC(0, DC); + finally + if OldFont <> 0 then + SelectObject(DC, OldFont); + end + end +end; + +function TEasyHeader.GetMouseCaptured: Boolean; +begin + Result := (ebcsHeaderCapture in OwnerListview.States) and (ehsMouseCaptured in State) +end; + +function TEasyHeader.GetRuntimeHeight: Integer; +begin + if OwnerListview.ViewSupportsHeader and Visible then + Result := Height + else + Result := 0; +end; + +function TEasyHeader.InCheckZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; +var + RectArray: TEasyRectArrayObject; +begin + Result := False; + Column := Columns.ColumnByPoint(ViewportPt); + if Assigned(Column) then + begin + Column.View.ItemRectArray(Column, RectArray); + Result := PtInRect(RectArray.CheckRect, ViewportPt) + end +end; + +function TEasyHeader.InDropDownButtonZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; +var + RectArray: TEasyRectArrayObject; +begin + Result := False; + Column := Columns.ColumnByPoint(ViewportPt); + if Assigned(Column) then + begin + Column.View.ItemRectArray(Column, RectArray); + Result := PtInRect(RectArray.DropDownArrow, ViewportPt) + end +end; + +function TEasyHeader.InHotTrackZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; +var + i: Integer; + R, ClientR: TRect; +begin + Result := False; + if OwnerListview.PaintInfoColumn.HotTrack then + begin + Column := nil; + ClientR := OwnerListview.ClientRect; + if OwnerListview.ScrollHeaderHorz then + OffsetRect(ClientR, OwnerListview.Scrollbars.OffsetX, 0); + i := 0; + while not Result and (i < OwnerListview.Header.Positions.Count) do + begin + R := OwnerListview.Header.Positions[i].DisplayRect; + // Don't switch hottracking column until done with resize arrow + Inc(R.Right, RESIZEHITZONEMARGIN + 1); + IntersectRect(R, R, ClientR); + if PtInRect(R, ViewportPt) then + begin + Column := OwnerListview.Header.Positions[i]; + Result := True + end; + Inc(i) + end; + if not Result then + Result := Assigned(HotTrackedColumn); + end +end; + +function TEasyHeader.InPressZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; +var + i: Integer; + R: TRect; +begin + Result := False; + Column := nil; + i := OwnerListview.Header.Positions.Count - 1; + while not Result and (i > -1) do + begin + R := OwnerListview.Header.Positions[i].DisplayRect; + if PtInRect(R, ViewportPt) then + begin + Column := OwnerListview.Header.Positions[i]; + if Assigned(Column) then + Result := Column.Clickable + end; + Dec(i) + end +end; + +function TEasyHeader.InResizeZone(ViewportPt: TPoint; var Column: TEasyColumn): Boolean; +var + i: Integer; + R, ClientR: TRect; +begin + Result := False; + if Sizeable then + begin + Column := nil; + i := OwnerListview.Header.Positions.Count - 1; + ClientR := OwnerListview.ClientRect; + if OwnerListview.ScrollHeaderHorz then + OffsetRect(ClientR, OwnerListview.Scrollbars.OffsetX, 0); + while not Result and (i > -1) do + begin + if Positions[i].Visible then + begin + R := Positions[i].DisplayRect; + if (ViewportPt.X <= R.Right + RESIZEHITZONEMARGIN) and (ViewportPt.X > R.Right - RESIZEHITZONEMARGIN) + and (ViewportPt.Y < Height) and (ViewportPt.Y > 0) and (R.Right <= ClientR.Right) then + begin + Column := OwnerListview.Header.Positions[i]; + Result := True + end; + end; + Dec(i) + end + end +end; + +function TEasyHeader.IsFontStored: Boolean; +begin + Result := not OwnerListview.ParentFont and not OwnerListview.DesktopFont; +end; + +function TEasyHeader.LastColumn: TEasyColumn; +begin + if Columns.Count > 0 then + Result := Columns[Columns.Count - 1] + else + Result := nil +end; + +function TEasyHeader.LastColumnByPosition: TEasyColumn; +begin + if Positions.Count > 0 then + Result := Positions[Positions.Count - 1] + else + Result := nil +end; + +function TEasyHeader.LastVisibleColumn: TEasyColumn; +var + i: Integer; + Column: TEasyColumn; +begin + Result := nil; + Column := LastColumn; + i := Columns.Count - 1; + while not Assigned(Result) and (i > -1 ) do + begin + if Assigned(Column) then + begin + if Column.Visible then + Result := Column + else begin + Column := PrevColumn(Column); + Dec(i) + end; + end + end +end; + +function TEasyHeader.NextColumn(AColumn: TEasyColumn): TEasyColumn; +begin + Result := nil; + if AColumn.Index < Columns.Count - 1 then + Result := Columns[AColumn.Index + 1] +end; + +function TEasyHeader.NextColumnByPosition(AColumn: TEasyColumn): TEasyColumn; +begin + Result := nil; + if AColumn.Position < Columns.Count - 1 then + Result := Positions[AColumn.Position + 1] +end; + +function TEasyHeader.NextColumnInRect(Column: TEasyColumn; ViewportRect: TRect): TEasyColumn; +// +// Always assumes by Position as this is a UI function +// +var + i: Integer; + ScratchR: TRect; + Done: Boolean; +begin + Result := nil; + Done := False; + if Assigned(Column) then + begin + i := Column.Position + 1; + OffsetRect(ViewportRect, 0, -ViewportRect.Top); + while not Assigned(Result) and (i < Positions.Count) and not Done do + begin + if Positions[i].Visible and (Positions[i].Width > 0) then + begin + if IntersectRect(ScratchR, Positions[i].DisplayRect, ViewportRect) then + Result := Positions[i] + else + Done := True + end; + Inc(i) + end + end +end; + +function TEasyHeader.NextVisibleColumn(Column: TEasyColumn): TEasyColumn; +var + i: Integer; +begin + Result := nil; + Column := NextColumn(Column); + if Assigned(Column) then + begin + i := Column.Index; + while not Assigned(Result) and (i < Columns.Count) do + begin + if Column.Visible then + Result := Column + else begin + Column := NextColumn(Column); + Inc(i) + end; + end + end +end; + +function TEasyHeader.PrevColumn(AColumn: TEasyColumn): TEasyColumn; +begin + Result := nil; + if AColumn.Index > 0 then + Result := Columns[AColumn.Index - 1] +end; + +function TEasyHeader.PrevColumnByPosition(AColumn: TEasyColumn): TEasyColumn; +begin + Result := nil; + if AColumn.Position > 0 then + Result := Positions[AColumn.Position - 1] +end; + +function TEasyHeader.PrevVisibleColumn(Column: TEasyColumn): TEasyColumn; +var + i: Integer; +begin + Result := nil; + Column := PrevColumn(Column); + if Assigned(Column) then + begin + i := Column.Index; + while not Assigned(Result) and (i > -1 ) do + begin + if Column.Visible then + Result := Column + else begin + Column := PrevColumn(Column); + Dec(i) + end + end + end +end; + +procedure TEasyHeader.CaptureMouse; +begin + Include(OwnerListview.FStates, ebcsHeaderCapture); + Include(FState, ehsMouseCaptured); + SetCapture(OwnerListview.Handle); +end; + +procedure TEasyHeader.ClearStates; +begin + Exclude(FState, ehsMouseCaptured); + Exclude(FState, ehsResizing); + Exclude(FState, ehsDragging); + Exclude(FState, ehsDragPending); + Exclude(FState, ehsClickPending); + Exclude(FState, ehsResizePending); + Exclude(FState, ehsLButtonDown); + Exclude(FState, ehsRButtonDown); + Exclude(FState, ehsMButtonDown); + ReleaseMouse; +end; + +procedure TEasyHeader.ClickColumn(Column: TEasyColumn); +const + NEXT_SORT_DIRECTION: array[TEasySortDirection] of TEasySortDirection = + (esdAscending, esdDescending, esdAscending); +var + PreviousFocusedColumn: TEasyColumn; +begin + Exclude(Column.FState, esosClicking); + if Column.AutoToggleSortGlyph then + begin + // If sorting takes a bit it is better to "freeze" the painting + // so the sort arrows don't show the "wrong" way then change when + // the sort is done. + OwnerListview.BeginUpdate; + try + PreviousFocusedColumn := OwnerListview.Selection.FocusedColumn; + OwnerListview.Selection.FocusedColumn := Column; + + // If the column has changed the previous column must forget its + // sort direction. When it is clicked on next time it will start + // again with SortDirection = esdAscending. + if PreviousFocusedColumn <> Column then + PreviousFocusedColumn.SortDirection := esdNone; + + // Now toggle new column's sort direction and regroup / resort + // if necded. + Column.SortDirection := NEXT_SORT_DIRECTION[Column.SortDirection]; + if OwnerListview.Sort.AutoReGroup and OwnerListview.IsGrouped then + OwnerListview.Sort.ReGroup(Column) + else if (OwnerListview.Sort.AutoSort) or (Column.AutoSortOnClick) then + OwnerListview.Sort.SortAll(Column.AutoSortOnClick); + finally + OwnerListview.EndUpdate + end; + end; +end; + +procedure TEasyHeader.DoMouseDown(var Message: TWMMouse; Button: TCommonMouseButton; + Shift: TShiftState; Column: TEasyColumn); +begin + if Assigned(OwnerListview.OnHeaderMouseDown) then + OwnerListview.OnHeaderMouseDown(OwnerListview, Button, Shift, Message.XPos, Message.YPos, Column) +end; + +procedure TEasyHeader.DoMouseMove(var Message: TWMMouse; Shift: TShiftState); +begin + if Assigned(OwnerListview.OnHeaderMouseUp) then + OwnerListview.OnHeaderMouseMove(OwnerListview, Shift, Message.XPos, Message.YPos) +end; + +procedure TEasyHeader.DoMouseUp(var Message: TWMMouse; Button: TCommonMouseButton; + Shift: TShiftState; Column: TEasyColumn); +begin + if Assigned(OwnerListview.OnHeaderMouseUp) then + OwnerListview.OnHeaderMouseUp(OwnerListview, Button, Shift, Message.XPos, Message.YPos, Column) +end; + +procedure TEasyHeader.HandleHotTrack(Msg: TWMMouse; ForceClear: Boolean); +var + TempColumn, OldColumn: TEasyColumn; + DropDownButtonPending: Boolean; +begin + if ForceClear then + begin + if Assigned(HotTrackedColumn) then + begin + ReleaseMouse; + OldColumn := HotTrackedColumn; + HotTrackedColumn := nil; + OldColumn.Invalidate(True) + end; + end else + begin + DropDownButtonPending := False; + if Assigned(DropDownHoverColumn) then + DropDownButtonPending := cdbsClickPending in DropDownHoverColumn.DropDownButton.State; + + if not DropDownButtonPending then + begin + if OwnerListview.ScrollHeaderHorz then + Inc(Msg.Pos.x, OwnerListview.Scrollbars.OffsetX); + + if not ([ehsResizing, ehsResizePending, ehsClickPending, ehsDragging, ehsClickPending] * State <> []) {and not DropDownButtonPending} then + if InHotTrackZone(SmallPointToPoint(Msg.Pos), TempColumn) or Assigned(HotTrackedColumn) then + begin + if TempColumn <> HotTrackedColumn then + begin + if Assigned(HotTrackedColumn) then + begin + ReleaseMouse; + OldColumn := HotTrackedColumn; + HotTrackedColumn := nil; + OldColumn.Invalidate(True) + end; + HotTrackedColumn := TempColumn; + if Assigned(HotTrackedColumn) then + begin + CaptureMouse; + HotTrackedColumn.Invalidate(True) + end + end + end + end + end +end; + +procedure TEasyHeader.Invalidate(ImmediateUpdate: Boolean); +begin + if OwnerListview.UpdateCount = 0 then + OwnerListview.SafeInvalidateRect(nil, ImmediateUpdate) +end; + +procedure TEasyHeader.InvalidateColumn(Item: TEasyColumn; + ImmediateUpdate: Boolean); +begin + +end; + +procedure TEasyHeader.LoadFromStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited LoadFromStream(S, Version); + if StreamColumns then + Columns.ReadItems(S) +end; + +procedure TEasyHeader.PaintTo(ACanvas: TCanvas; ARect: TRect); +var + Column: TEasyColumn; + Handled: Boolean; + {$IFDEF USETHEMES} + PartID, + StateID: LongWord; + {$ENDIF} +begin + Handled := False; + CanvasStore.StoreCanvasState(ACanvas); + OwnerListview.DoPaintHeaderBkGnd(ACanvas, ViewRect, Handled); + CanvasStore.RestoreCanvasState(ACanvas); + if not Handled then + begin + {$IFDEF USETHEMES} + if OwnerListview.DrawWithThemes then + begin + PartID := HP_HEADERITEM; + StateID := HIS_NORMAL; + DrawThemeBackground(OwnerListview.Themes.HeaderTheme, ACanvas.Handle, PartID, StateID, ViewRect, nil); + end else + {$ENDIF USETHEMES} + begin + ACanvas.Brush.Color := Color; + ACanvas.FillRect(DisplayRect); + end; + end; + Column := FirstColumnInRect(ARect); + while Assigned(Column) do + begin + // Reset the clipping region + SelectClipRgn(ACanvas.Handle, 0); + Column.Paint(ACanvas, ehtHeader); + Column := NextColumnInRect(Column, ARect); + end +end; + +procedure TEasyHeader.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S, Version); + if StreamColumns then + Columns.WriteItems(S) +end; + +procedure TEasyHeader.SetAutoSizeHeight(const Value: Boolean); +begin + if FAutoSizeHeight <> Value then + begin + FAutoSizeHeight := Value; + OwnerListview.Groups.Rebuild(False) + end +end; + +procedure TEasyHeader.SetAutoSizeHeightMargin(const Value: Integer); +begin + if FAutoSizeHeightMargin <> Value then + begin + FAutoSizeHeightMargin := Value; + if FAutoSizeHeightMargin < 0 then + FAutoSizeHeightMargin := 0; + if AutoSizeHeight then + OwnerListview.Groups.Rebuild(False) + end +end; + +procedure TEasyHeader.SetDraggable(Value: Boolean); +begin + DragManager.Enabled := Value +end; + +procedure TEasyHeader.SetDropDownHoverColumn(const Value: TEasyColumn); +begin + if FDropDownHoverColumn <> Value then + begin + if Assigned(FDropDownHoverColumn) then + begin + Exclude(FDropDownHoverColumn.DropDownButton.FState, cdbsHovering); + Exclude(FDropDownHoverColumn.DropDownButton.FState, cdbsDown); + Exclude(FDropDownHoverColumn.DropDownButton.FState, cdbsClickPending); + FDropDownHoverColumn.Invalidate(True); + end; + FDropDownHoverColumn := Value; + if Assigned(FDropDownHoverColumn) then + begin + Include(FDropDownHoverColumn.DropDownButton.FState, cdbsHovering); + FDropDownHoverColumn.Invalidate(True); + end; + end +end; + +procedure TEasyHeader.SetFixedSingleColumn(const Value: Boolean); +var + i: Integer; +begin +// Columns.Clear; + if Value <> FFixedSingleColumn then + begin + if OwnerListview.HandleAllocated then + begin + for i := 1 to Columns.Count - 1 do + Columns[i].Visible := not Value; + if Value then + begin + if Columns.Count = 0 then + Columns.Add.Width := OwnerListview.ClientWidth - 1 + else + Columns[0].Width := OwnerListview.ClientWidth - 1; + end; + OwnerListview.Groups.Rebuild; + end; + FFixedSingleColumn := Value; + end +end; + +procedure TEasyHeader.SetHotTrackedColumn(const Value: TEasyColumn); +var + Pt: TPoint; +begin + if Value <> FHotTrackedColumn then + begin + Pt.x := 0; + Pt.y := 0; + if Assigned(HotTrackedColumn) then + HotTrackedColumn.HotTracking[Pt] := False; + if Assigned(Value) then + Value.HotTracking[Pt] := True; + FHotTrackedColumn := Value; + end +end; + +procedure TEasyHeader.SetShowInAllViews(const Value: Boolean); +begin + if Value <> FShowInAllViews then + begin + FShowInAllViews := Value; + OwnerListview.Groups.Rebuild + end; +end; + +procedure TEasyHeader.SizeFixedSingleColumn(NewWidth: Integer); +begin + if Columns.Count > 0 then + begin + if Columns[0].Width <> NewWidth then + begin + Columns[0].Width := NewWidth; + OwnerListview.Groups.Rebuild(True); + end + end +end; + +procedure TEasyHeader.SpringColumns(NewWidth: Integer); +// +// Credit goes to VirtualTreeview by Mike Lischke +var + I: Integer; + SpringCount: Integer; + Sign: Integer; + ChangeBy: Single; + Difference: Single; + NewAccumulator: Single; +begin + ChangeBy := RectWidth(DisplayRect) - FLastWidth; + if (ChangeBy <> 0) then + begin + // Stay positive if downsizing the control. + if ChangeBy < 0 then + Sign := -1 + else + Sign := 1; + ChangeBy := Abs(ChangeBy); + // Count how many columns have spring enabled. + SpringCount := 0; + for I := 0 to Columns.Count-1 do + if Columns[i].AutoSpring and Columns[i].Visible then + Inc(SpringCount); + if SpringCount > 0 then + begin + // Calculate the size to add/sub to each columns. + Difference := ChangeBy / SpringCount; + // Adjust the column's size accumulators and resize if the result is >= 1. + for I := 0 to Columns.Count - 1 do + if Columns[i].AutoSpring and Columns[i].Visible then + begin + // Sum up rest changes from previous runs and the amount from this one and store it in the + // column. If there is at least one pixel difference then do a resize and reset the accumulator. + NewAccumulator := Columns[I].FSpringRest + Difference; + // Set new width if at least one pixel size difference is reached. + if NewAccumulator >= 1 then + FColumns[I].SetWidth(FColumns[I].FWidth + (Trunc(NewAccumulator) * Sign)); + FColumns[I].FSpringRest := Frac(NewAccumulator); + + // Keep track of the size count. + ChangeBy := ChangeBy - Difference; + // Exit loop if resize count drops below freezing point. + if ChangeBy < 0 then + Break; + end; + end; + end; +end; + +procedure TEasyHeader.WMContextMenu(var Msg: TMessage); +var + Column: TEasyColumn; + ViewPt, Pt: TPoint; + HitInfoColumn: TEasyHitInfoColumn; + Menu: TPopupMenu; +begin + Menu := OwnerListview.PopupMenuHeader; + Pt := OwnerListview.ScreenToClient(Point( Msg.LParamLo, Msg.LParamHi)); + if OwnerListview.ScrollHeaderHorz then + ViewPt := OwnerListview.Scrollbars.MapWindowToView(Pt, False); + HitInfoColumn.Column := Columns.ColumnByPoint(ViewPt); + Column := Columns.ColumnByPoint(ViewPt); + if Assigned(HitInfoColumn.Column) then + Column.HitTestAt(ViewPt, HitInfoColumn.HitInfo) + else + HitInfoColumn.HitInfo := []; + // HitInfoColumn.Column will be nil if it hits the backgound of the header + OwnerListview.DoColumnContextMenu(HitInfoColumn, Pt, Menu); + if Assigned(Menu) then + begin + Menu.Popup(Msg.LParamLo, Msg.LParamHi); + Msg.Result := 1 + end else + inherited; +end; + +procedure TEasyHeader.WMSize(var Msg: TWMSize); +begin + {$IFDEF GXDEBUG} + SendDebug('Header WMSize'); + {$ENDIF GXDEBUG} + if LastWidth < 0 then + LastWidth := RectWidth(DisplayRect); + if FixedSingleColumn then + SizeFixedSingleColumn(Msg.Width - 1) + else + SpringColumns(Msg.Width); + LastWidth := RectWidth(DisplayRect) +end; + +function SortByPosition(Item1, Item2: Pointer): Integer; +begin + Result := TEasyColumn(Item1).Position - TEasyColumn(Item2).Position +end; + +procedure TEasyHeader.Rebuild(Force: Boolean); +var + i: Integer; +begin + if Force or ((OwnerListview.UpdateCount = 0) and not(csLoading in OwnerListview.ComponentState) and (OwnerListview.HandleAllocated)) then + begin + Positions.Clear; + Columns.VisibleList.Clear; + Positions.Capacity := Positions.Count; + for i := 0 to Columns.Count - 1 do + Positions.Add(Columns[i]); + Positions.Sort(SortByPosition); + for i := 0 to Columns.Count - 1 do + Positions[i].FPosition := i; + + for i := 0 to Columns.Count - 1 do + begin + if Columns[i].Visible then + begin + Columns.VisibleList.Add(Columns[i]); + if FixedSingleColumn then + Columns[i].FWidth := OwnerListview.ClientWidth; // do this direct so not to fire events + end + end; + + + SetRect(FViewRect, 0, 0, 0, 0); + for i := 0 to Positions.Count - 1 do + begin + if i > 0 then + begin + Positions[i].FDisplayRect := Positions[i-1].FDisplayRect; + Positions[i].FDisplayRect.Left := Positions[i].FDisplayRect.Right; + if Positions[i].Visible then + Positions[i].FDisplayRect.Right := Positions[i].FDisplayRect.Left + Positions[i].Width + else + Positions[i].FDisplayRect.Right := Positions[i].FDisplayRect.Left; + end else + begin + if Positions[i].Visible then + Positions[i].FDisplayRect := Rect(0, 0, Positions[i].Width, Height) + else + Positions[i].FDisplayRect := Rect(0, 0, 0, Height) + end; + + UnionRect(FViewRect, ViewRect, Positions[i].DisplayRect); + if RectWidth(ViewRect) < OwnerListview.Width then + FViewRect.Right := OwnerListview.ClientWidth; + end; + end +end; + +procedure TEasyHeader.ReleaseMouse; +begin + Exclude(FState, ehsMouseCaptured); + Exclude(OwnerListview.FStates, ebcsHeaderCapture); + if GetCapture = OwnerListview.Handle then + ReleaseCapture +end; + +procedure TEasyHeader.SetColor(Value: TColor); +begin + if FColor <> Value then + begin + FColor := Value; + Invalidate(False); + end +end; + +procedure TEasyHeader.SetFont(Value: TFont); +begin + Font.Assign(Value) +end; + +procedure TEasyHeader.SetHeight(Value: Integer); +begin + if FHeight <> Value then + begin + if Value > -1 then + FHeight := Value + else + FHeight := 0; + OwnerListview.Groups.Rebuild + end +end; + +procedure TEasyHeader.SetImages(Value: TCustomImageList); +begin + if Value <> FImages then + begin + FImages := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyHeader.SetVisible(Value: Boolean); +begin + if Value <> FVisible then + begin + FVisible := Value; + OwnerListview.Groups.Rebuild + end; +end; + +{ TEasyItemView } + +procedure TEasyHeader.WMLButtonDblClk(var Msg: TWMLButtonDblClk); +var + ViewPt: TPoint; + Column: TEasyColumn; + Button: TCommonMouseButton; +begin + Button := KeyStatesToMouseButton(Msg.Keys); + ViewPt := SmallPointToPoint(Msg.Pos); + if OwnerListview.ScrollHeaderHorz then + Inc(ViewPt.X, OwnerListview.Scrollbars.OffsetX); + if InResizeZone(ViewPt, Column) and (ehsResizePending in State) then + begin + if Column.AutoSizeOnDblClk then + Column.AutoSizeToFit + end; + Column := Columns.ColumnByPoint(ViewPt); + OwnerListview.DoHeaderDblClick(Button, SmallPointToPoint(Msg.Pos), KeysToShiftState(Msg.Keys)); + if Assigned(Column) then + OwnerListview.DoColumnDblClick(Button, KeysToShiftState(Msg.Keys), SmallPointToPoint(Msg.Pos), Column); +end; + +procedure TEasyHeader.WMLButtonDown(var Msg: TWMLButtonDown); +var + ViewPt: TPoint; + TempColumn: TEasyColumn; +begin + + ViewPt := SmallPointToPoint(Msg.Pos); + if OwnerListview.ScrollHeaderHorz then + Inc(ViewPt.X, OwnerListview.Scrollbars.OffsetX); + Include(FState, ehsLButtonDown); + if ehsResizePending in State then + begin + Exclude(FState, ehsResizePending); + Include(FState, ehsResizing); + end else + if InCheckZone(ViewPt, TempColumn) then + begin + Include(FState, ehsCheckboxClickPending); + OwnerListview.HotTrack.PendingObjectCheck := nil; + OwnerListview.CheckManager.PendingObject := TempColumn; + end else + if InDropDownButtonZone(ViewPt, TempColumn) then + begin + if TempColumn.DropDownButton.Enabled then + begin + DropDownHoverColumn := TempColumn; + Include(DropDownHoverColumn.DropDownButton.FState, cdbsClickPending); + Include(DropDownHoverColumn.DropDownButton.FState, cdbsDown); + DropDownHoverColumn.Invalidate(True) + end + end else + if InPressZone(ViewPt, FPressColumn) then + begin + // Clear the Hottrack item + if OwnerListview.PaintInfoColumn.HotTrack then + HandleHotTrack(Msg, True); + CaptureMouse; + if PressColumn.Clickable then + begin + Include(FState, ehsClickPending); + Include(PressColumn.FState, esosClicking); + end; + if Draggable then + Include(FState, ehsDragPending); + PressColumn.Invalidate(True); + DoMouseDown(Msg, cmbLeft, KeysToShiftState(Msg.Keys), Columns.ColumnByPoint(ViewPt)); + end +end; + +procedure TEasyHeader.WMLButtonUp(var Msg: TWMLButtonUp); +const + NEXT_SORT_DIRECTION: array[TEasySortDirection] of TEasySortDirection = + (esdAscending, esdDescending, esdAscending); +var + ViewPt, Pt: TPoint; + PreviousFocusedColumn: TEasyColumn; + DoDefault: Boolean; + RectArray: TEasyRectArrayObject; +begin + ViewPt := SmallPointToPoint(Msg.Pos); + if OwnerListview.ScrollHeaderHorz then + Inc(ViewPt.X, OwnerListview.Scrollbars.OffsetX); + + if ehsCheckboxClickPending in State then + begin + if InCheckZone(ViewPt, PreviousFocusedColumn) then + PreviousFocusedColumn.Checked := not PreviousFocusedColumn.Checked; + OwnerListview.CheckManager.PendingObject.CheckHovering := False; + OwnerListview.CheckManager.PendingObject.CheckPending := False; + OwnerListview.CheckManager.PendingObject := nil; + end else + if ehsResizing in State then + begin + OwnerListview.DoColumnSizeChanged(ResizeColumn); + end else + if Assigned(DropDownHoverColumn) and (cdbsClickPending in DropDownHoverColumn.DropDownButton.State) then + begin + // NEED SHORT CIRCUIT BOOLEAN EVALUATION for this to work + if cdbsDown in DropDownHoverColumn.DropDownButton.State then + begin + DoDefault := True; + OwnerListview.DoColumnDropDownButtonClick(DropDownHoverColumn, cmbLeft, KeysToShiftState(Msg.Keys), SmallPointToPoint(Msg.Pos), DoDefault); + if DoDefault then + begin + if Assigned(DropDownHoverColumn.DropDownButton.Menu) then + begin + DropDownHoverColumn.View.ItemRectArray(DropDownHoverColumn, RectArray); + Pt.x := RectArray.DropDownArrow.Left; + Pt.y := RectArray.DropDownArrow.Bottom; + Pt := OwnerListview.Scrollbars.MapViewToWindow(Pt, False); + Pt := OwnerListview.ClientToScreen(Pt); + DropDownHoverColumn.DropDownButton.Menu.Popup(Pt.x, Pt.y) + end + end + end; + Exclude(DropDownHoverColumn.DropDownButton.FState, cdbsClickPending); + DropDownHoverColumn := nil; + end else + if Assigned(PressColumn) then + begin + if esosClicking in PressColumn.State then + begin + ClickColumn(PressColumn); + OwnerListview.DoColumnClick(cmbLeft, PressColumn); + end else + PressColumn.Invalidate(True); + end; + if [ehsResizing, ehsDragging] * FState = [] then + DoMouseUp(Msg, cmbLeft, KeysToShiftState(Msg.Keys), Columns.ColumnByPoint(ViewPt)); + + Exclude(FState, ehsLButtonDown); + Exclude(FState, ehsResizing); + Exclude(FState, ehsClickPending); + Exclude(FState, ehsDragging); + Exclude(FState, ehsDragPending); + Exclude(FState, ehsCheckboxClickPending); +end; + +procedure TEasyHeader.WMMouseMove(var Msg: TWMMouseMove); + + procedure Press(Column: TEasyColumn; Pressed: Boolean); + begin + if Assigned(Column) then + begin + if Pressed then + Include(Column.FState, esosClicking) + else + Exclude(Column.FState, esosClicking); + Column.Invalidate(True); + end; + end; + +var + ViewPt: TPoint; + Allow, ClearDropDownBtn: Boolean; + TempColumn: TEasyColumn; + ClientR: TRect; + HotTrackCheckObj: TEasyCollectionItem; + Effects: TCommonDropEffect; + +begin + ClearDropDownBtn := True; + ClientR := ViewRect; + ViewPt := SmallPointToPoint(Msg.Pos); + if OwnerListview.ScrollHeaderHorz then + begin + ViewPt.X := ViewPt.X + OwnerListview.Scrollbars.OffsetX; + OffsetRect(ClientR, OwnerListview.Scrollbars.OffsetX, 0); + end; + if not MouseCaptured and Assigned(Self.HotTrackedColumn) then + CaptureMouse; + + HotTrackCheckObj := nil; + + if OwnerListview.PaintInfoColumn.HotTrack then + HandleHotTrack(Msg, False); + + if ehsResizing in State then + begin + Allow := True; + OwnerListview.DoColumnSizeChanging(ResizeColumn, ResizeColumn.Width, ViewPt.X - ResizeColumn.DisplayRect.Left, Allow); + if Allow then + begin + ResizeColumn.Width := ViewPt.X - ResizeColumn.DisplayRect.Left; + OwnerListview.Groups.Rebuild(True) + end + end else + if ehsDragging in State then + begin + Effects := cdeMove; + DragManager.Drag(OwnerListview.Canvas, ViewPt, KeyToKeyStates(Msg.Keys), Effects); + end else + if ehsResizePending in State then + begin + if not InResizeZone(ViewPt, FResizeColumn) then + begin + FResizeColumn := nil; + Exclude(FState, ehsResizePending); + ReleaseMouse; + OwnerListview.Cursor := crDefault; + if Assigned(HotTrackedColumn) then + CaptureMouse + end + end else + if (ehsDragPending in State) and DragManager.Enabled then + begin + if DragDetectPlus(OwnerListview.Handle, SmallPointToPoint(Msg.Pos)) then + begin + Exclude(FState, ehsDragPending); + Exclude(FState, ehsClickPending); + Include(FState, ehsDragging); + DragManager.Column := PressColumn; + Press(PressColumn, False); + PressColumn := nil; + DragManager.BeginDrag(ViewPt, KeyToKeyStates(Msg.Keys)); + end + end else + if ehsClickPending in State then + begin + // + end else + if Assigned(DropDownHoverColumn) and (cdbsClickPending in DropDownHoverColumn.DropDownButton.State) then + begin + // NEED SHORT CIRCUIT BOOLEAN EVALUATION for this to work + if InDropDownButtonZone(ViewPt, TempColumn) and (TempColumn = DropDownHoverColumn) then + begin + Include(DropDownHoverColumn.DropDownButton.FState, cdbsDown); + DropDownHoverColumn.Invalidate(True) + end else + begin + Exclude(DropDownHoverColumn.DropDownButton.FState, cdbsDown); + DropDownHoverColumn.Invalidate(True) + end; + ClearDropDownBtn := False; + end else + if InCheckZone(ViewPt, TempColumn) then + begin + HotTrackCheckObj := TempColumn; + end else + if InResizeZone(ViewPt, FResizeColumn) then + begin + Allow := True; + OwnerListview.DoColumnSizeChanging(ResizeColumn, ResizeColumn.Width, ResizeColumn.Width, Allow); + if Allow then + begin + // Some other thing may have the mouse captured and the Cursor won't take + ReleaseCapture; + Include(FState, ehsResizePending); + OwnerListview.Cursor := crVHeaderSplit; + CaptureMouse; + end + end else + if InDropDownButtonZone(ViewPt, TempColumn) then + begin + DropDownHoverColumn := TempColumn; + ClearDropDownBtn := False; + end else + begin + OwnerListview.Cursor := crDefault; + DoMouseMove(Msg, KeysToShiftState(Msg.Keys)); + end; + + if (ehsCheckboxClickPending in State) then + begin + if Assigned(HotTrackCheckObj) then + begin + if OwnerListview.CheckManager.PendingObject <> HotTrackCheckObj then + begin + OwnerListview.CheckManager.PendingObject.CheckHovering := True; + HotTrackCheckObj := nil + end else + OwnerListview.CheckManager.PendingObject.CheckHovering := False; + end else + begin + OwnerListview.CheckManager.PendingObject.CheckHovering := True; + end; + if HotTrackCheckObj <> nil then + HotTrackCheckObj := nil; + end; + + if OwnerListview.CheckManager.PendingObject = HotTrackCheckObj then + HotTrackCheckObj := nil; + + OwnerListview.HotTrack.PendingObjectCheck := HotTrackCheckObj; + if ClearDropDownBtn then + DropDownHoverColumn := nil; +end; + +procedure TEasyHeader.WMRButtonDown(var Msg: TWMRButtonDown); +var + ViewPt: TPoint; +begin + ViewPt := SmallPointToPoint(Msg.Pos); + if OwnerListview.ScrollHeaderHorz then + Inc(ViewPt.X, OwnerListview.Scrollbars.OffsetX); + + Include(FState, ehsRButtonDown); + DoMouseDown(Msg, cmbRight, KeysToShiftState(Msg.Keys), Columns.ColumnByPoint(ViewPt)); +end; + +procedure TEasyHeader.WMRButtonUp(var Msg: TWMRButtonUp); +var + ViewPt: TPoint; +begin + ViewPt := SmallPointToPoint(Msg.Pos); + if OwnerListview.ScrollHeaderHorz then + Inc(ViewPt.X, OwnerListview.Scrollbars.OffsetX); + Exclude(FState, ehsRButtonDown); + Exclude(FState, ehsResizing); + Exclude(FState, ehsClickPending); + Exclude(FState, ehsDragging); + Exclude(FState, ehsDragPending); + DoMouseUp(Msg, cmbRight, KeysToShiftState(Msg.Keys), Columns.ColumnByPoint(ViewPt)); +end; + +function TEasyViewItem.AllowDrag(Item: TEasyItem; ViewportPoint: TPoint): Boolean; +begin + Result := True; +end; + +function TEasyViewItem.EditAreaHitPt(Item: TEasyItem; ViewportPoint: TPoint): Boolean; +var + RectArray: TEasyRectArrayObject; +begin + Result := False; + if Item.Enabled then + begin + ItemRectArray(Item, OwnerListview.Header.FirstColumn, Item.OwnerListview.ScratchCanvas, '', RectArray); + Result := Windows.PtInRect(RectArray.TextRect, ViewportPoint); + end +end; + +function TEasyViewItem.ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + Result := RectArray.IconRect +end; + +function TEasyViewItem.ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + if Item.Focused and (OwnerListview.Focused or Item.OwnerListview.Selection.PopupMode) then + Result := RectArray.FullTextRect + else + Result := RectArray.TextRect; +end; + +function TEasyViewItem.FullRowSelect: Boolean; +begin + Result := False; +end; + +function TEasyViewItem.GetImageList(Column: TEasyColumn; Item: TEasyItem; Image: TEasyImageKind): TCustomImageList; +begin + if Image = eikNormal then + Result := Item.ImageList[ValidateColumnIndex(Column), PaintImageSize] + else + Result := Item.StateImageList[ValidateColumnIndex(Column)]; +end; + +function TEasyViewItem.OverlappedFocus: Boolean; +// +// Returns true if the view will overlap another cell when the object has the focus +begin + Result := False +end; + +function TEasyViewItem.PaintImageSize: TEasyImageSize; +begin + Result := eisSmall +end; + +function TEasyViewItem.PaintStateImage: Boolean; +begin + Result := False +end; + +function TEasyViewItem.SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; + SelectType: TEasySelectHitType): Boolean; +var + R: TRect; + RectArray: TEasyRectArrayObject; +begin + Result := False; + if Item.Enabled then + begin + ItemRectArray(Item, nil, OwnerListview.ScratchCanvas, '', RectArray); + Result := IntersectRect(R, SelectViewportRect, ExpandTextR(Item, RectArray, SelectType)) or + IntersectRect(R, SelectViewportRect, ExpandIconR(Item, RectArray, SelectType)) + end +end; + +function TEasyViewItem.SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; + SelectType: TEasySelectHitType): Boolean; +var + RectArray: TEasyRectArrayObject; +begin + Result := False; + if Item.Enabled then + begin + ItemRectArray(Item, nil, OwnerListview.ScratchCanvas, '', RectArray); + Result := Windows.PtInRect(ExpandTextR(Item, RectArray, SelectType), ViewportPoint) or + Windows.PtInRect(ExpandIconR(Item, RectArray, SelectType), ViewportPoint) + end +end; + +function TEasyViewItem.ValidateColumnIndex(Column: TEasyColumn): Integer; +begin + if Assigned(Column) then + Result := Column.Index + else + Result := 0 +end; + +procedure TEasyViewItem.AfterSelRectCalc(Item: TEasyItem; Column: TEasyColumn; + const Caption: WideString; var LocalSelRect: TRect); +begin + +end; + +procedure TEasyViewItem.CalculateTextRect(Item: TEasyItem; Column: TEasyColumn; + var TextR: TRect; ACanvas: TControlCanvas); +// Fits the Text in the PaintInfo.Caption.Text field into the TextR based +// on the values in the PaintInfo record. If Canvas is nil then a temporary +// canvas is created to fit the text based on the Font in the PaintInfo +var + DrawTextFlags: TCommonDrawTextWFlags; + LocalCanvas: TControlCanvas; +begin + case PaintTextAlignment(Item, Column) of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + case PaintTextVAlignment(Item, Column) of + cvaTop: Include(DrawTextFlags, dtTop); + cvaBottom: Include(DrawTextFlags, dtBottom); + cvaCenter: Include(DrawTextFlags, dtVCenter); + end; + + if not Assigned(ACanvas) then + begin + LocalCanvas := TControlCanvas.Create; + LocalCanvas.Control := OwnerListview + end else + LocalCanvas := ACanvas; + + try + LoadTextFont(Item, 0, LocalCanvas, False); + DrawTextFlags := DrawTextFlags + [dtCalcRectAdjR, dtCalcRect, dtCalcRectAlign]; + DrawTextWEx(LocalCanvas.Handle, Item.Captions[0], TextR, DrawTextFlags, 1); + finally + if not Assigned(ACanvas) then + LocalCanvas.Free + end; +end; + +function TEasyViewItem.ItemRect(Item: TEasyItem; Column: TEasyColumn; + RectType: TEasyCellRectType): TRect; +var + RectArray: TEasyRectArrayObject; +begin + Result := Rect(0, 0, 0, 0); + // First look for cached rectangles during a drag +(* CacheRectangle(Item, RectType, Result, cdrRetrieve); *) + + if IsRectEmpty(Result) then + begin + ItemRectArray(Item, Column, OwnerListview.ScratchCanvas, '', RectArray); + case RectType of + ertBounds: Result := RectArray.BoundsRect; + ertIcon: Result := RectArray.IconRect; + ertLabel: Result := RectArray.LabelRect; + ertClickselectBounds: Result := RectArray.ClickselectBoundsRect; + ertDragSelectBounds: Result := RectArray.DragSelectBoundsRect; + ertText: Result := RectArray.TextRect; + ertFullText: Result := RectArray.FullTextRect; + end; +(* CacheRectangle(Item, RectType, Result, cdrStore); *) + end; +end; + +procedure TEasyViewItem.GetImageSize(Item: TEasyItem; Column: TEasyColumn; var ImageW, ImageH: Integer; Image: TEasyImageKind); +var + Images: TCustomImageList; + ColumnPos: Integer; + IsCustom: Boolean; +begin + ImageW := 0; + ImageH := 0; + ColumnPos := ValidateColumnIndex(Column); + + if Image = eikNormal then + begin + if Item.ImageIndexes[ColumnPos] > -1 then + begin + Item.ImageDrawIsCustom(Column, IsCustom); + if IsCustom then + Item.ImageDrawGetSize(Column, ImageW, ImageH) + else begin + Images := GetImageList(Column, Item, Image); + if Assigned(Images) then + begin + ImageW := Images.Width; + ImageH := Images.Height + end + end + end + end else + begin + Images := GetImageList(Column, Item, Image); + if Assigned(Images) then + begin + ImageW := Images.Width; + ImageH := Images.Height + end + end +end; + +function TEasyViewItem.GetStateImageList(Column: TEasyColumn; Item: TEasyItem): TCustomImageList; +begin + Result := Item.StateImageList[Column.Index] +end; + +procedure TEasyViewItem.ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); +// +// Grabs all the rectangles for the items within a cell in one call +// +begin + Item.Initialized := True; + + FillChar(RectArray, SizeOf(RectArray), #0); + + RectArray.BoundsRect := Item.DisplayRect; + InflateRect(RectArray.BoundsRect, -Item.Border, -Item.Border); + + RectArray.IconRect := RectArray.BoundsRect; + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.ClickselectBoundsRect := RectArray.BoundsRect; + RectArray.DragSelectBoundsRect := RectArray.BoundsRect; + RectArray.TextRect := RectArray.BoundsRect; + RectArray.SelectionRect := RectArray.BoundsRect; + RectArray.FocusChangeInvalidRect := RectArray.BoundsRect; + RectArray.EditRect := RectArray.FullTextRect; + SetRect(RectArray.CheckRect, 0, 0, 0, 0); +end; + +procedure TEasyViewItem.LoadTextFont(Item: TEasyItem; Position: Integer; ACanvas: TCanvas; Hilightable: Boolean); +begin + ACanvas.Font.Assign(OwnerListview.Font); + ACanvas.Brush.Style := bsClear; + if not OwnerListview.ShowInactive then + begin + if Hilightable then + begin + if OwnerListview.Focused or Item.OwnerListview.Selection.PopupMode or Item.Hilighted then + ACanvas.Font.Color := OwnerListview.Selection.TextColor + else + ACanvas.Font.Color := OwnerListview.Selection.InactiveTextColor + end; + if OwnerListview.HotTrack.Enabled and not Item.Hilighted then + begin + if (OwnerListview.HotTrack.FPendingObject = Item) and not Item.Selected then + begin + ACanvas.Font.Color := OwnerListview.HotTrack.Color; + if OwnerListview.HotTrack.Underline then + ACanvas.Font.Style := ACanvas.Font.Style + [fsUnderline] + end + end + end else + ACanvas.Font.Color := clGrayText; + + if Item.Bold then + ACanvas.Font.Style := ACanvas.Font.Style + [fsBold]; + OwnerListview.DoItemPaintText(Item, Position, ACanvas); +end; + +procedure TEasyViewItem.Paint(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; ViewportClipRect: TRect; ForceSelectionRectDraw: Boolean); +// The Canvas's DC offset has been shifted on entry so that the viewport coords +// of the item can be use direct within the method +var + RectArray: TEasyRectArrayObject; + Caption: WideString; + Handled: Boolean; +begin + if Item.Visible then + begin + CanvasStore.StoreCanvasState(ACanvas); + try + if Assigned(Column) then + Caption := Item.Captions[Column.Index] + else + Caption := Item.Caption; + + ItemRectArray(Item, Column, ACanvas, Caption, RectArray); + + Handled := False; + // First allow decendents a crack at the painting + PaintBefore(Item, Column, Caption, ACanvas, RectArray, Handled); + + if not Handled then + begin + // Paint the Selection Rectangle + // ************************* + if not(OwnerListview.EditManager.Editing and (OwnerListview.EditManager.EditItem = Item)) then + PaintSelectionRect(Item, Column, Caption, RectArray, ACanvas, ViewportClipRect, ForceSelectionRectDraw); + + // Next Paint the Icon or Bitmap Image + // ************************* + PaintImage(Item, Column, Caption, RectArray, eisSmall, ACanvas); + + // Now lets paint the Text + // ************************* + // If focused then show as many lines as necessary + // Decendents should override PaintText to change the number of lines + // as necessary + if not(OwnerListview.EditManager.Editing and (OwnerListview.EditManager.EditItem = Item)) or ((OwnerListview.View = elsReport) and (Column <> OwnerListview.EditManager.EditColumn)) then + begin + PaintText(Item, Column, Caption, RectArray, ACanvas, PaintTextLineCount(Item, Column)); + + // Now lets paint Focus Rectangle + // ************************* + if OwnerListview.Selection.UseFocusRect then + PaintFocusRect(Item, Column, Caption, RectArray, ACanvas); + end; + + // Now Paint the Checkbox if applicable + PaintCheckBox(Item, Column, RectArray, ACanvas); + // Now give decentant a chance to paint anything + PaintAfter(Item, Column, Caption, ACanvas, RectArray); + end + finally + CanvasStore.RestoreCanvasState(ACanvas) + end + end +end; + +procedure TEasyViewItem.PaintAfter(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject); +begin +// +// Called after all other drawing is done +// +end; + +procedure TEasyViewItem.PaintAlphaBlendedRoundRect(ACanvas: TCanvas; + AlphaColor: TColor; GradientBottom: TColor; GradientTop: TColor; + var LocalSelWindowClippedRect: TRect; var Rgn: HRGN); +var + Bits: TBitmap; + GlassBits: TBitmap; +begin + // If it is a round rectangle then we need to create a round region + // to "clip" the square Alpha Blended memory bitmap to the round rectangle + Bits := TBitmap.Create; + try + Bits.PixelFormat := pf32Bit; + Bits.Width := RectWidth(LocalSelWindowClippedRect); + Bits.Height := RectHeight(LocalSelWindowClippedRect); + + // Make a copy of the background image behind the square text rect + BitBlt(Bits.Canvas.Handle, 0, 0, Bits.Width, Bits.Height, ACanvas.Handle, + LocalSelWindowClippedRect.Left, LocalSelWindowClippedRect.Top, SRCCOPY); + + Bits.Canvas.Pen.Color := ACanvas.Pen.Color; + // Draw the rectangle to it with a clear center + Bits.Canvas.Brush.Style := bsClear; + RoundRect(Bits.Canvas.Handle, 0, 0, Bits.Width, Bits.Height, + OwnerListview.Selection.RoundRectRadius, + OwnerListview.Selection.RoundRectRadius); + + if OwnerListview.Selection.Gradient then + begin + GlassBits := TBitmap.Create; + GlassBits.Width := RectWidth(LocalSelWindowClippedRect); + GlassBits.Height := RectHeight(LocalSelWindowClippedRect); + GlassBits.PixelFormat := pf32Bit; + + FillGradient(0, 0, GlassBits.Width, GlassBits.Height, + GradientTop, GradientBottom, + 0, GlassBits.Height, GlassBits.Canvas); + BlendBits(GlassBits, Bits, 80, 20, OwnerListview.Selection.BlurAlphaBkGnd); + GlassBits.Free; + end + else + // AlphaBlend the memory bitmap + AlphaBlend(0, Bits.Canvas.Handle, Rect(0, 0, Bits.Width, Bits.Height), Point(0, 0), + cbmConstantAlphaAndColor, OwnerListview.Selection.BlendAlphaTextRect, + ColorToRGB(AlphaColor)); + + LocalSelWindowClippedRect := OwnerListview.Scrollbars.MapViewRectToWindowRect(LocalSelWindowClippedRect); + // Create a round rect region in the Canvas DC to blast the alpha + // blended memory bitmap to. The Alpha blending also blended the + // corners where we do not need it so we must only copy the actual + // round rect area to the Canvas + Rgn := CreateRoundRectRgn( + LocalSelWindowClippedRect.Left, + LocalSelWindowClippedRect.Top, + LocalSelWindowClippedRect.Right + 1, + LocalSelWindowClippedRect.Bottom + 1, + OwnerListview.Selection.RoundRectRadius, + OwnerListview.Selection.RoundRectRadius); + LocalSelWindowClippedRect := OwnerListview.Scrollbars.MapWindowRectToViewRect(LocalSelWindowClippedRect); + + // Select the new User round rect region to the DC + SelectClipRgn(ACanvas.Handle, Rgn); + OwnerListview.ClipHeader(ACanvas, False); + BitBlt(ACanvas.Handle, + LocalSelWindowClippedRect.Left, + LocalSelWindowClippedRect.Top, + RectWidth(LocalSelWindowClippedRect), + RectHeight(LocalSelWindowClippedRect), + Bits.Canvas.Handle, + 0, + 0, + SRCCOPY); + OwnerListview.ClipHeader(ACanvas, True); + finally + // Remove the User clipping region from the DC + if Rgn <> 0 then + DeleteObject(Rgn); + Bits.Free; + end; +end; + +procedure TEasyViewItem.PaintAlphaBlendedSelection(ACanvas: TCanvas; + AlphaColor: TColor; HeaderClippedWindowRect: TRect; LocalSelRect: TRect); +begin +// AlphaBlend does not clip and does not use the DC Origins, must be absolute to physical screen pixels + AlphaBlend(0, ACanvas.Handle, HeaderClippedWindowRect, Point(0, 0), + cbmConstantAlphaAndColor, OwnerListview.Selection.BlendAlphaTextRect, ColorToRGB(AlphaColor)); + ACanvas.Brush.Style := bsClear; + Rectangle(ACanvas.Handle, LocalSelRect.Left, LocalSelRect.Top, LocalSelRect.Right, LocalSelRect.Bottom); +end; + +procedure TEasyViewItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +// +// Called before all other drawing is done +// +begin + if Item.Border > 0 then + begin + ACanvas.Brush.Color := Item.BorderColor; + ACanvas.FrameRect(RectArray.BoundsRect); + end +end; + +procedure TEasyViewItem.PaintCheckBox(Item: TEasyItem; Column: TEasyColumn; + RectArray: TEasyRectArrayObject; ACanvas: TCanvas); +var + PaintCheckBox: Boolean; + AbsIndex: Integer; +begin + PaintCheckBox := not ((Item.CheckType = ectNone) or (Item.CheckType = ettNoneWithSpace)); + + if Assigned(Column) then + begin + AbsIndex := Column.Index; + if AbsIndex > 0 then + PaintCheckBox := False; + // Future inhancement, checkboxes in columns + // PaintCheckBox := not ((Item.Details[ColumnIndex].CheckType = ectNone) or (Item.Details[ColumnIndex].CheckType = ettNoneWithSpace)); + end; + + if PaintCheckBox then + PaintCheckboxCore(Item.CheckType, // TEasyCheckType + OwnerListview, // TCustomEasyListview + ACanvas, // TCanvas + RectArray.CheckRect, // TRect + Item.Enabled, // IsEnabled + Item.Checked, // IsChecked + OwnerListview.CheckManager.PendingObject = Item, // IsHot + Item.CheckFlat, // IsFlat + Item.CheckHovering, // IsHovering + Item.CheckPending, // IsPending + Item, + Item.Checksize); + +end; + +procedure TEasyViewItem.PaintFocusRect(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas); +var + AbsIndex: Integer; + LocalFocusRect: TRect; +begin + if not FullRowSelect then + begin + AbsIndex := ValidateColumnIndex(Column); + // Only draw the focus rect if the window has focus + if Item.Focused and OwnerListview.Focused and ((AbsIndex < 1)) then + begin + if OwnerListview.Selection.FullCellPaint then + begin + LocalFocusRect := Item.DisplayRect; + UnionRect(LocalFocusRect, LocalFocusRect, RectArray.FullFocusSelRect); + if (OwnerListview.View = elsReport) and (OwnerListview.Header.Columns.Count > 0) then + begin + LocalFocusRect.Left := OwnerListview.Header.Columns[0].DisplayRect.Left; + LocalFocusRect.Right := LocalFocusRect.Left + OwnerListview.Header.Columns[0].Width; + end + end else + begin + LocalFocusRect := RectArray.FullFocusSelRect; + if OwnerListview.Selection.FullItemPaint then + UnionRect(LocalFocusRect, LocalFocusRect, RectArray.IconRect); + end; + ACanvas.Brush.Color := OwnerListview.Color; + ACanvas.Font.Color := clBlack; + DrawFocusRect(ACanvas.Handle, LocalFocusRect); + end + end +end; + +procedure TEasyViewItem.PaintAlphaBlendedGradientFill(ACanvas: TCanvas; + GradientBottom: TColor; GradientTop: TColor; LocalSelRect: TRect; + LocalSelWindowClippedRect: TRect; LocalSelClippedRect: TRect); +var + Bits: TBitmap; + GlassBits: TBitmap; +begin + Bits := TBitmap.Create; + GlassBits := TBitmap.Create; + try + GlassBits.Width := RectWidth(LocalSelWindowClippedRect); + GlassBits.Height := RectHeight(LocalSelWindowClippedRect); + GlassBits.PixelFormat := pf32Bit; + Bits.Width := GlassBits.Width; + Bits.Height := GlassBits.Height; + Bits.PixelFormat := pf32Bit; + + BitBlt(Bits.Canvas.Handle, 0, 0, Bits.Width, Bits.Height, + ACanvas.Handle, LocalSelWindowClippedRect.Left, LocalSelWindowClippedRect.Top, SRCCOPY); + + FillGradient(0, 0, GlassBits.Width, GlassBits.Height, GradientTop, GradientBottom, + 0, GlassBits.Height, GlassBits.Canvas); + BlendBits(GlassBits, Bits, 80, 20, OwnerListview.Selection.BlurAlphaBkGnd); + BitBlt(ACanvas.Handle, LocalSelRect.Left, LocalSelWindowClippedRect.Top, + Bits.Width, Bits.Height, Bits.Canvas.Handle, 0, 0, SRCCOPY); + finally + GlassBits.Free; + Bits.Free; + end; +end; + +procedure TEasyViewItem.PaintImage(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ImageSize: TEasyImageSize; ACanvas: TCanvas); +var + rgbBk, rgbFg: Longword; + fStyle: Integer; + OverlayIndex, ImageIndex, PositionIndex, AbsIndex, StateImageIndex: Integer; + Images, StateImages: TCustomImageList; + DoDefault, IsCustom: Boolean; + Rgn: HRgn; + TmpBits: TBitmap; + R: TRect; + W, H, Scale: Double; +begin + TestAndClipImage(ACanvas, RectArray, Rgn); + try + if Assigned(Column) then + begin + AbsIndex := Column.Index; + PositionIndex := Column.Position + end else + begin + AbsIndex := 0; + PositionIndex := 0; + end; + DoDefault := True; + Images := GetImageList(Column, Item, eikNormal); + if OwnerListview.IsThumbnailView then + begin + InflateRect(RectArray.IconRect, -Item.Border, -Item.Border); + Item.ThumbnailDraw(ACanvas, RectArray.IconRect, AlphaBlender, DoDefault); + end; + + // If not using the thumbnail then get the information for the ImageList Indexes + if DoDefault then + begin + Item.ImageDrawIsCustom(Column, IsCustom); + if IsCustom then + begin + Item.ImageDraw(Column, ACanvas, RectArray, AlphaBlender); + end else + if DoDefault then + begin + ImageIndex := Item.ImageIndexes[AbsIndex]; + OverlayIndex := Item.ImageOverlayIndexes[AbsIndex]; + + if PaintStateImage then + begin + StateImageIndex := Item.StateImageIndexes[AbsIndex]; + + StateImages := GetImageList(Column, Item, eikState); + if Assigned(StateImages) and (StateImageIndex > -1) then + begin + // Set up a normal Imagelist icon + fStyle := ILD_TRANSPARENT; + rgbBk := CLR_NONE; + rgbFg := CLR_NONE; + + RectArray.StateRect.Left := RectArray.StateRect.Left + (RectWidth(RectArray.StateRect) - Images.Width) div 2; + RectArray.StateRect.Top := RectArray.StateRect.Top + (RectHeight(RectArray.StateRect) - Images.Height) div 2; + + ImageList_DrawEx(StateImages.Handle, StateImageIndex, ACanvas.Handle, RectArray.StateRect.Left, + RectArray.StateRect.Top, 0, 0, rgbBk, rgbFg, fStyle); + end + end; + + if Assigned(Images) and (ImageIndex > -1) then + begin + // Set up a normal Imagelist icon + fStyle := ILD_TRANSPARENT; + rgbBk := CLR_NONE; + rgbFg := CLR_NONE; + + // Set up to blend the Imagelist icon + // The param is to allow Thumbnail view to use this paint method and not blend + // the image + if OwnerListview.Selection.BlendIcon and + (((OwnerListview.Focused or Item.OwnerListview.Selection.PopupMode) and Item.Selected) or Item.Hilighted and + (PositionIndex < 1)) then + begin + fStyle := fStyle or ILD_SELECTED; + if OwnerListview.Selection.ForceDefaultBlend then + rgbFg := CLR_DEFAULT + else + rgbFg := ColorToRGB(OwnerListview.Selection.Color) + end; + + if not Item.Enabled or Item.Cut or Item.Ghosted or Item.OwnerListview.ShowInactive then + begin + fStyle := fStyle or ILD_SELECTED; + rgbFg := ColorToRGB(OwnerListview.DisabledBlendColor) + end; + + if OverlayIndex > -1 then + fStyle := FStyle or IndexToOverLayMask(OverlayIndex); + + if (RectWidth(RectArray.IconRect) < Images.Width) or (RectHeight(RectArray.IconRect) < Images.Height) then + begin + if (Images.Width > 0) and (Images.Height > 0) then + begin + TmpBits := TBitmap.Create; + try + TmpBits.PixelFormat := pf32Bit; + TmpBits.Width := Images.Width; + TmpBits.Height := Images.Height; + ImageList_DrawEx(Images.Handle, ImageIndex, TmpBits.Canvas.Handle, 0, 0, 0, 0, rgbBk, rgbFg, fStyle); + + + W := RectWidth(RectArray.IconRect)/Images.Width; + H := RectHeight(RectArray.IconRect)/Images.Height; + + if W > H then + Scale := H + else + Scale := W; + + R := Rect(0, 0, Round(Images.Width*Scale), Round(Images.Height*Scale)); + + StretchBlt(ACanvas.Handle, + RectArray.IconRect.Left + ((RectWidth(RectArray.IconRect) - RectWidth(R)) div 2), + RectArray.IconRect.Top + ((RectHeight(RectArray.IconRect) - RectHeight(R)) div 2), + RectWidth(R), + RectHeight(R), + TmpBits.Canvas.Handle, + 0, 0, + TmpBits.Width, + TmpBits.Height, + SRCCOPY); + finally + TmpBits.Free + end + end + end else + begin + RectArray.IconRect.Left := RectArray.IconRect.Left + (RectWidth(RectArray.IconRect) - Images.Width) div 2; + RectArray.IconRect.Top := RectArray.IconRect.Top + (RectHeight(RectArray.IconRect) - Images.Height) div 2; + + ImageList_DrawEx(Images.Handle, ImageIndex, ACanvas.Handle, RectArray.IconRect.Left, + RectArray.IconRect.Top, 0, 0, rgbBk, rgbFg, fStyle); + end + end + end + end + finally + TestAndUnClipImage(ACanvas, RectArray, Rgn); + end +end; + +procedure TEasyViewItem.PaintNonAlphaBlendedSelection(ACanvas: TCanvas; + LocalSelRect: TRect); +begin +// Not AlphaBlended is much easier + if OwnerListview.Selection.RoundRect then + RoundRect(ACanvas.Handle, + LocalSelRect.Left, + LocalSelRect.Top, + LocalSelRect.Right, + LocalSelRect.Bottom, + OwnerListview.Selection.RoundRectRadius, + OwnerListview.Selection.RoundRectRadius) + else + Rectangle(ACanvas.Handle, + LocalSelRect.Left, + LocalSelRect.Top, + LocalSelRect.Right, + LocalSelRect.Bottom); +end; + +procedure TEasyViewItem.PaintSelectionRect(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; ViewportClipRect: TRect; ForceSelectionRectDraw: Boolean); +var + Rgn: HRGN; + // All these rectangles are necessary because the AlphaBlend routine does not respect DC origins and clipping regions. + LocalSelRect, // The true Viewpoint Rectangle of the Selection Rectangle, including the Header area if applicable + LocalSelWindowClippedRect, // The true Viewpoint Rectangle of the Selection Rectangle, Clipped to the current Physical Window Coordinates + LocalSelClippedRect, // The true Viewpoint Rectangle of the Selection Rectangle, excluding the Header area if applicable + HeaderClippedWindowRect: TRect; // Rectangle containing the Selection Rectangle that has been translated to Physical Window Coordinates and the Header area clipped off it if necesasry. This rectangle is also clipped to the ClientWindow rectangle + AlphaColor, + GradientTop, + GradientBottom: TColor; + DoDraw: Boolean; +begin + DoDraw := Item.Selected or Item.Hilighted; + if DoDraw and Assigned(Column) then + DoDraw := (Column.Index < 1); + + if (DoDraw and not FullRowSelect) or ForceSelectionRectDraw then + begin + Rgn := 0; + // If the Window control is not focused show the selection with innactive colors + if OwnerListview.Focused or Item.Hilighted and not Item.OwnerListview.ShowInactive or Item.OwnerListview.Selection.PopupMode then + begin + ACanvas.Font.Color := OwnerListview.Selection.TextColor; + if (Item <> OwnerListview.Selection.FocusedItem) or not OwnerListview.Selection.UseFocusRect then + ACanvas.Pen.Color := OwnerListview.Selection.BorderColor + else + ACanvas.Pen.Color := clLtGray; + + + ACanvas.Brush.Color := OwnerListview.Selection.Color; + AlphaColor := OwnerListview.Selection.Color; + GradientTop := OwnerListview.Selection.GradientColorTop; + GradientBottom := OwnerListview.Selection.GradientColorBottom; + end else + begin + ACanvas.Font.Color := OwnerListview.Selection.InactiveTextColor; + ACanvas.Pen.Color := OwnerListview.Selection.InactiveBorderColor; + ACanvas.Brush.Color := OwnerListview.Selection.InactiveColor; + AlphaColor := OwnerListview.Selection.InactiveColor; + GradientTop := OwnerListview.Color; + GradientBottom := OwnerListview.Selection.InactiveColor + end; + + if OwnerListview.Selection.GroupSelections and (OwnerListview.View = elsReport) and (Item.Selected or Item.Hilighted or Item.Selected) then + begin + SetRect(LocalSelRect, 0, 0, 0, 0); + if Assigned(Item.SelectionGroup) then + begin + if Item.Hilighted then + begin + LocalSelRect := Item.DisplayRect; + if not ((OwnerListview.Selection.FullItemPaint) or (OwnerListview.Selection.FullCellPaint) or (OwnerListview.Selection.FullItemPaint)) then + LocalSelRect.Left := RectArray.TextRect.Left + end else + begin + if Item.SelectionGroup.FirstItem = Item then + begin + LocalSelRect := Item.SelectionGroup.DisplayRect; + if not(OwnerListview.Selection.FullItemPaint or OwnerListview.Selection.FullCellPaint) then + LocalSelRect.Left := RectArray.SelectionRect.Left + end + end + end else + begin + LocalSelRect := Item.DisplayRect; + if not(OwnerListview.Selection.FullItemPaint or OwnerListview.Selection.FullCellPaint) then + LocalSelRect.Left := RectArray.SelectionRect.Left + end + end else + if FullRowSelect and (Item.Selected or Item.Hilighted or Item.Selected) then + begin + // If full row select then the First Column paints the entire row + if OwnerListview.Selection.FullCellPaint then + LocalSelRect := Item.DisplayRect + else begin + LocalSelRect := Item.DisplayRect; + if not OwnerListview.Selection.FullItemPaint then + LocalSelRect.Left := RectArray.SelectionRect.Left; + end + end else + begin + if Item.Focused and (OwnerListview.Focused or Item.OwnerListview.Selection.PopupMode) then + begin + if OwnerListview.Selection.FullCellPaint then + begin + LocalSelRect := Item.DisplayRect; + UnionRect(LocalSelRect, LocalSelRect, RectArray.FullFocusSelRect); + if (OwnerListview.View = elsReport) and (OwnerListview.Header.Columns.Count > 0) then + begin + LocalSelRect.Left := OwnerListview.Header.Columns[0].DisplayRect.Left; + LocalSelRect.Right := LocalSelRect.Left + OwnerListview.Header.Columns[0].Width; + end + end else + begin + LocalSelRect := RectArray.FullFocusSelRect; + // Cover the Icon if FullItemPaint + if OwnerListview.Selection.FullItemPaint then + UnionRect(LocalSelRect, LocalSelRect, RectArray.IconRect); + end + end else + begin + if OwnerListview.Selection.FullCellPaint then + begin + LocalSelRect := Item.DisplayRect; + if (OwnerListview.View = elsReport) and (OwnerListview.Header.Positions.Count > 0) then + begin + LocalSelRect.Left := OwnerListview.Header.Columns[0].DisplayRect.Left; + LocalSelRect.Right := LocalSelRect.Left + OwnerListview.Header.Columns[0].Width; + end + end else + begin + LocalSelRect := RectArray.SelectionRect; + // Cover the Icon if FullItemPaint + if OwnerListview.Selection.FullItemPaint then + UnionRect(LocalSelRect, LocalSelRect, RectArray.IconRect); + end + end + end; + + // LocalSelRect is now set up + AfterSelRectCalc(Item, Column, Caption, LocalSelRect); + + // Clip out the header from the Selection Rectangle, don't need to account for Header + // as the DC is offset to take it into account + LocalSelClippedRect := LocalSelRect; + HeaderClippedWindowRect := OwnerListview.Scrollbars.MapViewRectToWindowRect(LocalSelClippedRect); + LocalSelWindowClippedRect := HeaderClippedWindowRect; + if HeaderClippedWindowRect.Top < OwnerListview.Header.RuntimeHeight then + begin + HeaderClippedWindowRect.Top := OwnerListview.Header.RuntimeHeight; + // Make it a 0 height rect if it is an improper rect after adjustment + if HeaderClippedWindowRect.Top > HeaderClippedWindowRect.Bottom then + HeaderClippedWindowRect.Top := HeaderClippedWindowRect.Bottom; + LocalSelClippedRect := OwnerListview.Scrollbars.MapViewRectToWindowRect(HeaderClippedWindowRect); + end; + + IntersectRect(LocalSelWindowClippedRect, LocalSelWindowClippedRect, OwnerListview.ClientRect); + LocalSelWindowClippedRect := OwnerListview.Scrollbars.MapWindowRectToViewRect(LocalSelWindowClippedRect); + IntersectRect(HeaderClippedWindowRect, HeaderClippedWindowRect, OwnerListview.ClientRect); + + // Stop right side from having rounded corners if extends past right edge of window, + // but don't go past the actual width + Inc(LocalSelWindowClippedRect.Right, OwnerListview.Selection.RoundRectRadius); + if LocalSelWindowClippedRect.Right > LocalSelRect.Right then + LocalSelWindowClippedRect.Right := LocalSelRect.Right; + + if not IsRectEmpty(LocalSelRect) then + begin + if OwnerListview.Selection.Gradient and not OwnerListview.Selection.AlphaBlend then + begin + if RectHeight(LocalSelWindowClippedRect) > 0 then + begin + FillGradient(LocalSelRect.Left, LocalSelWindowClippedRect.Top, LocalSelWindowClippedRect.Right, + LocalSelWindowClippedRect.Bottom, GradientTop, GradientBottom, + LocalSelWindowClippedRect.Top, LocalSelWindowClippedRect.Bottom, ACanvas); + ACanvas.FrameRect(LocalSelRect); + end + end else + if HasMMX and OwnerListview.Selection.AlphaBlend then + begin + if OwnerListview.Selection.RoundRect then + PaintAlphaBlendedRoundRect(ACanvas, AlphaColor, GradientBottom, GradientTop, LocalSelWindowClippedRect, Rgn) + else begin + if OwnerListview.Selection.Gradient then + PaintAlphaBlendedGradientFill(ACanvas, GradientBottom, GradientTop, LocalSelRect, LocalSelWindowClippedRect, LocalSelClippedRect) + else + PaintAlphaBlendedSelection(ACanvas, AlphaColor, HeaderClippedWindowRect, LocalSelRect); + end + end else + PaintNonAlphaBlendedSelection(ACanvas, LocalSelRect); + end + end +end; + +procedure TEasyViewItem.PaintText(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; LinesToDraw: Integer); +var + DrawTextFlags: TCommonDrawTextWFlags; + AbsIndex: Integer; + Hilightable: Boolean; +begin + if not IsRectEmpty(RectArray.TextRect) then + begin + AbsIndex := ValidateColumnIndex(Column); + + Hilightable := (Item.Selected or Item.Hilighted) and ((AbsIndex = 0) or (FullRowSelect or OwnerListview.Selection.GroupSelections)); + LoadTextFont(Item, AbsIndex, ACanvas, Hilightable); + + DrawTextFlags := [dtEndEllipsis]; + + if LinesToDraw = 1 then + Include(DrawTextFlags, dtSingleLine); + + case PaintTextAlignment(Item, Column) of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + case PaintTextVAlignment(Item, Column) of + cvaTop: Include(DrawTextFlags, dtTop); + cvaCenter: Include(DrawTextFlags, dtVCenter); + cvaBottom: Include(DrawTextFlags, dtBottom); + end; + + OwnerListview.ClipHeader(ACanvas, False); + if Item.Focused and (OwnerListview.Focused or Item.OwnerListview.Selection.PopupMode) then + DrawTextWEx(ACanvas.Handle, Caption, RectArray.TextRect, DrawTextFlags, LinesToDraw) + else + DrawTextWEx(ACanvas.Handle, Caption, RectArray.TextRect, DrawTextFlags, LinesToDraw) + end +end; + +function TEasyViewItem.PaintTextAlignment(Item: TEasyItem; Column: TEasyColumn): TAlignment; +begin + Result := taCenter +end; + +function TEasyViewItem.PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; +begin + Result := 2 +end; + +function TEasyViewItem.PaintTextVAlignment(Item: TEasyItem; Column: TEasyColumn): TCommonVAlignment; +begin + Result := cvaTop +end; + +function TEasyViewItem.PtInRect(Item: TEasyItem; Column: TEasyColumn; + Pt: TPoint): Integer; +// Compares the passed point with the rectangle of the item. +// +// If Rect > Pt then Result = 1 +// If Rect < Pt then Result = -1 +// If Rect = Pt (i.e. the point is within the rect) then Result = 0 +// +// This code works if the layout of the items is vertical with item numbering +// increasing from Left to Right in each Row +var + CellRect: TRect; +begin + CellRect := Item.DisplayRect; + if Pt.y < CellRect.Top then + Result := 1 + else + if Pt.y > CellRect.Bottom then + Result := -1 + else + if Pt.x < CellRect.Left then + begin + Result := 1 + end + else + if Pt.x > CellRect.Right then + Result := -1 + else + Result := 0 +end; + +procedure TEasyViewItem.ReSizeRectArray( + var RectArray: TEasyRectArrayObjectArray); +var + OldLen, i: Integer; +begin + if Length(RectArray) < OwnerListview.Header.Positions.Count then + begin + OldLen := Length(RectArray); + SetLength(RectArray, OwnerListview.Header.Positions.Count); + for i := OldLen to OwnerListview.Header.Positions.Count - 1 do + FillChar(RectArray[i], SizeOf(RectArray[i]), #0); + end else + if Length(RectArray) > OwnerListview.Header.Positions.Count then + SetLength(RectArray, OwnerListview.Header.Positions.Count); + + if Length(RectArray) = 0 then + begin + SetLength(RectArray, 1); + FillChar(RectArray[0], SizeOf(RectArray[0]), #0); + end +end; + +procedure TEasyViewItem.TestAndClipImage(ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Rgn: HRgn); +var + R, ImageRect: TRect; +begin + Rgn := 0; + UnionRect(ImageRect, RectArray.IconRect, RectArray.StateRect); + if not ContainsRect(RectArray.BoundsRect, ImageRect) then + begin + // I was hoping that IntersectClipRect would set a clipping region when + // I clipped the header in the main control. Then I would get it here and + // resort it later. Unfortunately it does not and GetClipRgn returns 0 so + // I have to call ClipHeader explicitly. + GetClipRgn(ACanvas.Handle, Rgn); + IntersectRect(R, ImageRect, RectArray.BoundsRect); + IntersectClipRect(ACanvas.Handle, R.Left, R.Top, R.Right, R.Bottom); + OwnerListview.ClipHeader(ACanvas, False) + end; +end; + +procedure TEasyViewItem.TestAndUnClipImage(ACanvas: TCanvas; RectArray: TEasyRectArrayObject; Rgn: HRgn); +var + ImageRect: TRect; +begin + UnionRect(ImageRect, RectArray.IconRect, RectArray.StateRect); + if not ContainsRect(RectArray.BoundsRect, ImageRect) then + begin + if Rgn <> 0 then + begin + SelectClipRgn(ACanvas.Handle, Rgn); + DeleteObject(Rgn) + end + else begin + SelectClipRgn(ACanvas.Handle, 0); + OwnerListview.ClipHeader(ACanvas, False) + end + end; +end; + +function TEasyHeader.GetViewWidth: Integer; +begin + if Positions.Count > 0 then + Result := Positions[Positions.Count - 1].DisplayRect.Right + else + Result := 0 +end; + +{ TEasyDefaultCellSize } + +constructor TEasyCellSize.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FWidth := 75; + FHeight := 75; + FAutoSizeHeight := 75; + FAutoSizeWidth := 75; +end; + +function TEasyCellSize.GetHeight: Integer; +begin + if AutoSize then + Result := FAutoSizeHeight + else begin + Result := FHeight; + if Result < 1 then + Result := 1 + end +end; + +function TEasyCellSize.GetWidth: Integer; +begin + if AutoSize then + Result := FAutoSizeWidth + else begin + Result := FWidth; + if Result < 1 then + Result := 1 + end +end; + +procedure TEasyCellSize.Assign(Source: TPersistent); +begin + if Source is TEasyCellSize then + begin + FHeight := TEasyCellSize(Source).Height; + FWidth := TEasyCellSize(Source).Width; + // OwnerListview.Groups.Rebuild; + end; +end; + +procedure TEasyCellSize.SetAutoSize(const Value: Boolean); +begin + if Value <> FAutoSize then + begin + FAutoSize := Value; + if not FAutoSize then + begin + FAutoSizeWidth := FWidth; + FAutoSizeHeight := FHeight + end; + OwnerListview.Groups.Rebuild; + end +end; + +procedure TEasyCellSize.SetSize(AWidth, AHeight: Integer); +begin + if AWidth < 0 then AWidth := 0; + if AHeight < 0 then AHeight := 0; + + if AutoSize then + begin + if (AWidth <> FWidth) or (AHeight <> FHeight) then + begin + FAutoSizeWidth := AWidth; + FAutoSizeHeight := AHeight; + end; + end else + begin + if (AWidth <> FWidth) or (AHeight <> FHeight) then + begin + FWidth := AWidth; + FHeight := AHeight; + end; + OwnerListview.Groups.Rebuild; + end +end; + +procedure TEasyCellSize.SetHeight(Value: Integer); +begin + if AutoSize then + SetSize(FAutoSizeWidth, Value) + else + SetSize(FWidth, Value); +end; + +procedure TEasyCellSize.SetWidth(Value: Integer); +begin + if AutoSize then + SetSize(Value, FAutoSizeHeight) + else + SetSize(Value, FHeight); +end; + +{ TEasyIconItemView} + +function TEasyViewIconItem.ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + Result := RectArray.IconRect; +end; + +function TEasyViewIconItem.OverlappedFocus: Boolean; +begin + Result:= True +end; + +function TEasyViewIconItem.PaintImageSize: TEasyImageSize; +begin + Result := eisLarge +end; + +function TEasyViewIconItem.PaintTextLineCount(Item: TEasyItem; + Column: TEasyColumn): Integer; +begin + if Item.Focused and OwnerListview.Focused then + Result := -1 + else + Result := 2 +end; + +procedure TEasyViewIconItem.AfterSelRectCalc(Item: TEasyItem; + Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); +begin + if OwnerListview.Selection.FullCellPaint then + InflateRect(LocalSelRect, -2, -2) +end; + +procedure TEasyViewIconItem.ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); +var + ImageW, ImageH, Left: Integer; + DrawTextFlags: TCommonDrawTextWFlags; + R: TRect; + PositionIndex, AbsIndex: Integer; + ACaption: WideString; +begin + if Assigned(Item) then + begin + if not Item.Initialized then + Item.Initialized := True; + + if Assigned(Column) then + begin + AbsIndex := Column.Index; + PositionIndex := Column.Position + end else + begin + AbsIndex := 0; + PositionIndex := 0 + end; + + if PositionIndex > -1 then + begin + FillChar(RectArray, SizeOf(RectArray), #0); + + GetImageSize(Item, Column, ImageW, ImageH, eikNormal); + + // Calcuate the Bounds of the Cell that is allowed to be drawn in + // ********** + RectArray.BoundsRect := Item.DisplayRect; + Inc(RectArray.BoundsRect.Left); + + // Calculate where the Icon is positioned + // ********** + // Center Icon horziontally and a few pixels from the top of the cell + Left := RectArray.BoundsRect.Left + ((RectWidth(RectArray.BoundsRect) - ImageW) div 2); + + RectArray.IconRect := Rect(Left, + RectArray.BoundsRect.Top + 2, + Left + ImageW, + RectArray.BoundsRect.Top + 2 + ImageH); + + // Some margin between the Icon and the Text that belongs to the Icon Rect + Inc(RectArray.IconRect.Bottom, 4); + + + // Calculate area that the Checkbox may be drawn + // ********** + if Item.CheckType <> ectNone then + begin + R := Checks.Bound[Item.Checksize]; + RectArray.CheckRect.Top := RectArray.IconRect.Bottom + 1; // This looks better than centered + RectArray.CheckRect.Left := RectArray.BoundsRect.Left + Item.CheckIndent; + RectArray.CheckRect.Bottom := RectArray.CheckRect.Top + R.Bottom; + RectArray.CheckRect.Right := RectArray.CheckRect.Left + R.Right; + end else + begin + RectArray.CheckRect.Top := RectArray.IconRect.Bottom; + RectArray.CheckRect.Left := RectArray.BoundsRect.Left; + RectArray.CheckRect.Bottom := RectArray.BoundsRect.Bottom; + RectArray.CheckRect.Right := RectArray.BoundsRect.Left; + end; + + // Calculate area that the label may be drawn + // ********** + + // The Label Rect is the remaining area between the Icon Rect and the Bottom + // of the Bounds Rect + RectArray.LabelRect := Rect(RectArray.CheckRect.Right, + RectArray.IconRect.Bottom + 1, + RectArray.BoundsRect.Right, + RectArray.BoundsRect.Bottom); + + + // Calculate the portion of the Label Rect that the current Text will use + // ********** + RectArray.TextRect := RectArray.LabelRect; + RectArray.FullTextRect := RectArray.LabelRect; + // Leave room for a small border between edge of the selection rect and text + InflateRect(RectArray.TextRect, -2, -2); + InflateRect(RectArray.FullTextRect, -2, -2); + + DrawTextFlags := [dtCalcRect, dtCalcRectAlign]; + + DrawTextFlags := DrawTextFlags + [dtCenter]; + + case PaintTextAlignment(Item, Column) of + taCenter: DrawTextFlags := DrawTextFlags + [dtCenter]; + taLeftJustify: DrawTextFlags := DrawTextFlags + [dtLeft]; + taRightJustify: DrawTextFlags := DrawTextFlags + [dtRight]; + end; + + case PaintTextVAlignment(Item, Column) of + cvaCenter: DrawTextFlags := DrawTextFlags + [dtVCenter]; + cvaTop: DrawTextFlags := DrawTextFlags + [dtTop]; + cvaBottom: DrawTextFlags := DrawTextFlags + [dtBottom]; + end; + + if Assigned(OwnerListview.ScratchCanvas) then + begin + ACaption := Item.Captions[AbsIndex]; + if ACaption = '' then + ACaption := ' '; + LoadTextFont(Item, PositionIndex, OwnerListview.ScratchCanvas, Item.Selected); + DrawTextWEx(OwnerListview.ScratchCanvas.Handle, ACaption, RectArray.FullTextRect, DrawTextFlags, -1); + DrawTextWEx(OwnerListview.ScratchCanvas.Handle, ACaption, RectArray.TextRect, DrawTextFlags, 2); + end; + + // Calculate Selection rectangle paint box + // ********** + RectArray.SelectionRect := RectArray.TextRect; + InflateRect(RectArray.SelectionRect, 2, 2); + RectArray.FullFocusSelRect := RectArray.FullTextRect; + InflateRect(RectArray.FullFocusSelRect, 2, 2); + + UnionRect(RectArray.ClickselectBoundsRect, RectArray.IconRect, RectArray.TextRect); + RectArray.DragSelectBoundsRect := RectArray.ClickselectBoundsRect; + UnionRect(RectArray.FocusChangeInvalidRect, RectArray.IconRect, RectArray.FullFocusSelRect); + + RectArray.EditRect := RectArray.FullTextRect; + end + end +end; + +procedure TEasyViewIconItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +begin + // Skip inherited +end; + +{ TEasySmallIconItemView } + +function TEasyViewSmallIconItem.CalculateDisplayRect(Item: TEasyItem; + Column: TEasyColumn): TRect; +begin + Result := Item.DisplayRect +end; + +function TEasyViewSmallIconItem.ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + Result := Rect(0, 0, 0, 0) +end; + +function TEasyViewSmallIconItem.ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + UnionRect(Result, RectArray.IconRect, RectArray.TextRect); + Result.Top := RectArray.BoundsRect.Top; + Result.Bottom := RectArray.BoundsRect.Bottom; +end; + +procedure TEasyViewSmallIconItem.ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); +var + TextSize: TSize; + SelectW, BoundsH, CheckH: Integer; + CheckType: TEasyCheckType; + R: TRect; + CheckIndent, CaptionIndent, Checksize, ImageIndex, ImageIndent, PositionIndex, AbsIndex, StateImageIndex: Integer; + ImageW, ImageH: Integer; + ACaption: WideString; +begin + if Assigned(Item) then + begin + // This is faster + if not Item.Initialized then + Item.Initialized := True; + if Assigned(Column) then + begin + AbsIndex := Column.Index; + PositionIndex := Column.Position + end else + begin + AbsIndex := 0; + PositionIndex := 0 + end; + + if PositionIndex > -1 then + begin + FillChar(RectArray, SizeOf(RectArray), #0); + + // Calcuate the Bounds of the Cell that is allowed to be drawn in + // ********** + // Report view is based on this class so take care if that possibility too. + + if not Assigned(Column) and (OwnerListview.Header.Positions.Count > 0) then + RectArray.BoundsRect := CalculateDisplayRect(Item, OwnerListview.Header.Positions[0]) + else + RectArray.BoundsRect := CalculateDisplayRect(Item, Column); + + CheckType := Item.CheckType; + Checksize := Item.Checksize; + ImageIndex := Item.ImageIndexes[AbsIndex]; + StateImageIndex := Item.StateImageIndexes[AbsIndex]; + CaptionIndent := Item.CaptionIndent; + CheckIndent := Item.CheckIndent; + ImageIndent := Item.ImageIndent; + + // Calculate the space necded for the CheckBox, if enabled + if (CheckType <> ectNone) and (AbsIndex = 0) then + begin + R := Checks.Bound[Checksize]; + BoundsH := RectHeight(RectArray.BoundsRect); + CheckH := RectHeight(R); + RectArray.CheckRect := Rect(RectArray.BoundsRect.Left + CheckIndent, + RectArray.BoundsRect.Top + (BoundsH - CheckH) div 2, + RectArray.BoundsRect.Left + CheckIndent + R.Right, + RectArray.BoundsRect.Top + CheckH + (BoundsH - CheckH) div 2) + end else + RectArray.CheckRect := Rect(RectArray.BoundsRect.Left, + RectArray.BoundsRect.Top, + RectArray.BoundsRect.Left, + RectArray.BoundsRect.Bottom); // Check Rect has a width of 0 + + // Set the rectangle of the Image if avaialable, note Bitmap is not supported + if PaintStateImage and ((StateImageIndex > -1) or (GetImageList(Column, Item, eikState) <> nil)) then + begin + GetImageSize(Item, Column, ImageW, ImageH, eikState); + RectArray.StateRect.Top := RectArray.BoundsRect.Top + (RectHeight(RectArray.BoundsRect) - ImageH) div 2; + RectArray.StateRect.Left := RectArray.CheckRect.Right + ImageIndent; + // State Images must be the same size as the main image + RectArray.StateRect.Bottom := RectArray.StateRect.Top + ImageH; + RectArray.StateRect.Right := RectArray.StateRect.Left + ImageW; + end else + RectArray.StateRect := Rect(RectArray.CheckRect.Right, + RectArray.CheckRect.Top, + RectArray.CheckRect.Right, + RectArray.CheckRect.Bottom); + + // Set the rectangle of the Image if avaialable, note Bitmap is not supported + if (ImageIndex > -1) then + begin + GetImageSize(Item, Column, ImageW, ImageH, eikNormal); + RectArray.IconRect.Top := RectArray.BoundsRect.Top + (RectHeight(RectArray.BoundsRect) - ImageH) div 2; + RectArray.IconRect.Left := RectArray.StateRect.Right + ImageIndent; + RectArray.IconRect.Bottom := RectArray.IconRect.Top + ImageH; + RectArray.IconRect.Right := RectArray.IconRect.Left + ImageW; + end else + RectArray.IconRect := Rect(RectArray.StateRect.Right, + RectArray.StateRect.Top, + RectArray.StateRect.Right, + RectArray.StateRect.Bottom); + + // Calculate where the Label is positioned + // ********** + // The Cell may be narrow enough that only the image will fit. If that is + // the case leave the LabelR a Zero sized rect + if RectArray.BoundsRect.Right - 1 > RectArray.IconRect.Right + CaptionIndent {+ (2*LABEL_MARGIN) }then + RectArray.LabelRect := Rect(RectArray.IconRect.Right + CaptionIndent {+ LABEL_MARGIN}, + RectArray.BoundsRect.Top, + RectArray.BoundsRect.Right {- 2*LABEL_MARGIN}, + RectArray.BoundsRect.Bottom); + + // Calculate Text based rectangles + // ********** + if Assigned(OwnerListview.ScratchCanvas) then + begin + LoadTextFont(Item, PositionIndex, OwnerListview.ScratchCanvas, Item.Selected); + ACaption := Item.Captions[AbsIndex]; + if ACaption = '' then + ACaption := ' '; + TextSize := TextExtentW(ACaption, OwnerListview.ScratchCanvas); + end else + begin + TextSize.cx := 0; + TextSize.cy := 0 + end; + + // Calculate Text Rectangle + // ********** + RectArray.TextRect := RectArray.LabelRect; + InflateRect(RectArray.TextRect, -2, -2); + + // Center it horz and vert to start with + // This will also clip the text rect to to size of the Label if necessary + RectArray.TextRect := CenterRectInRect(RectArray.TextRect, Rect(0, 0, TextSize.cx, TextSize.cy)); + + case PaintTextAlignment(Item, Column) of + taLeftJustify: OffsetRect(RectArray.TextRect, -(RectArray.TextRect.Left - RectArray.LabelRect.Left), 0); + taRightJustify: OffsetRect(RectArray.TextRect, (RectArray.LabelRect.Right - RectArray.TextRect.Right - 8), 0); + end; + + // Calculate Focus Text Rectangle + // ********** + RectArray.FullTextRect := RectArray.TextRect; + + // Calculate Selection Rectangle + // ********** + RectArray.SelectionRect := RectArray.TextRect; + InflateRect(RectArray.SelectionRect, 2, 2); + RectArray.FullFocusSelRect := RectArray.SelectionRect; + + // Calculate Rectangle used for Clickselecting + // ********** + UnionRect(RectArray.ClickselectBoundsRect, RectArray.IconRect, RectArray.SelectionRect); + + // Calculate Rectangle used for DragSelecting + // ********** + // During a drag selection the hit area is only a fraction of the Click bounds + RectArray.DragSelectBoundsRect := RectArray.ClickselectBoundsRect; + SelectW := Round(RectWidth(RectArray.DragSelectBoundsRect) * SELECTION_OFFSET); + InflateRect(RectArray.DragSelectBoundsRect, -SelectW, 0); + + UnionRect(RectArray.FocusChangeInvalidRect, RectArray.IconRect, RectArray.FullTextRect); + + RectArray.EditRect := RectArray.FullTextRect; + end + end +end; + +procedure TEasyViewSmallIconItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +begin + // Don't do default +end; + +function TEasyViewSmallIconItem.PaintTextAlignment(Item: TEasyItem; Column: TEasyColumn): TAlignment; +begin + if Assigned(Column) then + Result := Column.Alignment + else + Result := taLeftJustify +end; + +function TEasyViewSmallIconItem.PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; +begin + Result := 1 +end; + +function TEasyViewSmallIconItem.PaintTextVAlignment(Item: TEasyItem; Column: TEasyColumn): TCommonVAlignment; +begin + if Assigned(Column) then + Result := Column.VAlignment + else + Result := cvaCenter +end; + +{ TEasyDefaultCellSizes } + +constructor TEasyCellSizes.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FIcon := TEasyCellSizeIcon.Create(AnOwner); + FSmallIcon := TEasyCellSizeSmallIcon.Create(AnOwner); + FThumbnail := TEasyCellSizeThumbnail.Create(AnOwner); + FTile := TEasyCellSizeTile.Create(AnOwner); + FList := TEasyCellSizeList.Create(AnOwner); + FReport := TEasyCellSizeReport.Create(AnOwner); + FFilmStrip := TEasyCellSizeFilmStrip.Create(AnOwner); + FGrid := TEasyCellGrid.Create(AnOwner); +end; + +destructor TEasyCellSizes.Destroy; +begin + FreeAndNil(FIcon); + FreeAndNil(FSmallIcon); + FreeAndNil(FThumbnail); + FreeAndNil(FTile); + FreeAndNil(FList); + FreeAndNil(FReport); + FreeAndNil(FFilmStrip); + FreeAndNil(FGrid); + inherited Destroy; +end; + +{ TEasyDefaultSmallIconCellSize } + +constructor TEasyCellSizeSmallIcon.Create( + AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FWidth := 200; + FHeight := 17; + FAutoSizeHeight := 17; + FAutoSizeWidth := 200; +end; + +{ TEasyDefaultThumbnailCellSize } + +constructor TEasyCellSizeThumbnail.Create( + AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FWidth := 125; + FHeight := 143; + FAutoSizeHeight := 143; + FAutoSizeWidth := 125; +end; + +{ TEasyDefaultTileCellSize } + +constructor TEasyCellSizeTile.Create( + AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FWidth := 218; + FHeight := 58; + FAutoSizeHeight := 58; + FAutoSizeWidth := 218; +end; + +{ TEasyDefaultListCellSize } + +constructor TEasyCellSizeList.Create( + AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FWidth := 200; + FHeight := 17; + FAutoSizeHeight := 17; + FAutoSizeWidth := 200; +end; + +{ TEasyDefaultReportCellSize } + +constructor TEasyCellSizeReport.Create( + AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FWidth := 75; + FHeight := 17; + FAutoSizeHeight := 17; + FAutoSizeWidth := 75; +end; + +function TEasyViewTileItem.ExpandIconR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + Result := Rect(0, 0, 0, 0) +end; + +function TEasyViewTileItem.ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + UnionRect(Result, RectArray.IconRect, RectArray.TextRect); + Result.Top := RectArray.BoundsRect.Top + 2; + Result.Bottom := RectArray.BoundsRect.Bottom - 2; +end; + +function TEasyViewTileItem.GetImageList(Column: TEasyColumn; Item: TEasyItem; Image: TEasyImageKind): TCustomImageList; +begin + Result := inherited GetImageList(Column, Item, Image); + if not Assigned(Result) then + Result := Item.ImageList[ValidateColumnIndex(Column), eisLarge] +end; + +function TEasyViewTileItem.PaintImageSize: TEasyImageSize; +begin + Result := eisExtraLarge +end; + +function TEasyViewTileItem.PaintTextAlignment(Item: TEasyItem; + Column: TEasyColumn): TAlignment; +begin + Result := taLeftJustify +end; + +procedure TEasyViewTileItem.AfterSelRectCalc(Item: TEasyItem; + Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); +begin + InflateRect(LocalSelRect, -2, -2) +end; + +procedure TEasyViewTileItem.ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); +var + ACaption: WideString; + PositionIndex, i, YOffset, ImageW, ImageH, DetailCount: Integer; + DrawTextFlags: TCommonDrawTextWFlags; + R: TRect; + Done: Boolean; +begin + if Assigned(Item) then + begin + if not Item.Initialized then + Item.Initialized := True; + + PositionIndex := ValidateColumnIndex(Column); + + if PositionIndex > -1 then + begin + FillChar(RectArray, SizeOf(RectArray), #0); + + GetImageSize(Item, Column, ImageW, ImageH, eikNormal); + + // Get the cell size for the main caption, aligned with the top + case PaintTextAlignment(Item, Column) of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + DrawTextFlags := [dtCalcRect, dtCalcRectAlign, dtEndEllipsis, dtTop]; + + // Calcuate the Bounds of the Cell that is allowed to be drawn in + // ********** + RectArray.BoundsRect := Item.DisplayRect; + InflateRect(RectArray.BoundsRect, -Item.Border, -Item.Border); + + // Calculate where the Checkbox is positioned + // ********** + if Item.CheckType <> ectNone then + begin + R := Checks.Bound[Item.Checksize]; + RectArray.CheckRect.Left := RectArray.BoundsRect.Left + Item.CheckIndent; + RectArray.CheckRect.Top := RectArray.BoundsRect.Top + (RectHeight(RectArray.BoundsRect) - R.Bottom) div 2; + RectArray.CheckRect.Right := RectArray.CheckRect.Left + R.Right; + RectArray.CheckRect.Bottom := RectArray.CheckRect.Top + R.Bottom; + end else + SetRect(RectArray.CheckRect, RectArray.BoundsRect.Left, + RectArray.BoundsRect.Top, + RectArray.BoundsRect.Left, + RectArray.BoundsRect.Bottom); + + // Calculate where the Icon is positioned + // ********** + RectArray.IconRect := Rect(RectArray.CheckRect.Right + Item.ImageIndent, + RectArray.BoundsRect.Top, + RectArray.CheckRect.Right + Item.ImageIndent + ImageW + 4, + RectArray.BoundsRect.Bottom); + + // Calculate where the Label Rect is positioned + // ********** + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.LabelRect.Left := RectArray.IconRect.Right + Item.CaptionIndent; + InflateRect(RectArray.LabelRect, -2, 0); + + // Calculate the Text Rectangles + // ********** + + RectArray.TextRect := RectArray.LabelRect; + // Leave border for the Selection Painted rectangle around text + InflateRect(RectArray.TextRect, -2, -2); + + DetailCount := Item.DetailCount; + + // Assume that there is enough room for all the Captions to be show that the user desired + SetLength(RectArray.TextRects, DetailCount); + + for i := 0 to Length(RectArray.TextRects) - 1 do + RectArray.TextRects[i] := Rect(0, 0, 0, 0); + + if Length(RectArray.TextRects) > 0 then + begin + // Lets work on the Main Caption, it gets the full LabelR to use + RectArray.TextRects[0] := RectArray.LabelRect; + // TextRects[0] is the main caption that can fill more then one line if necessary + // if it does then details are omitted as necded + if Item.Details[0] > -1 then + ACaption := Item.Captions[Item.Details[0]] + else + ACaption := ''; + // Make the first line contain something + if ACaption = '' then + ACaption := ' '; + if Assigned(OwnerListview.ScratchCanvas) then + begin + LoadTextFont(Item, PositionIndex, OwnerListview.ScratchCanvas, Item.Selected); + DrawTextWEx(OwnerListview.ScratchCanvas.Handle, ACaption, RectArray.TextRects[0], DrawTextFlags, PaintTextLineCount(Item, Column)); + end; + if RectArray.TextRects[0].Bottom > RectArray.LabelRect.Bottom then + RectArray.TextRects[0] := Rect(0, 0, 0, 0) + else begin + // Only fill in as many detail lines that fit based on if the caption + // necded two lines or not + Done := False; + i := 1; + while not Done and (i < Length(RectArray.TextRects)) do + begin + if RectArray.TextRects[i - 1].Bottom < RectArray.LabelRect.Bottom then + begin + if Item.Details[i] > -1 then + ACaption := Item.Captions[Item.Details[i]] + else + ACaption := ''; + RectArray.TextRects[i] := RectArray.LabelRect; + RectArray.TextRects[i].Top := RectArray.TextRects[i - 1].Bottom; + if Assigned(OwnerListview.ScratchCanvas) then + begin + LoadTextFont(Item, i, OwnerListview.ScratchCanvas, Item.Selected); + // Details only get one line + DrawTextWEx(OwnerListview.ScratchCanvas.Handle, ACaption, RectArray.TextRects[i], DrawTextFlags, 1); + end; + if RectArray.TextRects[i].Bottom > RectArray.LabelRect.Bottom then + begin + RectArray.TextRects[i] := Rect(0, 0, 0, 0); + Done := True + end else + Inc(i) + end else + begin + RectArray.TextRects[i] := Rect(0, 0, 0, 0); + Done := True; + end + end; + end; + + RectArray.TextRect := Rect(0, 0, 0, 0); + + Done := False; + i := 0; + while not Done and (i < Length(RectArray.TextRects)) do + begin + if not IsRectEmpty(RectArray.TextRects[i]) then + begin + UnionRect(RectArray.TextRect, RectArray.TextRect, RectArray.TextRects[i]); + Inc(i) + end else + Done := True + end; + if Done then + SetLength(RectArray.TextRects, i); + + YOffset := 0; + if Item.VAlignment = cvaCenter then + YOffset := (RectHeight(RectArray.LabelRect)-RectHeight(RectArray.TextRect)) div 2 + else + if Item.VAlignment = cvaBottom then + YOffset := RectArray.LabelRect.Bottom - RectHeight(RectArray.TextRect); + + for i := 0 to Length(RectArray.TextRects) - 1 do + begin + if Item.VAlignment = cvaCenter then + OffsetRect(RectArray.TextRects[i], 0, YOffset) + else + if Item.VAlignment = cvaBottom then + OffsetRect(RectArray.TextRects[i], 0, YOffset); + end; + + if Item.VAlignment = cvaCenter then + OffsetRect(RectArray.TextRect, 0, YOffset) + else + if Item.VAlignment = cvaBottom then + OffsetRect(RectArray.TextRect, 0, YOffset); + end; + + + RectArray.FullTextRect := RectArray.TextRect; + RectArray.SelectionRect := RectArray.TextRect; + InflateRect(RectArray.SelectionRect, 2, 2); + RectArray.FullFocusSelRect := RectArray.SelectionRect; + + RectArray.ClickselectBoundsRect := RectArray.IconRect; + RectArray.ClickselectBoundsRect.Right := RectArray.TextRect.Right; + + RectArray.DragSelectBoundsRect := RectArray.TextRect; + RectArray.DragSelectBoundsRect.Right := RectArray.DragSelectBoundsRect.Right - Round(RectWidth(RectArray.DragSelectBoundsRect)*0.20); + + UnionRect(RectArray.FocusChangeInvalidRect, RectArray.IconRect, RectArray.FullTextRect); + + RectArray.EditRect := RectArray.FullTextRect; + end + end +end; + + +procedure TEasyViewTileItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +begin + +end; + +procedure TEasyViewTileItem.PaintText(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; RectArray: TEasyRectArrayObject; ACanvas: TCanvas; LinesToDraw: Integer); +// +// Need to handle this paint directly +// +var + DrawTextFlags: TCommonDrawTextWFlags; + i: Integer; +begin + DrawTextFlags := [dtEndEllipsis, dtTop]; + + case PaintTextAlignment(Item, Column) of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + if Length(RectArray.TextRects) > 0 then + begin + if Item.Details[0] > -1 then + begin + LoadTextFont(Item, 0, ACanvas, Item.Selected); + DrawTextWEx(ACanvas.Handle, Item.Captions[Item.Details[0]], RectArray.TextRects[0], DrawTextFlags, PaintTextLineCount(Item, Column)); + end; + for i := 1 to Length(RectArray.TextRects) - 1 do + begin + if Item.Details[i] > -1 then + begin + LoadTextFont(Item, i, ACanvas, Item.Selected); + DrawTextWEx(ACanvas.Handle, Item.Captions[Item.Details[i]], RectArray.TextRects[i], DrawTextFlags, 1); + end + end + end +end; + +function TEasyViewThumbnailItem.ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + Result := inherited ExpandTextR(Item, RectArray, SelectType); + Result.Top := RectArray.IconRect.Bottom +end; + +function TEasyViewThumbnailItem.GetImageList(Column: TEasyColumn; Item: TEasyItem; Image: TEasyImageKind): TCustomImageList; +begin + Result := inherited GetImageList(Column, Item, Image); + if not Assigned(Result) then + Result := Item.ImageList[ValidateColumnIndex(Column), eisLarge] +end; + +{ TEasyThumbnailItemView} + +function TEasyViewThumbnailItem.OverlappedFocus: Boolean; +begin + Result := True +end; + +function TEasyViewThumbnailItem.PaintImageSize: TEasyImageSize; +begin + Result := eisExtraLarge +end; + +function TEasyViewThumbnailItem.SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; +var + R: TRect; + RectArray: TEasyRectArrayObject; + SelectMargin: Integer; +begin + Result := False; + if Item.Enabled then + begin + ItemRectArray(Item, nil, OwnerListview.ScratchCanvas,'', RectArray); + if SelectType = eshtClickselect then + Result := IntersectRect(R, SelectViewportRect, ExpandTextR(Item, RectArray, SelectType)) or + IntersectRect(R, SelectViewportRect, ExpandIconR(Item, RectArray, SelectType)) + else begin + R := ExpandIconR(Item, RectArray, SelectType); + SelectMargin := Round( RectWidth(R) * 0.10); + InflateRect(R, -SelectMargin, -SelectMargin); + Result := IntersectRect(R, SelectViewportRect, R) + end + end +end; + +function TEasyViewThumbnailItem.SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; +var + RectArray: TEasyRectArrayObject; + R: TRect; + SelectMargin: Integer; +begin + Result := False; + if Item.Enabled then + begin + ItemRectArray(Item, nil, OwnerListview.ScratchCanvas, '', RectArray); + if SelectType = eshtClickselect then + Result := Windows.PtInRect(ExpandTextR(Item, RectArray, SelectType), ViewportPoint) or + Windows.PtInRect(ExpandIconR(Item, RectArray, SelectType), ViewportPoint) + else + begin + R := ExpandIconR(Item, RectArray, SelectType); + SelectMargin := Round( RectWidth(R) * 0.10); + InflateRect(R, -SelectMargin, -SelectMargin); + Result := Windows.PtInRect(R, ViewportPoint) + end + end +end; + +procedure TEasyViewThumbnailItem.AfterSelRectCalc(Item: TEasyItem; + Column: TEasyColumn; const Caption: WideString; var LocalSelRect: TRect); +begin + InflateRect(LocalSelRect, -2, -2) +end; + +procedure TEasyViewThumbnailItem.ItemRectArray(Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; const Caption: WideString; var RectArray: TEasyRectArrayObject); +var + DrawTextFlags: TCommonDrawTextWFlags; + Canvas: TControlCanvas; + R: TRect; + PositionIndex, AbsIndex: Integer; + Metrics: TTextMetric; + ACaption: WideString; +begin + if Assigned(Item) then + begin + if not Item.Initialized then + Item.Initialized := True; + + if Assigned(Column) then + begin + AbsIndex := Column.Index; + PositionIndex := Column.Position + end else + begin + AbsIndex := 0; + PositionIndex := 0 + end; + + if PositionIndex > -1 then + begin + FillChar(RectArray, SizeOf(RectArray), #0); + + Canvas := TControlCanvas.Create; + try + Canvas.Control := OwnerListview; + Canvas.Lock; + + // Calcuate the Bounds of the Cell that is allowed to be drawn in + // ********** + RectArray.BoundsRect := Item.DisplayRect; + InflateRect(RectArray.BoundsRect, -Item.Border, -Item.Border); + + // Calcuate the Bounds of the Cell that is allowed to be drawn in + // ********** + RectArray.IconRect := RectArray.BoundsRect; + if not OwnerListview.PaintInfoItem.HideCaption then + begin + GetTextMetrics(Canvas.Handle, Metrics); + RectArray.IconRect.Bottom := RectArray.IconRect.Bottom - Metrics.tmHeight * 2 + end else + if Item.CheckType <> ectNone then + RectArray.IconRect.Bottom := RectArray.IconRect.Bottom - (RectHeight(Checks.Bound[Item.Checksize]) + 2); + + // Calculate area that the Checkbox may be drawn + // ********** + if Item.CheckType <> ectNone then + begin + R := Checks.Bound[Item.Checksize]; + RectArray.CheckRect.Top := RectArray.IconRect.Bottom + 1; // Looks best here not centered + RectArray.CheckRect.Left := RectArray.BoundsRect.Left + Item.CheckIndent; + RectArray.CheckRect.Bottom := RectArray.CheckRect.Top + R.Bottom; + RectArray.CheckRect.Right := RectArray.CheckRect.Left + R.Right; + end else + begin + RectArray.CheckRect.Top := RectArray.IconRect.Bottom; + RectArray.CheckRect.Left := RectArray.BoundsRect.Left; + RectArray.CheckRect.Bottom := RectArray.BoundsRect.Bottom; + RectArray.CheckRect.Right := RectArray.CheckRect.Left; + end; + + // Calcuate the Bounds of the Cell that is allowed to be drawn in + // ********** + if not OwnerListview.PaintInfoItem.HideCaption then + begin + RectArray.LabelRect.Left := RectArray.CheckRect.Right + Item.CaptionIndent; + RectArray.LabelRect.Top := RectArray.IconRect.Bottom + 1; + RectArray.LabelRect.Right := RectArray.BoundsRect.Right; + RectArray.LabelRect.Bottom := RectArray.BoundsRect.Bottom; + + // Calcuate the Text rectangle based on the current text + // ********** + RectArray.TextRect := RectArray.LabelRect; + RectArray.FullTextRect := RectArray.LabelRect; + // Leave room for a small border between edge of the selection rect and text + InflateRect(RectArray.TextRect, -2, -2); + InflateRect(RectArray.FullTextRect, -2, -2); + + DrawTextFlags := [dtCalcRect, dtCalcRectAlign]; + + case PaintTextAlignment(Item, Column) of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + case PaintTextVAlignment(Item, Column) of + cvaTop: Include(DrawTextFlags, dtTop); + cvaBottom: Include(DrawTextFlags, dtBottom); + cvaCenter: Include(DrawTextFlags, dtCenter); + end; + + LoadTextFont(Item, PositionIndex, Canvas, Item.Selected); + ACaption := Item.Captions[AbsIndex]; + DrawTextWEx(Canvas.Handle, ACaption, RectArray.FullTextRect, DrawTextFlags, -1); + DrawTextWEx(Canvas.Handle, ACaption, RectArray.TextRect, DrawTextFlags, 2); + + // Calculate Selection rectangle paint box + // ********** + RectArray.SelectionRect := RectArray.TextRect; + InflateRect(RectArray.SelectionRect, 2, 2); + RectArray.FullFocusSelRect := RectArray.FullTextRect; + InflateRect(RectArray.FullFocusSelRect, 2, 2); + UnionRect(RectArray.FocusChangeInvalidRect, RectArray.IconRect, RectArray.FullFocusSelRect); + if Item.Focused then + UnionRect(RectArray.ClickselectBoundsRect, RectArray.IconRect, RectArray.FullFocusSelRect) + else + UnionRect(RectArray.ClickselectBoundsRect, RectArray.IconRect, RectArray.SelectionRect); + RectArray.ClickselectBoundsRect := RectArray.ClickselectBoundsRect; + RectArray.DragSelectBoundsRect := RectArray.TextRect; + RectArray.EditRect := RectArray.FullTextRect; + end else + begin + RectArray.SelectionRect := RectArray.IconRect; + RectArray.FullFocusSelRect := RectArray.IconRect; + RectArray.FocusChangeInvalidRect := RectArray.IconRect; + RectArray.ClickselectBoundsRect := RectArray.IconRect; + RectArray.DragSelectBoundsRect := RectArray.IconRect; + RectArray.EditRect := Rect(0, 0, 0, 0); + RectArray.LabelRect := Rect(0, 0, 0, 0); + RectArray.TextRect := Rect(0, 0, 0, 0); + RectArray.FullTextRect := Rect(0, 0, 0, 0); + end; + finally + Canvas.UnLock; + Canvas.Free; + end; + end + end +end; + +function TEasyViewThumbnailItem.PaintTextLineCount(Item: TEasyItem; Column: TEasyColumn): Integer; +begin + if Item.Focused and OwnerListview.Focused then + Result := -1 + else + Result := 2 +end; + +function TEasyViewThumbnailItem.PaintTextVAlignment(Item: TEasyItem; Column: TEasyColumn): TCommonVAlignment; +begin + Result := cvaCenter +end; + +procedure TEasyViewThumbnailItem.PaintAfter(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject); +begin + if OwnerListview.PaintInfoItem.ShowBorder then + begin + // Paint the Frame around the Thumbnail + if (Item.Selected or Item.Hilighted) and not OwnerListview.Selection.Gradient then + begin + if OwnerListview.Focused or Item.OwnerListview.Selection.PopupMode or Item.Hilighted then + ACanvas.Brush.Color := OwnerListview.Selection.Color + else + ACanvas.Brush.Color := OwnerListview.Selection.InactiveColor; + ACanvas.FrameRect(RectArray.IconRect); + InflateRect(RectArray.IconRect, -1, -1); + ACanvas.FrameRect(RectArray.IconRect); + InflateRect(RectArray.IconRect, -1, -1); + ACanvas.FrameRect(RectArray.IconRect); + end else + begin + ACanvas.Brush.Color := Item.BorderColor; + ACanvas.FrameRect(RectArray.IconRect); + end + end +end; + +procedure TEasyViewThumbnailItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: WideString; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); +begin + // Skip inherited +end; + +{ TColumnView } + +function TEasyViewColumn.EditAreaHitPt(Column: TEasyColumn; + ViewportPoint: TPoint): Boolean; +begin + Result := False +end; + +function TEasyViewColumn.GetImageList(Column: TEasyColumn): TCustomImageList; +begin + Result := Column.OwnerHeader.Images +end; + +function TEasyViewColumn.ItemRect(Column: TEasyColumn; RectType: TEasyCellRectType): TRect; +var + RectArray: TEasyRectArrayObject; +begin + Result := Rect(0, 0, 0, 0); + if IsRectEmpty(Result) then + begin + ItemRectArray(Column, RectArray); + case RectType of + ertBounds: Result := RectArray.BoundsRect; + ertIcon: Result := RectArray.IconRect; + ertLabel: Result := RectArray.LabelRect; + ertClickselectBounds: Result := RectArray.ClickselectBoundsRect; + ertDragSelectBounds: Result := RectArray.DragSelectBoundsRect; + ertText: Result := RectArray.TextRect; + ertFullText: Result := RectArray.FullTextRect; + end; + end; +end; + +function TEasyViewColumn.PaintImageSize(Column: TEasyColumn; + HeaderType: TEasyHeaderType): TEasyImageSize; +begin + Result := eisSmall +end; + +function TEasyViewColumn.SelectionHit(Column: TEasyColumn; + SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; +begin + Result := False +end; + +function TEasyViewColumn.SelectionHitPt(Column: TEasyColumn; + ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; +begin + Result := False +end; + +procedure TEasyViewColumn.CalculateTextRect(Column: TEasyColumn; Canvas: TControlCanvas; + var TextR: TRect); +// Fits the Text in the PaintInfo.Caption.Text field into the TextR based +// on the values in the PaintInfo record. If Canvas is nil then a temporary +// canvas is created to fit the text based on the Font in the PaintInfo +var + DrawTextFlags: TCommonDrawTextWFlags; + LocalCanvas: TControlCanvas; +begin + case Column.Alignment of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + case Column.VAlignment of + cvaTop: Include(DrawTextFlags, dtTop); + cvaBottom: Include(DrawTextFlags, dtBottom); + cvaCenter: Include(DrawTextFlags, dtVCenter); + end; + + if not Assigned(Canvas) then + begin + LocalCanvas := TControlCanvas.Create; + LocalCanvas.Control := OwnerListview + end else + LocalCanvas := Canvas; + + try + LoadTextFont(Column, LocalCanvas); + DrawTextFlags := DrawTextFlags + [dtCalcRectAdjR, dtCalcRect, dtCalcRectAlign]; + DrawTextWEx(LocalCanvas.Handle, Column.Caption, TextR, DrawTextFlags, 1); + finally + if not Assigned(Canvas) then + LocalCanvas.Free + end; +end; + +procedure TEasyViewColumn.GetImageSize(Column: TEasyColumn; var ImageW, ImageH: Integer); +var + Images: TCustomImageList; + IsCustom: Boolean; +begin + ImageW := 0; + ImageH := 0; + Column.ImageDrawIsCustom(Column, IsCustom); + if IsCustom then + Column.ImageDrawGetSize(Column, ImageW, ImageH) + else begin + Images := GetImageList(Column); + if (Column.ImageIndexes[0] > -1) and Assigned(Images) then + begin + ImageW := Images.Width; + ImageH := Images.Height + end + end +end; + +procedure TEasyViewColumn.ItemRectArray(Column: TEasyColumn; var RectArray: TEasyRectArrayObject); +var + DrawTextFlags: TCommonDrawTextWFlags; + i, CaptionLines: integer; + R: TRect; + ImageW, ImageH: Integer; + Pt: TPoint; +begin + Pt.x := 0; + Pt.y := 0; + if Assigned(Column) then + begin + if not Column.Initialized then + Column.Initialized := True; + + + FillChar(RectArray, SizeOf(RectArray), #0); + + GetImageSize(Column, ImageW, ImageH); + + RectArray.BoundsRect := Column.DisplayRect; + InflateRect(RectArray.BoundsRect, -2, -2); + + // Make the CheckRect 0 width to initialize it + RectArray.CheckRect := RectArray.BoundsRect; + RectArray.CheckRect.Right := RectArray.CheckRect.Left; + + // Make the DropDownArrow 0 width to initialize it to the right side + RectArray.DropDownArrow := RectArray.BoundsRect; + RectArray.DropDownArrow.Left := RectArray.DropDownArrow.Right; + + // First calculate where the CheckRect goes + if Column.CheckType <> ectNone then + begin + R := Checks.Bound[Column.Checksize]; + RectArray.CheckRect.Left := RectArray.CheckRect.Left + Column.CheckIndent; + RectArray.CheckRect.Top := RectArray.CheckRect.Top + (RectHeight(RectArray.BoundsRect) - RectHeight(R)) div 2; + RectArray.CheckRect.Right := RectArray.CheckRect.Left + RectWidth(R); + RectArray.CheckRect.Bottom := RectArray.CheckRect.Top + RectHeight(R); + end; + + // Initialize IconRect to 0 width + RectArray.IconRect := RectArray.BoundsRect; + RectArray.IconRect.Left := RectArray.CheckRect.Right; + RectArray.IconRect.Right := RectArray.CheckRect.Right; + + // Next comes the State Image if enabled + if Column.ImageIndex > -1 then + begin + case Column.ImagePosition of + ehpLeft: + begin + RectArray.IconRect.Left := RectArray.CheckRect.Right + Column.ImageIndent; + RectArray.IconRect.Right := RectArray.IconRect.Left + ImageW; + RectArray.IconRect.Top := RectArray.BoundsRect.Top + (RectHeight(RectArray.BoundsRect) - ImageH) div 2; + RectArray.IconRect.Bottom := RectArray.IconRect.Top + ImageH; + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.LabelRect.Left := RectArray.IconRect.Right + Column.CaptionIndent; + end; + ehpTop: + begin + RectArray.IconRect.Top := RectArray.BoundsRect.Top + Column.ImageIndent; + RectArray.IconRect.Bottom := RectArray.IconRect.Top + ImageH; + RectArray.IconRect.Left := RectArray.BoundsRect.Left; + RectArray.IconRect.Right := RectArray.BoundsRect.Right; + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.LabelRect.Left := RectArray.CheckRect.Right; + RectArray.LabelRect.Top := RectArray.IconRect.Bottom + Column.CaptionIndent; + end; + ehpRight: + begin + RectArray.IconRect.Right := RectArray.BoundsRect.Right - Column.ImageIndent; + RectArray.IconRect.Left := RectArray.IconRect.Right - ImageW; + RectArray.IconRect.Top := RectArray.BoundsRect.Top + (RectHeight(RectArray.BoundsRect) - ImageH) div 2; + RectArray.IconRect.Bottom := RectArray.IconRect.Top + ImageH; + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.LabelRect.Left := RectArray.CheckRect.Right; + RectArray.LabelRect.Right := RectArray.IconRect.Left - Column.CaptionIndent; + end; + ehpBottom: + begin + RectArray.IconRect.Bottom := RectArray.BoundsRect.Bottom - Column.ImageIndent; + RectArray.IconRect.Top := RectArray.IconRect.Bottom - ImageH; + RectArray.IconRect.Left := RectArray.BoundsRect.Left; + RectArray.IconRect.Right := RectArray.BoundsRect.Right; + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.LabelRect.Left := RectArray.CheckRect.Right; + RectArray.LabelRect.Bottom := RectArray.IconRect.Top - Column.CaptionIndent; + end; + end + end else + begin + RectArray.LabelRect := RectArray.BoundsRect; + RectArray.LabelRect.Left := RectArray.IconRect.Right; + end; + + if Column.SortDirection <> esdNone then + begin + case Column.SortGlyphAlign of + esgaLeft: + begin + RectArray.SortRect := RectArray.BoundsRect; + RectArray.SortRect.Left := RectArray.LabelRect.Left; + RectArray.LabelRect.Left := RectArray.LabelRect.Left + Column.SortGlyphIndent + OwnerListview.GlobalImages.ColumnSortUp.Width; + RectArray.SortRect.Right := RectArray.SortRect.Left + OwnerListview.GlobalImages.ColumnSortUp.Width; + RectArray.SortRect.Top := RectArray.SortRect.Top + (RectHeight(RectArray.SortRect) - OwnerListview.GlobalImages.ColumnSortUp.Height) div 2; + RectArray.SortRect.Bottom := RectArray.SortRect.Top + OwnerListview.GlobalImages.ColumnSortUp.Height + end; + esgaRight: + begin + RectArray.SortRect := RectArray.BoundsRect; + RectArray.SortRect.Right := RectArray.LabelRect.Right; + RectArray.LabelRect.Right := RectArray.LabelRect.Right - Column.SortGlyphIndent - OwnerListview.GlobalImages.ColumnSortUp.Width; + RectArray.SortRect.Left := RectArray.SortRect.Right - OwnerListview.GlobalImages.ColumnSortUp.Width; + RectArray.SortRect.Top := RectArray.SortRect.Top + (RectHeight(RectArray.SortRect) - OwnerListview.GlobalImages.ColumnSortUp.Height) div 2; + RectArray.SortRect.Bottom := RectArray.SortRect.Top + OwnerListview.GlobalImages.ColumnSortUp.Height + end + else + // no Sort Glyph + RectArray.SortRect := RectArray.LabelRect; + RectArray.SortRect.Right := RectArray.SortRect.Left; + end + end; + + if Column.DropDownButton.Visible then + begin + if RectWidth(RectArray.LabelRect) > RectHeight(RectArray.BoundsRect) + 10 then + begin + if Column.DropDownButton.AlwaysShow or Column.HotTracking[Pt] then + begin + RectArray.LabelRect.Right := RectArray.LabelRect.Right - RectHeight(RectArray.BoundsRect); + RectArray.DropDownArrow.Left := RectArray.DropDownArrow.Right - RectHeight(RectArray.BoundsRect) + end + end + end; + + // See if there is enough room for the label + if IsRectProper(RectArray.LabelRect) then + begin + + RectArray.TextRect := RectArray.LabelRect; + + case Column.Alignment of + taLeftJustify: + begin + RectArray.TextRect.Left := RectArray.TextRect.Left + Column.CaptionIndent; + RectArray.TextRect.Right := RectArray.TextRect.Right - 4; + end; + taRightJustify: + begin + RectArray.TextRect.Right := RectArray.TextRect.Right - Column.CaptionIndent; + RectArray.TextRect.Left := RectArray.TextRect.Left + 4; + end; + end; + + // Leave room for a small border between edge of the selection rect and text + InflateRect(RectArray.TextRect, -2, -2); + + DrawTextFlags := [dtCalcRect, dtCalcRectAlign]; + + case Column.Alignment of + taCenter: DrawTextFlags := DrawTextFlags + [dtCenter]; + taLeftJustify: DrawTextFlags := DrawTextFlags + [dtLeft]; + taRightJustify: DrawTextFlags := DrawTextFlags + [dtRight]; + end; + + // Vertical Alignment has no meaning in mulitiple line output need to calculate + // the entire text block then vert align it + DrawTextFlags := DrawTextFlags + [dtTop]; + + CaptionLines := OwnerListview.PaintInfoColumn.CaptionLines; + + // Make enough room for the Details and the Caption Rect + SetLength(RectArray.TextRects, CaptionLines + 1); + + // Get the Caption Rect + RectArray.TextRects[0] := RectArray.TextRect; + LoadTextFont(Column, OwnerListview.ScratchCanvas); + DrawTextWEx(OwnerListview.ScratchCanvas.Handle, Column.Caption, RectArray.TextRects[0], DrawTextFlags, CaptionLines); + + RectArray.TextRect := Rect(0, 0, 0, 0); + for i := 0 to Length(RectArray.TextRects) - 1 do + UnionRect(RectArray.TextRect, RectArray.TextRect, RectArray.TextRects[i]); + + case Column.VAlignment of + cvaCenter: OffsetRect(RectArray.TextRect, 0, (RectHeight(RectArray.LabelRect) - RectHeight(RectArray.TextRect)) div 2); + cvaBottom: OffsetRect(RectArray.TextRect, 0, (RectHeight(RectArray.LabelRect) - RectHeight(RectArray.TextRect))); + end; + + for i := 0 to Length(RectArray.TextRects) - 1 do + begin + case Column.VAlignment of + cvaCenter: OffsetRect(RectArray.TextRects[i], 0, ((RectHeight(RectArray.LabelRect) - 4) - RectHeight(RectArray.TextRect)) div 2); + cvaBottom: OffsetRect(RectArray.TextRects[i], 0, ((RectHeight(RectArray.LabelRect) - 4) - RectHeight(RectArray.TextRect))); + end; + end; + end else + RectArray.TextRect := Rect(0, 0, 0, 0); + + // Put the Sort Arrow right next to the Text + OffsetRect(RectArray.SortRect, RectArray.TextRect.Right - RectArray.SortRect.Left, 0); + + RectArray.ClickselectBoundsRect := RectArray.BoundsRect; + RectArray.DragSelectBoundsRect := RectArray.BoundsRect; + RectArray.SelectionRect := RectArray.BoundsRect; + RectArray.FullTextRect := RectArray.BoundsRect; + RectArray.FullTextRect := RectArray.BoundsRect; + RectArray.FocusChangeInvalidRect := RectArray.BoundsRect; + RectArray.EditRect := RectArray.BoundsRect; + + InflateRect(RectArray.BoundsRect, 2, 2); + end +end; + +procedure TEasyViewColumn.LoadTextFont(Column: TEasyColumn; ACanvas: TCanvas); +begin + ACanvas.Font.Assign(OwnerListview.Header.Font); + if Column.Bold then + ACanvas.Font.Style := ACanvas.Font.Style +[fsBold]; +end; + +procedure TEasyViewColumn.Paint(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType); + + procedure AlphaBlendColumn(AColor: TColor; R: TRect); + var + Bitmap: TBitmap; + begin + Bitmap := TBitmap.Create; + try + Bitmap.PixelFormat := pf32Bit; + Bitmap.Width := RectWidth(R); + Bitmap.Height := RectHeight(R); + if (Bitmap.Width > 0) and (Bitmap.Height > 0) then + begin + BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, ACanvas.Handle, R.Left, R.Top, srcCopy); + MPCommonUtilities.AlphaBlend(0, Bitmap.Canvas.Handle, Bitmap.Canvas.ClipRect, Point(0, 0), + cbmConstantAlphaAndColor, 128, ColorToRGB(AColor)); + BitBlt(ACanvas.Handle, R.Left, R.Top, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, srcCopy); + end + finally + Bitmap.Free + end + end; + +var + RectArray: TEasyRectArrayObject; +begin + ItemRectArray(Column, RectArray); + + with RectArray.BoundsRect do + IntersectClipRect(ACanvas.Handle, Left, Top, Right, Bottom); + + // First allow decendents a crack at the painting + PaintBefore(Column, ACanvas, HeaderType, RectArray); + + // Paint the Background button + PaintBkGnd(Column, ACanvas, HeaderType, RectArray); + + // Paint the Selection Rectangle + // ************************* +// PaintSelectionRect(Column, RectArray, ACanvas); + + // Next Paint the Icon or Bitmap Image + // ************************* + PaintImage(Column, ACanvas, HeaderType, RectArray, PaintImageSize(Column, HeaderType)); + + // Now lets paint the Text + // ************************* + // If focused then show as many lines as necessary + // Decendents should override PaintText to change the number of lines + // as necessary + PaintText(Column, ACanvas, HeaderType, RectArray, OwnerListview.PaintInfoColumn.CaptionLines); + + PaintSortGlyph(Column, ACanvas, HeaderType, RectArray); + + // Now lets paint Focus Rectangle + // ************************* + PaintFocusRect(Column, ACanvas, HeaderType, RectArray); + + // Now Paint the Checkbox if applicable + PaintCheckBox(Column, ACanvas, HeaderType, RectArray); + + PaintDropGlyph(Column, ACanvas, HeaderType, RectArray); + + PaintDropDownArrow(Column, ACanvas, HeaderType, RectArray); + + // Now give decentant a chance to paint anything + PaintAfter(Column, ACanvas, HeaderType, RectArray); +end; + +procedure TEasyViewColumn.PaintAfter(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +begin + +end; + +procedure TEasyViewColumn.PaintBefore(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +begin + +end; + +procedure TEasyViewColumn.PaintBkGnd(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); + + procedure SpiegelnHorizontal(Bitmap:TBitmap); + type + TRGBArray = array[0..0] OF TRGBQuad; + pRGBArray = ^TRGBArray; + var + i, j, w : Integer; + RowIn : pRGBArray; + RowOut: pRGBArray; + begin + w := Bitmap.Width*SizeOf(TRGBQuad); + GetMem(RowIn, w); + for j := 0 to Bitmap.Height-1 do + begin + Move(Bitmap.Scanline[j]^, RowIn^,w); + RowOut := Bitmap.Scanline[j]; + for i := 0 to Bitmap.Width-1 do + RowOut[i] := RowIn[Bitmap.Width-1-i]; + end; + Bitmap.Assign(Bitmap); + Freemem(RowIn); + end; + +var + NormalButtonFlags, NormalButtonStyle, PressedButtonStyle, PressedButtonFlags, + RaisedButtonStyle, RaisedButtonFlags: LongWord; + R: TRect; + Pt: TPoint; + {$IFDEF USETHEMES} + PartID, + StateID: LongWord; + Bits: TBitmap; + {$ENDIF} +begin + Pt.x := 0; + Pt.y := 0; + {$IFDEF USETHEMES} + if OwnerListview.DrawWithThemes then + begin + PartID := HP_HEADERITEM; + if Column.Clicking then + StateID := HIS_PRESSED + else + if Column.HotTracking[Pt] then + StateID := HIS_HOT + else + StateID := HIS_NORMAL; + + if HeaderType = ehtFooter then + begin + Bits := TBitmap.Create; + try + Bits.Width := RectWidth(Column.DisplayRect); + Bits.Height := RectHeight(Column.DisplayRect); + Bits.PixelFormat := pf32Bit; + DrawThemeBackground(OwnerListview.Themes.HeaderTheme, Bits.Canvas.Handle, PartID, StateID, Rect(0, 0, Bits.Width, Bits.Height), nil); + SpiegelnHorizontal(Bits); + BitBlt(ACanvas.Handle, Column.DisplayRect.Left, Column.DisplayRect.Top, Bits.Width, Bits.Height, Bits.Canvas.Handle, 0, 0, SRCCOPY); + finally + Bits.Free + end; + end else + begin + R := Column.DisplayRect; + // The divider is drawn by this as well and if shorted the divider is before the button + // if Column.HotTracking[Pt] and Column.DropDownButton.Visible and (RectWidth(RectArray.DropDownArrow) > 0) then + // R.Right := RectArray.DropDownArrow.Left; + DrawThemeBackground(OwnerListview.Themes.HeaderTheme, ACanvas.Handle, PartID, StateID, R, nil); + end; + Exit; + end; + {$ENDIF USETHEMES} + +{ if Column.Selected then + begin + if OwnerListview.Focused then + ACanvas.Brush.Color := Column.Selection.Color + else + ACanvas.Brush.Color := Column.Selection.InactiveColor + end else + if Column.HotTrack and Column.Hilighted then + ACanvas.Brush.Color := PaintInfo.HotTrack.Color + else } + ACanvas.Brush.Color := Column.Color; + + ACanvas.FillRect(Column.DisplayRect); + + RaisedButtonStyle := 0; + RaisedButtonFlags := 0; + + case Column.Style of + ehbsThick: + begin + NormalButtonStyle := BDR_RAISEDINNER or BDR_RAISEDOUTER; + NormalButtonFlags := BF_LEFT or BF_TOP or BF_BOTTOM or BF_RIGHT or BF_SOFT or BF_ADJUST; + PressedButtonStyle := BDR_RAISEDINNER or BDR_RAISEDOUTER; + PressedButtonFlags := NormalButtonFlags or BF_RIGHT or BF_FLAT or BF_ADJUST; + end; + ehbsFlat: + begin + NormalButtonStyle := BDR_RAISEDINNER; + NormalButtonFlags := BF_LEFT or BF_TOP or BF_BOTTOM or BF_RIGHT or BF_ADJUST; + PressedButtonStyle := BDR_SUNKENOUTER; + PressedButtonFlags := BF_RECT or BF_ADJUST; + end; + else + begin + NormalButtonStyle := BDR_RAISEDINNER; + NormalButtonFlags := BF_RECT or BF_SOFT or BF_ADJUST; + PressedButtonStyle := BDR_SUNKENOUTER; + PressedButtonFlags := BF_RECT or BF_ADJUST; + RaisedButtonStyle := BDR_RAISEDINNER; + RaisedButtonFlags := BF_LEFT or BF_TOP or BF_BOTTOM or BF_RIGHT or BF_ADJUST; + end; + end; + + R := Column.DisplayRect; + if Column.Clicking then + DrawEdge(ACanvas.Handle, R, PressedButtonStyle, PressedButtonFlags) + else begin + if (Column.Hilighted) and (Column.Style = ehbsPlate) then + DrawEdge(ACanvas.Handle, R, RaisedButtonStyle, RaisedButtonFlags) + else + DrawEdge(ACanvas.Handle, R, NormalButtonStyle, NormalButtonFlags) + end +end; + +procedure TEasyViewColumn.PaintCheckBox(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +begin + if not ((Column.CheckType = ectNone) or (Column.CheckType = ettNoneWithSpace)) then + PaintCheckboxCore(Column.CheckType, // TEasyCheckType + OwnerListview, // TCustomEasyListview + ACanvas, // TCanvas + RectArray.CheckRect, // TRect + Column.Enabled, // IsEnabled + Column.Checked, // IsChecked + False, // IsHot + Column.CheckFlat, // IsFlat + Column.CheckHovering, // IsHovering + Column.CheckPending, // IsPending + Column, + Column.Checksize); +end; + +procedure TEasyViewColumn.PaintDropDownArrow(Column: TEasyColumn; ACanvas: TCanvas; HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +var + CtlState, CtlType: Longword; + R: TRect; +begin + if Column.DropDownButton.Visible and (RectWidth(RectArray.DropDownArrow) > 0) then + begin + R := RectArray.DropDownArrow; + {$IFDEF USETHEMES} + if OwnerListview.DrawWithThemes then + begin + { Draw the DropDown Button } + CtlType := CP_DROPDOWNBUTTON; + if Column.DropDownButton.Enabled then + begin + CtlState := CBXS_NORMAL; + if cdbsDown in Column.DropDownButton.State then + CtlState := CBXS_PRESSED + else + if cdbsHovering in Column.DropDownButton.State then + CtlState := CBXS_HOT; + end else + CtlState := CBXS_DISABLED; + DrawThemeBackground(OwnerListview.Themes.ComboBoxTheme, ACanvas.Handle, CtlType, CtlState, R, nil) + end else + {$ENDIF USETHEMES} + begin + InflateRect(R, -1, -1); // Looks better + { Draw the DropDown Button } + CtlType := DFC_SCROLL; + CtlState := DFCS_SCROLLCOMBOBOX or DFCS_FLAT; + + if Column.DropDownButton.Enabled then + begin + if cdbsHovering in Column.DropDownButton.State then + CtlState := CtlState or DFCS_HOT; + if cdbsDown in Column.DropDownButton.State then + CtlState := CtlState or DFCS_PUSHED; + end else + CtlState := CtlState or DFCS_INACTIVE; + + DrawFrameControl(ACanvas.Handle, R, CtlType, CtlState); + end + end +end; + +procedure TEasyViewColumn.PaintDropGlyph(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +var + R: TRect; +begin + if esosDropTarget in Column.State then + begin + ACanvas.Brush.Color := clblue; + R := Column.DisplayRect; + R.Left := R.Right - 2; + ACanvas.FillRect(R); + end +end; + +procedure TEasyViewColumn.PaintFocusRect(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +begin + +end; + +procedure TEasyViewColumn.PaintImage(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject; + ImageSize: TEasyImageSize); +// +// Paints the Icon/Bitmap to the Column +// +var + fStyle: Integer; + Images: TCustomImageList; + IsCustom: Boolean; +begin + Column.ImageDrawIsCustom(Column, IsCustom); + if IsCustom then + Column.ImageDraw(Column, ACanvas, RectArray, AlphaBlender) + else begin + Images := GetImageList(Column); + // Draw the image in the ImageList if available + if Assigned(Column.OwnerHeader.Images) and (Column.ImageIndex > -1) then + begin + fStyle := ILD_TRANSPARENT; + if Column.ImageOverlayIndex > -1 then + begin + ImageList_SetOverlayImage(Images.Handle, Column.ImageOverlayIndex, 1); + fStyle := fStyle or INDEXTOOVERLAYMASK(1); + end; + + // Get the "normalized" rectangle for the image + RectArray.IconRect.Left := RectArray.IconRect.Left + (RectWidth(RectArray.IconRect) - Images.Width) div 2; + RectArray.IconRect.Top := RectArray.IconRect.Top + (RectHeight(RectArray.IconRect) - Images.Height) div 2; + ImageList_DrawEx(Images.Handle, + Column.ImageIndex, + ACanvas.Handle, + RectArray.IconRect.Left, + RectArray.IconRect.Top, + 0, + 0, + CLR_NONE, + CLR_NONE, + fStyle); + end + end +end; + +procedure TEasyViewColumn.PaintSortGlyph(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject); +var + Image: TBitmap; +begin + if Column.SortDirection <> esdNone then + begin + if Column.SortDirection = esdAscending then + Image := OwnerListview.GlobalImages.ColumnSortUp + else + Image := OwnerListview.GlobalImages.ColumnSortDown; + + ACanvas.Draw(RectArray.SortRect.Left, RectArray.SortRect.Top, Image); + end +end; + +procedure TEasyViewColumn.PaintText(Column: TEasyColumn; ACanvas: TCanvas; + HeaderType: TEasyHeaderType; RectArray: TEasyRectArrayObject; + LinesToDraw: Integer); +var + DrawTextFlags: TCommonDrawTextWFlags; +begin + if not IsRectEmpty(RectArray.TextRect) then + begin + ACanvas.Brush.Style := bsClear; + + DrawTextFlags := [dtEndEllipsis]; + + if LinesToDraw = 1 then + Include(DrawTextFlags, dtSingleLine); + + case Column.Alignment of + taLeftJustify: Include(DrawTextFlags, dtLeft); + taRightJustify: Include(DrawTextFlags, dtRight); + taCenter: Include(DrawTextFlags, dtCenter); + end; + + // Vertical Alignment is accounted for in the Text Rects + + LoadTextFont(Column, ACanvas); + if Column.Bold then + ACanvas.Font.Style := ACanvas.Font.Style + [fsBold]; + + OwnerListview.DoColumnPaintText(Column, ACanvas); + DrawTextWEx(ACanvas.Handle, Column.Caption, RectArray.TextRects[0], DrawTextFlags, OwnerListview.PaintInfoColumn.CaptionLines); +end; + +end; + +procedure TEasyViewColumn.ReSizeRectArray( + var RectArray: TEasyRectArrayObjectArray); +var + OldLen, i: Integer; +begin + if Length(RectArray) < OwnerListview.Header.Positions.Count then + begin + OldLen := Length(RectArray); + SetLength(RectArray, OwnerListview.Header.Positions.Count); + for i := OldLen to OwnerListview.Header.Positions.Count - 1 do + FillChar(RectArray[i], SizeOf(RectArray[i]), #0); + end else + if Length(RectArray) > OwnerListview.Header.Positions.Count then + SetLength(RectArray, OwnerListview.Header.Positions.Count); + + if Length(RectArray) = 0 then + begin + SetLength(RectArray, 1); + FillChar(RectArray[0], SizeOf(RectArray[0]), #0); + end +end; + +{ TEasyGroupGrid } + +constructor TEasyGridGroup.Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner); + FOwnerGroup := AnOwnerGroup; + FLayout := eglVert // Default orientation +end; + +destructor TEasyGridGroup.Destroy; +begin + inherited; +end; + +function TEasyGridGroup.AdjacentItem(Item: TEasyItem; Direction: TEasyAdjacentCellDir): TEasyItem; +var + ColumnPos: Integer; + TestPt: TPoint; + LastItem: TEasyItem; + RectArray: TEasyRectArrayObject; + AdjacentGroup: TEasyGroup; +begin + Result := nil; + if Assigned(Item) then + begin + Assert(Item.Visible, 'Can not find TEasyGroups.AdjacentItem of an Invisible Item'); + case Direction of + acdLeft: + begin + Result := Item; + if Item.VisibleIndexInGroup > 0 then + Result := OwnerGroup.VisibleItem[Item.VisibleIndexInGroup - 1] + else begin + AdjacentGroup := PrevVisibleGroupWithNItems(OwnerGroup, 0); + if Assigned(AdjacentGroup) then + Result := AdjacentGroup.VisibleItem[AdjacentGroup.VisibleCount - 1] + end + end; + acdRight: + begin + Result := Item; + if Item.VisibleIndexInGroup < OwnerGroup.VisibleCount - 1 then + Result := OwnerGroup.VisibleItem[Item.VisibleIndexInGroup + 1] + else begin + AdjacentGroup := NextVisibleGroupWithNItems(OwnerGroup, 0); + if Assigned(AdjacentGroup) then + Result := AdjacentGroup.VisibleItem[0] + end + end; + acdUp: + begin + // First see if we can stay in the same group + if Item.VisibleIndexInGroup - ColumnCount >= 0 then + Result := OwnerGroup.VisibleItems[Item.VisibleIndexInGroup - ColumnCount] + else begin + ColumnPos := Item.ColumnPos; + while not Assigned(Result) and (ColumnPos > -1) do + begin + AdjacentGroup := PrevVisibleGroupWithNItems(OwnerGroup, ColumnPos); + if Assigned(AdjacentGroup) then + Result := LastItemInNColumn(AdjacentGroup, ColumnPos); + Dec(ColumnPos) + end + end + end; + acdDown: + begin + // First see if we can stay in the same group + if Item.VisibleIndexInGroup + ColumnCount < OwnerGroup.VisibleCount then + Result := OwnerGroup.VisibleItems[Item.VisibleIndexInGroup + ColumnCount] + else begin + ColumnPos := Item.ColumnPos; + while not Assigned(Result) and (ColumnPos > -1) do + begin + AdjacentGroup := NextVisibleGroupWithNItems(OwnerGroup, ColumnPos); + if Assigned(AdjacentGroup) then + Result := AdjacentGroup.VisibleItem[ColumnPos]; + Dec(ColumnPos) + end + end + end; + acdPageUp: + begin + TestPt := Item.DisplayRect.BottomRight; + // The Right is actually the Left of the next object + Dec(TestPt.X); + Dec(TestPt.Y, OwnerListview.ClientHeight); + + // Make sure we don't run past the last row of items. + AdjacentGroup := OwnerGroups.FirstVisibleGroup; + if Assigned(AdjacentGroup) then + if TestPt.Y < AdjacentGroup.DisplayRect.Top + OwnerGroup.Grid.StaticTopItemMargin then + TestPt.Y := AdjacentGroup.BoundsRectBkGnd.Top + OwnerGroup.Grid.StaticTopItemMargin; + + Result := OwnerGroups.ItembyPoint(TestPt); + if not Assigned(Result) then + begin + Result := SearchForHitRight(Item.ColumnPos, TestPt); + while not Assigned(Result) and (TestPt.Y > OwnerGroups.ViewRect.Top) do + begin + Inc(TestPt.Y, CellSize.Height); + Result := SearchForHitRight(Item.ColumnPos, TestPt); + end + end + end; + acdPageDown: + begin + TestPt := Item.DisplayRect.TopLeft; + Inc(TestPt.Y, OwnerListview.ClientHeight); + + // Make sure we don't run past the last row of items. + LastItem := OwnerGroups.LastItem; + if Assigned(LastItem) then + begin + LastItem.View.ItemRectArray(LastItem, nil, nil, Item.Caption, RectArray); + if TestPt.Y > RectArray.LabelRect.Bottom - 1 then + TestPt.Y := RectArray.LabelRect.Bottom - 1; + end; + + // Look for an item directly below the currently selected item + Result := OwnerGroups.ItembyPoint(TestPt); + + // If not found then look to the right until we find an item + if not Assigned(Result) then + begin + Result := SearchForHitRight(Item.ColumnPos, TestPt); + while not Assigned(Result) and (TestPt.Y < OwnerGroups.ViewRect.Bottom) do + begin + Inc(TestPt.Y, CellSize.Height); + Result := SearchForHitRight(Item.ColumnPos, TestPt); + end + end + end + end + end +end; + +procedure TEasyGridGroup.AutoSizeCells; +var + Item: TEasyItem; + RectArray: TEasyRectArrayObject; + ACanvas: TCanvas; + TextSize: TSize; +begin + if CellSize.AutoSize then + begin + FindLongestCaption(nil, Item); + if Assigned(Item) then + begin + ACanvas := TCanvas.Create; + try + ACanvas.Handle := GetDC(0); + Item.View.ItemRectArray(Item, nil, ACanvas, '', RectArray); + Item.View.LoadTextFont(Item, 0, ACanvas, True); + TextSize := TextExtentW(Item.Caption, ACanvas); + CellSize.AutoSizeWidth := RectWidth(RectArray.CheckRect) + + RectWidth(RectArray.IconRect) + + RectWidth(RectArray.StateRect) + + TextSize.cx + 18; + + finally + ReleaseDC(0, ACanvas.Handle); + ACanvas.Handle := 0; + ACanvas.Free; + end + end + end +end; + +procedure TEasyGridGroup.FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); +// +// The default implementation assumes a "grid" type arrangement of the grid +// +var + Item: TEasyItem; +begin + Index := -1; + Group := OwnerGroups.GroupByPoint(ViewportPoint); + if Assigned(Group) then + begin + Item := Group.ItemByPoint(ViewportPoint); + if Assigned(Item) then + begin + if ViewportPoint.X < RectWidth( Item.DisplayRect) div 2 then + Index := Item.Index + else + Index := Item.Index + 1 + end + end +end; + +function TEasyGridGroup.GetMaxColumns(Group: TEasyGroup; WindowWidth: Integer): Integer; +begin + Result := (WindowWidth - + (Group.MarginLeft.RuntimeSize + Group.MarginRight.RuntimeSize)) div CellSize.Width; + if FColumnCount = 0 then + Inc(FColumnCount); +end; + +function TEasyGridGroup.GetOwnerGroups: TEasyGroups; +begin + Result := OwnerGroup.OwnerGroups +end; + +function TEasyGridGroup.LastItemInNColumn(Group: TEasyGroup; N: Integer): TEasyItem; +// +// Finds the last item in the group in the specified column. It assumes +// that the item does exist (N >= Group.ItemCount) +// +var + RowPos: Integer; +begin + RowPos := Group.VisibleCount div Group.Grid.ColumnCount; + if RowPos * ColumnCount + N >= Group.VisibleCount then + Dec(RowPos); + Result := Group.Items[RowPos * ColumnCount + N] +end; + +function TEasyGridGroup.NextVisibleGroupWithNItems(StartGroup: TEasyGroup; N: Integer): TEasyGroup; + // + // Returns the first next group encountered when at least N items in it + // +var + i: Integer; +begin + Result := nil; + i := StartGroup.VisibleIndex + 1; + while not Assigned(Result) and (i < OwnerGroups.VisibleCount) do + begin + if OwnerGroups.VisibleGroup[i].VisibleCount > N then + Result := OwnerGroups.VisibleGroup[i]; + Inc(i) + end +end; + +function TEasyGridGroup.PrevVisibleGroupWithNItems(StartGroup: TEasyGroup; N: Integer): TEasyGroup; +// +// Returns the first prev group encountered when at least N items in it +// +var + i: Integer; +begin + Result := nil; + i := StartGroup.VisibleIndex - 1; + while not Assigned(Result) and (i >= 0) do + begin + if OwnerGroups.VisibleGroup[i].VisibleCount > N then + Result := OwnerGroups.VisibleGroup[i]; + Dec(i) + end + +end; + +function TEasyGridGroup.SearchForHitRight(ColumnPos: Integer; Pt: TPoint): TEasyItem; +begin + Result := nil; + while not Assigned(Result) and (ColumnPos >= 0) do + begin + Result := OwnerGroups.ItembyPoint(Pt); + Dec(Pt.X, CellSize.Width); + Dec(ColumnPos) + end; +end; + +function TEasyGridGroup.StaticTopItemMargin: Integer; +// Distance added between the bottom of the top margin and the first +// item, and the distance between the bottom of the last item and the +// top of the bottom margin +begin + Result := 0 +end; + +function TEasyGridGroup.StaticTopMargin: Integer; +// Distance added from top of control to the top of the first group +begin + Result := 0; +end; + +procedure TEasyGridGroup.FindLongestCaption(Column: TEasyColumn; var Item: TEasyItem); +var + TempItem: TEasyItem; + ColumnIndex, i: Integer; +begin + Item := nil; + + if Assigned(Column) then + ColumnIndex := Column.Index + else + ColumnIndex := 0; + + + // can't use enumerators here as the list is not reindexed yet + for i := 0 to OwnerGroup.Items.Count - 1 do + begin + TempItem := TEasyItem( OwnerGroup.Items[i]); + if TempItem.Visible then + begin + if not Assigned(Item) then + Item := TempItem + else begin + if Length(TempItem.Captions[ColumnIndex]) > Length(Item.Captions[ColumnIndex]) then + Item := TempItem; + end + end + end +end; + +procedure TEasyGridGroup.Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); +var + TopLeft: TPoint; + i, LeftEdge, BottomEdge, ItemGroupVisibleIndex: Integer; + RectArray: TEasyRectArrayObject; + WndWidth, VisibleCount, ItemMargin, GroupMargin, MarginTop, MarginLeft, MarginRight: Integer; + FocusedItem, Item: TEasyItem; + LocalCellSize: TEasyCellSize; +begin + AutoSizeCells; + BottomEdge := 0; + GroupMargin := StaticTopMargin; + ItemMargin := StaticTopItemMargin; + LocalCellSize := CellSize; + MarginLeft := OwnerGroup.MarginLeft.RuntimeSize; + MarginTop := OwnerGroup.MarginTop.RuntimeSize; + MarginRight := OwnerGroup.MarginRight.RuntimeSize; + + // First calculate the Width of the group box. The height will be dynamically + // calculated during the enumeration of the items + WndWidth := OwnerListview.ClientWidth - 1; + if not OwnerListview.Scrollbars.VertBarVisible then + WndWidth := WndWidth - GetSystemMetrics(SM_CYVSCROLL); + if WndWidth < MarginRight + MarginLeft + LocalCellSize.Width then + WndWidth := MarginRight + MarginLeft + LocalCellSize.Width; + OwnerGroup.FDisplayRect := Rect(0, StaticTopMargin, WndWidth, GroupMargin); + + VisibleCount := 0; + FocusedItem := nil; + + // Prepare the VisibleList for the worse case, all are visible + OwnerGroup.VisibleItems.Clear; + OwnerGroup.VisibleItems.Capacity := OwnerGroup.Items.Count; + ItemGroupVisibleIndex := 0; + + if OwnerGroup.Visible then + begin + if OwnerGroup.Expanded and (OwnerGroup.Items.Count > 0) then + begin + // First calculate the number of columns we can accommodate + FColumnCount := GetMaxColumns(OwnerGroup, WndWidth); + + TopLeft := Point(0, 0); + LeftEdge := ColumnCount * LocalCellSize.Width; + + for i := 0 to OwnerGroup.Items.Count - 1 do + begin + if TopLeft.X + LocalCellSize.Width > LeftEdge then + begin + TopLeft.X := 0; + Inc(TopLeft.Y, LocalCellSize.Height); + end; + + Item := OwnerGroup.Items[i]; + + if Item.Visible then + begin + Item.FVisibleIndexInGroup := ItemGroupVisibleIndex; + Item.FVisibleIndex := NextVisibleItemIndex; + Inc(NextVisibleItemIndex); + Inc(ItemGroupVisibleIndex); + OwnerGroup.VisibleItems.Add(Item); + BottomEdge := TopLeft.Y + LocalCellSize.Height; + Item.FDisplayRect := Rect(TopLeft.X, TopLeft.Y, TopLeft.X + LocalCellSize.Width, BottomEdge); + Inc(TopLeft.X, LocalCellSize.Width); + Inc(VisibleCount); + end else + begin + Item.FDisplayRect := Rect(TopLeft.X, TopLeft.Y, TopLeft.X, TopLeft.Y + LocalCellSize.Height); + Item.FVisibleIndexInGroup := -1; + end; + + OffsetRect(Item.FDisplayRect, MarginLeft, MarginTop + GroupMargin + ItemMargin); + + if Item.Focused then + FocusedItem := Item; + + if Assigned(PrevGroup) then + OffsetRect(Item.FDisplayRect, 0, PrevGroup.DisplayRect.Bottom); + end + end else + begin + // Collapsed group can't have focused item, move it to the next Visible item + FocusedItem := OwnerListview.Selection.FocusedItem; + if Assigned(FocusedItem) then + if FocusedItem.OwnerGroup = OwnerGroup then + OwnerListview.Selection.FocusedItem := Self.OwnerGroups.NextVisibleItem(FocusedItem) + end; + + if ColumnCount > 0 then + FRowCount := OwnerGroup.Items.Count div ColumnCount + else + FRowCount := 0; + if ColumnCount > 0 then + if OwnerGroup.Items.Count mod ColumnCount > 0 then + Inc(FRowCount); + + if OwnerGroup.Expanded then + Inc(OwnerGroup.FDisplayRect.Bottom, OwnerGroup.MarginBottom.RuntimeSize + OwnerGroup.MarginTop.RuntimeSize + BottomEdge + ItemMargin * 2) + else + Inc(OwnerGroup.FDisplayRect.Bottom, OwnerGroup.MarginBottom.RuntimeSize + OwnerGroup.MarginTop.RuntimeSize + BottomEdge) + end; + + // Take care of the items in groups that are not visible or expanded + // If the Group's is not visible then its items can not be selected. + // Current it is allowed to have selected items in collapsed groups + if not OwnerGroup.Visible then + begin + i := 0; + while (i < OwnerGroup.Items.Count) and (OwnerListview.Selection.Count > 0) do + begin + OwnerGroup.Items[i].Selected := False; + Inc(i) + end; + if Assigned(OwnerListview.Selection.FocusedItem) then + if OwnerListview.Selection.FocusedItem.OwnerGroup = OwnerGroup then + OwnerListview.Selection.FocusedItem := nil; + end; + + // Special case if all the items are not visible + if VisibleCount = 0 then + begin + FColumnCount := 0; + FRowCount := 0; + end; + + if Assigned(PrevGroup) then + OffsetRect(OwnerGroup.FDisplayRect, 0, PrevGroup.DisplayRect.Bottom); + + + // Always resize the group if on the bottom the the control + if Assigned(FocusedItem) and (OwnerListview.Selection.ResizeGroupOnFocus or (OwnerGroup.Index + 1 = OwnerGroups.Count)) then + begin + FocusedItem.ItemRectArray(nil, OwnerListview.ScratchCanvas, RectArray); + if RectArray.FullTextRect.Bottom > OwnerGroup.FDisplayRect.Bottom - OwnerGroup.MarginBottom.RuntimeSize then + Inc(OwnerGroup.FDisplayRect.Bottom, RectArray.FullTextRect.Bottom - FocusedItem.DisplayRect.Bottom); + end +end; + +constructor TEasyGridReportGroup.Create(AnOwner: TCustomEasyListview; + AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner, AnOwnerGroup); + FLayout := eglGrid +end; + +function TEasyGridReportGroup.AdjacentItem(Item: TEasyItem; + Direction: TEasyAdjacentCellDir): TEasyItem; +var + TestPt: TPoint; +begin + Result := nil; + if Assigned(Item) then + begin + case Direction of + acdUp: Result := OwnerGroups.PrevVisibleItem(Item); + acdDown: Result := OwnerGroups.NextVisibleItem(Item); + acdPageUp: // WL, 05/01/05 + begin + // Look for first visible item at top. + // The Makevisible offsets a bit to deal with the inplace editor + TestPt := Point(0, OwnerListview.ClientInViewportCoords.Top + V_STRINGEDITORMARGIN div 2); + repeat + Result := OwnerGroups.ItembyPoint(TestPt); + Inc(TestPt.Y, CellSize.Height); + until (Result <> nil) or (Result = Item) or (TestPt.Y >= OwnerListview.ClientInViewportCoords.Bottom); + + // If first visible item is the parameter Item already we must look one + // page further up. Find the furthest item which still allows Result + // and item to be on one page. + if (Result <> nil) and (Result = Item) then + begin + TestPt := Point(0, Item.DisplayRect.Bottom - RectHeight(OwnerListview.ClientInViewportCoords) - 1); + repeat + Result := OwnerGroups.ItembyPoint(TestPt); + Inc(TestPt.Y, CellSize.Height); + until Result <> nil; // loop terminates at Item at the latest (which must be below) + if Result = Item then + Result := nil; // no adjacent page-down item found, Item was already the first one + end; + end; + acdPageDown: // WL, 05/01/05 + begin + // Look for last visible item at bottom. + // The Makevisible offsets a bit to deal with the inplace editor + TestPt := Point(0, OwnerListview.ClientInViewportCoords.Bottom - 1 - V_STRINGEDITORMARGIN div 2); + repeat + Result := OwnerGroups.ItembyPoint(TestPt); + Dec(TestPt.Y, CellSize.Height); + until (Result <> nil) or (Result = Item) or (TestPt.Y < OwnerListview.ClientInViewportCoords.Top); + + // If last visible item is the parameter Item already we must look one + // page further down. Find the furthest item which still allows Result + // and item to be on one page. + if (Result <> nil) and (Result = Item) then + begin + TestPt := Point(0, Item.DisplayRect.Top + RectHeight(OwnerListview.ClientInViewportCoords) - 1); + repeat + Result := OwnerGroups.ItembyPoint(TestPt); + Dec(TestPt.Y, CellSize.Height); + until Result <> nil; // loop terminates at Item at the latest (which must be above) + if Result = Item then + Result := nil; // no adjacent page-down item found, Item was already the last one + end; + end + else + Result := inherited AdjacentItem(Item, Direction); + end + end +end; + +procedure TEasyGridReportGroup.FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); +begin + +end; + +function TEasyGridReportGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.Report +end; + +{ TEasyReportGroupGrid } + + +procedure TEasyGridReportGroup.Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); + +var + i, Top, Bottom, Width, Left, Offset, TopMargin, + BottomMargin, VisibleCount: Integer; + Item: TEasyItem; +begin + AutoSizeCells; + + if CellSize.AutoSize and (OwnerListview.Header.Columns.Count > 0) then + OwnerListview.Header.Columns[0].Width := CellSize.Width; + + if Assigned(PrevGroup) then + Offset := PrevGroup.DisplayRect.Bottom + else + Offset := V_STRINGEDITORMARGIN; + + OwnerGroup.FDisplayRect := Rect(0, Offset, OwnerListview.Header.ViewWidth, Offset); + // Prepare the VisibleList for the worse case, all are visible + OwnerGroup.VisibleItems.Clear; + OwnerGroup.VisibleItems.Capacity := OwnerGroup.Items.Count; + + Left := OwnerGroup.MarginLeft.RuntimeSize; + if OwnerListview.Header.LastColumnByPosition <> nil then + begin + Width := OwnerListview.Header.LastColumnByPosition.DisplayRect.Right; + Width := Width - OwnerGroup.MarginRight.RuntimeSize + end else + Width := 0; + + TopMargin := OwnerGroup.MarginTop.RuntimeSize; + BottomMargin := OwnerGroup.MarginBottom.RuntimeSize; + if OwnerGroup.Visible then + begin + if OwnerGroup.Expanded and (OwnerGroup.Items.Count > 0) then + begin + VisibleCount := 0; + Top := Offset + TopMargin; + Bottom := Offset + CellSize.Height + TopMargin; + for i := 0 to OwnerGroup.Items.Count - 1 do + begin + Item := OwnerGroup.Items.List.List[i]; // Direct Access for Speed + if Item.Visible then + begin + Item.FVisibleIndex := NextVisibleItemIndex; + Item.FVisibleIndexInGroup := VisibleCount; + Item.FDisplayRect := Rect(Left, Top, Width, Bottom); + OwnerGroup.VisibleItems.Add(Item); + Inc(Top, CellSize.Height); + Inc(Bottom, CellSize.Height); + Inc(VisibleCount); + Inc(NextVisibleItemIndex); + end else + Item.FDisplayRect := Rect(Left, Top, Width, Top); + OwnerGroup.FDisplayRect.Bottom := Item.FDisplayRect.Bottom + BottomMargin; + if OwnerGroups.LastGroup = OwnerGroup then + OwnerGroup.FDisplayRect.Bottom := Item.FDisplayRect.Bottom + V_STRINGEDITORMARGIN * 2; + end + end else + OwnerGroup.FDisplayRect := Rect(0, Offset, OwnerListview.Header.ViewWidth, Offset + TopMargin + BottomMargin); + end; + // Column Count does not relate to Report view columns. It is a more primitive + // and the Report columns are within the Grid Column + FColumnCount := 1; +end; + +procedure TEasyGridReportGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.Report.Assign(Value) +end; + +constructor TEasyGridListGroup.Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner, AnOwnerGroup); + FLayout := eglHorz +end; + +function TEasyGridListGroup.AdjacentItem(Item: TEasyItem; + Direction: TEasyAdjacentCellDir): TEasyItem; + function NextVisibleGroupWithNItems(StartGroup: TEasyGroup; N: Integer): TEasyGroup; + // + // Returns the first next group encountered when at least N items in it + // + var + i: Integer; + begin + Result := nil; + i := StartGroup.VisibleIndex + 1; + while not Assigned(Result) and (i < OwnerGroups.VisibleCount) do + begin + if OwnerGroups.VisibleGroup[i].VisibleCount > N then + Result := OwnerGroups.VisibleGroup[i]; + Inc(i) + end + end; + + function PrevVisibleGroupWithNItems(StartGroup: TEasyGroup; N: Integer): TEasyGroup; + // + // Returns the first prev group encountered when at least N items in it + // + var + i: Integer; + begin + Result := nil; + i := StartGroup.VisibleIndex - 1; + while not Assigned(Result) and (i >= 0) do + begin + if OwnerGroups.VisibleGroup[i].VisibleCount > N then + Result := OwnerGroups.VisibleGroup[i]; + Dec(i) + end + end; + + function LastItemInNRow(Group: TEasyGroup; N: Integer): TEasyItem; + // + // Finds the last item in the group in the specified column. It assumes + // that the item does exist (N >= Group.ItemCount) + // + var + ColumnPos: Integer; + begin + ColumnPos := Group.VisibleCount div Group.Grid.RowCount; + if ColumnPos * RowCount + N >= Group.VisibleCount then + Dec(ColumnPos); + Result := Group.Items[ColumnPos * RowCount + N] + end; + + function SearchForHitRight(ColumnPos: Integer; Pt: TPoint): TEasyItem; + begin + Result := nil; + while not Assigned(Result) and (ColumnPos >= 0) do + begin + Result := OwnerGroups.ItembyPoint(Pt); + Dec(Pt.X, CellSize.Width); + Dec(ColumnPos) + end; + end; + +var + RowPos, ItemIndex: Integer; + AdjacentGroup: TEasyGroup; +begin + Result := nil; + if Assigned(Item) then + begin + Assert(Item.Visible, 'Can not find TEasyGroups.AdjacentItem of an Invisible Item'); + case Direction of + acdUp: + begin + Result := Item; + if Item.VisibleIndexInGroup > 0 then + Result := OwnerGroup.VisibleItem[Item.VisibleIndexInGroup - 1] + else begin + AdjacentGroup := PrevVisibleGroupWithNItems(OwnerGroup, 0); + if Assigned(AdjacentGroup) then + Result := AdjacentGroup.VisibleItem[AdjacentGroup.VisibleCount - 1] + end + end; + acdDown: + begin + Result := Item; + if Item.VisibleIndexInGroup < OwnerGroup.VisibleCount - 1 then + Result := OwnerGroup.VisibleItem[Item.VisibleIndexInGroup + 1] + else begin + AdjacentGroup := NextVisibleGroupWithNItems(OwnerGroup, 0); + if Assigned(AdjacentGroup) then + Result := AdjacentGroup.VisibleItem[0] + end + end; + acdLeft: + begin + // First see if we can stay in the same group + if Item.VisibleIndexInGroup - RowCount >= 0 then + Result := OwnerGroup.VisibleItems[Item.VisibleIndexInGroup - RowCount] + else begin + RowPos := Item.RowPos; + while not Assigned(Result) and (RowPos > -1) do + begin + AdjacentGroup := PrevVisibleGroupWithNItems(OwnerGroup, RowPos); + if Assigned(AdjacentGroup) then + Result := LastItemInNRow(AdjacentGroup, RowPos); + Dec(RowPos) + end + end + end; + acdRight: + begin + // First see if we can stay in the same group + if Item.VisibleIndexInGroup + RowCount < OwnerGroup.VisibleCount then + Result := OwnerGroup.VisibleItems[Item.VisibleIndexInGroup + RowCount] + else begin + RowPos := Item.RowPos; + while not Assigned(Result) and (RowPos > -1) do + begin + AdjacentGroup := NextVisibleGroupWithNItems(OwnerGroup, RowPos); + if Assigned(AdjacentGroup) then + Result := AdjacentGroup.VisibleItem[RowPos]; + Dec(RowPos) + end + end + end; + acdPageUp: + begin + ItemIndex := Item.VisibleIndexInGroup; + while (ItemIndex > 0) and (ItemIndex mod RowCount <> 0) do + Dec(ItemIndex); + Result := OwnerGroup.Items[ItemIndex] + end; + acdPageDown: + begin + ItemIndex := Item.VisibleIndexInGroup; + while (ItemIndex < Item.OwnerGroup.Items.Count - 1) and (ItemIndex mod RowCount <> RowCount - 1) do + Inc(ItemIndex); + Result := OwnerGroup.Items[ItemIndex] + end + end + end +end; + +procedure TEasyGridListGroup.FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); +begin + +end; + +function TEasyGridListGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.List +end; + +{ TEasyListGroupGrid } + +procedure TEasyGridListGroup.Rebuild(PrevGroup: TEasyGroup; + var NextVisibleItemIndex: Integer); +var + ScrollSize, ClientHeight: Integer; + TopLeft: TPoint; + i, Offset, VisibleCount, Height: Integer; + RectArray: TEasyRectArrayObject; + TextSize: TSize; + R: TRect; + Item: TEasyItem; +begin + AutoSizeCells; + + VisibleCount := 0; + // Always assume a scroll bar + ScrollSize := GetSystemMetrics(SM_CXHSCROLL); + ClientHeight := OwnerListview.ClientHeight; + + if Assigned(PrevGroup) then + Offset := PrevGroup.DisplayRect.Right + else + Offset := 0; + + Height := ClientHeight - ScrollSize - OwnerListview.Header.RuntimeHeight; + + // May have to show a vertical scrollbar if the entire thing won't fit in the window + if Height < OwnerGroup.MarginBottom.RuntimeSize + OwnerGroup.MarginTop.RuntimeSize + CellSize.Height then + Height := OwnerGroup.MarginBottom.RuntimeSize + OwnerGroup.MarginTop.RuntimeSize + CellSize.Height; + + OwnerGroup.FDisplayRect := Rect(Offset, 0, Offset, Height); + // Prepare the VisibleList for the worse case, all are visible + OwnerGroup.VisibleItems.Clear; + OwnerGroup.VisibleItems.Capacity := OwnerGroup.Items.Count; + + if OwnerGroup.Visible then + begin + if OwnerGroup.Expanded and (OwnerGroup.Items.Count > 0) then + begin + // First calculate the number of rows we can accommodate + FRowCount := (Height - 1 - (OwnerGroup.MarginBottom.RuntimeSize + OwnerGroup.MarginTop.RuntimeSize)) div CellSize.Height; + if FRowCount = 0 then + Inc(FRowCount); + + FColumnCount := 1; + + TopLeft := Point(Offset + OwnerGroup.MarginLeft.RuntimeSize, OwnerGroup.MarginTop.RuntimeSize); + + for i := 0 to OwnerGroup.Items.Count - 1 do + begin + Item := OwnerGroup.Items[i]; + if Item.Visible then + begin + Item.FVisibleIndex := NextVisibleItemIndex; + Item.FVisibleIndexInGroup := VisibleCount; + OwnerGroup.VisibleItems.Add(Item); + R := Rect(TopLeft.X, TopLeft.Y, TopLeft.X + CellSize.Width, TopLeft.Y + CellSize.Height); + Inc(TopLeft.Y, CellSize.Height); + Inc(VisibleCount) + end else + R := Rect(TopLeft.X, TopLeft.Y, TopLeft.X, TopLeft.Y + CellSize.Height); + + if R.Bottom > Height - OwnerGroup.MarginBottom.RuntimeSize then + begin + OffsetRect(R, CellSize.Width, -(TopLeft.Y - CellSize.Height - OwnerGroup.MarginTop.RuntimeSize)); + TopLeft.Y := OwnerGroup.MarginTop.RuntimeSize + CellSize.Height; + Inc(TopLeft.X, CellSize.Width); + Inc(FColumnCount); + end; + + OwnerGroup.Items[i].FDisplayRect := R + end; + OwnerGroup.FDisplayRect.Right := TopLeft.X + CellSize.Width + OwnerGroup.MarginRight.RuntimeSize; + + end; + // Special case if all the items are not visible + if VisibleCount = 0 then + begin + TextSize := TextExtentW(OwnerGroup.Caption, OwnerListview.GroupFont); + OwnerGroup.View.GroupRectArray(OwnerGroup, egmeTop, OwnerGroup.BoundsRectTopMargin, RectArray); + FColumnCount := 0; + FRowCount := 0; + OwnerGroup.FDisplayRect.Right := OwnerGroup.MarginLeft.RuntimeSize + + OwnerGroup.MarginRight.RuntimeSize + RectArray.IconRect.Right + + OwnerGroup.CaptionIndent + TextSize.cx; + end; + end; +end; + +procedure TEasyGridListGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.List.Assign(Value) +end; + +{ TEasyFooterMargin } + +constructor TCustomEasyFooterMargin.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FImageIndex := -1; + FImageOverlayIndex := -1; + FSize := 30; +end; + +destructor TCustomEasyFooterMargin.Destroy; +begin + FreeAndNil(FPaintInfo); + inherited; +end; + +function TCustomEasyFooterMargin.GetAlignment: TAlignment; +begin + Result := PaintInfo.Alignment +end; + +function TCustomEasyFooterMargin.GetCaptionIndent: Integer; +begin + Result := PaintInfo.CaptionIndent +end; + +function TCustomEasyFooterMargin.GetCaptionLines: Integer; +begin + Result := PaintInfo.CaptionLines +end; + +function TCustomEasyFooterMargin.GetImageIndent: Integer; +begin + Result := PaintInfo.ImageIndent +end; + +function TCustomEasyFooterMargin.GetPaintInfo: TEasyPaintInfoBaseGroup; +begin + if not Assigned(FPaintInfo) then + Result := OwnerListview.PaintInfoGroup.MarginBottom.FPaintInfo + else + Result := FPaintInfo +end; + +function TCustomEasyFooterMargin.GetVAlignment: TCommonVAlignment; +begin + Result := PaintInfo.VAlignment +end; + +procedure TCustomEasyFooterMargin.Assign(Source: TPersistent); +var + Temp: TCustomEasyFooterMargin; +begin + inherited Assign(Source); + if Source is TCustomEasyFooterMargin then + begin + Temp := TCustomEasyFooterMargin(Source); + FCaption := Temp.Caption; + end +end; + +procedure TCustomEasyFooterMargin.SetAlignment(Value: TAlignment); +begin + if Alignment <> Value then + begin + PaintInfo.Alignment := Value; + OwnerListview.Groups.Rebuild + end; +end; + +procedure TCustomEasyFooterMargin.SetCaption(Value: WideString); +begin + if FCaption <> Value then + begin + FCaption := Value; + OwnerListview.Groups.Rebuild + end; +end; + +procedure TCustomEasyFooterMargin.SetCaptionIndent(Value: Integer); +begin + if CaptionIndent <> Value then + begin + PaintInfo.CaptionIndent := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TCustomEasyFooterMargin.SetCaptionLines(Value: Integer); +begin + if CaptionLines <> Value then + begin + PaintInfo.CaptionLines := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TCustomEasyFooterMargin.SetImageIndent(Value: Integer); +begin + if ImageIndent <> Value then + begin + PaintInfo.ImageIndent := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TCustomEasyFooterMargin.SetImageIndex(const Value: TCommonImageIndexInteger); +begin + if FImageIndex <> Value then + begin + FImageIndex := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TCustomEasyFooterMargin.SetImageOveralyIndex(const Value: TCommonImageIndexInteger); +begin + if FImageOverlayIndex <> Value then + begin + FImageOverlayIndex := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TCustomEasyFooterMargin.SetPaintInfo(const Value: TEasyPaintInfoBaseGroup); +begin + if not Assigned(FPaintInfo) then + OwnerListview.PaintInfoGroup.Assign(Value) + else + FPaintInfo.Assign(Value) +end; + +procedure TCustomEasyFooterMargin.SetVAlignment( + Value: TCommonVAlignment); +begin + if VAlignment <> Value then + begin + PaintInfo.VAlignment := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end; +end; + +{ TEasyBasicItemPaintInfo } + +constructor TEasyPaintInfoBasic.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FImageIndent := 2; + FCaptionIndent := 4; + FCaptionLines := 1; + FBorder := 4; + FBorderColor := clHighlight; + FCheckIndent := 2; + FChecksize := 12; + FVAlignment := cvaCenter; + FShowBorder := True; +end; + +procedure TEasyPaintInfoBasic.Assign(Source: TPersistent); +var + Temp: TEasyPaintInfoBasic; +begin + if Source is TEasyPaintInfoBasic then + begin + Temp := TEasyPaintInfoBasic(Source); + FAlignment := Temp.Alignment; + FBorder := Temp.Border; + FBorderColor := Temp.BorderColor; + FCaptionIndent := Temp.CaptionIndent; + FCaptionLines := Temp.CaptionLines; + FCheckFlat := Temp.CheckFlat; + FCheckIndent := Temp.CheckIndent; + FChecksize := Temp.Checksize; + FCheckType := Temp.CheckType; + FImageIndent := Temp.ImageIndent; + FVAlignment := Temp.VAlignment; + end +end; + +procedure TEasyPaintInfoBasic.Invalidate(ImmediateUpdate: Boolean); +begin + OwnerListview.SafeInvalidateRect(nil, ImmediateUpdate) +end; + +procedure TEasyPaintInfoBasic.SetAlignment(Value: TAlignment); +begin + if Value <> FAlignment then + begin + FAlignment := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetBorder(Value: Integer); +begin + if Value <> FBorder then + begin + FBorder := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetBorderColor(Value: TColor); +begin + if Value <> FBorderColor then + begin + FBorderColor := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetCaptionIndent(Value: Integer); +begin + if Value <> FCaptionIndent then + begin + FCaptionIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetCaptionLines(Value: Integer); +begin + if Value <> FCaptionLines then + begin + FCaptionLines := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetCheckFlat(Value: Boolean); +begin + if Value <> FCheckFlat then + begin + FCheckFlat := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetCheckIndent(Value: Integer); +begin + if Value <> FCheckIndent then + begin + FCheckIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetChecksize(Value: Integer); +begin + if Value <> FChecksize then + begin + FChecksize := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetCheckType(Value: TEasyCheckType); +begin + if Value <> FCheckType then + begin + FCheckType := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetImageIndent(Value: Integer); +begin + if Value <> FImageIndent then + begin + FImageIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBasic.SetShowBorder(const Value: Boolean); +begin + FShowBorder := Value; +end; + +procedure TEasyPaintInfoBasic.SetVAlignment(Value: TCommonVAlignment); +begin + if Value <> FVAlignment then + begin + FVAlignment := Value; + Invalidate(False) + end +end; + +{ TEasyBasicGroupPaintInfo } +constructor TEasyPaintInfoBaseGroup.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FBandBlended := True; + FBandColor := clBlue; + FBandColorFade := clWindow; + FBandEnabled := True; + FBandLength := 300; + FBandMargin := 2; + FBandRadius := 4; + FBandThickness := 3; + FExpandable := True; + FExpanded := True; + FExpandImageIndent := 4; + FMarginBottom := TEasyFooterMargin.Create(AnOwner); + FMarginLeft := TEasyMargin.Create(AnOwner); + FMarginRight := TEasyMargin.Create(AnOwner); + FMarginTop := TEasyHeaderMargin.Create(AnOwner); +end; + +destructor TEasyPaintInfoBaseGroup.Destroy; +begin + inherited; + FreeAndNil(FMarginBottom); + FreeAndNil(FMarginLeft); + FreeAndNil(FMarginRight); + FreeAndNil(FMarginTop); +end; + +function TEasyPaintInfoBaseGroup.GetMarginBottom: TCustomEasyFooterMargin; +begin + Result := FMarginBottom +end; + +function TEasyPaintInfoBaseGroup.GetMarginLeft: TEasyMargin; +begin + Result := FMarginLeft +end; + +function TEasyPaintInfoBaseGroup.GetMarginRight: TEasyMargin; +begin + Result := FMarginRight +end; + +function TEasyPaintInfoBaseGroup.GetMarginTop: TEasyHeaderMargin; +begin + Result := FMarginTop +end; + +procedure TEasyPaintInfoBaseGroup.Assign(Source: TPersistent); +var + Temp: TEasyPaintInfoBaseGroup; +begin + inherited Assign(Source); + if Source is TEasyPaintInfoBaseGroup then + begin + Temp := TEasyPaintInfoBaseGroup(Source); + FBandBlended := Temp.BandBlended; + FBandColor := Temp.BandColor; + FBandColorFade := Temp.BandColorFade; + FBandEnabled := Temp.BandEnabled; + FBandFullWidth := Temp.BandFullWidth; + FBandIndent := Temp.BandIndent; + FBandLength := Temp.BandLength; + FBandMargin := Temp.BandMargin; + FBandRadius := Temp.BandRadius; + FBandThickness := Temp.BandThickness; + FExpandable := Temp.Expandable; + FExpandImageIndent := Temp.ExpandImageIndent; + MarginBottom.Assign(Temp.MarginBottom); + MarginLeft.Assign(Temp.MarginLeft); + MarginRight.Assign(Temp.MarginRight); + MarginTop.Assign(Temp.MarginTop); + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandBlended(Value: Boolean); +begin + if Value <> FBandBlended then + begin + FBandBlended := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandColor(Value: TColor); +begin + if Value <> FBandColor then + begin + FBandColor := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandColorFade(Value: TColor); +begin + if Value <> FBandColorFade then + begin + FBandColorFade := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandEnabled(Value: Boolean); +begin + if Value <> FBandEnabled then + begin + FBandEnabled := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandFullWidth(Value: Boolean); +begin + if Value <> FBandFullWidth then + begin + FBandFullWidth := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandIndent(Value: Integer); +begin + if Value <> FBandIndent then + begin + FBandIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandLength(Value: Integer); +begin + if Value <> FBandLength then + begin + FBandLength := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandMargin(Value: Integer); +begin + if Value <> FBandMargin then + begin + FBandMargin := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandRadius(Value: Byte); +begin + if Value <> FBandRadius then + begin + FBandRadius := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetBandThickness(Value: Integer); +begin + if Value <> FBandThickness then + begin + FBandThickness := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetExpandable(Value: Boolean); +begin + if Value <> FExpandable then + begin + FExpandable := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetExpandImageIndent(Value: Integer); +begin + if Value <> FExpandImageIndent then + begin + FExpandImageIndent := Value; + Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseGroup.SetMarginBottom( + Value: TCustomEasyFooterMargin); +begin + if Value <> FMarginBottom then + begin + FreeAndNil(FMarginBottom); + FMarginBottom := Value + end +end; + +procedure TEasyPaintInfoBaseGroup.SetMarginLeft(Value: TEasyMargin); +begin + if Value <> FMarginLeft then + begin + FreeAndNil(FMarginLeft); + FMarginLeft := Value + end +end; + +procedure TEasyPaintInfoBaseGroup.SetMarginRight(Value: TEasyMargin); +begin + if Value <> FMarginRight then + begin + FreeAndNil(FMarginRight); + FMarginRight := Value + end +end; + +procedure TEasyPaintInfoBaseGroup.SetMarginTop(Value: TEasyHeaderMargin); +begin + if Value <> FMarginTop then + begin + FreeAndNil(FMarginTop); + FMarginTop := Value + end +end; + +{ TEasyHotTrackManager} +constructor TEasyHotTrackManager.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FColor := clHighlight; + FUnderLine := True; + FCursor := crHandPoint; + FGroupTrack := [htgIcon, htgText]; + FItemTrack := [htiIcon, htiText]; + FColumnTrack := [htcIcon, htcText] +end; + +function TEasyHotTrackManager.GetPendingObject(MousePos: TPoint): TEasyCollectionItem; +begin + Result := FPendingObject +end; + +procedure TEasyHotTrackManager.SetPendingObject(MousePos: TPoint; Value: TEasyCollectionItem); +var + TempOldItem: TEasyCollectionItem; + OldCapture: HWnd; +begin + if FPendingObject <> Value then + begin + TempOldItem := FPendingObject; + FPendingObject := nil; + if Enabled or (Value = nil) then + begin + if Assigned(OwnerListview) and OwnerListview.HandleAllocated then + begin + // Make sure the hot track will end + if Assigned(Value) then + Mouse.Capture := OwnerListview.Handle + else + if Mouse.Capture = OwnerListview.Handle then + Mouse.Capture := 0; + + // Cursor only works if no Window is captured + OldCapture := Mouse.Capture; + Mouse.Capture := 0; + if Assigned(Value) then + OwnerListview.Cursor := Cursor + else + OwnerListview.Cursor := crDefault; + Mouse.Capture := OldCapture; + + end + end; + // PendingObject must be nil when this is executed + // Always fire the event for custom hottracking + if Assigned(TempOldItem) then + TempOldItem.HotTracking[MousePos] := False; + FPendingObject := Value; + if Assigned(FPendingObject) then + FPendingObject.HotTracking[MousePos] := True; + end +end; + +procedure TEasyHotTrackManager.SetPendingObjectCheck(const Value: TEasyCollectionItem); +begin + if Value <> FPendingObjectCheck then + begin + if Assigned(FPendingObjectCheck) then + FPendingObjectCheck.CheckHovering := False; + FPendingObjectCheck := Value; + if Assigned(FPendingObjectCheck) then + FPendingObjectCheck.CheckHovering := True; + end +end; + +{ TEasyPaintInfoBaseColumn } + +constructor TEasyPaintInfoBaseColumn.Create(AnOwner: TCustomEasyListview); +begin + inherited; + FColor := clBtnFace; + FSortGlyphAlign := esgaRight; + FSortGlyphIndent := 2; + FHotTrack := True; + FStyle := ehbsThick; + FImagePosition := ehpLeft; + FHilightFocusedColor := $00F7F7F7; +end; + +procedure TEasyPaintInfoBaseColumn.SetColor(Value: TColor); +begin + if Value <> FColor then + begin + FColor := Value; + OwnerListview.Header.Invalidate(False); + end +end; + +procedure TEasyPaintInfoBaseColumn.SetHilightFocused(const Value: Boolean); +begin + if FHilightFocused <> Value then + begin + FHilightFocused := Value; + if Assigned(OwnerListview) then + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyPaintInfoBaseColumn.SetHilightFocusedColor(const Value: TColor); +begin + if FHilightFocusedColor <> Value then + begin + FHilightFocusedColor := Value; + if Assigned(OwnerListview) then + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyPaintInfoBaseColumn.SetImagePosition(Value: TEasyHeaderImagePosition); +begin + if Value <> FImagePosition then + begin + FImagePosition := Value; + OwnerListview.Header.Invalidate(False); + end +end; + +procedure TEasyPaintInfoBaseColumn.SetSortGlpyhAlign(Value: TEasySortGlyphAlign); +begin + if Value <> FSortGlyphAlign then + begin + FSortGlyphAlign := Value; + OwnerListview.Header.Invalidate(False); + end +end; + +procedure TEasyPaintInfoBaseColumn.SetSortGlyphIndent(Value: Integer); +begin + if Value <> FSortGlyphIndent then + begin + FSortGlyphIndent := Value; + OwnerListview.Header.Invalidate(False) + end +end; + +procedure TEasyPaintInfoBaseColumn.SetStyle(Value: TEasyHeaderButtonStyle); +begin + if Value <> FStyle then + begin + FStyle := Value; + OwnerListview.Header.Invalidate(False) + end +end; + +{ TEasyViewReportItem} +function TEasyViewReportItem.AllowDrag(Item: TEasyItem; ViewportPoint: TPoint): Boolean; +var + RectArray: TEasyRectArrayObject; + R: TRect; +begin + if FullRowSelect then + begin + ItemRectArray(Item, nil, OwnerListview.ScratchCanvas, Item.Caption, RectArray); + UnionRect(R, RectArray.TextRect, RectArray.IconRect); + if Item.Selected and Windows.PtInRect(R, ViewportPoint) then + Result := True + else + Result := False + end else + Result := inherited AllowDrag(Item, ViewportPoint); +end; + + +function TEasyViewReportItem.CalculateDisplayRect(Item: TEasyItem; + Column: TEasyColumn): TRect; +begin + Result := Item.DisplayRect; + if Assigned(Column) then + begin + Result.Left := Column.DisplayRect.Left; + Result.Right := Column.DisplayRect.Right; + + if Column.Position = 0 then + Result.Left := Item.OwnerGroup.MarginLeft.RuntimeSize; + if Column.Position = Column.OwnerColumns.Count - 1 then + Result.Right := Result.Right - Item.OwnerGroup.MarginRight.RuntimeSize + end +end; + +function TEasyViewReportItem.ExpandTextR(Item: TEasyItem; RectArray: TEasyRectArrayObject; SelectType: TEasySelectHitType): TRect; +begin + Result := inherited ExpandTextR(Item, RectArray, SelectType); + // If dragging and dropping only concider the basic ReportView item as the drop target. + if FullRowSelect and not Assigned(OwnerListview.DragManager.DragItem) {and (SelectType = eshtClickselect)} then + begin + Result.Left := Item.OwnerGroup.MarginLeft.RunTimeSize; + Result.Right := Item.DisplayRect.Right; + end +end; + +function TEasyViewReportItem.FullRowSelect: Boolean; +begin + Result := False; + if Assigned(OwnerListview) then + Result := OwnerListview.Selection.FullRowSelect +end; + +function TEasyViewReportItem.PaintStateImage: Boolean; +begin + Result := True +end; + +function TEasyViewReportItem.SelectionHit(Item: TEasyItem; SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; +var + R: TRect; + RectArray: TEasyRectArrayObject; +begin + Result := False; + if Item.Enabled and not IsRectEmpty(SelectViewportRect) then + begin + // Selection is always based on the first column + ItemRectArray(Item, OwnerListview.Header.FirstColumn, OwnerListview.ScratchCanvas, '', RectArray); + Result := IntersectRect(R, SelectViewportRect, ExpandTextR(Item, RectArray, SelectType)) or + IntersectRect(R, SelectViewportRect, ExpandIconR(Item, RectArray, SelectType)) + end +end; + +function TEasyViewReportItem.SelectionHitPt(Item: TEasyItem; ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; +var + RectArray: TEasyRectArrayObject; +begin + Result := False; + if Item.Enabled then + begin + // Selection is always based on the first column + ItemRectArray(Item, OwnerListview.Header.FirstColumn, OwnerListview.ScratchCanvas, '', RectArray); + Result := Windows.PtInRect(ExpandTextR(Item, RectArray, SelectType), ViewportPoint) or + Windows.PtInRect(ExpandIconR(Item, RectArray, SelectType), ViewportPoint) + end +end; + +{ TEasyHintWindow } +constructor TEasyHintWindow.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + {$IFDEF GXDEBUG_HINT} + SendDebug('TEasyHintWindow.Create'); + {$ENDIF GXDEBUG_HINT} +end; + + +destructor TEasyHintWindow.Destroy; +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('TEasyHintWindow.Destroy'); + {$ENDIF GXDEBUG_HINT} + inherited Destroy; +end; + +procedure TEasyHintWindow.ActivateHint(ARect: TRect; const AHint: string); +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('TEasyHintWindow.ActivateHint'); + {$ENDIF GXDEBUG_HINT} + inherited; +end; + +procedure TEasyHintWindow.ActivateHintData(ARect: TRect; + const AHint: string; AData: Pointer); +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('TEasyHintWindow.ActivateHintData'); + {$ENDIF GXDEBUG_HINT} + inherited; +end; + +function TEasyHintWindow.CalcHintRect(MaxWidth: Integer; + const AHint: string; AData: Pointer): TRect; +var + TextFlags: TCommonDrawTextWFlags; +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('TEasyHintWindow.CalcHintRect'); + {$ENDIF GXDEBUG_HINT} + // We passed in our HintInfo through the AData parameter + HintInfo := PEasyHintInfoRec(AData); + + EasyHintInfo := HintInfo.Listview.HintInfo; + + EasyHintInfo.FCanvas := Canvas; + EasyHintInfo.FHintType := HintInfo.HintType; + EasyHintInfo.FText := HintInfo.HintStr; + EasyHintInfo.FColor := HintInfo.HintColor; + EasyHintInfo.FCursorPos := HintInfo.CursorPos; + EasyHintInfo.FHideTimeout := HintInfo.HideTimeout; + EasyHintInfo.FMaxWidth := HintInfo.HintMaxWidth; + EasyHintInfo.FReshowTimeout := HintInfo.ReshowTimeout; + EasyHintInfo.FWindowPos := HintInfo.HintPos; + + EasyHintInfo.FBounds := Rect(0, 0, MaxWidth, 0); + + HintInfo.Listview.DoHintCustomInfo(HintInfo.TargetObj, EasyHintInfo); + + HintInfo.HintStr := FEasyHintInfo.Text; + HintInfo.HintType := EasyHintInfo.FHintType; + HintInfo.HintColor := EasyHintInfo.FColor; + HintInfo.CursorPos := EasyHintInfo.FCursorPos; + HintInfo.HideTimeout := EasyHintInfo.FHideTimeout; + HintInfo.HintMaxWidth := EasyHintInfo.FMaxWidth; + HintInfo.ReshowTimeout := EasyHintInfo.FReshowTimeout; + HintInfo.HintPos := EasyHintInfo.FWindowPos; + + + if (HintInfo.HintType = ehtText) or (HintInfo.HintType = ehtToolTip) then + begin + case PEasyHintInfoRec( HintInfo)^.Listview.HintAlignment of + taLeftJustify: TextFlags := [dtLeft, dtCalcRect, dtCalcRectAdjR, dtWordBreak]; + taRightJustify: TextFlags := [dtRight, dtCalcRect, dtCalcRectAdjR, dtWordBreak]; + taCenter: TextFlags := [dtCenter, dtCalcRect, dtCalcRectAdjR, dtWordBreak]; + end; + DrawTextWEx(Canvas.Handle, HintInfo.HintStr, EasyHintInfo.FBounds, TextFlags, -1); + Inc(EasyHintInfo.FBounds.Right, 6); + Inc(EasyHintInfo.FBounds.Bottom, 2) + end; + + Result := EasyHintInfo.FBounds; +end; + +function TEasyHintWindow.IsHintMsg(var Msg: TMsg): Boolean; +begin + {$IFDEF GXDEBUG_HINT} +// SendDebug('TEasyHintWindow.IsHintMsg'); + {$ENDIF GXDEBUG_HINT} + Result := inherited IsHintMsg(Msg) +end; + +procedure TEasyHintWindow.Paint; +var + TextFlags: TCommonDrawTextWFlags; + R: TRect; +begin + {$IFDEF GXDEBUG_HINT} + SendDebug('TEasyHintWindow.IsHintMsg'); + {$ENDIF GXDEBUG_HINT} + if HintInfo.HintType <> ehtCustomDraw then + begin + case PEasyHintInfoRec( HintInfo)^.Listview.HintAlignment of + taLeftJustify: TextFlags := [dtLeft, dtVCenter]; + taRightJustify: TextFlags := [dtRight, dtVCenter]; + taCenter: TextFlags := [dtCenter, dtVCenter]; + end; + R := FEasyHintInfo.Bounds; + InflateRect(R, -2, -2); + DrawTextWEx(Canvas.Handle, HintInfo.HintStr, R, TextFlags, -1); + end else + begin + R := ClientRect; + InflateRect(R, -2, -2); + HintInfo.Listview.DoHintCustomDraw(HintInfo.TargetObj, FEasyHintInfo) + end +end; + +{ TEasySortManager } + +constructor TEasySortManager.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FAlgorithm := esaMergeSort; + FSorter := TEasyMergeSort.Create(Self); +end; + +destructor TEasySortManager.Destroy; +begin + FreeAndNil(FSorter); + inherited Destroy; +end; + +function TEasySortManager.CollectionSupportsInterfaceSorting(Collection: TEasyCollection): Boolean; +var + i: Integer; +begin + Result := True; + i := 0; + while (i < Collection.Count) and Result do + begin + Result := CommonSupports(Collection[i].DataInf, IEasyCompare); + Inc(i) + end +end; + +procedure TEasySortManager.BeginUpdate; +begin + InterlockedIncrement(FUpdateCount); +end; + +procedure TEasySortManager.EndUpdate; +begin + InterlockedDecrement(FUpdateCount); + if (UpdateCount <= 0) and AutoSort then + begin + UpdateCount := 0; + SortAll + end +end; + +procedure TEasySortManager.GroupItem(Item: TEasyItem; ColumnIndex: Integer; + Key: LongWord); +// +// WARNING: Do not access the items OwnerListview property as it is an orphaned +// item when it is passed to this method (the collection property is nil) +// +var + i: Integer; + Done, DefaultAction: Boolean; + Groups: TEasyGroups; + Group: TEasyGroup; +begin + i := 0; + Done := False; + Groups := OwnerListview.Groups; + while not Done and (i < Groups.Count) do + begin + if Key = Groups[i].Key then + begin + Groups[i].Items.List.Add(Item); + Item.FCollection := Groups[i].Items; + Done := True; + end; + Inc(i) + end; + if not Done then + begin + Group := nil; + DefaultAction := True; + OwnerListview.DoAutoSortGroupCreate(Item, ColumnIndex, Groups, Group, DefaultAction); + + if DefaultAction then + begin + if Key > 0 then + Group.Caption := UpperCase( WideChar(Key)) + end; + + Group.Key := Key; + Group.Items.List.Add(Item); + Item.FCollection := Groups[i].Items; + end +end; + +procedure TEasySortManager.ReGroup(Column: TEasyColumn); +var + Groups: TEasyGroups; + Item: TEasyItem; + i, j, ColumnIndex, Index: Integer; + Key: Integer; + Caption: WideString; +begin + OwnerListview.BeginUpdate; + try + if Assigned(Column) then + ColumnIndex := Column.Index + else + ColumnIndex := 0; + // Move the items into a temporary storage structure + Groups := OwnerListview.Groups; + SetLength(FSortList, Groups.ItemCount); + Index := 0; + for i := 0 to Groups.Count - 1 do + for j := 0 to Groups[i].ItemCount - 1 do + begin + Item := Groups[i][j]; + if OwnerListview.Sort.AutoRegroup then + begin + SortList[Index].Key := $FFFF; + OwnerListview.DoAutoGroupGetKey(Item, ColumnIndex, Groups, SortList[Index].Key); + if SortList[Index].Key = $FFFF then + begin + Caption := Item.Caption; + if Length(Caption) = 0 then + SortList[Index].Key := 0 + else + SortList[Index].Key := Ord(WideLowerCase(Caption)[1]) + end else + Item.GroupKey[ColumnIndex] := SortList[Index].Key; + end; + SortList[Index].Item := Item; + Item.FCollection := nil; // Orphan the item from the collection + Groups[i].Item[j] := nil; + Inc(Index) + end; + for i := 0 to Groups.Count - 1 do + Groups[i].FItems.FList.Pack; + // Clear the control of items + Groups.Clear; + + for i := 0 to Length(SortList) - 1 do + begin + Item := TEasyItem( SortList[i].Item); + Key := SortList[i].Key; + GroupItem(Item, ColumnIndex, Key); + end; + OwnerListview.Sort.SortAll; + finally + // done with SortList + SetLength(FSortList, 0); + OwnerListview.EndUpdate(True) + end +end; + +procedure TEasySortManager.SetAlgorithm(Value: TEasySortAlgorithm); +begin + if FAlgorithm <> Value then + begin + FreeAndNil(FSorter); + case Value of + esaQuicksort: FSorter := TEasyQuicksort.Create(Self); + esaBubbleSort: FSorter := TEasyBubbleSort.Create(Self); + esaMergeSort: FSorter := TEasyMergeSort.Create(Self); + end; + FAlgorithm := Value + end +end; + +procedure TEasySortManager.SetAutoRegroup(Value: Boolean); +begin + if Value <> FAutoRegroup then + begin + OwnerListview.BeginUpdate; + try + OwnerListview.ShowGroupMargins := Value; + FAutoRegroup := Value; + ReGroup(OwnerListview.Selection.FocusedColumn); + finally + OwnerListview.EndUpdate(True); + end + end +end; + +procedure TEasySortManager.SetAutoSort(Value: Boolean); +begin + if Value <> FAutoSort then + begin + FAutoSort := Value; + if not Assigned(OwnerListview.Selection.FocusedColumn) then + OwnerListview.Selection.FocusedColumn := OwnerListview.Header.FirstColumn; + if Value then + SortAll + end +end; + +procedure TEasySortManager.SortAll(Force: Boolean = False); +var + i: Integer; + SupportsInterfaces: Boolean; +begin + if Assigned(Sorter) and Assigned(OwnerListview) and (({(OwnerListview.UpdateCount = 0) and} (UpdateCount = 0) and not LockoutSort) or Force) then + begin + SupportsInterfaces := CollectionSupportsInterfaceSorting(OwnerListview.Groups); + Sorter.Sort(nil, OwnerListview.Groups, 0, OwnerListview.Groups.Count - 1, OwnerListview.DoGroupCompare, nil, SupportsInterfaces); + for i := 0 to OwnerListview.Groups.Count - 1 do + begin + SupportsInterfaces := CollectionSupportsInterfaceSorting(OwnerListview.Groups[i].Items); + Sorter.Sort(OwnerListview.GetSortColumn, OwnerListview.Groups[i].Items, 0, OwnerListview.Groups[i].ItemCount - 1, nil, OwnerListview.DoItemCompare, SupportsInterfaces); + end; + if not (egsRebuilding in OwnerListview.Groups.GroupsState) then + OwnerListview.Groups.Rebuild(True) + end +end; + +{ TEasyQuicksort} +procedure TEasyQuicksort.Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); +var + I, J: Integer; + P, Temp: TEasyCollectionItem; +begin + // Quicksort is not Stable, i.e. duplicate items may not be in the same + // order with each pass of the sort. + if Max > Collection.Count - 1 then + Max := Collection.Count - 1; + + if Max > Min then + begin + repeat + I := Min; + J := Max; + P := Collection.Items[(Min + Max) shr 1]; + repeat + if UseInterfaces then + begin + while (P.DataInf as IEasyCompare).Compare(Collection.Items[I].DataInf, Column) < 0 do + Inc(I); + while (P.DataInf as IEasyCompare).Compare(Collection.Items[J].DataInf, Column) > 0 do + Dec(J); + end else + if Assigned(GroupCompare) then + begin + while GroupCompare(Column, TEasyGroup(Collection.Items[I]), TEasyGroup(P)) < 0 do + Inc(I); + while GroupCompare(Column, TEasyGroup(Collection.Items[J]), TEasyGroup(P)) > 0 do + Dec(J); + end else + if Assigned(ItemCompare) then + begin + while ItemCompare(Column, TEasyItems(Collection).OwnerGroup, TEasyItem(Collection.Items[I]), TEasyItem(P)) < 0 do + Inc(I); + while ItemCompare(Column, TEasyItems(Collection).OwnerGroup, TEasyItem(Collection.Items[J]), TEasyItem(P)) > 0 do + Dec(J); + end else + begin + while DefaultSort(Column, Collection.Items[I], P) < 0 do + Inc(I); + while DefaultSort(Column, Collection.Items[J], P) > 0 do + Dec(J); + end; + if I <= J then + begin + Temp := Collection.Items[I]; + Collection.Items[I] := Collection.Items[J]; + Collection.Items[J] := Temp; + Inc(I); + Dec(J); + end; + until I > J; + if Min < J then Sort(Column, Collection, Min, J, GroupCompare, ItemCompare, UseInterfaces); + Min := I; + until I >= Max; + end +end; + +{ TEasyBubbleSort} +procedure TEasyBubbleSort.Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); +var + LastSwap, i, j, SortResult : Integer; + Tmp: TEasyCollectionItem; +begin + // During this loop, min and max are the smallest and largest + // indexes of items that might still be out of order. + + // Repeat until we are done. + while (Min < Max) do + begin + // Bubble up. + LastSwap := Min - 1; + // for i := min + 1 to max + i := min + 1; + while (i <= Max) do + begin + // Find a bubble. + if UseInterfaces then + SortResult := (Collection.Items[i].DataInf as IEasyCompare).Compare(Collection.Items[i - 1].DataInf, Column) + else + if Assigned(GroupCompare) then + SortResult := GroupCompare(Column, TEasyGroup(Collection.Items[i - 1]), TEasyGroup(Collection.Items[i])) + else + if Assigned(ItemCompare) then + SortResult := ItemCompare(Column, TEasyItems(Collection).OwnerGroup, TEasyItem(Collection.Items[i - 1]), TEasyItem(Collection.Items[i])) + else + SortResult := DefaultSort(Column, Collection.Items[i - 1], Collection.Items[i]); + + if SortResult > 0 then + begin + // See where to drop the bubble. + Tmp := Collection.Items[i - 1]; + j := i; + repeat + Collection.Items[j - 1] := Collection.Items[j]; + j := j + 1; + if (j > max) then + Break; + + if UseInterfaces then + SortResult := (Tmp.DataInf as IEasyCompare).Compare(Collection.Items[j].DataInf, Column) + else + if Assigned(GroupCompare) then + SortResult := GroupCompare(Column, TEasyGroup(Collection.Items[j]), TEasyGroup(Tmp)) + else + if Assigned(ItemCompare) then + SortResult := ItemCompare(Column, TEasyItems(Collection).OwnerGroup, TEasyItem(Collection.Items[j]), TEasyItem(Tmp)) + else + SortResult := DefaultSort(Column, Collection.Items[j], Tmp); + + until SortResult >= 0; + Collection.Items[j - 1] := Tmp; + LastSwap := j - 1; + i := j + 1; + end else + i := i + 1; + end; + // End bubbling up. + + // Update max. + Max := LastSwap - 1; + + // Bubble down. + LastSwap := Max + 1; + // for i := max - 1 downto min + i := Max - 1; + while (i >= Min) do + begin + // Find a bubble. + if UseInterfaces then + SortResult := (Collection.Items[i].DataInf as IEasyCompare).Compare(Collection.Items[i + 1].DataInf, Column) + else + if Assigned(GroupCompare) then + SortResult := GroupCompare(Column, TEasyGroup(Collection.Items[i + 1]), TEasyGroup(Collection.Items[i])) + else + if Assigned(ItemCompare) then + SortResult := ItemCompare(Column, TEasyItems(Collection).OwnerGroup, TEasyItem(Collection.Items[i + 1]), TEasyItem(Collection.Items[i])) + else + SortResult := DefaultSort(Column, Collection.Items[i + 1], Collection.Items[i]); + + if SortResult < 0 then + begin + // See where to drop the bubble. + Tmp := Collection.Items[i + 1]; + j := i; + repeat + Collection.Items[j + 1] := Collection.Items[j]; + j := j - 1; + if j < Min then + Break; + + if UseInterfaces then + SortResult := (Tmp.DataInf as IEasyCompare).Compare(Collection.Items[j].DataInf, Column) + else + if Assigned(GroupCompare) then + SortResult := GroupCompare(Column, TEasyGroup(Collection.Items[j]), TEasyGroup(Tmp)) + else + if Assigned(ItemCompare) then + SortResult := ItemCompare(Column, TEasyItems(Collection).OwnerGroup, TEasyItem(Collection.Items[j]), TEasyItem(Tmp)) + else + SortResult := DefaultSort(Column, Collection.Items[j], Tmp); + + until SortResult <= 0; + Collection.Items[j + 1] := Tmp; + LastSwap := j + 1; + i := j - 1; + end else + i := i - 1; + end; + // End bubbling down. + + // Update min. + Min := LastSwap + 1; + end; +end; + +{ TEasyMergeSort } +function TEasyMergeSort.CompareDefault(i1, i2: TEasyCollectionItem): Boolean; +begin + Result := DefaultSort(Column, i1, i2) <= 0; +end; + +function TEasyMergeSort.CompareGroup(i1, i2: TEasyCollectionItem): Boolean; +begin + Result := GroupCompareFunc(Column, TEasyGroup(i1), TEasyGroup(i2)) <= 0; +end; + +function TEasyMergeSort.CompareInterfaces(i1, i2: TEasyCollectionItem): Boolean; +begin + Result:=(i2.DataInf as IEasyCompare).Compare(i1.DataInf, Column) <= 0; +end; + +function TEasyMergeSort.CompareItem(i1, i2: TEasyCollectionItem): Boolean; +begin + Result := ItemCompareFunc(Column, OwnerGroup, TEasyItem(i1), TEasyItem(i2)) <= 0; +end; + +procedure TEasyMergeSort.Sort(Column: TEasyColumn; Collection: TEasyCollection; Min, Max: Integer; GroupCompare: TEasyDoGroupCompare; ItemCompare: TEasyDoItemCompare; UseInterfaces: Boolean); +type + TEasyMergeSortCompare=function (i1, i2: TEasyCollectionItem): Boolean of object; +var + CompareFunc: TEasyMergeSortCompare; + + procedure subMerge(dst: TEasyCollection; ld, md, hd: Integer; src: TEasyCollection; ls, ms: Integer); + { dst src + hd + aa + md ms + xx bb bb+aa->xxaa + ld ls } + var + i, j, d: Integer; + begin + i := ls; + j := md; + d := ld; + while i< ms do + begin + if (j = hd) or (compareFunc(src[i], dst[j])) then + begin + dst[d] := src[i]; + Inc(i); + end + else + begin + dst[d] := dst[j]; + Inc(j); + end; + Inc(d); + end; + end; + + procedure subSortM(dst: TEasyCollection; ld, hd: Integer; src: TEasyCollection; ls, hs: Integer); forward; + + procedure subSortI(dst: TEasyCollection; ld, hd: Integer; tmp: TEasyCollection; lt, ht: Integer); + var + m2: Integer; //I for Inplace + x3: Pointer; + { - hd + | A inplace AA->AA + m2 A ht move bbb->ccc + b c merge ccc+AA->bbbAA + b c + ld b lt c ht-lt>=hd-m2-ld ! } + begin + if (hd >= ld + 3) then + begin + m2 := (hd - ld) div 2; + subSortI(dst, hd-m2, hd, tmp, lt, lt + m2); //sort random AA->sorted AA, using cc as scratchpad + subSortM(tmp, lt, lt+(hd-ld-m2), dst, ld, hd -m2); //sort random bbb->sorted ccc + subMerge(dst, ld, hd - m2, hd, tmp, lt, lt + (hd - ld - m2)); //merge sorted ccc+sorted AA->bbbAA + end + else if (hd = ld + 2) then + begin + if not compareFunc(dst[ld], dst[ld + 1]) then + begin + x3 := dst[ld]; + dst[ld] := dst[ld + 1]; + dst[ld + 1] := x3; + end; + end; + end; + + procedure subSortM(dst: TEasyCollection; ld, hd: Integer; src: TEasyCollection; ls, hs: Integer); + var m2: Integer; //M for Move + { hd hs hd hs + c A c b + c A c b + m2 c a m2 c A + d b d a + ld d ls b ld d ls a } + begin + if (hs >= ls + 3) then + begin + m2 := (hs - ls) div 2; + subSortM(dst, ld +m2, hd, src, ls + m2, hs); //sort random aAA->sorted ccc + subSortI(src, ls, ls + m2, dst, ld, ld + m2); //sort random bb->sorted bb, using dd as scratchpad + subMerge(dst, ld, ld + m2, hd, src, ls, ls + m2); //merge bb+ccc->ddccc + end + else if (hs = ls + 2) then + begin + if not compareFunc(src[ls], src[ls+1]) then + begin + dst[ld] := src[ls + 1]; + dst[ld+1] := src[ls]; + end + else + begin + dst[ld] := src[ls]; + dst[ld + 1] := src[ls + 1]; + end + end + else if (hs = ls + 1) then + dst[ld] := src[ls]; + end; + +var m: Integer; + TempList: TEasyCollection; +begin + if Max > Collection.Count - 1 then + Max := Collection.Count - 1; + if (Max <= Min) then + Exit; + + Self.Column := Column; + OwnerGroup := TEasyItems(Collection).OwnerGroup; + GroupCompareFunc := GroupCompare; + ItemCompareFunc := ItemCompare; + + TempList := TEasyCollection.Create(nil); + m:=(Max - Min + 2) div 2; + TempList.List.Capacity := m; + TempList.List.Count := m; + + if (UseInterfaces) then + CompareFunc := CompareInterfaces + else if Assigned(GroupCompareFunc) then + CompareFunc := CompareGroup + else if Assigned(ItemCompareFunc) then + CompareFunc := CompareItem + else + CompareFunc := CompareDefault; + + subSortI(Collection, Min, Max + 1, TempList, Min, (Min + Max + 2) div 2); + + TempList.List.Count := 0; + TempList.List.Capacity := 0; + FreeAndNil(TempList); +end; + +{ TEasyStringEditor } + +function TEasyBaseEditor.AcceptEdit: Boolean; +var + WS: Variant; +begin + Result := True; + WS := GetText; + Listview.DoItemEdited(Item, WS, Result); + if Result then + begin + if Assigned(EditColumn) then + Item.Captions[EditColumn.Index] := WS + else + Item.Caption := WS; + Listview.EditManager.EndEdit + end +end; + +function TEasyBaseEditor.GetEditor: TWinControl; +begin + Result := FEditor; +end; + +function TEasyBaseEditor.GetEditorColor: TColor; +begin + Result := Listview.EditManager.Color +end; + +function TEasyBaseEditor.GetHandle: HWnd; +begin + if Assigned(FEditor) and (FEditor.HandleAllocated) then + Result := FEditor.Handle + else + Result := 0; +end; + +function TEasyBaseEditor.GetListview: TCustomEasyListview; +begin + Result := nil; + if Assigned(Item) then + Result := Item.OwnerListview +end; + +function TEasyBaseEditor.GetModified: Boolean; +begin + Result := Modified +end; + +function TEasyBaseEditor.PtInEditControl(WindowPt: TPoint): Boolean; +begin + Result := PtInRect(Editor.BoundsRect, WindowPt) +end; + +procedure TEasyBaseEditor.ControlWndHookProc(var Message: TMessage); +// +// Window procedure hook for the Edit box, allows autosizing of edit during user +// input +// +var + Menu: TPopupMenu; +begin + case Message.Msg of + WM_EDITORRESIZE: + begin + ResizeEditor; + end; + WM_CHAR: + begin + if Message.WParam = VK_TAB then + Message.WParam := Ord(' '); + end; + WM_CONTEXTMENU: + begin + Menu := nil; + Listview.DoItemGetEditMenu(Self, Menu); + if Assigned(Menu) then + Menu.Popup(LOWORD(Message.LParam), HIWORD(Message.LParam)) + else + // Don't let the VCL hook the parent window background menu to the editor + CallWindowProc(TWinControlHack(Editor).DefWndProc, Editor.Handle, Message.Msg, Message.wParam, Message.lParam); + Message.Result := 1; + end; + end; + FOldWndProc(Message) +end; + +function TEasyBaseEditor.EditText(Item: TEasyItem; Column: TEasyColumn): WideString; +begin + Result := ''; + Item.OwnerListview.DoItemGetEditCaption(Item, Column, Result); + if Result = '' then + begin + if Assigned(Column) then + Result := Item.Captions[Column.Index] + else + Result := Item.Caption + end +end; + +procedure TEasyBaseEditor.Finalize; +begin + EditColumn := nil; + // Only unhook if it is our hook + if EqualWndMethod(Editor.WindowProc, ControlWndHookProc) then + Editor.WindowProc := OldWndProc; + FreeAndNil(FEditor) +end; + +procedure TEasyBaseEditor.Hide; +begin + Editor.Visible := False +end; + +procedure TEasyBaseEditor.Initialize(AnItem: TEasyItem; Column: TEasyColumn); +begin + FItem := AnItem; + FEditColumn := Column; + CreateEditor(FEditor, Column, Listview); + Editor.Visible := False; + OldWndProc := Editor.WindowProc; + Editor.WindowProc := ControlWndHookProc; + Editor.DoubleBuffered := True; + TWinControlHack( Editor).Color := GetEditorColor; + GetEditorFont.Assign(Listview.EditManager.Font); + Item.ItemRectArray(Column, AnItem.OwnerListview.ScratchCanvas, FRectArray); + ResizeEditor; + SetWindowLong(Editor.Handle, GWL_EXSTYLE, GetWindowLong(Editor.Handle, GWL_EXSTYLE) or WS_EX_TOPMOST); +end; + +procedure TEasyBaseEditor.ResizeEditor; +var + R: TRect; +begin + CalculateEditorRect(GetText, R); + Editor.SetBounds(R.Left, + R.Top, + RectWidth(R), + RectHeight(R)); +end; + +procedure TEasyBaseEditor.SetEditor(const Value: TWinControl); +begin + FEditor := Value; +end; + +procedure TEasyBaseEditor.SetEditorFocus; +begin + Editor.SetFocus; +end; + +procedure TEasyBaseEditor.Show; +begin + Editor.Visible := True; +end; + +{ TEasySelectionGroupList } + +constructor TEasySelectionGroupList.Create; +begin + FList := TList.Create +end; + +destructor TEasySelectionGroupList.Destroy; +begin + FreeAndNil(FList); + inherited +end; + +function TEasySelectionGroupList.Count: Integer; +begin + Result := List.Count +end; + +function TEasySelectionGroupList.GetItems(Index: Integer): TEasyItem; +begin + Result := TEasyItem( List.Items[Index]) +end; + +procedure TEasySelectionGroupList.Add(Item: TEasyItem); +begin + List.Add(Item) +end; + +procedure TEasySelectionGroupList.Clear; +begin + List.Clear +end; + +procedure TEasySelectionGroupList.DecRef; +begin + Dec(FRefCount); + if FRefCount = 0 then + Destroy +end; + +procedure TEasySelectionGroupList.IncRef; +begin + Inc(FRefCount) +end; + +procedure TEasySelectionGroupList.SetItems(Index: Integer; Value: TEasyItem); +begin + List.Items[Index] := Value +end; + +function TEasyGridIconGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.Icon +end; + +procedure TEasyGridIconGroup.AutoSizeCells; +begin + // Do nothing +end; + +procedure TEasyGridIconGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.Icon.Assign(Value) +end; + +function TEasyGridSmallIconGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.SmallIcon +end; + +procedure TEasyGridSmallIconGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.SmallIcon.Assign(Value) +end; + +function TEasyGridThumbnailGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.Thumbnail +end; + +procedure TEasyGridThumbnailGroup.AutoSizeCells; +begin + // Do nothing +end; + +procedure TEasyGridThumbnailGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.Thumbnail.Assign(Value) +end; + +{ TEasyGridTileGroup} +procedure TEasyGridTileGroup.FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); +begin + +end; + + +function TEasyGridTileGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.Tile +end; + +procedure TEasyGridTileGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.Tile.Assign(Value) +end; + +{ TEasyItemInterfaced} +function TEasyItemInterfaced.ExtractObject: TObject; +begin + if Supports(DataInf, ICommonExtractObj) then + Result := (DataInf as ICommonExtractObj).Obj + else + Result := nil +end; + +function TEasyItemInterfaced.GetCaptions(Column: Integer): Widestring; +var + CaptionInf: IEasyCaptions; +begin + CaptionInf := nil; + if Supports(DataInf, IEasyCaptions, CaptionInf) then + Result := CaptionInf.Captions[Column] +end; + +function TEasyItemInterfaced.GetChecked: Boolean; +var + Checks: IEasyChecks; +begin + Result := False; + Checks := nil; + if Supports(DataInf, IEasyChecks, Checks) then + Result := Checks.GetChecked(0) +end; + +function TEasyItemInterfaced.GetCommonImageIndex(Column: Integer; Kind: TEasyImageKind): TCommonImageIndexInteger; +var + ImageInf: IEasyImages; +begin + Result := -1; + ImageInf := nil; + if Supports(DataInf, IEasyImages, ImageInf) then + Result := ImageInf.ImageIndexes[Column, Kind] +end; + +function TEasyItemInterfaced.GetDetailCount: Integer; +var + TileInf: IEasyDetails; +begin + Result := 1; + TileInf := nil; + if Supports(DataInf, IEasyDetails, TileInf) then + Result := TileInf.GetDetailCount +end; + +function TEasyItemInterfaced.GetDetails(Line: Integer): Integer; +var + TileInf: IEasyDetails; +begin + Result := 0; + TileInf := nil; + if Supports(DataInf, IEasyDetails, TileInf) then + Result := TileInf.Detail[Line] +end; + +function TEasyItemInterfaced.GetGroupKey(FocusedColumn: Integer): LongWord; +var + KeyInf: IEasyGroupKey; +begin + Result := 0; + KeyInf := nil; + if Supports(DataInf, IEasyGroupKey, KeyInf) then + Result := KeyInf.Key[FocusedColumn] +end; + +function TEasyItemInterfaced.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := GetCommonImageIndex(Column, eikNormal); +end; + +function TEasyItemInterfaced.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +var + ImageList: IEasyImageList; +begin + Result := nil; + if Supports(DataInf, IEasyImageList, ImageList) then + Result := ImageList.ImageList[Column, IconSize]; + if not Assigned(Result) then + Result := DefaultImageList(IconSize) +end; + +function TEasyItemInterfaced.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := GetCommonImageIndex(Column, eikOverlay); +end; + +function TEasyItemInterfaced.GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := GetCommonImageIndex(Column, eikState); +end; + +function TEasyItemInterfaced.GetStateImageList(Column: Integer): TCustomImageList; +var + ImageList: IEasyStateImageList; +begin + Result := nil; + if Supports(DataInf, IEasyStateImageList, ImageList) then + Result := ImageList.ImageList[Column]; + if not Assigned(Result) then + Result := DefaultStateImageList +end; + +procedure TEasyItemInterfaced.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +var + ImageInf: IEasyCustomImage; +begin + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.DrawImage(Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyItemInterfaced.ImageDrawGetSize(Column: TEasyColumn; var ImageW, ImageH: Integer); +var + ImageInf: IEasyCustomImage; +begin + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.GetSize(Column, ImageW, ImageH) +end; + +procedure TEasyItemInterfaced.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +var + ImageInf: IEasyCustomImage; +begin + IsCustom := False; + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.CustomDrawn(Column, IsCustom) +end; + +procedure TEasyItemInterfaced.SetCaptions(Column: Integer; Value: Widestring); +var + CaptionInf: IEasyCaptionsEditable; +begin + CaptionInf := nil; + if Supports(DataInf, IEasyCaptionsEditable, CaptionInf) then + begin + CaptionInf.SetCaption(Column, Value); + Invalidate(False) + end +end; + +procedure TEasyItemInterfaced.SetChecked(Value: Boolean); +var + Checks: IEasyChecks; +begin + Checks := nil; + if Supports(DataInf, IEasyChecks, Checks) then + begin + Checks.SetChecked(0, Value); + Invalidate(False) + end +end; + +procedure TEasyItemInterfaced.SetCommonImageIndex(Column: Integer; Kind: TEasyImageKind; Value: TCommonImageIndexInteger); +var + ImageInf: IEasyImagesEditable; +begin + ImageInf := nil; + if Supports(DataInf, IEasyImagesEditable, ImageInf) then + ImageInf.SetImageIndex(Column, Kind, Value) +end; + +procedure TEasyItemInterfaced.SetDetailCount(Value: Integer); +var + DetailsInf: IEasyDetailsEditable; +begin + DetailsInf := nil; + if Supports(DataInf, IEasyDetailsEditable, DetailsInf) then + begin + DetailsInf.DetailCount := Value; + Invalidate(False) + end +end; + +procedure TEasyItemInterfaced.SetDetails(Line: Integer; Value: Integer); +var + DetailsInf: IEasyDetailsEditable; +begin + DetailsInf := nil; + if Supports(DataInf, IEasyDetailsEditable, DetailsInf) then + begin + DetailsInf.Detail[Line] := Value; + Invalidate(False) + end +end; + +procedure TEasyItemInterfaced.SetGroupKey(FocusedColumn: Integer; + Value: LongWord); +var + KeyInf: IEasyGroupKeyEditable; +begin + KeyInf := nil; + if Supports(DataInf, IEasyGroupKeyEditable, KeyInf) then + KeyInf.Key[FocusedColumn] := Value; +end; + +procedure TEasyItemInterfaced.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + SetCommonImageIndex(Column, eikNormal, Value) +end; + +procedure TEasyItemInterfaced.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + SetCommonImageIndex(Column, eikOverlay, Value) +end; + +procedure TEasyItemInterfaced.SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + SetCommonImageIndex(Column, eikState, Value) +end; + +procedure TEasyItemInterfaced.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +var + ThumbInf: IEasyThumbnail; +begin + if Supports(DataInf, IEasyThumbnail, ThumbInf) then + ThumbInf.ThumbnailDraw(ACanvas, ARect, AlphaBlender, DoDefault) +end; + +{ TEasyItem } + +constructor TEasyItem.Create(ACollection: TEasyCollection); +begin + inherited Create(ACollection); + FVisibleIndexInGroup := -1; +end; + +destructor TEasyItem.Destroy; +begin + SetDestroyFlags; + if Assigned(OwnerListview) then + begin + if OwnerListview.DragManager.DropTarget = Self then + OwnerListview.DragManager.FDropTarget := nil; + if OwnerListview.EditManager.TabMoveFocusItem = Self then + OwnerListview.EditManager.TabMoveFocusItem := nil; + if OwnerListview.Selection.AnchorItem = Self then + OwnerListview.Selection.AnchorItem := nil; + if OwnerListview.Selection.FocusedItem = Self then + OwnerListview.Selection.FocusedItem := nil; + if OwnerListview.IncrementalSearch.SearchItem = Self then + OwnerListview.IncrementalSearch.SearchItem := nil; + if OwnerListview.IncrementalSearch.NextSearchItem = Self then + OwnerListview.IncrementalSearch.NextSearchItem := nil; + end; + Visible := False; // will UnSelect and UnFocus if necessary + inherited; + ReleaseSelectionGroup; + FreeAndNil(FView); +end; + +function TEasyItem.AllowDrag(ViewportPt: TPoint): Boolean; +begin + Result := View.AllowDrag(Self, ViewportPt) +end; + +function TEasyItem.CanChangeBold(NewValue: Boolean): Boolean; +begin + Result := True +end; + +function TEasyItem.CanChangeCheck(NewValue: Boolean): Boolean; +begin + if Enabled then + begin + Result := True; + OwnerListview.DoItemCheckChanging(Self, Result); + end + else + Result := False; +end; + +function TEasyItem.CanChangeEnable(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoItemEnableChanging(Self, Result) +end; + +function TEasyItem.CanChangeFocus(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoItemFocusChanging(Self, Result) +end; + +function TEasyItem.CanChangeHotTracking(NewValue: Boolean): Boolean; +begin + Result := True +end; + +function TEasyItem.CanChangeSelection(NewValue: Boolean): Boolean; +begin + Result := True; + OwnerListview.DoItemSelectionChanging(Self, Result) +end; + +function TEasyItem.CanChangeVisibility(NewValue: Boolean): Boolean; +begin + if OwnerGroup.Visible or not NewValue then + begin + Result := True; + OwnerListview.DoItemVisibilityChanging(Self, Result); + end else + Result := False +end; + +function TEasyItem.DefaultStateImageList: TCustomImageList; +begin + Result := OwnerListview.ImagesState +end; + +function TEasyItem.EditAreaHitPt(ViewportPoint: TPoint): Boolean; +// Returns true if the passed point is in an area where the Item conciders it a +// place where inplace editing can be activated. +// +begin + Result := View.EditAreaHitPt(Self, ViewportPoint) +end; + +function TEasyItem.GetColumnPos: Integer; +// +// Returns the current column that the item is in within the grid or -1 if it +// is not visible +// +begin + Result := -1; + if Visible then + Result := VisibleIndexInGroup mod OwnerGroup.Grid.ColumnCount +end; + +function TEasyItem.GetDefaultViewClass: TEasyViewItemClass; +begin + Result := TEasyViewItem; + if Assigned(OwnerListview) then + begin + case OwnerListview.View of + elsIcon: Result := TEasyViewIconItem; + elsSmallIcon: Result := TEasyViewSmallIconItem; + elsList: Result := TEasyViewListItem; + elsReport: Result := TEasyViewReportItem; + elsThumbnail: Result := TEasyViewThumbnailItem; + elsTile: Result := TEasyViewTileItem; + elsFilmStrip: Result := TEasyViewFilmStripItem; + elsGrid: Result := TEasyViewGridItem; + end + end +end; + +function TEasyItem.GetGroupKey(FocusedColumn: Integer): LongWord; +begin + Result := 0 +end; + +function TEasyItem.GetIndex: Integer; +begin + Result := FIndex +end; + +function TEasyItem.GetOwnerGroup: TEasyGroup; +begin + Result := OwnerItems.OwnerGroup +end; + +function TEasyItem.GetOwnerItems: TEasyItems; +begin + Result := TEasyItems(Collection) +end; + +function TEasyItem.GetPaintInfo: TEasyPaintInfoItem; +begin + Result := TEasyPaintInfoItem( inherited PaintInfo) +end; + +function TEasyItem.GetRowPos: Integer; +// +// Returns the current column that the item is in within the grid or -1 if it +// is not visible +// +begin + Result := -1; + if Visible then + Result := VisibleIndexInGroup mod OwnerGroup.Grid.RowCount +end; + +function TEasyItem.GetStateImageIndex: TCommonImageIndexInteger; +begin + Result := GetStateImageIndexes(0) +end; + +function TEasyItem.GetView: TEasyViewItem; +begin + if Assigned(FView) then + begin + if FView.ClassType <> ViewClass then + FreeAndNil(FView); + end; + if not Assigned(FView) then + FView := ViewClass.Create(OwnerGroup); + Result := FView +end; + +function TEasyItem.GetViewClass: TEasyViewItemClass; +begin + Result := nil; + if Assigned(OwnerListview) then + OwnerListview.DoItemCustomView(Self, OwnerListview.View, Result); + if not Assigned(Result) then + Result := GetDefaultViewClass; +end; + +function TEasyItem.HitTestAt(ViewportPoint: TPoint; var HitInfo: TEasyItemHitTestInfoSet): Boolean; +var + RectArray: TEasyRectArrayObject; + R: TRect; +begin + HitInfo := []; + ItemRectArray(OwnerListview.Header.FirstColumn, OwnerListview.ScratchCanvas, RectArray); + R := RectArray.IconRect; + // Make the blank area between the image and text part of the image + if OwnerListview.IsVertView then + R.Bottom := R.Bottom + OwnerListview.PaintInfoItem.CaptionIndent + else + R.Right := R.Right + OwnerListview.PaintInfoItem.CaptionIndent; + + if PtInRect(R, ViewportPoint) then + Include(HitInfo, ehtOnIcon); + if PtInRect(RectArray.CheckRect, ViewportPoint) then + Include(HitInfo, ehtOnCheck); + if PtInRect(RectArray.FullFocusSelRect, ViewportPoint) then + Include(HitInfo, ehtOnText); + if PtInRect(RectArray.LabelRect, ViewportPoint) then + Include(HitInfo, ehtOnLabel); + if PtInRect(RectArray.ClickselectBoundsRect, ViewportPoint) then + Include(HitInfo, ehtOnClickselectBounds); + if PtInRect(RectArray.DragSelectBoundsRect, ViewportPoint) then + Include(HitInfo, ehtOnDragSelectBounds); + if PtInRect(RectArray.DragSelectBoundsRect, ViewportPoint) then + Include(HitInfo, ehtOnDragSelectBounds); + if PtInRect(RectArray.StateRect, ViewportPoint) then + Include(HitInfo, ehtStateIcon); + Result := HitInfo <> []; +end; + +function TEasyItem.LocalPaintInfo: TEasyPaintInfoBasic; +begin + Result := OwnerListview.PaintInfoItem +end; + +function TEasyItem.SelectionHit(SelectViewportRect: TRect; SelectType: TEasySelectHitType): Boolean; +begin + Result := View.SelectionHit(Self, SelectViewportRect, SelectType) +end; + +function TEasyItem.SelectionHitPt(ViewportPoint: TPoint; SelectType: TEasySelectHitType): Boolean; +begin + Result := View.SelectionHitPt(Self, ViewportPoint, SelectType) +end; + +procedure TEasyItem.Edit(Column: TEasyColumn = nil); +begin + OwnerListview.EditManager.BeginEdit(Self, Column) +end; + +procedure TEasyItem.Freeing; +begin + OwnerListview.DoItemFreeing(Self) +end; + +procedure TEasyItem.GainingBold; +begin + Invalidate(False) +end; + +procedure TEasyItem.GainingCheck; +begin + Inc(OwnerListview.CheckManager.FCount); + OwnerListview.DoItemCheckChanged(Self); + Invalidate(False); +end; + +procedure TEasyItem.GainingEnable; +begin + OwnerListview.DoItemEnableChanged(Self); + Invalidate(False); +end; + +procedure TEasyItem.GainingFocus; +begin + OwnerListview.DoItemFocusChanged(Self); + OwnerListview.Selection.FocusedItem := Self; + Invalidate(False); + if OwnerListview.Selection.GroupSelections then + begin + OwnerListview.Selection.BuildSelectionGroupings(False); + OwnerListview.SafeInvalidateRect(nil, False); + end +end; + +procedure TEasyItem.GainingGhosted; +begin +// OwnerListview.DoItemCheckChanged(Self); + if State * [esosDestroying] = [] then + Invalidate(False); +end; + +procedure TEasyItem.GainingHilight; +begin + Invalidate(True); +end; + +procedure TEasyItem.GainingHotTracking(MousePos: TPoint); +begin + OwnerListview.DoItemHotTrack(Self, ehsEnable, MousePos); + Invalidate(True) +end; + +procedure TEasyItem.GainingSelection; +begin + OwnerListview.Selection.GainingSelection(Self); + OwnerListview.DoItemSelectionChanged(Self); + if OwnerListview.Selection.GroupSelections then + begin + OwnerListview.Selection.BuildSelectionGroupings(False); + OwnerListview.SafeInvalidateRect(nil, False); + end else + Invalidate(False); +end; + +procedure TEasyItem.GainingVisibility; +begin +// Inc(OwnerGroup.FVisibleCount); + OwnerListview.Groups.Rebuild; + OwnerListview.DoItemVisibilityChanged(Self); +end; + +procedure TEasyItem.Initialize; +begin + OwnerListview.DoItemInitialize(Self); + Include(FState, esosInitialized); +end; + +procedure TEasyItem.Invalidate(ImmediateUpdate: Boolean); +var + RectArray: TEasyRectArrayObject; + R: TRect; + Listview: TCustomEasyListview; +begin + Listview := TEasyCollection( Collection).FOwnerListview; + if Listview.HandleAllocated then + begin + R := Listview.Scrollbars.MapWindowRectToViewRect(Listview.ClientRect, True); + // This is a bit odd as a long text caption is scrolled off the top of the window + if IntersectRect(R, R, DisplayRect) then + begin + View.ItemRectArray(Self, nil, OwnerListview.ScratchCanvas, '', RectArray); + UnionRect(R, RectArray.FocusChangeInvalidRect, DisplayRect); + R := Listview.Scrollbars.MapViewRectToWindowRect(R, True); + Listview.SafeInvalidateRect(@R, ImmediateUpdate); + end + end +end; + +procedure TEasyItem.ItemRectArray(Column: TEasyColumn; ACanvas: TCanvas; var RectArray: TEasyRectArrayObject); +begin + if Assigned(View) then + View.ItemRectArray(Self, Column, ACanvas, '', RectArray) + else + FillChar(RectArray, SizeOf(RectArray), #0) +end; + +procedure TEasyItem.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + OwnerListview.DoItemLoadFromStream(Self, S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyItem.LosingBold; +begin + Invalidate(False) +end; + +procedure TEasyItem.LosingCheck; +begin + Dec(OwnerListview.CheckManager.FCount); + OwnerListview.DoItemCheckChanged(Self); + if State * [esosDestroying] = [] then + Invalidate(False); +end; + +procedure TEasyItem.LosingEnable; +begin + ReleaseSelectionGroup; + OwnerListview.DoItemEnableChanged(Self); + if State * [esosDestroying] = [] then + Invalidate(False); +end; + +procedure TEasyItem.LosingFocus; +begin + if OwnerListview.Selection.FocusedItem = Self then + OwnerListview.Selection.FocusedItem := nil; + OwnerListview.DoItemFocusChanged(Self); + // Need to repaint before Losing the focus + if State * [esosDestroying] = [] then + begin + Include(FState, esosFocused); + Invalidate(False); + Exclude(FState, esosFocused); + if OwnerListview.Selection.GroupSelections then + OwnerListview.SafeInvalidateRect(nil, False); + end; +end; + +procedure TEasyItem.LosingGhosted; +begin +// OwnerListview.DoItemCheckChanged(Self); + if State * [esosDestroying] = [] then + Invalidate(False); +end; + +procedure TEasyItem.LosingHilight; +begin + Invalidate(True); +end; + +procedure TEasyItem.LosingHotTracking; +begin + OwnerListview.DoItemHotTrack(Self, ehsDisable, Point(0, 0)); + Invalidate(True) +end; + +procedure TEasyItem.LosingSelection; +begin + OwnerListview.Selection.LosingSelection(Self); + OwnerListview.DoItemSelectionChanged(Self); + // Need to repaint before Losing the focus + if State * [esosDestroying] = [] then + begin + if OwnerListview.Selection.GroupSelections then + begin + OwnerListview.Selection.BuildSelectionGroupings(False); + OwnerListview.SafeInvalidateRect(nil, False); + end else + Invalidate(False); + end +end; + +procedure TEasyItem.LosingVisibility; +begin +// Dec(OwnerGroup.FVisibleCount); + ReleaseSelectionGroup; + OwnerListview.Groups.Rebuild; + OwnerListview.DoItemVisibilityChanged(Self); +end; + +procedure TEasyItem.MakeVisible(Position: TEasyMakeVisiblePos); +var + RectArray: TEasyRectArrayObject; + R: TRect; +begin + if Visible then + begin + View.ItemRectArray(Self, OwnerListview.Header.FirstVisibleColumn, OwnerListview.ScratchCanvas, '', RectArray); + R := RectArray.BoundsRect; + // UnionRect(R, RectArray.FullFocusSelRect, RectArray.IconRect); // WL, 01/10/05: bottom line of focus rect was missing if item was made visible at the bottom of the window + // InflateRect(R, H_STRINGEDITORMARGIN div 2, V_STRINGEDITORMARGIN div 2); + if not ContainsRect(OwnerListview.ClientInViewportCoords, R) then + begin + case Position of + emvTop: + begin + OwnerListview.Scrollbars.OffsetY := R.Top; + OwnerListview.Scrollbars.OffsetX := R.Left; + end; + emvMiddle: + begin + OwnerListview.Scrollbars.OffsetY := R.Top + OwnerListview.ClientHeight div 2; + OwnerListview.Scrollbars.OffsetX := R.Left + OwnerListview.ClientWidth div 2; + end; + emvBottom: + begin + OwnerListview.Scrollbars.OffsetY := R.Bottom - OwnerListview.ClientHeight + OwnerListview.Header.RuntimeHeight; + OwnerListview.Scrollbars.OffsetX := R.Right - OwnerListview.ClientWidth; + end; + emvAuto: + begin + if R.Bottom > OwnerListview.ClientInViewportCoords.Bottom then + OwnerListview.Scrollbars.OffsetY := R.Bottom - OwnerListview.ClientHeight + OwnerListview.Header.RuntimeHeight + else + if R.Top < OwnerListview.ClientInViewportCoords.Top then + OwnerListview.Scrollbars.OffsetY := R.Top; + if R.Right > OwnerListview.ClientInViewportCoords.Right then + OwnerListview.Scrollbars.OffsetX := R.Left + else + if R.Left < OwnerListview.ClientInViewportCoords.Left then + OwnerListview.Scrollbars.OffsetX := R.Left; + end + end + end + end +end; + +procedure TEasyItem.Paint(ACanvas: TCanvas; ViewportClipRect: TRect; Column: TEasyColumn; ForceSelectionRectDraw: Boolean); +begin + View.Paint(Self, Column, ACanvas, ViewportClipRect, ForceSelectionRectDraw) +end; + +procedure TEasyItem.ReleaseSelectionGroup; +var + Temp: TEasySelectionGroupList; +begin + if Assigned(FSelectionGroup) then + begin + Temp := FSelectionGroup; + FSelectionGroup := nil; + Temp.DecRef + end +end; + +procedure TEasyItem.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + OwnerListview.DoItemSaveToStream(Self, S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyItem.SetGroupKey(FocusedColumn: Integer; Value: LongWord); +begin + +end; + +procedure TEasyItem.SetPaintInfo(const Value: TEasyPaintInfoItem); +begin + inherited PaintInfo := Value +end; + +procedure TEasyItem.SetSelectionGroup(Value: TEasySelectionGroupList); +begin + if Value <> FSelectionGroup then + begin + if Assigned(FSelectionGroup) then + FSelectionGroup.DecRef; + FSelectionGroup := Value + end +end; + +procedure TEasyItem.SetStateImageIndex(const Value: TCommonImageIndexInteger); +begin + SetStateImageIndexes(0, Value) +end; + +{ TEasyItemVirtual} +function TEasyItemVirtual.GetCaptions(Column: Integer): Widestring; +begin + Result := ''; + OwnerListview.DoItemGetCaption(Self, Column, Result) +end; + +function TEasyItemVirtual.GetDetailCount: Integer; +begin + Result := 0; + OwnerListview.DoItemGetTileDetailCount(Self, Result) +end; + +function TEasyItemVirtual.GetDetails(Line: Integer): Integer; +begin + Result := 0; + OwnerListview.DoItemGetTileDetail(Self, Line, Result) +end; + +function TEasyItemVirtual.GetGroupKey(FocusedColumn: Integer): LongWord; +begin + Result := 0; + OwnerListview.DoItemGetGroupKey(Self, FocusedColumn, Result) +end; + +function TEasyItemVirtual.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + OwnerListview.DoItemGetImageIndex(Self, Column, eikNormal, Result) +end; + +function TEasyItemVirtual.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +begin + Result := nil; + OwnerListview.DoItemGetImageList(Self, Column, Result); + if not Assigned(Result) then + Result := DefaultImageList(IconSize) +end; + +function TEasyItemVirtual.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + OwnerListview.DoItemGetImageIndex(Self, Column, eikOverlay, Result) +end; + +function TEasyItemVirtual.GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + OwnerListview.DoItemGetImageIndex(Self, Column, eikState, Result) +end; + +function TEasyItemVirtual.GetStateImageList(Column: Integer): TCustomImageList; +begin + Result := nil; + OwnerListview.DoItemGetStateImageList(Self, Column, Result); + if not Assigned(Result) then + Result := DefaultStateImageList +end; + +procedure TEasyItemVirtual.ImageDrawIsCustom(Column: TEasyColumn; var IsCustom: Boolean); +begin + IsCustom := False; + OwnerListview.DoItemImageDrawIsCustom(Column, Self, IsCustom) +end; + +procedure TEasyItemVirtual.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + OwnerListview.DoItemImageDraw(Self, Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyItemVirtual.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +begin + OwnerListview.DoItemImageGetSize(Self, Column, ImageW, ImageH) +end; + +procedure TEasyItemVirtual.SetCaptions(Column: Integer; Value: Widestring); +begin + OwnerListview.DoItemSetCaption(Self, Column, Value); + Invalidate(False) +end; + +procedure TEasyItemVirtual.SetDetailCount(Value: Integer); +begin + OwnerListview.DoItemSetTileDetailCount(Self, Value); + Invalidate(False) +end; + +procedure TEasyItemVirtual.SetDetails(Line: Integer; Value: Integer); +begin + OwnerListview.DoItemSetTileDetail(Self, Line, Value); + Invalidate(False) +end; + +procedure TEasyItemVirtual.SetGroupKey(FocusedColumn: Integer; Value: LongWord); +begin + OwnerListview.DoItemSetGroupKey(Self, FocusedColumn, Value); +end; + +procedure TEasyItemVirtual.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoItemSetImageIndex(Self, Column, eikNormal, Value); + Invalidate(False) +end; + +procedure TEasyItemVirtual.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoItemSetImageIndex(Self, Column, eikOverlay, Value); + Invalidate(False) +end; + +procedure TEasyItemVirtual.SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoItemSetImageIndex(Self, Column, eikState, Value); + Invalidate(False) +end; + +procedure TEasyItemVirtual.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + OwnerListview.DoItemThumbnailDraw(Self, ACanvas, ARect, AlphaBlender, DoDefault) +end; + +{ TEasyItemStored } + +constructor TEasyItemStored.Create(ACollection: TEasyCollection); +begin + inherited Create(ACollection); + FDataHelper := TEasyItemDynamicDataHelper.Create; +end; + +destructor TEasyItemStored.Destroy; +begin + SetDestroyFlags; + inherited Destroy; + FreeAndNil(FDataHelper); +end; + +function TEasyItemStored.GetCaptions(Column: Integer): Widestring; +begin + Result := ''; + if Assigned(DataHelper) then + Result := DataHelper.Captions[Column] +end; + +function TEasyItemStored.GetDetailCount: Integer; +begin + Result := OwnerListview.PaintInfoItem.TileDetailCount +end; + +function TEasyItemStored.GetDetails(Line: Integer): Integer; +begin + Result := 0; + if Assigned(DataHelper) then + Result := DataHelper.Details[Line] +end; + +function TEasyItemStored.GetGroupKey(FocusedColumn: Integer): LongWord; +begin + Result := 0; + if Assigned(DataHelper) then + Result := DataHelper.GroupKey[FocusedColumn] +end; + +function TEasyItemStored.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + if Assigned(DataHelper) then + Result := DataHelper.ImageIndexes[Column] +end; + +function TEasyItemStored.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +begin + Result := DefaultImageList(IconSize) +end; + +function TEasyItemStored.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + if Assigned(DataHelper) then + Result := DataHelper.ImageOverlayIndexes[Column] +end; + +function TEasyItemStored.GetStateImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + if Assigned(DataHelper) then + Result := DataHelper.StateImageIndexes[Column] +end; + +function TEasyItemStored.GetStateImageList(Column: Integer): TCustomImageList; +begin + Result := DefaultStateImageList +end; + +procedure TEasyItemStored.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + OwnerListview.DoItemImageDraw(Self, Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyItemStored.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +begin + OwnerListview.DoItemImageGetSize(Self, Column, ImageW, ImageH) +end; + +procedure TEasyItemStored.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +begin + IsCustom := False; + OwnerListview.DoItemImageDrawIsCustom(Column, Self, IsCustom) +end; + +procedure TEasyItemStored.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + if Assigned(DataHelper) then + DataHelper.LoadFromStream(S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyItemStored.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + if Assigned(DataHelper) then + DataHelper.SaveToStream(S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyItemStored.SetCaptions(Column: Integer; Value: Widestring); +begin + if Assigned(DataHelper) then + begin + DataHelper.Captions[Column] := Value; + Invalidate(False); + end; +end; + +procedure TEasyItemStored.SetDetailCount(Value: Integer); +begin + OwnerListview.PaintInfoItem.TileDetailCount := Value +end; + +procedure TEasyItemStored.SetDetails(Column: Integer; Value: Integer); +begin + if Assigned(DataHelper) then + begin + DataHelper.Details[Column] := Value; + Invalidate(False); + end; +end; + +procedure TEasyItemStored.SetGroupKey(FocusedColumn: Integer; Value: LongWord); +begin + if Assigned(DataHelper) then + DataHelper.GroupKey[FocusedColumn] := Value; +end; + +procedure TEasyItemStored.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + if Assigned(DataHelper) then + begin + DataHelper.ImageIndexes[Column] := Value; + Invalidate(False); + end; +end; + +procedure TEasyItemStored.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + if Assigned(DataHelper) then + begin + DataHelper.ImageOverlayIndexes[Column] := Value; + Invalidate(False); + end; +end; + +procedure TEasyItemStored.SetStateImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); + begin + if Assigned(DataHelper) then + begin + DataHelper.StateImageIndexes[Column] := Value; + Invalidate(False); + end; +end; + +procedure TEasyItemStored.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + OwnerListview.DoItemThumbnailDraw(Self, ACanvas, ARect, AlphaBlender, DoDefault) +end; + +{ TEasyDynamicDataHelper} + +function TEasyDynamicDataHelper.GetCaptions(Index: Integer): Widestring; +begin + if Index < Length(CaptionArray) then + Result := CaptionArray[Index] + else + Result := '' +end; + +function TEasyDynamicDataHelper.GetDetails(Index: Integer): Integer; +begin + if Index < Length(DetailArray) then + Result := DetailArray[Index] + else + Result := 0 +end; + +function TEasyDynamicDataHelper.GetImageIndexes(Index: Integer): Integer; +begin + if Index < Length(ImageIndexArray) then + Result := ImageIndexArray[Index] + else + Result := -1 +end; + +function TEasyDynamicDataHelper.GetImageOverlayIndexes(Index: Integer): Integer; +begin + if Index < Length(OverlayIndexArray) then + Result := OverlayIndexArray[Index] + else + Result := -1 +end; + +procedure TEasyDynamicDataHelper.Clear; +begin + SetLength(FCaptionArray, 0); + SetLength(FDetailArray, 0); + SetLength(FImageIndexArray, 0); + SetLength(FOverlayIndexArray, 0); +end; + +procedure TEasyDynamicDataHelper.LoadFromStream(S: TStream; Version: Integer); +begin + LoadWideStrArrayFromStream(S, FCaptionArray); + LoadIntArrayFromStream(S, FDetailArray); + LoadIntArrayFromStream(S, FImageIndexArray); + LoadIntArrayFromStream(S, FOverlayIndexArray); +end; + +procedure TEasyDynamicDataHelper.LoadIntArrayFromStream(S: TStream; var AnArray: TCommonIntegerDynArray); +var + Len, i: Integer; +begin + Setlength(AnArray, 0); + S.ReadBuffer(Len, SizeOf(Len)); + Setlength(AnArray, Len); + for i := 0 to Len - 1 do + S.ReadBuffer(AnArray[i], SizeOf(Integer)) +end; + +procedure TEasyDynamicDataHelper.LoadWideStrArrayFromStream(S: TStream; var AnArray: TCommonWideStringDynArray); +var + Len, Count, i: Integer; +begin + Setlength(AnArray, 0); + S.ReadBuffer(Len, SizeOf(Len)); + Setlength(AnArray, Len); + for i := 0 to Len - 1 do + begin + S.ReadBuffer(Count, SizeOf(Count)); + SetLength(AnArray[i], Count); + S.ReadBuffer(PWideChar(AnArray[i])^, Count * 2); + end +end; + +procedure TEasyDynamicDataHelper.SaveIntArrayToStream(S: TStream; var AnArray: TCommonIntegerDynArray); +var + Len, i: Integer; +begin + Len := Length(AnArray); + S.WriteBuffer(Len, SizeOf(Len)); + for i := 0 to Len - 1 do + S.WriteBuffer(AnArray[i], SizeOf(Integer)) +end; + +procedure TEasyDynamicDataHelper.SaveWideStrArrayToStream(S: TStream; var AnArray: TCommonWideStringDynArray); +var + Len, i, Count: Integer; +begin + Len := Length(AnArray); + S.WriteBuffer(Len, SizeOf(Len)); + for i := 0 to Len - 1 do + begin + Count := Length(AnArray[i]); + S.WriteBuffer(Count, SizeOf(Count)); + S.WriteBuffer(PWideChar(AnArray[i])^, Count * 2); + end +end; + +procedure TEasyDynamicDataHelper.SaveToStream(S: TStream; Version: Integer); +begin + SaveWideStrArrayToStream(S, FCaptionArray); + SaveIntArrayToStream(S, FDetailArray); + SaveIntArrayToStream(S, FImageIndexArray); + SaveIntArrayToStream(S, FOverlayIndexArray); +end; + +procedure TEasyDynamicDataHelper.SetCaptions(Index: Integer; Value: Widestring); +var + OldLen, i: Integer; +begin + if Index >= Length(CaptionArray) then + begin + OldLen := Length(CaptionArray); + SetLength(FCaptionArray, Index + 1); + for i := OldLen to Length(CaptionArray) - 1 do + CaptionArray[i] := '' + end; + CaptionArray[Index] := Value +end; + +procedure TEasyDynamicDataHelper.SetDetails(Index: Integer; Value: Integer); +var + OldLen, i: Integer; +begin + if Index >= Length(DetailArray) then + begin + OldLen := Length(DetailArray); + SetLength(FDetailArray, Index + 1); + for i := OldLen to Length(DetailArray) - 1 do + DetailArray[i] := 0 + end; + DetailArray[Index] := Value +end; + +procedure TEasyDynamicDataHelper.SetImageIndexes(Index: Integer; Value: Integer); +var + OldLen, i: Integer; +begin + if Index >= Length(ImageIndexArray) then + begin + OldLen := Length(ImageIndexArray); + SetLength(FImageIndexArray, Index + 1); + for i := OldLen to Length(ImageIndexArray) - 1 do + ImageIndexArray[i] := -1 + end; + ImageIndexArray[Index] := Value +end; + +procedure TEasyDynamicDataHelper.SetImageOverlayIndexes(Index: Integer; Value: Integer); +var + OldLen, i: Integer; +begin + if Index >= Length(OverlayIndexArray) then + begin + OldLen := Length(OverlayIndexArray); + SetLength(FOverlayIndexArray, Index + 1); + for i := OldLen to Length(OverlayIndexArray) - 1 do + OverlayIndexArray[i] := -1 + end; + OverlayIndexArray[Index] := Value +end; + +{ TEasyGroupStored } +constructor TEasyBaseGroupStored.Create(ACollection: TEasyCollection); +begin + inherited Create(ACollection); + FDataHelper := TEasyDynamicDataHelper.Create; +end; + +destructor TEasyBaseGroupStored.Destroy; +begin + SetDestroyFlags; + inherited Destroy; + FreeAndNil(FDataHelper); +end; + +function TEasyBaseGroupStored.GetCaptions(Line: Integer): Widestring; +begin + Result := DataHelper.Captions[Line] +end; + +function TEasyBaseGroupStored.GetDetailCount: Integer; +begin + Result := OwnerListview.PaintInfoGroup.CaptionLines +end; + +function TEasyBaseGroupStored.GetDetails(Line: Integer): Integer; +begin + Result := DataHelper.Details[Line] +end; + +function TEasyBaseGroupStored.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := DataHelper.ImageIndexes[Column] +end; + +function TEasyBaseGroupStored.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +begin + Result := DefaultImageList(IconSize) +end; + +function TEasyBaseGroupStored.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := DataHelper.ImageOverlayIndexes[Column] +end; + +procedure TEasyBaseGroupStored.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + OwnerListview.DoGroupImageDraw(Self, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyBaseGroupStored.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +begin + OwnerListview.DoGroupImageGetSize(Self, ImageW, ImageH) +end; + +procedure TEasyBaseGroupStored.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +begin + IsCustom := False; + OwnerListview.DoGroupImageDrawIsCustom(Self, IsCustom) +end; + +procedure TEasyBaseGroupStored.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + DataHelper.LoadFromStream(S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyBaseGroupStored.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + DataHelper.SaveToStream(S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyBaseGroupStored.SetCaptions(Column: Integer; Value: Widestring); +begin + DataHelper.Captions[Column] := Value; + Invalidate(False) +end; + +procedure TEasyBaseGroupStored.SetDetailCount(Value: Integer); +begin + OwnerListview.PaintInfoGroup.CaptionLines := Value +end; + +procedure TEasyBaseGroupStored.SetDetails(Line: Integer; Value: Integer); +begin + DataHelper.Details[Line] := Value; + Invalidate(False) +end; + +procedure TEasyBaseGroupStored.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + DataHelper.ImageIndexes[Column] := Value; + Invalidate(False) +end; + +procedure TEasyBaseGroupStored.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + DataHelper.ImageOverlayIndexes[Column] := Value; + Invalidate(False) +end; + +procedure TEasyBaseGroupStored.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + // not implemented +end; + +{ TEasyGroupVirtual} +function TEasyGroupVirtual.GetCaptions(Line: Integer): Widestring; +begin + Result := ''; + OwnerListview.DoGroupGetCaption(Self, Result) +end; + +function TEasyGroupVirtual.GetDetailCount: Integer; +begin + Result := 0; + OwnerListview.DoGroupGetDetailCount(Self, Result) +end; + +function TEasyGroupVirtual.GetDetails(Line: Integer): Integer; +begin + Result := 0; + OwnerListview.DoGroupGetDetail(Self, Line, Result) +end; + +function TEasyGroupVirtual.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + OwnerListview.DoGroupGetImageIndex(Self, eikNormal, Result) +end; + +function TEasyGroupVirtual.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +begin + Result := nil; + OwnerListview.DoGroupGetImageList(Self, Result); + if not Assigned(Result) then + Result := DefaultImageList(IconSize) +end; + +function TEasyGroupVirtual.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + OwnerListview.DoGroupGetImageIndex(Self, eikOverlay, Result) +end; + +procedure TEasyGroupVirtual.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + OwnerListview.DoGroupImageDraw(Self, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyGroupVirtual.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +begin + OwnerListview.DoGroupImageGetSize(Self, ImageW, ImageH) +end; + +procedure TEasyGroupVirtual.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +begin + IsCustom := False; + OwnerListview.DoGroupImageDrawIsCustom(Self, IsCustom) +end; + +procedure TEasyGroupVirtual.SetCaptions(Column: Integer; Value: Widestring); +begin + OwnerListview.DoGroupSetCaption(Self, Value); + Invalidate(False) +end; + +procedure TEasyGroupVirtual.SetDetailCount(Value: Integer); +begin + OwnerListview.DoGroupSetDetailCount(Self, Value); + Invalidate(False) +end; + +procedure TEasyGroupVirtual.SetDetails(Line: Integer; Value: Integer); +begin + OwnerListview.DoGroupSetDetail(Self, Line, Value); + Invalidate(False) +end; + +procedure TEasyGroupVirtual.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoGroupSetImageIndex(Self, eikNormal, Value); + Invalidate(False) +end; + +procedure TEasyGroupVirtual.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoGroupSetImageIndex(Self, eikOverlay, Value); + Invalidate(False) +end; + +procedure TEasyGroupVirtual.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + // not Implemented +end; + +{ TEasyGroupInterfaced} +function TEasyGroupInterfaced.GetCaptions(Line: Integer): Widestring; +var + CaptionInf: IEasyCaptions; +begin + CaptionInf := nil; + if Supports(DataInf, IEasyCaptions, CaptionInf) then + Result := CaptionInf.Captions[Line] +end; + +function TEasyGroupInterfaced.GetDetailCount: Integer; +var + DetailInf: IEasyDetails; +begin + Result := 0; + DetailInf := nil; + if Supports(DataInf, IEasyDetails, DetailInf) then + Result := DetailInf.GetDetailCount +end; + +function TEasyGroupInterfaced.GetDetails(Line: Integer): Integer; +var + DetailInf: IEasyDetails; +begin + Result := 0; + DetailInf := nil; + if Supports(DataInf, IEasyDetails, DetailInf) then + Result := DetailInf.Detail[Line] +end; + +function TEasyGroupInterfaced.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +var + ImageInf: IEasyImages; +begin + Result := -1; + ImageInf := nil; + if Supports(DataInf, IEasyImages, ImageInf) then + Result := ImageInf.ImageIndexes[Column, eikNormal] +end; + +function TEasyGroupInterfaced.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +var + ImageList: IEasyImageList; +begin + Result := nil; + if Supports(DataInf, IEasyImageList, ImageList) then + Result := ImageList.ImageList[Column, IconSize]; + if not Assigned(Result) then + Result := DefaultImageList(IconSize) +end; + +function TEasyGroupInterfaced.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +var + ImageInf: IEasyImages; +begin + Result := -1; + ImageInf := nil; + if Supports(DataInf, IEasyImages, ImageInf) then + Result := ImageInf.ImageIndexes[Column, eikOverlay] +end; + +procedure TEasyGroupInterfaced.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +var + ImageInf: IEasyCustomImage; +begin + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.DrawImage(Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyGroupInterfaced.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +var + ImageInf: IEasyCustomImage; +begin + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.GetSize(Column, ImageW, ImageH) +end; + +procedure TEasyGroupInterfaced.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +var + ImageInf: IEasyCustomImage; +begin + IsCustom := False; + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.CustomDrawn(Column, IsCustom) +end; + +procedure TEasyGroupInterfaced.SetCaptions(Column: Integer; Value: Widestring); +var + CaptionInf: IEasyCaptionsEditable; +begin + CaptionInf := nil; + if Supports(DataInf, IEasyCaptionsEditable, CaptionInf) then + begin + CaptionInf.SetCaption(Column, Value); + Invalidate(False) + end +end; + +procedure TEasyGroupInterfaced.SetDetailCount(Value: Integer); +var + DetailsInf: IEasyDetailsEditable; +begin + DetailsInf := nil; + if Supports(DataInf, IEasyDetailsEditable, DetailsInf) then + begin + DetailsInf.DetailCount := Value; + Invalidate(False) + end +end; + +procedure TEasyGroupInterfaced.SetDetails(Line: Integer; Value: Integer); +var + DetailsInf: IEasyDetailsEditable; +begin + DetailsInf := nil; + if Supports(DataInf, IEasyDetailsEditable, DetailsInf) then + begin + DetailsInf.Detail[Line] := Value; + Invalidate(False) + end +end; + +procedure TEasyGroupInterfaced.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +var + ImageInf: IEasyImagesEditable; +begin + ImageInf := nil; + if Supports(DataInf, IEasyImagesEditable, ImageInf) then + begin + ImageInf.ImageIndexes[Column, eikNormal] := Value; + Invalidate(False) + end +end; + +procedure TEasyGroupInterfaced.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +var + ImageInf: IEasyImagesEditable; +begin + ImageInf := nil; + if Supports(DataInf, IEasyImagesEditable, ImageInf) then + begin + ImageInf.ImageIndexes[Column, eikOverlay] := Value; + Invalidate(False) + end +end; + +procedure TEasyGroupInterfaced.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + // not supported +end; + +{ TEasyColumnStored } + +constructor TEasyColumnStored.Create(ACollection: TEasyCollection); +begin + inherited Create(ACollection); + FDataHelper := TEasyDynamicDataHelper.Create; +end; + +destructor TEasyColumnStored.Destroy; +begin + SetDestroyFlags; + inherited Destroy; + FreeAndNil(FDataHelper); +end; + +function TEasyColumnStored.GetCaptions(Line: Integer): Widestring; +begin + Result := DataHelper.Captions[Line] +end; + +function TEasyColumnStored.GetDetailCount: Integer; +begin + Result := OwnerListview.PaintInfoColumn.CaptionLines +end; + +function TEasyColumnStored.GetDetails(Line: Integer): Integer; +begin + Result := DataHelper.Details[Index] +end; + +function TEasyColumnStored.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := DataHelper.ImageIndexes[Column] +end; + +function TEasyColumnStored.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +begin + Result := DefaultImageList(IconSize) +end; + +function TEasyColumnStored.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := DataHelper.ImageOverlayIndexes[Column] +end; + +procedure TEasyColumnStored.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + OwnerListview.DoColumnImageDraw(Self, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyColumnStored.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +begin + OwnerListview.DoColumnImageGetSize(Self, ImageW, ImageH) +end; + +procedure TEasyColumnStored.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +begin + IsCustom := False; + OwnerListview.DoColumnImageDrawIsCustom(Self, IsCustom) +end; + +procedure TEasyColumnStored.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + DataHelper.LoadFromStream(S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyColumnStored.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + DataHelper.SaveToStream(S, Version); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyColumnStored.SetCaptions(Column: Integer; Value: Widestring); +begin + DataHelper.Captions[Column] := Value; + Invalidate(False) +end; + +procedure TEasyColumnStored.SetDetailCount(Value: Integer); +begin + OwnerListview.PaintInfoColumn.CaptionLines := Value; +end; + +procedure TEasyColumnStored.SetDetails(Line: Integer; Value: Integer); +begin + DataHelper.Details[Line] := Value; + Invalidate(False) +end; + +procedure TEasyColumnStored.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + DataHelper.ImageIndexes[Column] := Value; + Invalidate(False) +end; + +procedure TEasyColumnStored.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + DataHelper.ImageOverlayIndexes[Column] := Value; + Invalidate(False) +end; + +procedure TEasyColumnStored.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + // not implemented +end; + +function TEasyColumnInterfaced.GetCaptions(Line: Integer): Widestring; +var + CaptionInf: IEasyCaptions; +begin + CaptionInf := nil; + if Supports(DataInf, IEasyCaptions, CaptionInf) then + Result := CaptionInf.Captions[Line] +end; + +function TEasyColumnInterfaced.GetDetailCount: Integer; +var + DetailInf: IEasyDetails; +begin + Result := 0; + DetailInf := nil; + if Supports(DataInf, IEasyDetails, DetailInf) then + Result := DetailInf.GetDetailCount +end; + +function TEasyColumnInterfaced.GetDetails(Line: Integer): Integer; +var + DetailInf: IEasyDetails; +begin + Result := 0; + DetailInf := nil; + if Supports(DataInf, IEasyDetails, DetailInf) then + Result := DetailInf.Detail[Line] +end; + +function TEasyColumnInterfaced.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +var + ImageInf: IEasyImages; +begin + Result := -1; + ImageInf := nil; + if Supports(DataInf, IEasyImages, ImageInf) then + Result := ImageInf.ImageIndexes[Column, eikNormal] +end; + +function TEasyColumnInterfaced.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +var + ImageList: IEasyImageList; +begin + Result := nil; + if Supports(DataInf, IEasyImageList, ImageList) then + Result := ImageList.ImageList[Column, IconSize]; + if not Assigned(Result) then + Result := DefaultImageList(IconSize) +end; + +function TEasyColumnInterfaced.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +var + ImageInf: IEasyImages; +begin + Result := -1; + ImageInf := nil; + if Supports(DataInf, IEasyImages, ImageInf) then + Result := ImageInf.ImageIndexes[Column, eikOverlay] +end; + +procedure TEasyColumnInterfaced.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +var + ImageInf: IEasyCustomImage; +begin + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.DrawImage(Column, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyColumnInterfaced.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +var + ImageInf: IEasyCustomImage; +begin + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.GetSize(Column, ImageW, ImageH) +end; + +procedure TEasyColumnInterfaced.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +var + ImageInf: IEasyCustomImage; +begin + IsCustom := False; + if Supports(DataInf, IEasyCustomImage, ImageInf) then + ImageInf.CustomDrawn(Column, IsCustom) +end; + +procedure TEasyColumnInterfaced.SetCaptions(Column: Integer; Value: Widestring); +var + CaptionInf: IEasyCaptionsEditable; +begin + CaptionInf := nil; + if Supports(DataInf, IEasyCaptionsEditable, CaptionInf) then + CaptionInf.SetCaption(Column, Value); + Invalidate(False); +end; + +procedure TEasyColumnInterfaced.SetDetailCount(Value: Integer); +var + DetailsInf: IEasyDetailsEditable; +begin + DetailsInf := nil; + if Supports(DataInf, IEasyDetailsEditable, DetailsInf) then + begin + DetailsInf.DetailCount := Value; + Invalidate(False) + end +end; + +procedure TEasyColumnInterfaced.SetDetails(Line: Integer; Value: Integer); +var + DetailsInf: IEasyDetailsEditable; +begin + DetailsInf := nil; + if Supports(DataInf, IEasyDetailsEditable, DetailsInf) then + begin + DetailsInf.Detail[Line] := Value; + Invalidate(False) + end +end; + +procedure TEasyColumnInterfaced.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +var + ImageInf: IEasyImagesEditable; +begin + ImageInf := nil; + if Supports(DataInf, IEasyImagesEditable, ImageInf) then + begin + ImageInf.ImageIndexes[Column, eikNormal] := Value; + Invalidate(False) + end +end; + +procedure TEasyColumnInterfaced.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +var + ImageInf: IEasyImagesEditable; +begin + ImageInf := nil; + if Supports(DataInf, IEasyImagesEditable, ImageInf) then + begin + ImageInf.ImageIndexes[Column, eikOverlay] := Value; + Invalidate(False) + end +end; + +procedure TEasyColumnInterfaced.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + // not implemented +end; + +{ TEasyColumnVirtual} +function TEasyColumnVirtual.GetCaptions(Line: Integer): Widestring; +begin + Result := ''; + OwnerListview.DoColumnGetCaption(Self, Line, Result) +end; + +function TEasyColumnVirtual.GetDetailCount: Integer; +begin + Result := 0; + OwnerListview.DoColumnGetDetailCount(Self, Result) +end; + +function TEasyColumnVirtual.GetDetails(Line: Integer): Integer; +begin + Result := 0; + OwnerListview.DoColumnGetDetail(Self, Line, Result) +end; + +function TEasyColumnVirtual.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + OwnerListview.DoColumnGetImageIndex(Self, eikNormal, Result) +end; + +function TEasyColumnVirtual.GetImageList(Column: Integer; IconSize: TEasyImageSize): TCustomImageList; +begin + Result := nil; + OwnerListview.DoColumnGetImageList(Self, Result); + if not Assigned(Result) then + Result := DefaultImageList(IconSize) +end; + +function TEasyColumnVirtual.GetImageOverlayIndexes(Column: Integer): TCommonImageIndexInteger; +begin + Result := -1; + OwnerListview.DoColumnGetImageIndex(Self, eikOverlay, Result) +end; + +procedure TEasyColumnVirtual.ImageDraw(Column: TEasyColumn; ACanvas: TCanvas; const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); +begin + OwnerListview.DoColumnImageDraw(Self, ACanvas, RectArray, AlphaBlender) +end; + +procedure TEasyColumnVirtual.ImageDrawGetSize(Column: TEasyColumn; var ImageW: Integer; var ImageH: Integer); +begin + OwnerListview.DoColumnImageGetSize(Self, ImageW, ImageH) +end; + +procedure TEasyColumnVirtual.ImageDrawIsCustom(Column: TEasyColumn; + var IsCustom: Boolean); +begin + IsCustom := False; + OwnerListview.DoColumnImageDrawIsCustom(Self, IsCustom) +end; + +procedure TEasyColumnVirtual.SetCaptions(Column: Integer; Value: Widestring); +begin + OwnerListview.DoColumnSetCaption(Self, Value); + Invalidate(False) +end; + +procedure TEasyColumnVirtual.SetDetailCount(Value: Integer); +begin + OwnerListview.DoColumnSetDetailCount(Self, Value); + Invalidate(False) +end; + +procedure TEasyColumnVirtual.SetDetails(Line: Integer; Value: Integer); +begin + OwnerListview.DoColumnSetDetail(Self, Line, Value); + Invalidate(False) +end; + +procedure TEasyColumnVirtual.SetImageIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoColumnSetImageIndex(Self, eikNormal, Value); + Invalidate(False) +end; + +procedure TEasyColumnVirtual.SetImageOverlayIndexes(Column: Integer; Value: TCommonImageIndexInteger); +begin + OwnerListview.DoColumnSetImageIndex(Self, eikOverlay, Value); + Invalidate(False) +end; + +procedure TEasyColumnVirtual.ThumbnailDraw(ACanvas: TCanvas; ARect: TRect; + AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); +begin + // not Implemented +end; + +{ TEasyPaintInfoBaseItem } + +constructor TEasyPaintInfoBaseItem.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FTileDetailCount := 1; + FGridLineColor := clBtnFace; +end; + +procedure TEasyPaintInfoBaseItem.SetGridLineColor(const Value: TColor); +begin + if FGridLineColor <> Value then + begin + FGridLineColor := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyPaintInfoBaseItem.SetGridLines(const Value: Boolean); +begin + if FGridLines <> Value then + begin + FGridLines := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyPaintInfoBaseItem.SetHideCaption(const Value: Boolean); +begin + if FHideCaption <> Value then + begin + FHideCaption := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +procedure TEasyPaintInfoBaseItem.SetTileDetailCount(Value: Integer); +begin + if Value <> FTileDetailCount then + begin + FTileDetailCount := Value; + OwnerListview.SafeInvalidateRect(nil, False) + end +end; + +{ TColumnPos } + +function TColumnPos.Get(Index: Integer): TEasyColumn; +begin + Result := inherited Get(Index) +end; + +procedure TColumnPos.Put(Index: Integer; Item: TEasyColumn); +begin + inherited Put(Index, Item) +end; + +{ TEasyHeaderDragManager } + +constructor TEasyHeaderDragManager.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FEnableDragImage := True; + FDragImageWidth := 200; + FDragImageHeight := 300; + FEnabled := False; + DefaultImageEvent := DefaultImage; + DragMode := dmManual; + DragCursor := crDrag +end; + +function TEasyHeaderDragManager.DoPtInAutoScrollDownRegion(WindowPoint: TPoint): Boolean; +begin + Result := False +end; + +function TEasyHeaderDragManager.DoPtInAutoScrollLeftRegion(WindowPoint: TPoint): Boolean; +begin + Result := (WindowPoint.X < AutoScrollMargin) and (OwnerListview.View = elsReport) +end; + +function TEasyHeaderDragManager.DoPtInAutoScrollRightRegion(WindowPoint: TPoint): Boolean; +begin + Result := (WindowPoint.X > (OwnerListview.ClientWidth - AutoScrollMargin)) and (OwnerListview.View = elsReport) +end; + +function TEasyHeaderDragManager.DoPtInAutoScrollUpRegion(WindowPoint: TPoint): Boolean; +begin + Result := False +end; + +function TEasyHeaderDragManager.GetDragCursor: TCursor; +begin + Result := OwnerListview.DragCursor +end; + + +function TEasyHeaderDragManager.GetDragMode: TDragMode; +begin + Result := FDragMode; +end; + +procedure TEasyHeaderDragManager.DefaultImage(Sender: TCustomEasyListview; Image: TBitmap; DragStartPt: TPoint; var HotSpot: TPoint; var TransparentColor: TColor; var Handled: Boolean); +// Generates the drag image for the dragging items from the Easy Control +var + R, ViewR: TRect; + Pt: TPoint; +begin + if Assigned(Image) then + begin + TransparentColor := OwnerListview.Color; + Image.Canvas.Brush.Color := Header.Color; + + Image.Canvas.FillRect(Rect(0, 0, Image.Width, Image.Height)); + R := Column.DisplayRect; + + HotSpot.X := DragStartPt.X - Column.DisplayRect.Left; + HotSpot.Y := DragStartPt.Y - Column.DisplayRect.Top; + + if R.Left < 0 then + HotSpot.X := HotSpot.X + R.Left; + if R.Top < 0 then + HotSpot.Y := HotSpot.Y + R.Top; + + ViewR := OwnerListview.ClientRect; + OffsetRect(ViewR, OwnerListview.Scrollbars.OffsetX, 0); + IntersectRect(R, R, ViewR); + SetViewPortOrgEx(Image.Canvas.Handle, -R.Left, 0, @Pt); + Header.PaintTo(Image.Canvas, R); + SetViewPortOrgEx(Image.Canvas.Handle, Pt.X, Pt.Y, nil); + Handled := True; + end +end; + +procedure TEasyHeaderDragManager.DoDrag(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +var + Temp: TEasyColumn; +begin + Effects := cdeNone; + if AllowDrop then + begin + if WindowPoint.Y < Header.Height then + begin + Effects := cdeMove; + if OwnerListview.ScrollHeaderHorz then + Inc(WindowPoint.X, OwnerListview.Scrollbars.OffsetX); + Temp := Header.Columns.ColumnByPoint(WindowPoint); + if Temp <> TargetColumn then + begin + if Assigned(TargetColumn) then + begin + Exclude(TargetColumn.FState, esosDropTarget); + TargetColumn.Invalidate(True); + end; + TargetColumn := Temp; + if Assigned(TargetColumn) then + begin + Include(TargetColumn.FState, esosDropTarget); + TargetColumn.Invalidate(True); + end + end + end else + begin + if Assigned(TargetColumn) then + begin + Exclude(TargetColumn.FState, esosDropTarget); + TargetColumn.Invalidate(True); + TargetColumn := nil; + end; + end + end +end; + +procedure TEasyHeaderDragManager.DoDragBegin(WindowPoint: TPoint; KeyStates: TCommonKeyStates); +var + DropSource: IDropSource; + DataObject: TEasyDataObjectManager; + DataObjInf: ICommonExtractObj; + Image: TBitmap; + TransparentColor: TColor; + dwEffect, ImageWidth, ImageHeight: Integer; + AvailableEffects: TCommonDropEffects; + DragResultEffect: TCommonOLEDragResult; + AllowDrag, Handled: Boolean; + DragResult: HRESULT; + HotPtOffset: TPoint; + DataObjectInf: IDataObject; +begin + if Enabled then + begin + inherited; + if DragType = edtOLE then + begin + DataObjectInf := nil; + DataObject := nil; + AvailableEffects := [cdeNone]; + dwEffect := 0; + AllowDrag := False; + if Self is TEasyOLEDragManager then + OwnerListview.DoOLEGetDataObject(DataObjectInf); + if not Assigned(DataObjectInf) then + begin + DataObject := TEasyDataObjectManager.Create; + // Get a reference right away so it won't be freed from under us + DataObjectInf := DataObject as IDataObject; + DataObject.Listview := OwnerListview; + end; + DoOLEDragStart(DataObjectInf, AvailableEffects, AllowDrag); + if AllowDrag then + begin + if (DataObjectInf.QueryInterface(ICommonExtractObj, DataObjInf) = S_OK) then + DataObject := DataObjInf.GetObj as TEasyDataObjectManager; + if EnableDragImage and Assigned(DataObject) and OwnerListview.UseInternalDragImage then + begin + Image := TBitmap.Create; + try + ImageWidth := 0; + ImageHeight := 0; + ImageSize(ImageWidth, ImageHeight); + Image.Width := ImageWidth; + Image.Height := ImageHeight; + Image.PixelFormat := pf32Bit; + TransparentColor := clWindow; + Handled := False; + DoGetDragImage(Image, WindowPoint, HotPtOffset, TransparentColor, Handled); + if not Handled and Assigned(DefaultImageEvent) then + DefaultImageEvent(OwnerListview, Image, WindowPoint, HotPtOffset, TransparentColor, Handled); + if Handled then + DataObject.AssignDragImage(Image, HotPtOffset, TransparentColor); + finally + Image.Free + end + end; + DropSource := TEasyDropSourceManager.Create(OwnerListview); + DragResult := OwnerListview.ExecuteDragDrop(AvailableEffects, DataObjectInf, DropSource, dwEffect); + if DragResult = DRAGDROP_S_DROP then + DragResultEffect := cdrDrop + else + if DragResult = DRAGDROP_S_CANCEL then + DragResultEffect := cdrCancel + else + DragResultEffect := cdrError; + // Set it back to the default drag manager to be ready for a drop + DoOLEDragEnd(DataObjectInf, DragResultEffect, DropEffectToDropEffectStates(dwEffect), KeyStates); + DataObject.Listview := nil; + end + end else + VCLDragStart + end; + DataObjectInf := nil +end; + +procedure TEasyHeaderDragManager.DoDragDrop(WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +begin + if Assigned(TargetColumn) then + Column.Position := TargetColumn.Position; + DoDragEnd(nil, WindowPoint, KeyState); +end; + +procedure TEasyHeaderDragManager.DoDragEnd(Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates); +begin + if Assigned(TargetColumn) then + begin + Exclude(TargetColumn.FState, esosDropTarget); + TargetColumn.Invalidate(True); + end; + TargetColumn := nil; +end; + +procedure TEasyHeaderDragManager.DoDragEnter(const DataObject: IDataObject; Canvas: TCanvas; WindowPoint: TPoint; KeyState: TCommonKeyStates; var Effects: TCommonDropEffect); +var + Medium: TStgMedium; + DataPtr: PHeaderClipData; +begin + AllowDrop := False; + Effects := cdeNone; + if Succeeded(DataObject.GetData(HeaderClipFormat, Medium)) then + begin + DataPtr := GlobalLock(Medium.hGlobal); + try + AllowDrop := (DataPtr^.Thread = GetCurrentThread) and (DataPtr^.Listview = OwnerListview) + finally + GlobalUnlock(Medium.hGlobal); + ReleaseStgMedium(Medium) + end + end; +end; + +procedure TEasyHeaderDragManager.DoOLEDragEnd(const ADataObject: IDataObject; DragResult: TCommonOLEDragResult; ResultEffect: TCommonDropEffects; KeyStates: TCommonKeyStates); +begin + Header.ClearStates +end; + +procedure TEasyHeaderDragManager.DoOLEDragStart(const ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; var AllowDrag: Boolean); +var + Medium: TStgMedium; + DataPtr: PHeaderClipData; +begin + AllowDrag := Enabled; + AvailableEffects := [cdeMove]; + FillChar(Medium, SizeOf(Medium), #0); + Medium.tymed := TYMED_HGLOBAL; + Medium.hGlobal := GlobalAlloc(GHND, SizeOf(THeaderClipData)); + try + DataPtr := GlobalLock(Medium.hGlobal); + DataPtr^.Column := Column; + DataPtr^.Listview := Header.OwnerListview; + DataPtr^.Thread := GetCurrentThread; + finally + GlobalUnLock(Medium.hGlobal) + end; + // Give the block to the IDataObject to dispose of + ADataObject.SetData(HeaderClipFormat, Medium, True); +end; + +procedure TEasyHeaderDragManager.ImageSize(var Width, Height: Integer); +begin + Width := Column.Width; + Height := OwnerListview.Header.Height +end; + +procedure TEasyHeaderDragManager.SetDragCursor(Value: TCursor); +begin + OwnerListview.DragCursor := Value +end; + +procedure TEasyHeaderDragManager.SetDragMode(Value: TDragMode); +begin + FDragMode := Value +end; + +procedure TEasyHeaderDragManager.SetDragType(Value: TEasyDragType); +begin + if FDragType <> Value then + begin + if Value = edtVCL then + Registered := False; + FDragType := Value; + end +end; + +{ TEasyItemDynamicDataHelper } +function TEasyItemDynamicDataHelper.GetGroupKey(Index: Integer): LongWord; +begin + if Index < Length(GroupKeyArray) then + Result := GroupKeyArray[Index] + else + Result := EGT_FIRSTLETTER +end; + +function TEasyItemDynamicDataHelper.GetStateImageIndexes(Index: Integer): TCommonImageIndexInteger; +begin + if Index < Length(StateImageArray) then + Result := StateImageArray[Index] + else + Result := -1 +end; + +procedure TEasyItemDynamicDataHelper.LoadFromStream(S: TStream; Version: Integer); +begin + inherited LoadFromStream(S, Version); + LoadIntArrayFromStream(S, FGroupKeyArray); + if Version > 2 then + begin + LoadIntArrayFromStream(S, FStateImageArray); + end +end; + +procedure TEasyItemDynamicDataHelper.SaveToStream(S: TStream; Version: Integer); +begin + inherited SaveToStream(S, Version); + SaveIntArrayToStream(S, FGroupKeyArray); + SaveIntArrayToStream(S, FStateImageArray); +end; + +procedure TEasyItemDynamicDataHelper.SetGroupKey(Index: Integer; + Value: LongWord); +var + OldLen, i: Integer; +begin + if Index >= Length(GroupKeyArray) then + begin + OldLen := Length(GroupKeyArray); + SetLength(FGroupKeyArray, Index + 1); + for i := OldLen to Length(GroupKeyArray) - 1 do + GroupKeyArray[i] := EGT_FIRSTLETTER + end; + GroupKeyArray[Index] := Value +end; + +procedure TEasyItemDynamicDataHelper.SetStateImageIndexes(Index: Integer; Value: TCommonImageIndexInteger); +var + OldLen, i: Integer; +begin + if Index >= Length(StateImageArray) then + begin + OldLen := Length(StateImageArray); + SetLength(FStateImageArray, Index + 1); + for i := OldLen to Length(StateImageArray) - 1 do + StateImageArray[i] := -1 + end; + StateImageArray[Index] := Value +end; + +{ TEasySorter} + +constructor TEasySorter.Create(AnOwner: TEasySortManager); +begin + inherited Create; + FOwner := AnOwner; +end; + +destructor TEasyOwnedPersistentView.Destroy; +begin + FreeAndNil(FCanvasStore); + inherited Destroy; +end; + +function TEasyOwnedPersistentView.GetCanvasStore: TEasyCanvasStore; +begin + if not Assigned(FCanvasStore) then + FCanvasStore := TEasyCanvasStore.Create; + Result := FCanvasStore +end; + +procedure TEasyOwnedPersistentView.PaintCheckboxCore(CheckType: TEasyCheckType; + OwnerListView: TCustomEasyListView; ACanvas: TCanvas; ARect: TRect; IsEnabled, + IsChecked, IsHot, IsFlat, IsHovering, IsPending: Boolean; Obj: TEasyCollectionItem; Size: Integer); +var + {$IFDEF SpTBX} + CheckState: TCheckBoxState; + {$ENDIF} + {$IFDEF USETHEMES} + uState: Longword; + Part: BUTTONPARTS; + {$ENDIF} + Pt: TPoint; +begin + {$IFDEF SpTBX} + if not ((CheckType = ectNone) or (CheckType = ettNoneWithSpace)) then + begin + if CurrentTheme.Name <> 'Default' then + begin + if IsChecked then + CheckState := cbChecked + else + CheckState := cbUnChecked; + InflateRect(ARect, -1, -1); + SpDrawXPCheckBoxGlyph(ACanvas, ARect, IsEnabled, CheckState, IsHovering, IsPending, True, thtTBX); + Exit; + end + end; + {$ENDIF} + + {$IFDEF USETHEMES} + if OwnerListview.DrawWithThemes then + begin + uState := 0; + Part := 0; + case CheckType of + ectBox: + begin + Part := BP_CHECKBOX; + if IsEnabled then + begin + if IsHovering then + begin + if IsChecked then + uState := CBS_CHECKEDHOT + else + uState := CBS_UNCHECKEDHOT + end else + if IsPending then + begin + if IsChecked then + uState := CBS_CHECKEDPRESSED + else + uState := CBS_UNCHECKEDPRESSED + end else + begin + if IsChecked then + uState := CBS_CHECKEDNORMAL + else + uState := CBS_UNCHECKEDNORMAL + end + end else + begin + if IsChecked then + uState := CBS_CHECKEDDISABLED + else + uState := CBS_UNCHECKEDDISABLED + end + end; + ectRadio: + begin + Part := BP_RADIOBUTTON; + if IsEnabled then + begin + if IsHovering then + begin + if IsChecked then + uState := RBS_CHECKEDHOT + else + uState := RBS_UNCHECKEDHOT + end else + if IsPending then + begin + if IsChecked then + uState := RBS_CHECKEDPRESSED + else + uState := RBS_UNCHECKEDPRESSED + end else + begin + if IsChecked then + uState := RBS_CHECKEDNORMAL + else + uState := RBS_UNCHECKEDNORMAL + end + end else + begin + if IsChecked then + uState := RBS_CHECKEDDISABLED + else + uState := RBS_UNCHECKEDDISABLED + end + end + end; + + DrawThemeBackground(OwnerListview.Themes.ButtonTheme, ACanvas.Handle, Part, uState, ARect, nil); + Exit; + end; + {$ENDIF} + + case CheckType of + ectBox: + begin + Pt := ARect.TopLeft; + if IsEnabled then + begin + if IsFlat then + DrawCheckBox(ACanvas, Pt, Size, clWhite, clBtnFace, clBlack, clBlack, clBlack, clBlack, IsChecked, IsEnabled, IsHot) + else + DrawCheckBox(ACanvas, Pt, Size, clWhite, clBtnFace, clBtnShadow, clBtnHighlight, cl3DDkShadow, cl3DLight, IsChecked, IsEnabled, IsHot) + end else + begin + if IsFlat then + DrawCheckBox(ACanvas, Pt, Size, clBtnFace, clBtnFace, clBtnShadow, clBtnShadow, clBtnShadow, clBtnShadow, IsChecked, IsEnabled, IsHot) + else + DrawCheckBox(ACanvas, Pt, Size, clBtnFace, clBtnFace, clBtnShadow, clBtnHighlight, cl3DDkShadow, cl3DLight, IsChecked, IsEnabled, IsHot) + end; + end; + ectRadio: + begin + Pt :=ARect.TopLeft; + if IsEnabled then + begin + if IsFlat then + DrawRadioButton(ACanvas, Pt, Size, clWhite, clBtnFace, clBlack, clBlack, clBlack, clBlack, IsChecked, IsEnabled, IsHot) + else + DrawRadioButton(ACanvas, Pt, Size, clWhite, clBtnFace, clBtnShadow, clBtnHighlight, cl3DDkShadow, cl3DLight, IsChecked, IsEnabled, IsHot) + end else + begin + if IsFlat then + DrawRadioButton(ACanvas, Pt, Size, clBtnFace, clBtnFace, clBtnShadow, clBtnShadow, clBtnShadow, clBtnShadow, IsChecked, IsEnabled, IsHot) + else + DrawRadioButton(ACanvas, Pt, Size, clBtnFace, clBtnFace, clBtnShadow, clBtnHighlight, cl3DDkShadow, cl3DLight, IsChecked, IsEnabled, IsHot) + end; + end + end +end; + +constructor TEasyIncrementalSearchManager.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FItemType := eisiVisible; + FResetTime := 2000; +end; + +destructor TEasyIncrementalSearchManager.Destroy; +begin + EndTimer; + inherited +end; + +function TEasyIncrementalSearchManager.IsSearching: Boolean; +// +// Returns true if the manager is in within a search sequence +// +begin + Result := eissSearching in State +end; + +procedure TEasyIncrementalSearchManager.ClearSearch; +// +// Clears the search item and does any necessary clean up +begin + FSearchItem := nil; + FNextSearchItem := nil; +end; + +procedure TEasyIncrementalSearchManager.EndTimer; +// +// Kills and destroys the Timer +// +begin + if eissTimerRunning in State then + begin + if KillTimer(0, hTimer) then + begin + hTimer := 0; + Exclude(FState, eissTimerRunning); + DisposeStub(FTimerStub); + end else + Exception.Create('Can not Destroy Incremental Search Timer'); + end +end; + +procedure TEasyIncrementalSearchManager.HandleWMChar(var Msg: TWMChar); +// +// The WM_CHAR message is passed to the manager to handle the incremental +// search +// + + function CodePageFromLocale(Language: LCID): Integer; + var + Buf: array[0..6] of Char; + begin + // Determines the code page for a given locale. + // Unfortunately there is no easier way than this, currently. + GetLocaleInfo(Language, LOCALE_IDEFAULTANSICODEPAGE, Buf, 6); + Result := StrToIntDef(Buf, GetACP); + end; + + function KeyUnicode(C: Char): WideChar; + // Converts the given character into its corresponding Unicode character + // depending on the active keyboard layout. + begin + MultiByteToWideChar(CodePageFromLocale(GetKeyboardLayout(0) and $FFFF), + MB_USEGLYPHCHARS, @C, 1, @Result, 1); + end; + + + procedure WrapToListStart(First, Last: TItemEnumFirstLast; var SearchItem: TEasyItem); + begin + case Direction of + eisdForward: SearchItem := First; + eisdBackward: SearchItem := Last; + end; + end; + + procedure SearchToListEnd(Next, Prev :TItemNextEnum; var SearchItem: TEasyItem); + var + CompareResult: Integer; + begin + CompareResult := -1; + while (CompareResult <> 0) and Assigned(SearchItem) do + begin + if Assigned(SearchItem) and (SearchBuffer <> #13) then + OwnerListview.DoIncrementalSearch(SearchItem, SearchBuffer, CompareResult); + if CompareResult <> 0 then + begin + case Direction of + eisdForward: SearchItem := Next(SearchItem); + eisdBackward: SearchItem := Prev(SearchItem); + end; + end + end; + end; + + procedure SearchToItem(Next, Prev :TItemNextEnum; TargetItem: TEasyItem; var SearchItem: TEasyItem); + var + CompareResult: Integer; + begin + CompareResult := -1; + while (CompareResult <> 0) and (SearchItem <> TargetItem) do + begin + if Assigned(SearchItem) and (SearchBuffer <> #13) then + OwnerListview.DoIncrementalSearch(SearchItem, SearchBuffer, CompareResult); + if CompareResult <> 0 then + begin + case Direction of + eisdForward: SearchItem := OwnerListview.Groups.NextItem(SearchItem); + eisdBackward: SearchItem := OwnerListview.Groups.PrevItem(SearchItem); + end + end + end; + + if CompareResult <> 0 then + SearchItem := nil + end; + + procedure SearchList(Next, Prev :TItemNextEnum; First, Last: TItemEnumFirstLast; var SearchItem: TEasyItem); + var + StartItem: TEasyItem; + begin + StartItem := SearchItem; + SearchToListEnd(Next, Prev, SearchItem); + // Keep wrapping if not found + if not Assigned(SearchItem) then + begin + WrapToListStart(First, Last, SearchItem); + SearchToItem(Next, Prev, StartItem, SearchItem); + end + end; + +var + CompareResult: Integer; + Shift: TShiftState; +begin + if Enabled and IsSearching then + begin + ResetTimer; + Shift := KeyDataToShiftState(Msg.KeyData); + if ((Shift * [ssAlt, ssCtrl]) = []) and (Msg.CharCode > 31) then + begin + CompareResult := 0; + SearchBuffer := SearchBuffer + KeyUnicode(Char( Msg.CharCode)); + + if not Assigned(NextSearchItem) then + LoadFutureItem; + + // Mimic how Explorer works + if Length(SearchBuffer) >= 2 then + begin + if SearchBuffer[1] = SearchBuffer[2] then + begin + SearchBuffer := SearchBuffer[1]; + if (StartType <> eissStartOver) and Assigned(NextSearchItem) then + SearchItem := NextSearchItem + end + end else + begin + if (Length(SearchBuffer) = 1) and (StartType <> eissStartOver) and Assigned(NextSearchItem) then + SearchItem := NextSearchItem + end; + + if Assigned(SearchItem) then + begin + if SearchBuffer <> #13 then + OwnerListview.DoIncrementalSearch(SearchItem, SearchBuffer, CompareResult); + ResetTimer; + if CompareResult <> 0 then + begin + case ItemType of + eisiAll: // Search All items in list + begin + SearchList(OwnerListview.Groups.NextItem, + OwnerListview.Groups.PrevItem, + OwnerListview.Groups.FirstItem, + OwnerListview.Groups.LastItem, + FSearchItem); + + end; + eisiInitializedOnly: // Search only initialized items + begin + SearchList(OwnerListview.Groups.NextInitializedItem, + OwnerListview.Groups.PrevInitializedItem, + OwnerListview.Groups.FirstInitializedItem, + OwnerListview.Groups.LastInitializedItem, + FSearchItem); + end; + eisiVisible: // Search only visible items + begin + SearchList(OwnerListview.Groups.NextVisibleItem, + OwnerListview.Groups.PrevVisibleItem, + OwnerListview.Groups.FirstVisibleItem, + OwnerListview.Groups.LastVisibleItem, + FSearchItem); + end + end + end; + if Assigned(SearchItem) then + begin + // Found the item + OwnerListview.Selection.ClearAll; + OwnerListview.Selection.FocusedItem := SearchItem; + if Assigned(SearchItem) then + begin + SearchItem.Selected := True; + SearchItem.MakeVisible(emvAuto) + end; + if StartType <> eissStartOver then + LoadFutureItem; + end + end + end else + ClearSearch + end +end; + +procedure TEasyIncrementalSearchManager.HandleWMKeyDown(var Msg: +TWMKeyDown); +// +// The WM_KEYDOWN message is passed to the manager to handle the incremental +// search +// +var + Shift: TShiftState; +begin + if Enabled then + begin + Shift := KeyDataToShiftState(Msg.KeyData); + // if (Shift * [ssCtrl, ssAlt] = []) and ((Msg.CharCode > VK_HELP) and (Msg.CharCode < VK_LWIN)) or ((Msg.CharCode > VK_APPS) and (Msg.CharCode < VK_F1) ) then + StartSearch + end +end; + +procedure TEasyIncrementalSearchManager.LoadFutureItem; +begin + NextSearchItem := SearchItem; + case ItemType of + eisiAll: + begin + SearchPreloadItem(OwnerListview.Groups.NextItem, + OwnerListview.Groups.PrevItem, + OwnerListview.Groups.FirstItem, + OwnerListview.Groups.LastItem, + FNextSearchItem); + end; + eisiInitializedOnly: // Search only initialized items + begin + SearchPreloadItem(OwnerListview.Groups.NextInitializedItem, + OwnerListview.Groups.PrevInitializedItem, + OwnerListview.Groups.FirstInitializedItem, + OwnerListview.Groups.LastInitializedItem, + FNextSearchItem); + end; + eisiVisible: // Search only visible items + begin + SearchPreloadItem(OwnerListview.Groups.NextVisibleItem, + OwnerListview.Groups.PrevVisibleItem, + OwnerListview.Groups.FirstVisibleItem, + OwnerListview.Groups.LastVisibleItem, + FNextSearchItem); + end; + end; +end; + +procedure TEasyIncrementalSearchManager.ResetSearch; +// +// Ends and resets all search criteria +// +begin + SearchBuffer := ''; + if StartType <> eissLastHit then + ClearSearch; + Exclude(FState, eissSearching); + EndTimer; +end; + +procedure TEasyIncrementalSearchManager.ResetTimer; +// +// Resets the timer to another FResetTime interval without stopping the current +// search process +// +begin + EndTimer; + StartTimer; +end; + +procedure TEasyIncrementalSearchManager.SearchPreloadItem(Next, + Prev: TItemNextEnum; First, Last: TItemEnumFirstLast; + var SearchItem: TEasyItem); +begin + case Direction of + eisdForward: SearchItem := Next(SearchItem); + eisdBackward: SearchItem := Prev(SearchItem); + end; + if not Assigned(SearchItem) then + begin + case Direction of + eisdForward: SearchItem := First; + eisdBackward: SearchItem := Last; + end; + end +end; + +procedure TEasyIncrementalSearchManager.SetSearchItem(Value: TEasyItem); +begin + if Value <> FSearchItem then + begin + ClearSearch; + FSearchItem := Value + end +end; + +procedure TEasyIncrementalSearchManager.StartSearch; + + procedure SetupStartOver; + begin + case ItemType of + eisiAll: // Search All items in list + begin + if Direction = eisdForward then + SearchItem := OwnerListview.Groups.FirstItem + else + SearchItem := OwnerListview.Groups.LastItem + end; + eisiInitializedOnly: // Search only initialized items + begin + if Direction = eisdForward then + SearchItem := OwnerListview.Groups.FirstInitializedItem + else + SearchItem := OwnerListview.Groups.LastInitializedItem + end; + eisiVisible: // Search only visible items + begin + if Direction = eisdForward then + SearchItem := OwnerListview.Groups.FirstVisibleItem + else + SearchItem := OwnerListview.Groups.LastVisibleItem + end; + end + end; + +// +// Initializes the search called on WMKEYDOWN +// +begin + // Only call once during a Search Sequence + if not (eissSearching in State) then + begin + case StartType of + eissStartOver: + begin + SetupStartOver; + end; + eissLastHit: + begin + // The Search Item is already set up, or not + if not Assigned(SearchItem) then + SetupStartOver; + LoadFutureItem; + end; + eissFocusedNode: + begin + // By definition the Focused Item is Visible and Initalized so + // no other checks are necessary + if Assigned(OwnerListview.Selection.FocusedItem) then + begin + SearchItem := OwnerListview.Selection.FocusedItem; + LoadFutureItem; + end else + SetupStartOver; + end; + end; + StartTimer; // JDK 5.3.05 + Include(FState, eissSearching); + end; +end; + +procedure TEasyIncrementalSearchManager.StartTimer; +// +// Starts the Timer for the search +// +begin + if Enabled and not(eissTimerRunning in State) then + begin + TimerStub := CreateStub(Self, @TEasyIncrementalSearchManager.TimerProc); + hTimer := SetTimer(0, 0, ResetTime, TimerStub); + Include(FState, eissTimerRunning); + end +end; + +procedure TEasyIncrementalSearchManager.TimerProc(Window: HWnd; uMsg: UINT; + idEvent: UINT; dwTime: DWORD); +// +// The callback for the Timer. A callback is not effected by any blocked message +// handler taking their sweet time. +// +begin + ResetSearch; +end; + +{ TEasyGridFilmStripGroup } +function TEasyGridFilmStripGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.FilmStrip +end; + +procedure TEasyGridFilmStripGroup.AutoSizeCells; +begin + // Do nothing +end; + +procedure TEasyGridFilmStripGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.FilmStrip.Assign(Value) +end; + +{ TEasyPersistent } +constructor TEasyPersistent.Create; +begin + inherited Create; +end; + +destructor TEasyPersistent.Destroy; +begin + inherited Destroy; +end; + +procedure TEasyPersistent.Assign(Source: TPersistent); +begin + inherited Assign(Source); +end; + +{ TEasyGridGridGroup } +constructor TEasyGridGridGroup.Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner, AnOwnerGroup); + FLayout := eglGrid +end; + +function TEasyGridGridGroup.GetCellSize: TEasyCellSize; +begin + Result := OwnerListview.CellSizes.Grid +end; + +procedure TEasyGridGridGroup.Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); +var + i, Top, Bottom, Left, Offset, TopMargin, + BottomMargin, VisibleCount, ColumnIndex, ColumnLeft: Integer; + Item: TEasyItem; + Columns: TEasyColumns; +begin + AutoSizeCells; + + if Assigned(PrevGroup) then + Offset := PrevGroup.DisplayRect.Bottom + else + Offset := 0; + + ColumnIndex := 0; + Columns := OwnerListview.Header.Columns; + OwnerGroup.FDisplayRect := Rect(0, Offset, OwnerListview.Header.ViewWidth, Offset); + // Prepare the VisibleList for the worse case, all are visible + OwnerGroup.VisibleItems.Clear; + OwnerGroup.VisibleItems.Capacity := OwnerGroup.Items.Count; + + Left := OwnerGroup.MarginLeft.RuntimeSize; + + TopMargin := OwnerGroup.MarginTop.RuntimeSize; + BottomMargin := OwnerGroup.MarginBottom.RuntimeSize; + if OwnerGroup.Visible then + begin + if OwnerGroup.Expanded and (OwnerGroup.Items.Count > 0) then + begin + VisibleCount := 0; + Top := Offset + TopMargin; + Bottom := Offset + CellSize.Height + TopMargin; + for i := 0 to OwnerGroup.Items.Count - 1 do + begin + Item := OwnerGroup.Items.List.List[i]; // Direct Access for Speed + if Item.Visible then + begin + Item.FVisibleIndex := NextVisibleItemIndex; + Item.FVisibleIndexInGroup := VisibleCount; + ColumnLeft := Columns[ColumnIndex].DisplayRect.Left; + Item.FDisplayRect := Rect(Left + ColumnLeft, Top, Left + ColumnLeft + Columns[ColumnIndex].Width, Bottom); + OwnerGroup.VisibleItems.Add(Item); + Inc(ColumnIndex); + if ColumnIndex >= Columns.Count then + begin + ColumnIndex := 0; + Inc(Top, CellSize.Height); + Inc(Bottom, CellSize.Height); + end; + Inc(VisibleCount); + Inc(NextVisibleItemIndex); + end else + Item.FDisplayRect := Rect(Left, Top, Left, Top); + OwnerGroup.FDisplayRect.Bottom := Item.FDisplayRect.Bottom + BottomMargin; + end + end else + OwnerGroup.FDisplayRect := Rect(0, Offset, OwnerListview.Header.ViewWidth, Offset + TopMargin + BottomMargin); + end; + // Column Count does not relate to Report view columns. It is a more primitive + // and the Report columns are within the Grid Column + FColumnCount := Columns.Count; + if FColumnCount > 0 then + begin + FRowCount := OwnerGroup.VisibleItems.Count div FColumnCount; + if OwnerGroup.VisibleItems.Count mod FColumnCount > 0 then + Inc(FRowCount) + end else + FRowCount := 0 +end; + +procedure TEasyGridGridGroup.SetCellSize(Value: TEasyCellSize); +begin + OwnerListview.CellSizes.Grid := Value +end; + +{ TEasyAlphaBlender} +destructor TEasyAlphaBlender.Destroy; +begin + inherited Destroy; +end; + +procedure TEasyAlphaBlender.BasicBlend(Listview: TCustomEasyListview; ACanvas: TCanvas; ViewportRect: TRect; Color: TColor; Alpha: Byte = 128; UseScrollPostion: Boolean = True); +var + R: TRect; + Obj: THandle; + Bits: Windows.BITMAP; +begin + if Assigned(ACanvas) and Assigned(Listview) and not IsRectEmpty(ViewportRect) then + begin + Obj := GetCurrentObject(ACanvas.Handle, OBJ_BITMAP); + if Obj <> 0 then + if GetObject(Obj, SizeOf(Windows.BITMAP), @Bits) > 0 then + begin + if UseScrollPostion then + begin + R := Listview.Scrollbars.MapWindowRectToViewRect(Rect(0, 0, Bits.bmWidth, Bits.bmHeight)); + IntersectRect(R, ViewportRect, R); + R := Listview.Scrollbars.MapViewRectToWindowRect(R); + AlphaBlend(0, ACanvas.Handle, R, Point(0, 0), cbmConstantAlphaAndColor, Alpha, ColorToRGB(Color)) + end else + begin + IntersectRect(R, ViewportRect, Listview.ClientRect); + AlphaBlend(0, ACanvas.Handle, R, Point(0, 0), cbmConstantAlphaAndColor, Alpha, ColorToRGB(Color)) + end + end + end + +end; + +procedure TEasyAlphaBlender.Blend(Listview: TCustomEasyListview; Obj: TEasyCollectionItem; ACanvas: TCanvas; ViewportRect: TRect; Image: TBitmap); +var + BlendColor: TColor; + BlendAlpha: Byte; + Scratch: TBitmap; + DoBlend: Boolean; +begin + if not IsRectEmpty(ViewportRect) then + begin + GetBlendParams(Listview, Obj, BlendAlpha, BlendColor, DoBlend); + if DoBlend and HasMMX then + begin + Scratch := TBitmap.Create; + try + Scratch.Width := Image.Width; + Scratch.Height := Image.Height; + Scratch.Assign(Image); + Scratch.PixelFormat := pf32Bit; + Scratch.TransparentMode := Image.TransparentMode; + Scratch.TransparentColor := Image.TransparentColor; + Scratch.Transparent := True; + + // Now force the bitmap to create a mask based on the transparent color + Scratch.MaskHandle; + // The AlphaBlend function is low level so TBitmap does not know anything happened to it + AlphaBlend(0, Scratch.Canvas.Handle, Rect(0, 0, Scratch.Width, Scratch.Height), Point(0, 0), cbmConstantAlphaAndColor, BlendAlpha, ColorToRGB(BlendColor)); + // Since we got the mask before the AlphaBlend occured the original mask is + // used and all is correct. + ACanvas.Draw(ViewportRect.Left + (RectWidth(ViewportRect) - Scratch.Width) div 2, + ViewportRect.Top + (RectHeight(ViewportRect) - Scratch.Height) div 2, + Scratch); + + finally + Scratch.Free + end + end else + ACanvas.Draw(ViewportRect.Left + (RectWidth(ViewportRect) - Image.Width) div 2, + ViewportRect.Top + (RectHeight(ViewportRect) - Image.Height) div 2, + Image); + end +end; + +procedure TEasyAlphaBlender.GetBlendParams(Listview: TCustomEasyListview; Obj: TEasyCollectionItem; var BlendAlpha: Byte; var BlendColor: TColor; var DoBlend: Boolean); +begin + DoBlend := False; + if Assigned(Listview) then + begin + if Listview.Focused then + begin + if Obj.Enabled then + begin + BlendAlpha := Listview.Selection.BlendAlphaImage; + BlendColor := Listview.Selection.Color + end else + begin + BlendAlpha := Listview.DisabledBlendAlpha; + BlendColor := Listview.DisabledBlendColor; + end + end else + begin + BlendAlpha := Listview.DisabledBlendAlpha; + BlendColor := Listview.Selection.InactiveColor; + end; + + DoBlend := Obj.Selected or Obj.Hilighted or (not Obj.Enabled and Listview.Focused) + end +end; + +{ TEasyBaseTaskBand } +constructor TEasyBaseTaskBand.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + BackGround := TEasyTaskBandBackgroundManager.Create(Self); + HotTrack.Enabled := True; + PaintInfoGroup.CaptionIndent := 9; + PaintInfoGroup.MarginBottom.Size := 3; + PaintInfoGroup.MarginBottom.Visible := True; + PaintInfoGroup.MarginLeft.Size := 11; + PaintInfoGroup.MarginLeft.Visible := True; + PaintInfoGroup.MarginRight.Size := 11; + PaintInfoGroup.MarginRight.Visible := True; + PaintInfoGroup.MarginTop.Size := 26; + ShowGroupMargins := True; + Selection.Enabled := False; + HotTrack.GroupTrack := HotTrack.GroupTrack + [htgTopMargin] +end; + +function TEasyBaseTaskBand.CreateColumnPaintInfo: TEasyPaintInfoBaseColumn; +begin + Result:= TEasyPaintInfoTaskBandColumn.Create(Self) +end; + +function TEasyBaseTaskBand.CreateGroupPaintInfo: TEasyPaintInfoBaseGroup; +begin + Result := TEasyPaintInfoTaskBandGroup.Create(Self) +end; + +function TEasyBaseTaskBand.CreateItemPaintInfo: TEasyPaintInfoBaseItem; +begin + Result:= TEasyPaintInfoTaskBandItem.Create(Self) +end; + +function TEasyBaseTaskBand.GetPaintInfoColumn: TEasyPaintInfoTaskBandColumn; +begin + Result := inherited PaintInfoColumn as TEasyPaintInfoTaskbandColumn +end; + +function TEasyBaseTaskBand.GetPaintInfoGroup: TEasyPaintInfoTaskbandGroup; +begin + Result := inherited PaintInfoGroup as TEasyPaintInfoTaskbandGroup +end; + +function TEasyBaseTaskBand.GetPaintInfoItem: TEasyPaintInfoTaskBandItem; +begin + Result := inherited PaintInfoItem as TEasyPaintInfoTaskbandItem +end; + +function TEasyBaseTaskBand.GroupTestExpand(HitInfo: TEasyGroupHitTestInfoSet): Boolean; +begin + Result:= egtOnHeader in HitInfo +end; + +procedure TEasyBaseTaskBand.DoCustomGrid(Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass); +begin + if Assigned(OnCustomGrid) then + OnCustomGrid(Self, Group, ViewStyle, Grid); + if not Assigned(Grid) then + Grid := TEasyGridTaskBandGroup +end; + +procedure TEasyBaseTaskBand.DoGroupCustomView(Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass); +begin + if Assigned(OnGroupCustomView) then + OnGroupCustomView(Self, Group, ViewStyle, View); + if not Assigned(View) then + View := TEasyViewTaskBandGroup +end; + +procedure TEasyBaseTaskBand.DoItemCustomView(Item: TEasyItem; ViewStyle: TEasyListStyle; var View: TEasyViewItemClass); +begin + if Assigned(OnItemCustomView) then + OnItemCustomView(Self, Item, ViewStyle, View); + if not Assigned(View) then + View := TEasyViewTaskBandItem +end; + +procedure TEasyBaseTaskBand.SetPaintInfoColumn(const Value: TEasyPaintInfoTaskBandColumn); +begin + inherited PaintInfoColumn := Value +end; + +procedure TEasyBaseTaskBand.SetPaintInfoGroup(const Value: TEasyPaintInfoTaskbandGroup); +begin + inherited PaintInfoGroup := Value +end; + +procedure TEasyBaseTaskBand.SetPaintInfoItem(const Value: TEasyPaintInfoTaskBandItem); +begin + inherited PaintInfoItem := Value +end; + +{ TGridTaskBandGroup } +constructor TEasyGridTaskBandGroup.Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner, AnOwnerGroup); + CellSize := TEasyCellSize.Create(AnOwner) +end; + +destructor TEasyGridTaskBandGroup.Destroy; +begin + inherited Destroy; + FreeAndNil(FCellSize); +end; + +function TEasyGridTaskBandGroup.GetCellSize: TEasyCellSize; +begin + FCellSize.FWidth := OwnerListview.ClientWidth - 1 - OwnerListview.PaintInfoGroup.MarginLeft.Size - OwnerListview.PaintInfoGroup.MarginRight.Size; +// if OwnerListview.Scrollbars.VertBarVisible then + // Dec(FCellSize.FWidth, GetSystemMetrics(SM_CXVSCROLL)); + FCellSize.FHeight := 24; + Result := FCellSize +end; + +function TEasyGridTaskBandGroup.StaticTopItemMargin: Integer; +begin + Result := 10; +end; + +function TEasyGridTaskBandGroup.StaticTopMargin: Integer; +begin + Result := 11; +end; + +procedure TEasyGridTaskBandGroup.SetCellSize(Value: TEasyCellSize); +begin + +end; + +procedure TEasyGridSingleColumn.AutoSizeCells; +begin + // Do nothing +end; + +procedure TEasyGridSingleColumn.FindInsertPosition(ViewportPoint: TPoint; var Group: TEasyGroup; var Index: Integer); +begin + Group := nil; + Index := -1 +end; + +function TEasyGridSingleColumn.GetCellSize: TEasyCellSize; +begin + Result := nil +end; + +{ TGridSingleColumn } +function TEasyGridSingleColumn.GetMaxColumns(Group: TEasyGroup; WindowWidth: Integer): Integer; +begin + Result := 1; +end; + +procedure TEasyGridSingleColumn.SetCellSize(Value: TEasyCellSize); +begin + +end; + +{ TEasyViewTaskBandGroup} +function TEasyViewTaskBandGroup.DrawThemed: Boolean; +begin + Result := True +end; + +procedure TEasyViewTaskBandGroup.GetExpandImageSize(Group: TEasyGroup; var ImageW: Integer; var ImageH: Integer); +{$IFDEF USETHEMES} +var + PartID, StateID: LongWord; + R: TRect; +{$ENDIF} +begin + ImageW := 0; + ImageH := 0; + if Group.Expandable then + begin + {$IFDEF USETHEMES} + if Group.OwnerListview.DrawWithThemes then + begin + StateID := EBNGC_NORMAL; + if Group.Expanded then + PartID := EBP_NORMALGROUPCOLLAPSE + else + PartID := EBP_NORMALGROUPEXPAND; + if Group.Hilighted then + StateID := StateID or EBNGC_HOT; + R := Rect(0, 0, 0, 0); + // If too small it returns the negative rectangle of the ideal size + if Succeeded(GetThemeBackgroundExtent(OwnerListview.Themes.ExplorerBarTheme, 0, PartID, StateID, R, R)) then + begin + ImageW := Abs(RectWidth(R)); + ImageH := Abs(RectHeight(R)); + end + end else + begin + ImageW := 16; + ImageH := 16; + end; + {$ELSE} + ImageW := 16; + ImageH := 16; + {$ENDIF} + end; +end; + +procedure TEasyViewTaskBandGroup.GroupRectArray(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; var RectArray: TEasyRectArrayObject); +// +// Grabs all the rectangles for the items within a cell in one call +// If PaintInfo is nil then the information is fetched automaticlly +// +var + TextSize: TSize; + HeaderBand, FooterBand: TRect; + TempRectArray: TEasyRectArrayObject; + ImageW, ImageH, ExpandImageW, ExpandImageH: Integer; +begin + Group.Initialized := True; + + FillChar(RectArray, SizeOf(RectArray), #0); + + RectArray.GroupRect := ObjRect; + RectArray.BackGndRect := Group.BoundsRectBkGnd; + + GetExpandImageSize(Group, ExpandImageW, ExpandImageH); + GetImageSize(Group, ImageW, ImageH); + + if MarginEdge in [egmeTop, egmeBottom] then + begin + // Calculate the Expansion button first for the Header only + if Group.Expandable and (MarginEdge = egmeTop) then + RectArray.ExpandButtonRect := Rect(RectArray.BackGndRect.Right - Group.ExpandImageIndent - ExpandImageW, + RectArray.GroupRect.Top, + RectArray.BackGndRect.Right, + RectArray.GroupRect.Bottom) + else // Make the ExpandButton R a width of 0 + RectArray.ExpandButtonRect := Rect(RectArray.GroupRect.Left, + RectArray.GroupRect.Top, + RectArray.GroupRect.Left, + RectArray.GroupRect.Bottom); + + if (Group.CheckType <> ectNone) and (MarginEdge in [egmeTop]) then + begin + RectArray.CheckRect := Checks.Bound[Group.Checksize]; + OffsetRect(RectArray.CheckRect, RectArray.BackGndRect.Left + Group.CheckIndent, ObjRect.Top + (RectHeight(ObjRect) - RectHeight(RectArray.CheckRect)) div 2); + end else + begin + // CheckRect is a 0 width + RectArray.CheckRect := ObjRect; + RectArray.CheckRect.Left := RectArray.BackGndRect.Left; + RectArray.CheckRect.Right := RectArray.BackGndRect.Left; + end; + + + // Now Calculate the image for the header or the footer + if Group.ImageIndex > -1 then + RectArray.IconRect := Rect(RectArray.CheckRect.Right + Group.ImageIndent, + RectArray.GroupRect.Top, + RectArray.CheckRect.Right + ImageW + Group.ImageIndent, + RectArray.GroupRect.Bottom) + else // Make the IconR a width of 0 + RectArray.IconRect := Rect(RectArray.CheckRect.Right, + RectArray.CheckRect.Top, + RectArray.CheckRect.Right, + RectArray.CheckRect.Bottom); + + // Now the Label rect may be calculated for the header or footer + RectArray.LabelRect := Rect(RectArray.IconRect.Right + Group.CaptionIndent, + RectArray.ExpandButtonRect.Top, + RectArray.ExpandButtonRect.Left, + RectArray.ExpandButtonRect.Bottom); + + + // Calculate the text size for the text based on the above font + if Assigned(OwnerListview.ScratchCanvas) then + begin + LoadTextFont(Group, OwnerListview.ScratchCanvas); + TextSize := TextExtentW(Group.Caption, OwnerListview.ScratchCanvas.Font); + end else + begin + TextSize.cx := 0; + TextSize.cy := 0 + end; + RectArray.TextRect := Rect(RectArray.LabelRect.Left, + RectArray.LabelRect.Top, + RectArray.LabelRect.Left + TextSize.cx, + RectArray.LabelRect.Top + TextSize.cy); + + if RectArray.TextRect.Right > RectArray.LabelRect.Right then + RectArray.TextRect.Right := RectArray.LabelRect.Right; + if RectArray.TextRect.Bottom > RectArray.LabelRect.Bottom then + RectArray.TextRect.Bottom := RectArray.LabelRect.Bottom; + + case Group.Alignment of + taLeftJustify: OffsetRect(RectArray.TextRect, 0, 0); + taRightJustify: OffsetRect(RectArray.TextRect, RectWidth(RectArray.LabelRect) - (RectWidth(RectArray.TextRect)), 0); + taCenter: OffsetRect(RectArray.TextRect, (RectWidth(RectArray.LabelRect) - RectWidth(RectArray.TextRect)) div 2, 0); + end; + + case Group.VAlignment of + cvaBottom: OffsetRect(RectArray.TextRect, 0, RectHeight(RectArray.GroupRect) - (RectHeight(RectArray.TextRect) + Group.BandThickness + Group.BandMargin)); + cvaCenter: OffsetRect(RectArray.TextRect, 0, (RectHeight(RectArray.GroupRect) - RectHeight(RectArray.TextRect)) div 2); + end; + // Use the calculated label rectangle to position where the text goes + + + if Group.BandEnabled then + begin + if Group.BandFullWidth then + RectArray.BandRect := Rect(RectArray.GroupRect.Left, + RectArray.GroupRect.Bottom - Group.BandMargin - Group.BandThickness, + RectArray.GroupRect.Right, + RectArray.GroupRect.Bottom - Group.BandMargin) + else + RectArray.BandRect := Rect(RectArray.GroupRect.Left, + RectArray.GroupRect.Bottom - Group.BandMargin - Group.BandThickness, + RectArray.GroupRect.Left + Group.BandLength, + RectArray.GroupRect.Bottom - Group.BandMargin); + + OffsetRect(RectArray.BandRect, Group.BandIndent, Group.BandMargin); + end; + + end else + begin // Calculate the margin rectangles + + // Need to send nil so the user attributes are fetched for the header + GroupRectArray(Group, egmeTop, Group.BoundsRectTopMargin, TempRectArray); + HeaderBand := TempRectArray.BandRect; + + // Need to send nil so the user attributes are fetched for the footer + GroupRectArray(Group, egmeBottom, Group.BoundsRectBottomMargin, TempRectArray); + FooterBand := TempRectArray.BandRect; + + if MarginEdge = egmeLeft then + RectArray.BandRect := Rect(RectArray.GroupRect.Left + (RectWidth(RectArray.GroupRect) - Group.BandThickness) div 2, + HeaderBand.Top, + RectArray.GroupRect.Right, + FooterBand.Bottom - 1); + if MarginEdge = egmeRight then + RectArray.BandRect := Rect(RectArray.GroupRect.Left, + HeaderBand.Top, + RectArray.GroupRect.Right - (RectWidth(RectArray.GroupRect) - Group.BandThickness) div 2, + FooterBand.Bottom - 1) + end; +end; + +procedure TEasyViewTaskBandGroup.LoadTextFont(Group: TEasyGroup; ACanvas: TCanvas); +begin + {$IFDEF USETHEMES} + inherited LoadTextFont(Group, ACanvas); + if not(Group.OwnerListview.DrawWithThemes) then + begin + if Group.Bold then + ACanvas.Font.Color := clHighlightText + end; + {$ELSE} + inherited LoadTextFont(Group, ACanvas); + if Group.Bold then + ACanvas.Font.Color := clHighlightText + {$ENDIF} +end; + +procedure TEasyViewTaskBandGroup.PaintBackground(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); + + procedure DrawNonThemed; + begin + if Group.Bold then + ACanvas.Brush.Color := clHighlight + else + ACanvas.Brush.Color := clBtnFace; + case MarginEdge of + egmeBackground: ACanvas.FrameRect(RectArray.BackGndRect); + egmeTop: ACanvas.FillRect(RectArray.GroupRect); + end + end; + +{$IFDEF USETHEMES} +var + PartID, StateID: LongWord; + R, HeaderR: TRect; +{$ENDIF} +begin + {$IFDEF USETHEMES} + if Group.OwnerListview.DrawWithThemes then + begin + case MarginEdge of + egmeBackground: + begin + // Draw the group background + R := RectArray.BackGndRect; + if Group.Bold then + PartID := EBP_SPECIALGROUPBACKGROUND + else + PartID := EBP_NORMALGROUPBACKGROUND; + StateID := 0; + DrawThemeBackground(OwnerListview.Themes.ExplorerBarTheme, ACanvas.Handle, PartID, StateID, R, nil); + end; + egmeTop: + begin + // Draw the group header + HeaderR := RectArray.BackGndRect; + HeaderR.Bottom := HeaderR.Top - 1; + HeaderR.Top := HeaderR.Top - OwnerListview.PaintInfoGroup.MarginTop.RuntimeSize; + if Group.Bold then + PartID := EBP_SPECIALGROUPHEAD + else + PartID := EBP_NORMALGROUPHEAD; + StateID := 0; + DrawThemeBackground(OwnerListview.Themes.ExplorerBarTheme, ACanvas.Handle, PartID, StateID, HeaderR, nil); + end + end + end else + DrawNonThemed; + Exit; + {$ELSE} + DrawNonThemed; + {$ENDIF} +end; + +procedure TEasyViewTaskBandGroup.PaintBand(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +begin + // Don't do inherited +end; + +procedure TEasyViewTaskBandGroup.PaintExpandButton(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); + + procedure DrawNonThemed; + var + RCenterX, RCenterY, RCenterY1, RCenterY2: Integer; + ExpandW, ExpandH: Integer; + R: TRect; + begin + GetExpandImageSize(Group, ExpandW, ExpandH); + if Group.Bold then + ACanvas.Pen.Color := clHighlightText + else + ACanvas.Pen.Color := clBlack; + ACanvas.Pen.Width := 1; + RCenterX := RectArray.ExpandButtonRect.Left + ExpandW div 2; + RCenterY := RectArray.ExpandButtonRect.Top + ((RectHeight(RectArray.ExpandButtonRect)-ExpandH) div 2) + (ExpandH div 2); + if Group.Expanded then + begin + RCenterY2 := RCenterY; + RCenterY1 := RCenterY2 - 4; + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX - 4, RCenterY1 + 4); + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX + 4, RCenterY1 + 4); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX - 4, RCenterY2 + 4); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX + 4, RCenterY2 + 4); + Inc(RCenterY1); + Inc(RCenterY2); + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX - 3, RCenterY1 + 3); + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX + 3, RCenterY1 + 3); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX - 3, RCenterY2 + 3); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX + 3, RCenterY2 + 3); + end else + begin + RCenterY2 := RCenterY; + RCenterY1 := RCenterY2 + 4; + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX - 4, RCenterY1 - 4); + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX + 4, RCenterY1 - 4); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX - 4, RCenterY2 - 4); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX + 4, RCenterY2 - 4); + Dec(RCenterY1); + Dec(RCenterY2); + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX - 3, RCenterY1 - 3); + ACanvas.MoveTo(RCenterX, RCenterY1); + ACanvas.LineTo(RCenterX + 3, RCenterY1 - 3); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX - 3, RCenterY2 - 3); + ACanvas.MoveTo(RCenterX, RCenterY2); + ACanvas.LineTo(RCenterX + 3, RCenterY2 - 3); + end; + + if Group.Hilighted then + begin + R := Rect(RCenterX - ExpandW div 2, + RCenterY - ExpandH div 2, + RCenterX + ExpandW div 2, + RCenterY + ExpandH div 2); + DrawEdge(ACanvas.Handle, R, BDR_RAISEDOUTER, BF_RECT); + end + end; + +{$IFDEF USETHEMES} +var + PartID, StateID: LongWord; +{$ENDIF} +begin + if (MarginEdge = egmeTop) and Group.Expandable then + begin + {$IFDEF USETHEMES} + if Group.OwnerListview.DrawWithThemes then + begin + StateID := EBNGC_NORMAL; + if Group.Bold then + begin + if Group.Expanded then + PartID := EBP_SPECIALGROUPCOLLAPSE + else + PartID := EBP_SPECIALGROUPEXPAND; + end else + begin + if Group.Expanded then + PartID := EBP_NORMALGROUPCOLLAPSE + else + PartID := EBP_NORMALGROUPEXPAND; + end; + if Group.Hilighted then + StateID := StateID or EBNGC_HOT; + DrawThemeBackground(OwnerListview.Themes.ExplorerBarTheme, ACanvas.Handle, PartID, StateID, RectArray.ExpandButtonRect, nil); + end else + DrawNonThemed; + {$ELSE} + DrawNonThemed; + {$ENDIF} + end +end; + +procedure TEasyViewTaskBandGroup.PaintText(Group: TEasyGroup; MarginEdge: TEasyGroupMarginEdge; ACanvas: TCanvas; ObjRect: TRect; RectArray: TEasyRectArrayObject); +begin + {$IFDEF USETHEMES} + if DrawThemed and (MarginEdge = egmeTop) and Group.OwnerListview.DrawWithThemes then + begin + PaintTextTopThemed(ACanvas, Group, ObjRect, RectArray); + end else + inherited; + {$ELSE} + inherited; + {$ENDIF} +end; + +procedure TEasyViewTaskBandGroup.PaintTextTopThemed(ACanvas: TCanvas; Group: TEasyGroup; ObjRect: TRect; RectArray: TEasyRectArrayObject); +{$IFDEF USETHEMES} +var + PartID, StateID: LongWord; + Flags, Flags2: DWORD; +{$ENDIF} +begin + {$IFDEF USETHEMES} + if Group.Bold then + PartID := EBP_SPECIALGROUPHEAD + else + PartID := EBP_NORMALGROUPHEAD; + StateID := 0; + + Flags := 0; + case Group.Alignment of + taLeftJustify: Flags := Flags or DT_LEFT; + taRightJustify: Flags := Flags or DT_RIGHT; + taCenter: Flags := Flags or DT_CENTER; + end; + + case Group.VAlignment of + cvaTop: Flags := Flags or DT_TOP; + cvaCenter: Flags := Flags or DT_VCENTER; + cvaBottom: Flags := Flags or DT_BOTTOM; + end; + + Flags := Flags or DT_SINGLELINE or DT_END_ELLIPSIS; + if Group.Enabled then + Flags2 := 0 + else + Flags2 := 1; + DrawThemeText(OwnerListview.Themes.ExplorerBarTheme, ACanvas.Handle, PartID, StateID, PWideChar(Group.Caption), -1, Flags, Flags2, RectArray.LabelRect); + {$ENDIF USETHEMES} +end; + +{ TEasyTaskBandBackgroundManager } +procedure TEasyTaskBandBackgroundManager.PaintTo(ACanvas: TCanvas; ARect: TRect; PaintDefault: Boolean); +{$IFDEF USETHEMES} +var + PartID, StateID: LongWord; + R: TRect; + Theme: HTheme; +{$ENDIF} +begin + {$IFDEF USETHEMES} + Theme := OwnerListview.Themes.ExplorerBarTheme; + if OwnerListview.DrawWithThemes then + begin + // Draw the blue background + R := OwnerListview.ClientRect; + PartID := 0; + StateID := 0; + DrawThemeBackground(Theme, ACanvas.Handle, PartID, StateID, R, nil); + end + {$ENDIF} +end; + +function TEasyListview.GetPaintInfoColumn: TEasyPaintInfoColumn; +begin + Result := inherited PaintInfoColumn as TEasyPaintInfoColumn +end; + +function TEasyListview.GetPaintInfoGroup: TEasyPaintInfoGroup; +begin + Result := inherited PaintInfoGroup as TEasyPaintInfoGroup +end; + +function TEasyListview.GetPaintInfoItem: TEasyPaintInfoItem; +begin + Result := inherited PaintInfoItem as TEasyPaintInfoItem +end; + +procedure TEasyListview.SetPaintInfoColumn(const Value: TEasyPaintInfoColumn); +begin + inherited PaintInfoColumn := Value +end; + +procedure TEasyListview.SetPaintInfoGroup(const Value: TEasyPaintInfoGroup); +begin + inherited PaintInfoGroup := Value +end; + +procedure TEasyListview.SetPaintInfoItem(const Value: TEasyPaintInfoItem); +begin + inherited PaintInfoItem := Value +end; + +{ TCanvasStore } +destructor TEasyCanvasStore.Destroy; +begin + FreeAndNil(FFont); + FreeAndNil(FBrush); + FreeAndNil(FPen); + inherited Destroy; +end; + +procedure TEasyCanvasStore.RestoreCanvasState(Canvas: TCanvas); +begin + Canvas.Pen.Assign(Pen); + Canvas.Brush.Assign(Brush); + Canvas.Font.Assign(Font); +end; + +procedure TEasyCanvasStore.StoreCanvasState(Canvas: TCanvas); +begin + if not Assigned(Pen) then + Pen := TPen.Create; + if not Assigned(Brush) then + Brush := TBrush.Create; + if not Assigned(Font) then + Font := TFont.Create; + Pen.Assign(Canvas.Pen); + Brush.Assign(Canvas.Brush); + Font.Assign(Canvas.Font) +end; + +procedure TEasyMemoEditor.CalculateEditorRect(NewText: WideString; var NewRect: TRect); +var + DrawFlags: TCommonDrawTextWFlags; + DC: HDC; + Font, OldFont: HFont; + TextM: TTextMetric; +begin + OldFont := 0; + + if NewText = '' then + NewText := ' '; + + Font := GetEditorFont.Handle; + DrawFlags := [dtCalcRectAdjR, dtCalcRect, dtCalcRectAlign]; + + // Center horizontally for multi-line edits + DrawFlags := DrawFlags + [dtCenter]; + + DC := GetDC(Editor.Handle); + try + OldFont := SelectObject(DC, Font); + + NewRect := RectArray.LabelRect; + InflateRect(NewRect, -4, -2); + + NewRect := Listview.Scrollbars.MapViewRectToWindowRect(NewRect); + + DrawTextWEx(DC, NewText, NewRect, DrawFlags, -1); + + InflateRect(NewRect, H_STRINGEDITORMARGIN, V_STRINGEDITORMARGIN + 1); + + GetTextMetrics(DC, TextM); + + if NewRect.Right > Listview.ClientWidth - TextM.tmAveCharWidth + H_STRINGEDITORMARGIN then + NewRect.Right := Listview.ClientWidth - TextM.tmAveCharWidth + H_STRINGEDITORMARGIN; + if NewRect.Bottom > Listview.ClientHeight - V_STRINGEDITORMARGIN then + NewRect.Bottom := Listview.ClientHeight - V_STRINGEDITORMARGIN; + + // Center horizontally for multi-line edits + NewRect.Right := NewRect.Left + RectWidth(NewRect) + finally + if OldFont <> 0 then + SelectObject(DC, OldFont); + ReleaseDC(Editor.Handle, DC); + end +end; + +procedure TEasyMemoEditor.CreateEditor(var AnEditor: TWinControl; Column: TEasyColumn; Parent: TWinControl); +var + Memo: TEasyMemo; +begin + AnEditor := TEasyMemo.Create(nil); + Memo := (AnEditor as TEasyMemo); + Memo.Visible := False; + Memo.Parent := Listview; // Do this first or it resets at least BorderStyle to True + Memo.Alignment := taCenter; + Memo.Text := EditText(Item, Column); + Memo.OnKeyDown := OnEditKeyDown; + {$IFDEF USETHEMES} + if not Listview.Themed then + {$ENDIF USETHEMES} + begin + Memo.Ctl3D := False; + Memo.BorderStyle := bsSingle; + {$IFDEF COMPILER_6_UP} + Memo.BevelInner := bvNone; + Memo.BevelOuter := bvNone; + Memo.BevelKind := bkNone; + {$ENDIF} + end +end; + +function TEasyMemoEditor.GetEditorFont: TFont; +begin + Result := (Editor as TEasyMemo).Font +end; + +function TEasyMemoEditor.GetText: VAriant; +begin + Result := (Editor as TEasyMemo).Text +end; + +procedure TEasyMemoEditor.DoEditKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState; var DoDefault: Boolean); +begin + +end; + +procedure TEasyMemoEditor.OnEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +// +// Check to see if the user is finished, if not test to see if the edit needs +// to be resized to reflect the new text +// +var + DoDefault: Boolean; +begin + DoDefault := True; + DoEditKeyDown(Sender, Key, Shift, DoDefault); + if DoDefault then + begin + if Key = VK_RETURN then + begin + Key := 0; + AcceptEdit; + end else + if Key = VK_F2 then + begin + SelectAll + end else + PostMessage(Editor.Handle, WM_EDITORRESIZE, 0, 0); + end; + FModified := True; +end; + +procedure TEasyMemoEditor.SelectAll; +begin + (Editor as TEasyMemo).SelectAll; +end; + +procedure TEasyMemoEditor.SetEditorFocus; +begin + inherited SetEditorFocus; + SelectAll; +end; + +{ TEasyStringEditor} +procedure TEasyStringEditor.CalculateEditorRect(NewText: WideString; var NewRect: TRect); +var + DrawFlags: TCommonDrawTextWFlags; + DC: HDC; + Font, OldFont: HFont; + TextM: TTextMetric; +begin + OldFont := 0; + + if NewText = '' then + NewText := ' '; + + Font := GetEditorFont.Handle; + DrawFlags := [dtCalcRectAdjR, dtCalcRect, dtCalcRectAlign]; + + DrawFlags := DrawFlags + [dtLeft, dtVCenter]; + + DC := GetDC(Editor.Handle); + try + OldFont := SelectObject(DC, Font); + + NewRect := RectArray.LabelRect; + InflateRect(NewRect, -4, -2); + + NewRect := Listview.Scrollbars.MapViewRectToWindowRect(NewRect); + + DrawTextWEx(DC, NewText, NewRect, DrawFlags, 1); + + InflateRect(NewRect, H_STRINGEDITORMARGIN div 2, V_STRINGEDITORMARGIN); + + GetTextMetrics(DC, TextM); + + if NewRect.Right > Listview.ClientWidth - TextM.tmAveCharWidth + H_STRINGEDITORMARGIN then + NewRect.Right := Listview.ClientWidth - TextM.tmAveCharWidth + H_STRINGEDITORMARGIN; + if NewRect.Bottom > Listview.ClientHeight - V_STRINGEDITORMARGIN then + NewRect.Bottom := Listview.ClientHeight - V_STRINGEDITORMARGIN; + + NewRect.Right := NewRect.Left + RectWidth(NewRect) + TextM.tmAveCharWidth; + + finally + if OldFont <> 0 then + SelectObject(DC, OldFont); + ReleaseDC(Editor.Handle, DC); + end +end; + +procedure TEasyStringEditor.CreateEditor(var AnEditor: TWinControl; Column: TEasyColumn; Parent: TWinControl); +var + Edit: TEasyEdit; +begin + AnEditor := TEasyEdit.Create(nil); + Edit := AnEditor as TEasyEdit; + Edit.Visible := False; + Edit.Parent := Listview; // Do this first or it resets at least BorderStyle to True + Edit.Text := EditText(Item, Column); + Edit.OnKeyDown := OnEditKeyDown; + {$IFDEF USETHEMES} + if not Listview.Themed then + {$ENDIF USETHEMES} + begin + Edit.Ctl3D := False; + Edit.BorderStyle := bsSingle; + {$IFDEF COMPILER_6_UP} + Edit.BevelInner := bvNone; + Edit.BevelOuter := bvNone; + Edit.BevelKind := bkNone; + {$ENDIF} + end +end; + +function TEasyStringEditor.GetEditorFont: TFont; +begin + Result := (Editor as TEasyEdit).Font +end; + +function TEasyStringEditor.GetText: Variant; +begin + Result := (Editor as TEasyEdit).Text +end; + +procedure TEasyStringEditor.DoEditKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState; var DoDefault: Boolean); +begin + +end; + +procedure TEasyStringEditor.OnEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +// +// Check to see if the user is finished, if not test to see if the edit needs +// to be resized to reflect the new text +// +var + DoDefault: Boolean; +begin + DoDefault := True; + DoEditKeyDown(Sender, Key, Shift, DoDefault); + if DoDefault then + begin + if Key = VK_RETURN then + begin + Key := 0; + AcceptEdit; + end else + if Key = VK_F2 then + begin + SelectAll + end else + PostMessage(Editor.Handle, WM_EDITORRESIZE, 0, 0); + end; + FModified := True; +end; + +procedure TEasyStringEditor.SelectAll; +begin + (Editor as TEasyEdit).SelectAll; +end; + +procedure TEasyStringEditor.SetEditorFocus; +begin + inherited SetEditorFocus; + SelectAll; +end; + +{ TEasyTaskPanelBand } + +constructor TEasyTaskPanelBand.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + Groups.FItemClass := TEasyGroupTaskPanel; +end; + +function TEasyTaskPanelBand.CreateGroups: TEasyGroups; +begin + Result := TEasyGroupsTaskPanel.Create(Self) +end; + +function TEasyTaskPanelBand.GetGroups: TEasyGroupsTaskPanel; +begin + Result := inherited Groups as TEasyGroupsTaskPanel +end; + +procedure TEasyTaskPanelBand.CMMouseWheel(var Msg: TCMMouseWheel); +begin + inherited; + PositionPanels +end; + +procedure TEasyTaskPanelBand.DoCustomGrid(Group: TEasyGroup; ViewStyle: TEasyListStyle; var Grid: TEasyGridGroupClass); +begin + if Assigned(OnCustomGrid) then + OnCustomGrid(Self, Group, ViewStyle, Grid); + if not Assigned(Grid) then + Grid := TEasyGridGroupTaskPanel +end; + +procedure TEasyTaskPanelBand.DoGroupCustomView(Group: TEasyGroup; ViewStyle: TEasyListStyle; var View: TEasyViewGroupClass); +begin + if Assigned(OnGroupCustomView) then + OnGroupCustomView(Self, Group, ViewStyle, View); + if not Assigned(View) then + View := TEasyViewTaskPanelGroup +end; + +procedure TEasyTaskPanelBand.DoGetTaskPanel(Sender: TEasyGroupTaskPanel; var TaskPanel: TEasyTaskPanelFormClass); +begin + if Assigned(OnGetTaskPanel) then + OnGetTaskPanel(Self, Sender, TaskPanel) +end; + +procedure TEasyTaskPanelBand.DoGroupExpand(Group: TEasyGroup); +begin + inherited DoGroupExpand(Group); + PositionPanels; +end; + +procedure TEasyTaskPanelBand.PositionPanels; +var + i: Integer; + DeferHandle: THandle; + TaskPanel: TEasyTaskPanelForm; + MappedR: TRect; +begin + SendMessage(Handle, WM_SETREDRAW, 0, 0); + try + Groups.Rebuild(True); + // MUST MAKE SURE NEVER TO MAKE THE PANELS NOT VISIBLE FOR THIS TO WORK + DeferHandle := BeginDeferWindowPos(Groups.Count); + for i := 0 to Groups.Count - 1 do + begin + if not (Groups[i] as TEasyGroupTaskPanel).TaskWindowCreated then + (Groups[i] as TEasyGroupTaskPanel).CreateTaskWindow; + TaskPanel := (Groups[i] as TEasyGroupTaskPanel).TaskPanel; + MappedR := Scrollbars.MapViewRectToWindowRect(Groups[i].BoundsRectBkGnd, True); + if (DeferHandle <> 0) and Assigned(TaskPanel) and not IsRectEmpty(MappedR) then + begin + if not TaskPanel.Themed then + InflateRect(MappedR, -1, -1); // Make sure the frame shows + + TaskPanel.Visible := True; + if (MappedR.Left <> TaskPanel.Left) or (MappedR.Top <> TaskPanel.Top) or + (TaskPanel.Width <> RectWidth(MappedR)) or (TaskPanel.Height <> RectHeight(MappedR)) then + begin + DeferHandle := DeferWindowPos(DeferHandle, TaskPanel.Handle, 0, + MappedR.Left, MappedR.Top, + RectWidth(MappedR), RectHeight(MappedR), + SWP_NOACTIVATE or SWP_NOOWNERZORDER or SWP_NOZORDER); + end + end + end; + if (DeferHandle <> 0) then + EndDeferWindowPos(DeferHandle) + finally + SendMessage(Handle, WM_SETREDRAW, 1, 0); + RedrawWindow(Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_ERASENOW or + RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_FRAME); + end +end; + +procedure TEasyTaskPanelBand.SetGroups(const Value: TEasyGroupsTaskPanel); +begin + inherited Groups := Value +end; + +procedure TEasyTaskPanelBand.WMHScroll(var Msg: TWMHScroll); +begin + inherited; + PositionPanels; +end; + +procedure TEasyTaskPanelBand.WMVScroll(var Msg: TWMVScroll); +begin + inherited; + PositionPanels; +end; + +procedure TEasyTaskPanelBand.WMWindowPosChanging(var Msg: TWMWindowPosChanging); +begin + inherited; + PositionPanels +end; + +{ TEasyGroupsTaskPanel } + +constructor TEasyGroupsTaskPanel.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); +end; + +function TEasyGroupsTaskPanel.GetGroup(Index: Integer): TEasyGroupTaskPanel; +begin + Result := inherited Groups[Index] as TEasyGroupTaskPanel +end; + +procedure TEasyGroupsTaskPanel.SetGroup(Index: Integer; Value: TEasyGroupTaskPanel); +begin + inherited Groups[Index] := Value +end; + +{ TEasyGridGroupPanel } + +constructor TEasyGridGroupTaskPanel.Create(AnOwner: TCustomEasyListview; AnOwnerGroup: TEasyGroup); +begin + inherited Create(AnOwner, AnOwnerGroup); + FCellSize := TEasyCellSize.Create(AnOwner); +end; + +destructor TEasyGridGroupTaskPanel.Destroy; +begin + FreeAndNil(FCellSize); + inherited Destroy; +end; + +function TEasyGridGroupTaskPanel.GetCellSize: TEasyCellSize; +begin + Result := FCellSize +end; + +function TEasyGridGroupTaskPanel.StaticTopMargin: Integer; +begin + Result := 10; +end; + +procedure TEasyGridGroupTaskPanel.Rebuild(PrevGroup: TEasyGroup; var NextVisibleItemIndex: Integer); +var + Top: Integer; + TaskGroup: TEasyGroupTaskPanel; +begin + AutoSizeCells; + + if Assigned(PrevGroup) then + Top := PrevGroup.DisplayRect.Bottom + else + Top := StaticTopMargin; + + TaskGroup := FOwnerGroup as TEasyGroupTaskPanel; + if FOwnerGroup.Expanded then + TaskGroup.DisplayRect := Rect(0, Top, OwnerListview.ClientWidth, Top + TaskGroup.Height + TaskGroup.MarginBottom.Size + TaskGroup.MarginTop.Size) + else + FOwnerGroup.DisplayRect := Rect(0, Top, OwnerListview.ClientWidth, Top + TaskGroup.MarginTop.Size + TaskGroup.MarginBottom.Size); +end; + +procedure TEasyGridGroupTaskPanel.SetCellSize(Value: TEasyCellSize); +begin + CellSize.Width := Value.Width; + CellSize.Height := Value.Height +end; + +{ TEasyGroupTaskPanel } + +constructor TEasyGroupTaskPanel.Create(ACollection: TEasyCollection); +begin + inherited Create(ACollection); + FHeight := 200; +end; + +destructor TEasyGroupTaskPanel.Destroy; +begin + if Assigned(TaskPanel) then + TaskPanel.Free; //Close; + FTaskPanel := nil; + inherited Destroy; +end; + +function TEasyGroupTaskPanel.GetTaskWindowCreated: Boolean; +begin + Result := Assigned(FTaskPanel) +end; + +procedure TEasyGroupTaskPanel.CreateTaskWindow; +var + TaskPanelClass: TEasyTaskPanelFormClass; +begin + if (not Assigned(TaskPanel)) and not (csDesigning in OwnerListview.ComponentState) then + begin + TaskPanelClass := nil; + TEasyTaskPanelBand(OwnerListview).DoGetTaskPanel(Self, TaskPanelClass); + if Assigned(TaskPanelClass) then + begin + FTaskPanel := TaskPanelClass.Create(nil); // the Group owns the panel + TForm( TaskPanel).AutoScroll := (OwnerListview as TEasyTaskPanelBand).AutoScrollPanels; + TaskPanel.Themed := OwnerListview.Themed; + TaskPanel.Width := RectWidth(BoundsRectBkGnd); + TaskPanel.Height := RectHeight(BoundsRectBkGnd); + TaskPanel.Top := BoundsRectBkGnd.Top; + TaskPanel.Left := BoundsRectBkGnd.Left; + TaskPanel.Visible := False; + TaskPanel.Parent := OwnerListview; + // Make it visible when the grid is rebuilt so it won't flicker + end + end; +end; + +procedure TEasyGroupTaskPanel.LoadFromStream(S: TStream; var Version: Integer); +begin + inherited LoadFromStream(S, Version); + S.Read(FHeight, SizeOf(FHeight)); + + // For new objects test the stream version first + // if Version > X then + // begin + // ReadStream.... + // end +end; + +procedure TEasyGroupTaskPanel.SaveToStream(S: TStream; Version: Integer = EASYLISTVIEW_STREAM_VERSION); +begin + inherited SaveToStream(S); + S.Write(FHeight, SizeOf(FHeight)); + + // For new objects test the stream version first + // if Version > X then + // begin + // WriteStream.... + // end +end; + +procedure TEasyGroupTaskPanel.SetExpanded(Value: Boolean); +begin + inherited SetExpanded(Value); + if Assigned(TaskPanel) then + begin + if Expanded then + TaskPanel.Height := Height + else + TaskPanel.Height := 0 + end +end; + +procedure TEasyGroupTaskPanel.SetHeight(const Value: Integer); +begin + if FHeight <> Value then + begin + FHeight := Value; + OwnerGroups.Rebuild(True) + end +end; + +procedure TEasyGroupTaskPanel.SetInitialized(Value: Boolean); +begin + inherited SetInitialized(Value); +end; + +{ TEasyViewTaskPanelGroup } + +procedure TEasyViewTaskPanelGroup.PaintBefore(Group: TEasyGroup; ACanvas: TCanvas; MarginEdge: TEasyGroupMarginEdge; ObjRect: TRect; RectArray: TEasyRectArrayObject); +begin + inherited PaintBefore(Group, ACanvas, MarginEdge, ObjRect, RectArray); +end; + +{ TEasyTaskBand } +procedure TEasyTaskBand.DoGroupCollapse(Group: TEasyGroup); +begin +// PositionPanels; + inherited DoGroupCollapse(Group); +end; + +procedure TEasyTaskBand.DoGroupExpand(Group: TEasyGroup); +begin +// PositionPanels; + inherited DoGroupExpand(Group); +end; + +{ TEasyGestureManager } +constructor TEasyGestureManager.Create(AnOwner: TCustomEasyListview); +begin + inherited Create(AnOwner); + FTolerance := 3; + FButton := [cmbRight] +end; + +{ TEasyColumnDropDownButton} +constructor TEasyColumnDropDownButton.Create(AnOwner: TEasyColumn); +begin + inherited Create; + FOwner := AnOwner; + FEnabled := True +end; + +procedure TEasyColumnDropDownButton.SetAlwaysShow(const Value: Boolean); +begin + if Value <> FAlwaysShow then + begin + FAlwaysShow := Value; + Owner.Invalidate(False) + end; +end; + +procedure TEasyColumnDropDownButton.SetEnabled(const Value: Boolean); +begin + if Value <> FEnabled then + begin + FEnabled := Value; + Owner.Invalidate(False) + end; +end; + +procedure TEasyColumnDropDownButton.SetVisible(const Value: Boolean); +begin + if Value <> FVisible then + begin + FVisible := Value; + Owner.Invalidate(False) + end; +end; + +initialization + OleInitialize(nil); + Screen.Cursors[crVHeaderSplit] := LoadCursor(hInstance, CURSOR_VHEADERSPLIT); + HeaderClipboardFormat := RegisterClipboardFormat(EASYLISTVIEW_HEADER_CLIPFORMAT); + AlphaBlender := TEasyAlphaBlender.Create; + RegisterClass(TEasyGroup); + RegisterClass(TEasyGroupVirtual); + RegisterClass(TEasyGroupInterfaced); + RegisterClass(TEasyGroupStored); + RegisterClass(TEasyGroupTaskPanel); + RegisterClass(TEasyItem); + RegisterClass(TEasyItemVirtual); + RegisterClass(TEasyItemInterfaced); + RegisterClass(TEasyItemStored); + RegisterClass(TEasyColumn); + RegisterClass(TEasyColumnVirtual); + RegisterClass(TEasyColumnInterfaced); + RegisterClass(TEasyColumnStored); + +finalization + FreeAndNil(AlphaBlender); + OleUnInitialize(); + +end. diff --git a/official/1.7.0/EasyListview/Source/EasyRes.res b/official/1.7.0/EasyListview/Source/EasyRes.res new file mode 100644 index 0000000000000000000000000000000000000000..2863884c5f58d300997adedfc6fd169a48bdbaff GIT binary patch literal 4160 zcmeI0KW|(`5Wwdmi*pcCTu@MMnGcYHBE?$RU`tVmY{H*zCB6V%N~XMqjt{WKiJFpf zYCb^1_1n9a3)ob!#G4wAO zgMl0z+}#@n9ms*)#|RK%!BeGI&DfTmPjnkus>t4qqm{_|ds#gEP3|y{<8^Nn@0*Wz zA3KCKyjp($w(I8n^sMVX_`3T`7Tuqu%kjFmb>250@AeM)ku^o=x;t_t$MUfp%2RnH zpUFq^Df$ui6FH~nXk7g?=brDoJqu}DaWamaS5$%BhaUXQWP+Gnxee^=x~ zVrYANDxb?~jqOZ6VPC%@+7ov6rud#FIDm!hQzGv)b+c49kXH7vDoUz#KkXNj7eD_X z5+Wp^BV;fr?cl|Lj*vhhgF$JFNC6!ofkFm@($5>v5fUh5FeoBaB?pL*Kp}%cVUYp> zA|z1AU{FN(NC^-jfkFm@B2ieT1n?(;LI#5(F$e^RkU$}WL1|$#D8>j06fzi;mXZ|E z5fUh5Feoiu8qg6EC}c1wEtNT-BP3ABU{G3`EubSLP{?3V>K4Qj&=C?SWH2bA#IF*- zBTwK@27@9>{2Bs8NT86xptNm^0UaTMLI#7CQ*%$Kp}%cX-6Rk zbc6&784OB0CKk{U5-4OaDD?`D{ zTdKdg|B1~oU+~ny+^!Di6AZR5w=Q_PesAdQSNp%dUiUkVXI%f)BtO3X-fqjE2QUez zcYi%a!|FF1Jhg=P2Xrtm#{+wFKd)!K+OqP7@yzF#3ZFFy2 zcP*l+Jstah{a?+%ulza;@0aJ?7S6ae98#W9|3Z#x`Is>-^Y>_fw`}j1d$nI{xvQYZ zJNYfDijr#mZ89@D{`t;u@fz}78~c3K^lDWbp08H50o58_!{fz;=jVa1kh|5*{5<9T zyUE+0n;|7F2SZLShLj9ByXbRxs~o*g=n=Z^J? // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Easyscrollframe +{ +//-- type declarations ------------------------------------------------------- +#pragma option push -b- +enum TEasyScrollButtonState { sbsHovering, sbsDown, sbsAutoClick, sbsAutoScrollTimerRunning }; +#pragma option pop + +typedef Set TEasyScrollButtonStates; + +#pragma option push -b- +enum TEasyScrollButtonDir { sbdLeft, sbdUp, sbdDown, sbdRight }; +#pragma option pop + +#pragma option push -b- +enum TEasyTimerType { ettAutoScrollDelay, ettAutoScroll }; +#pragma option pop + +class DELPHICLASS TCustomEasyScrollButton; +class PASCALIMPLEMENTATION TCustomEasyScrollButton : public Mpcommonobjects::TCommonCanvasControl +{ + typedef Mpcommonobjects::TCommonCanvasControl inherited; + +private: + int FArrowSize; + bool FAutoScroll; + int FAutoScrollTime; + int FAutoScrollTimeOut; + TEasyScrollButtonDir FDirection; + bool FFlat; + Classes::TNotifyEvent FOnClick; + TEasyScrollButtonStates FState; + unsigned FTimerID; + void *FTimerStub; + void __fastcall SetDirection(const TEasyScrollButtonDir Value); + void __fastcall SetFlat(const bool Value); + +protected: + virtual void __fastcall DoClick(void); + virtual void __fastcall DoPaintRect(Graphics::TCanvas* ACanvas, const Types::TRect &WindowClipRect, bool SelectedOnly); + DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y); + DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y); + DYNAMIC void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y); + virtual void __fastcall SetEnabled(bool Value); + void __fastcall StartAutoScrollTimer(TEasyTimerType TimerType); + void __fastcall StopAutoScrollTimer(bool FreeStub); + void __stdcall TimerProc(HWND Window, unsigned uMsg, unsigned idEvent, unsigned dwTime); + HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Msg); + __property int ArrowSize = {read=FArrowSize, write=FArrowSize, default=12}; + __property bool AutoScroll = {read=FAutoScroll, write=FAutoScroll, default=0}; + __property int AutoScrollDelay = {read=FAutoScrollTimeOut, write=FAutoScrollTimeOut, default=1000}; + __property int AutoScrollTime = {read=FAutoScrollTime, write=FAutoScrollTime, default=100}; + __property TEasyScrollButtonDir Direction = {read=FDirection, write=SetDirection, default=0}; + __property bool Flat = {read=FFlat, write=SetFlat, default=0}; + __property Classes::TNotifyEvent OnClick = {read=FOnClick, write=FOnClick}; + __property TEasyScrollButtonStates State = {read=FState, write=FState, nodefault}; + __property unsigned TimerID = {read=FTimerID, write=FTimerID, nodefault}; + __property void * TimerStub = {read=FTimerStub, write=FTimerStub}; + +public: + __fastcall virtual TCustomEasyScrollButton(Classes::TComponent* AOwner); + __fastcall virtual ~TCustomEasyScrollButton(void); +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TCustomEasyScrollButton(HWND ParentWindow) : Mpcommonobjects::TCommonCanvasControl(ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TEasyScrollButton; +class PASCALIMPLEMENTATION TEasyScrollButton : public TCustomEasyScrollButton +{ + typedef TCustomEasyScrollButton inherited; + +public: + __property State ; + +__published: + __property Action ; + __property ActionLink ; + __property Align = {default=0}; + __property Anchors = {default=3}; + __property ArrowSize = {default=12}; + __property AutoScroll = {default=0}; + __property AutoScrollDelay = {default=1000}; + __property AutoScrollTime = {default=100}; + __property AutoSize = {default=0}; + __property BorderWidth = {default=0}; + __property Constraints ; + __property Direction = {default=0}; + __property DragCursor = {default=-12}; + __property DragKind = {default=0}; + __property DragMode = {default=0}; + __property Enabled = {default=1}; + __property Flat = {default=0}; + __property OnCanResize ; + __property OnClick ; + __property OnConstrainedResize ; + __property OnContextPopup ; + __property OnDblClick ; + __property OnDockDrop ; + __property OnDockOver ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnMouseWheel ; + __property OnMouseWheelDown ; + __property OnMouseWheelUp ; + __property OnResize ; + __property OnStartDock ; + __property OnStartDrag ; + __property OnUnDock ; + __property ParentShowHint = {default=1}; + __property PopupMenu ; + __property ShowHint ; + __property TabOrder = {default=-1}; + __property TabStop = {default=0}; + __property Themed = {default=1}; + __property Visible = {default=1}; +public: + #pragma option push -w-inl + /* TCustomEasyScrollButton.Create */ inline __fastcall virtual TEasyScrollButton(Classes::TComponent* AOwner) : TCustomEasyScrollButton(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCustomEasyScrollButton.Destroy */ inline __fastcall virtual ~TEasyScrollButton(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyScrollButton(HWND ParentWindow) : TCustomEasyScrollButton(ParentWindow) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +static const Word TIMER_AUTOSCROLLDELAY = 0x3eb; +static const Word TIMER_AUTOSCROLL = 0x3ec; + +} /* namespace Easyscrollframe */ +using namespace Easyscrollframe; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Easyscrollframe diff --git a/official/1.7.0/EasyListview/Source/EasyScrollFrame.obj b/official/1.7.0/EasyListview/Source/EasyScrollFrame.obj new file mode 100644 index 0000000000000000000000000000000000000000..ae83d96d7274a026e7421ece49f8f74b65ba542a GIT binary patch literal 15523 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 +// +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +//---------------------------------------------------------------------------- + +interface + +{$I Compilers.inc} +{$I Options.inc} +{$I ..\Include\Addins.inc} + +uses + Windows, + Messages, + SysUtils, + Classes, + Graphics, + {$IFDEF COMPILER_7_UP} + Themes, + UxTheme, + {$ELSE} + {$IFDEF USETHEMES} + TmSchema, + UxTheme, + {$ENDIF} + {$ENDIF} + Controls, + MPCommonObjects, + MPCommonUtilities; + +const + TIMER_AUTOSCROLLDELAY = 1003; + TIMER_AUTOSCROLL = 1004; + +type + TEasyScrollButtonState = ( + sbsHovering, // The mouse is hovering over the button + sbsDown, // The button is down + sbsAutoClick, // The button is down for a predetermined time and is autoscrolling at some time interval + sbsAutoScrollTimerRunning // Timer is running for AutoClick + ); + TEasyScrollButtonStates = set of TEasyScrollButtonState; + + TEasyScrollButtonDir = ( + sbdLeft, // Arrow points Left + sbdUp, // Arrow points Up + sbdDown, // Arrow points Down + sbdRight // Arrow points right + ); + + TEasyTimerType = ( + ettAutoScrollDelay, + ettAutoScroll + ); + + TCustomEasyScrollButton = class(TCommonCanvasControl) + private + FArrowSize: Integer; + FAutoScroll: Boolean; + FAutoScrollTime: Integer; + FAutoScrollTimeOut: Integer; + FDirection: TEasyScrollButtonDir; + FFlat: Boolean; + FOnClick: TNotifyEvent; + FState: TEasyScrollButtonStates; + FTimerID: THandle; + FTimerStub: Pointer; + procedure SetDirection(const Value: TEasyScrollButtonDir); + procedure SetFlat(const Value: Boolean); + protected + procedure DoClick; virtual; + procedure DoPaintRect(ACanvas: TCanvas; WindowClipRect: TRect; SelectedOnly: Boolean); virtual; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X: Integer; Y: Integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); override; + procedure SetEnabled(Value: Boolean); override; + procedure StartAutoScrollTimer(TimerType: TEasyTimerType); + procedure StopAutoScrollTimer(FreeStub: Boolean); + procedure TimerProc(Window: HWnd; uMsg: UINT; idEvent: UINT; dwTime: DWORD); stdcall; + procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; + property ArrowSize: Integer read FArrowSize write FArrowSize default 12; + property AutoScroll: Boolean read FAutoScroll write FAutoScroll default False; + property AutoScrollDelay: Integer read FAutoScrollTimeOut write FAutoScrollTimeOut default 1000; + property AutoScrollTime: Integer read FAutoScrollTime write FAutoScrollTime default 100; + property Direction: TEasyScrollButtonDir read FDirection write SetDirection default sbdLeft; + property Flat: Boolean read FFlat write SetFlat default False; + property OnClick: TNotifyEvent read FOnClick write FOnClick; + property State: TEasyScrollButtonStates read FState write FState; + property TimerID: THandle read FTimerID write FTimerID; + property TimerStub: Pointer read FTimerStub write FTimerStub; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + end; + + TEasyScrollButton = class(TCustomEasyScrollButton) + public + property State; + published + property Action; + property ActionLink; + property Align; + property Anchors; + property ArrowSize; + property AutoScroll; + property AutoScrollDelay; + property AutoScrollTime; + property AutoSize; + property BorderWidth; + property Constraints; + property Direction; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Flat; + property OnCanResize; + property OnClick; + property OnConstrainedResize; + {$IFDEF COMPILER_5_UP} + property OnContextPopup; + {$ENDIF} + property OnDblClick; + property OnDockDrop; + property OnDockOver; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + property ParentShowHint; + property PopupMenu; + property ShowHint; + property TabOrder; + property TabStop; + property Themed; + property Visible; + end; + +implementation + +{ TEasyScrollButton } +constructor TCustomEasyScrollButton.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + AutoScrollDelay := 1000; + AutoScrollTime := 100; + Width := GetSystemMetrics(SM_CXHSCROLL); + Height := GetSystemMetrics(SM_CYHSCROLL); + ArrowSize := 12 +end; + +destructor TCustomEasyScrollButton.Destroy; +begin + inherited Destroy; +end; + +procedure TCustomEasyScrollButton.DoClick; +begin + if Assigned(OnClick) then + OnClick(Self) +end; + +procedure TCustomEasyScrollButton.DoPaintRect(ACanvas: TCanvas; WindowClipRect: TRect; SelectedOnly: Boolean); + + procedure DrawWithoutThemes; + var + uState: Cardinal; + begin + uState := 0; + if (sbsHovering in State) and not (sbsDown in State) then + begin + case Direction of + sbdLeft: uState := DFCS_SCROLLLEFT; + sbdUp: uState := DFCS_SCROLLUP ; + sbdDown: uState := DFCS_SCROLLDOWN; + sbdRight: uState := DFCS_SCROLLRIGHT; + end + end else + if (sbsDown in State) and (sbsHovering in State) then + begin + case Direction of + sbdLeft: uState := DFCS_SCROLLLEFT or DFCS_PUSHED; + sbdUp: uState := DFCS_SCROLLUP or DFCS_PUSHED; + sbdDown: uState := DFCS_SCROLLDOWN or DFCS_PUSHED; + sbdRight: uState := DFCS_SCROLLRIGHT or DFCS_PUSHED; + end + end else + begin + case Direction of + sbdLeft: uState := DFCS_SCROLLLEFT; + sbdUp: uState := DFCS_SCROLLUP; + sbdDown: uState := DFCS_SCROLLDOWN; + sbdRight: uState := DFCS_SCROLLRIGHT; + end + end; + + if Flat then + uState := uState or DFCS_FLAT; + if not Enabled then + uState := uState or DFCS_INACTIVE; + + DrawFrameControl(ACanvas.Handle, ClientRect, DFC_SCROLL, uState); + end; + +{$IFDEF USETHEMES} +var + Part, uState: Longword; + {$ENDIF} +begin + {$IFDEF USETHEMES} + if DrawWithThemes then + begin + uState := 0; + Part := SBP_ARROWBTN; + if Enabled then + begin + if (sbsHovering in State) and not (sbsDown in State) then + begin + case Direction of + sbdLeft: uState := ABS_LEFTHOT; + sbdUp: uState := ABS_UPHOT; + sbdDown: uState := ABS_DOWNHOT; + sbdRight: uState := ABS_RIGHTHOT; + end + end else + if (sbsDown in State) and (sbsHovering in State) then + begin + case Direction of + sbdLeft: uState := ABS_LEFTPRESSED; + sbdUp: uState := ABS_UPPRESSED; + sbdDown: uState := ABS_DOWNPRESSED; + sbdRight: uState := ABS_RIGHTPRESSED; + end + end else + begin + case Direction of + sbdLeft: uState := ABS_LEFTNORMAL; + sbdUp: uState := ABS_UPNORMAL; + sbdDown: uState := ABS_DOWNNORMAL; + sbdRight: uState := ABS_RIGHTNORMAL; + end + end; + end else + begin + case Direction of + sbdLeft: uState := ABS_LEFTDISABLED; + sbdUp: uState := ABS_UPDISABLED; + sbdDown: uState := ABS_DOWNDISABLED; + sbdRight: uState := ABS_RIGHTDISABLED; + end + end; + + DrawThemeBackground(Themes.ScrollbarTheme, ACanvas.Handle, + Part, uState, ClientRect, @WindowClipRect); + end else + DrawWithOutThemes; + {$ELSE} + DrawWithoutThemes; + {$ENDIF} +end; + +procedure TCustomEasyScrollButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); +begin + inherited MouseDown(Button, Shift, X, Y); + if not (sbsDown in State) then + begin + Include(FState, sbsDown); + StartAutoScrollTimer(ettAutoScrollDelay); + Invalidate + end +end; + +procedure TCustomEasyScrollButton.MouseMove(Shift: TShiftState; X: Integer; Y: Integer); +begin + inherited MouseMove(Shift, X, Y); + if PtInRect(ClientRect, Point(X, Y)) then + begin + if not (sbsHovering in State) then + begin + Include(FState, sbsHovering); + Invalidate + end; + Mouse.Capture := Handle + end else + begin + if sbsHovering in State then + begin + Exclude(FState, sbsHovering); + StopAutoScrollTimer(True); + Invalidate + end; + if [sbsDown, sbsHovering] * State = [] then + begin + if Mouse.Capture = Handle then + Mouse.Capture := 0 + end + end +end; + +procedure TCustomEasyScrollButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); +begin + inherited MouseUp(Button, Shift, X, Y); + if PtInRect(ClientRect, Point(X, Y)) and (sbsDown in State) then + DoClick; + if sbsDown in State then + begin + StopAutoScrollTimer(True); + Exclude(FState, sbsDown); + Invalidate + end +end; + +procedure TCustomEasyScrollButton.SetDirection(const Value: TEasyScrollButtonDir); +begin + if FDirection <> Value then + begin + FDirection := Value; + Invalidate + end +end; + +procedure TCustomEasyScrollButton.SetEnabled(Value: Boolean); +begin + inherited; + Invalidate +end; + +procedure TCustomEasyScrollButton.SetFlat(const Value: Boolean); +begin + if FFlat <> Value then + begin + FFlat := Value; + Invalidate + end +end; + +procedure TCustomEasyScrollButton.StartAutoScrollTimer(TimerType: TEasyTimerType); +begin + if AutoScroll then + begin + if not Assigned(TimerStub) then + TimerStub := CreateStub(Self, @TCustomEasyScrollButton.TimerProc); + if TimerType = ettAutoScrollDelay then + TimerID := SetTimer(Handle, TIMER_AUTOSCROLLDELAY, AutoScrollDelay, TimerStub) + else + TimerID := SetTimer(Handle, TIMER_AUTOSCROLL, AutoScrollTime, TimerStub); + Include(FState, sbsAutoScrollTimerRunning); + end +end; + +procedure TCustomEasyScrollButton.StopAutoScrollTimer(FreeStub: Boolean); +begin + if sbsAutoScrollTimerRunning in State then + begin + if KillTimer(Handle, TimerID) then + begin + TimerID := 0; + Exclude(FState, sbsAutoScrollTimerRunning); + if FreeStub then + begin + DisposeStub(FTimerStub); + TimerStub := nil; + end + end else + Exception.Create('Can not Destroy Scroll Button Timer'); + end +end; + +procedure TCustomEasyScrollButton.TimerProc(Window: HWnd; uMsg: UINT; idEvent: UINT; dwTime: DWORD); +begin + case idEvent of + TIMER_AUTOSCROLLDELAY: + begin + StopAutoScrollTimer(False); + StartAutoScrollTimer(ettAutoScroll); + end; + TIMER_AUTOSCROLL: + begin + DoClick + end; + end +end; + +procedure TCustomEasyScrollButton.WMPaint(var Msg: TWMPaint); +var + PaintInfo: TPaintStruct; +begin + if UpdateCount = 0 then + begin + BeginPaint(Handle, PaintInfo); + try + if not IsRectEmpty(PaintInfo.rcPaint) then + begin + // Paint the rectangle that is needed + Canvas.Handle := Msg.DC; + DoPaintRect(Canvas, PaintInfo.rcPaint, False); + end + finally + // Release the Handle from the canvas so that EndPaint may dispose of the DC as it sees fit + EndPaint(Handle, PaintInfo); + end + end +end; + +end. diff --git a/official/1.7.0/EasyListview/Source/EasyTaskPanelForm.hpp b/official/1.7.0/EasyListview/Source/EasyTaskPanelForm.hpp new file mode 100644 index 0000000..d28ed85 --- /dev/null +++ b/official/1.7.0/EasyListview/Source/EasyTaskPanelForm.hpp @@ -0,0 +1,138 @@ +// CodeGear C++Builder +// Copyright (c) 1995, 2007 by CodeGear +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Easytaskpanelform.pas' rev: 11.00 + +#ifndef EasytaskpanelformHPP +#define EasytaskpanelformHPP + +#pragma delphiheader begin +#pragma option push +#pragma option -w- // All warnings off +#pragma option -Vx // Zero-length empty class member functions +#pragma pack(push,8) +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Easytaskpanelform +{ +//-- type declarations ------------------------------------------------------- +class DELPHICLASS TEasyTaskPanelForm; +class PASCALIMPLEMENTATION TEasyTaskPanelForm : public Forms::TCustomForm +{ + typedef Forms::TCustomForm inherited; + +private: + bool FThemed; + Mpcommonobjects::TCommonThemeManager* FThemes; + bool __fastcall GetThemed(void); + void __fastcall SetThemed(const bool Value); + +protected: + virtual void __fastcall CreateParams(Controls::TCreateParams &Params); + virtual void __fastcall CreateWnd(void); + virtual void __fastcall DestroyWnd(void); + DYNAMIC void __fastcall DoShow(void); + void __fastcall InvalidateChildren(Controls::TWinControl* ARoot); + virtual void __fastcall Loaded(void); + HIDESBASE MESSAGE void __fastcall WMDestroy(Messages::TMessage &Msg); + HIDESBASE MESSAGE void __fastcall WMEraseBkgnd(Messages::TWMEraseBkgnd &Msg); + HIDESBASE MESSAGE void __fastcall WMHScroll(Messages::TWMScroll &Msg); + HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Msg); + MESSAGE void __fastcall WMThemeChanged(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Msg); + __property Mpcommonobjects::TCommonThemeManager* Themes = {read=FThemes, write=FThemes}; + +public: + __fastcall virtual TEasyTaskPanelForm(Classes::TComponent* AOwner); + __fastcall virtual ~TEasyTaskPanelForm(void); + +__published: + __property ActiveControl ; + __property Anchors = {default=3}; + __property AutoSize = {default=0}; + __property BorderWidth = {default=0}; + __property Caption = {stored=true}; + __property Color ; + __property Constraints ; + __property Font ; + __property Height = {stored=true}; + __property HorzScrollBar ; + __property KeyPreview = {default=0}; + __property OldCreateOrder ; + __property PixelsPerInch ; + __property PopupMenu ; + __property PrintScale = {default=1}; + __property Scaled = {default=1}; + __property ShowHint ; + __property bool Themed = {read=GetThemed, write=SetThemed, default=1}; + __property VertScrollBar ; + __property Width = {stored=true}; + __property OnActivate ; + __property OnClick ; + __property OnClose ; + __property OnCloseQuery ; + __property OnContextPopup ; + __property OnCreate ; + __property OnDblClick ; + __property OnDestroy ; + __property OnDeactivate ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnGetSiteInfo ; + __property OnHide ; + __property OnHelp ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnMouseWheel ; + __property OnMouseWheelDown ; + __property OnMouseWheelUp ; + __property OnPaint ; + __property OnResize ; + __property OnShortCut ; + __property OnShow ; +public: + #pragma option push -w-inl + /* TCustomForm.CreateNew */ inline __fastcall virtual TEasyTaskPanelForm(Classes::TComponent* AOwner, int Dummy) : Forms::TCustomForm(AOwner, Dummy) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TEasyTaskPanelForm(HWND ParentWindow) : Forms::TCustomForm(ParentWindow) { } + #pragma option pop + +}; + + +typedef TMetaClass* TEasyTaskPanelFormClass; + +//-- var, const, procedure --------------------------------------------------- + +} /* namespace Easytaskpanelform */ +using namespace Easytaskpanelform; +#pragma pack(pop) +#pragma option pop + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Easytaskpanelform diff --git a/official/1.7.0/EasyListview/Source/EasyTaskPanelForm.obj b/official/1.7.0/EasyListview/Source/EasyTaskPanelForm.obj new file mode 100644 index 0000000000000000000000000000000000000000..973c8f195bd4bf77068aa5424f9530f0cb5d8627 GIT binary patch literal 13231 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 +// +// Special thanks to the following in no particular order for their help/support/code +// Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec +// +// NOTES: +// 1) If new properties are added to the TCollectionItems and published they +// need to be manually written/read from the stream. The items are not automatically +// saved to the DFM file. This was because mimicing TCollectionItem was not +// practical do to the way the VCL was designed. +//---------------------------------------------------------------------------- + +{$I Compilers.inc} +{$I Options.inc} +{$I ..\Include\Addins.inc} + +interface + +uses + Windows, + Messages, + SysUtils, + {$IFDEF COMPILER_6_UP} + Variants, + {$ENDIF} + {$IFDEF COMPILER_7_UP} + Themes, + UxTheme, + {$ELSE} + {$IFDEF USETHEMES} + TmSchema, + UxTheme, + {$ENDIF} + {$ENDIF} + Classes, + Graphics, + Controls, + Forms, + Dialogs, + MPCommonObjects; + +type + TEasyTaskPanelForm = class(TCustomForm) + private + FThemed: Boolean; + {$IFDEF USETHEMES}FThemes: TCommonThemeManager;{$ENDIF USETHEMES} + function GetThemed: Boolean; + procedure SetThemed(const Value: Boolean); + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWnd; override; + procedure DoShow; override; + procedure InvalidateChildren(ARoot: TWinControl); + procedure Loaded; override; + procedure WMDestroy(var Msg: TMessage); message WM_DESTROY; + procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL; + procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; + {$IFDEF USETHEMES}procedure WMThemeChanged(var Message: TMessage); message WM_THEMECHANGED;{$ENDIF USETHEMES} + procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL; + {$IFDEF USETHEMES}property Themes: TCommonThemeManager read FThemes write FThemes;{$ENDIF USETHEMES} + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property ActiveControl; + property Anchors; + property AutoSize; + property BorderWidth; + property Caption stored True; + property Color; + property Constraints; + property Font; + property Height stored True; + property HorzScrollBar; + property KeyPreview; + property OldCreateOrder; + property PixelsPerInch; + property PopupMenu; + property PrintScale; + property Scaled; + property ShowHint; + property Themed: Boolean read GetThemed write SetThemed default True; + property VertScrollBar; + property Width stored True; + + property OnActivate; + property OnClick; + property OnClose; + property OnCloseQuery; + {$IFDEF COMPILER_5_UP}property OnContextPopup;{$ENDIF} + property OnCreate; + property OnDblClick; + property OnDestroy; + property OnDeactivate; + property OnDragDrop; + property OnDragOver; + property OnGetSiteInfo; + property OnHide; + property OnHelp; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnPaint; + property OnResize; + property OnShortCut; + property OnShow; + end; + TEasyTaskPanelFormClass = class of TEasyTaskPanelForm; + +implementation + +{ TEasyTaskPanelForm } +constructor TEasyTaskPanelForm.Create(AOwner: TComponent); +begin + {$IFDEF USETHEMES}Themes := TCommonThemeManager.Create(Self);{$ENDIF USETHEMES} + inherited Create(AOwner); + FThemed := True; + DoubleBuffered := True; +end; + +destructor TEasyTaskPanelForm.Destroy; +begin + {$IFDEF USETHEMES}FreeAndNil(FThemes);{$ENDIF USETHEMES} + inherited Destroy; +end; + +function TEasyTaskPanelForm.GetThemed: Boolean; +begin + Result := False; + {$IFDEF USETHEMES} + if not (csLoading in ComponentState) then + Result := FThemed and UseThemes; + {$ENDIF USETHEMES} +end; + +procedure TEasyTaskPanelForm.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + if not (csDesigning in ComponentState) then + Params.Style := Params.Style or WS_CHILD; +end; + +procedure TEasyTaskPanelForm.CreateWnd; +begin + inherited CreateWnd; + {$IFDEF USETHEMES}Themes.ThemesLoad;{$ENDIF USETHEMES} +end; + +procedure TEasyTaskPanelForm.DestroyWnd; +begin + inherited DestroyWnd; +end; + +procedure TEasyTaskPanelForm.DoShow; +begin + inherited DoShow; + // Keep from Flickering on startup + Width := 0; + Height := 0; +end; + +procedure TEasyTaskPanelForm.InvalidateChildren(ARoot: TWinControl); +var + i: Integer; +begin + InvalidateRect(ARoot.Handle, nil, False); + for i := 0 to ARoot.ControlCount - 1 do + begin + if ARoot.Controls[i] is TWinControl then + begin + InvalidateChildren(TWinControl( ARoot.Controls[i])); + InvalidateRect(TWinControl( ARoot.Controls[i]).Handle, nil, False) + end + end; +end; + +procedure TEasyTaskPanelForm.Loaded; +begin + inherited Loaded; + if not (csDesigning in ComponentState) then + BorderStyle := bsNone; +end; + +procedure TEasyTaskPanelForm.SetThemed(const Value: Boolean); +begin + if FThemed <> Value then + begin + FThemed := Value; + {$IFDEF USETHEMES} + Themes.ThemesLoad; + if HandleAllocated then + begin + // This is the only way I could get the window to redraw the NonClient areas + // RedrawWindow did not work either. + Visible := not Visible; + Visible := not Visible; + InvalidateRect(Handle, nil, True); + end; + {$ENDIF USETHEMES} + end +end; + +procedure TEasyTaskPanelForm.WMDestroy(var Msg: TMessage); +begin + inherited; + {$IFDEF USETHEMES} + if Assigned(Themes) then + Themes.ThemesFree; + {$ENDIF USETHEMES} +end; + +procedure TEasyTaskPanelForm.WMEraseBkgnd(var Msg: TWMEraseBkgnd); + + procedure DrawNonThemed(Canvas: TControlCanvas); + begin + Canvas.Brush.Color := Color; + Canvas.FillRect(ClientRect); + end; + +var + DC: TControlCanvas; +{$IFDEF USETHEMES} + PartID, StateID: LongWord; +{$ENDIF} +begin + DC := TControlCanvas.Create; + try + DC.Handle := Msg.DC; + DC.Control := Self; + {$IFDEF USETHEMES} + if Themed and not (csDesigning in ComponentState) then + begin + PartID := EBP_NORMALGROUPBACKGROUND; + StateID := 0; + DrawThemeBackground(Themes.ExplorerBarTheme, DC.Handle, PartID, StateID, ClientRect, nil); + end + else + DrawNonThemed(DC); + Exit; + {$ELSE} + DrawNonThemed(DC); + {$ENDIF} + finally + DC.Handle := 0; + DC.Free; + end; + Msg.Result := 1; +end; + +procedure TEasyTaskPanelForm.WMHScroll(var Msg: TWMHScroll); +begin + inherited; + InvalidateChildren(Self); +end; + +procedure TEasyTaskPanelForm.WMPaint(var Msg: TWMPaint); +begin + inherited; +end; + +{$IFDEF USETHEMES} +procedure TEasyTaskPanelForm.WMThemeChanged(var Message: TMessage); +begin + inherited; + Themes.ThemesFree; + Themes.ThemesLoad; +end; +{$ENDIF USETHEMES} + +procedure TEasyTaskPanelForm.WMVScroll(var Msg: TWMVScroll); +begin + inherited; + InvalidateChildren(Self) +end; + +end. diff --git a/official/1.7.0/EasyListview/Source/Options.inc b/official/1.7.0/EasyListview/Source/Options.inc new file mode 100644 index 0000000..d65d37b --- /dev/null +++ b/official/1.7.0/EasyListview/Source/Options.inc @@ -0,0 +1,22 @@ +{$I Compilers.inc} + +{$IFDEF COMPILER_7_UP} + {$DEFINE USETHEMES} + {$UNDEF JCL_THEME} +{$ENDIF} + +{$IFDEF JCL_THEME} + {$DEFINE USETHEMES} +{$ENDIF} + +// Uncomment to support Themes in D4-D6 with Soft Gems ThemeManager (www.soft-gems.net) +{.$DEFINE USETHEMES} + +// Uncomment to support SpTBX Themes +{.$DEFINE SpTBX} + +// ----------------------------------------------------------------------------- +// Use unicode-aware inplace editors. This implementation uses Troy Wolbrink's +// TNT controls, which can be found at: www.tntware.com +{.$DEFINE TNTSUPPORT} + diff --git a/official/1.7.0/EasyListview/unins000.dat b/official/1.7.0/EasyListview/unins000.dat new file mode 100644 index 0000000000000000000000000000000000000000..c19d3efd83361569d48721b2d5c4095aeb34a856 GIT binary patch literal 42042 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 literal 0 HcmV?d00001 diff --git a/official/1.7.0/EasyListview/unins000.exe b/official/1.7.0/EasyListview/unins000.exe new file mode 100644 index 0000000000000000000000000000000000000000..a45ffa72c0dd465ef18b1e019dc598a24eb917c5 GIT binary patch literal 683832 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%0AIUr%0ub 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

      QUl&SNLJwlDcEr{j3 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 literal 0 HcmV?d00001

      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ⅇ2Llj`&LxwwI- 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

  • 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ⅇ2Llj`&LxwwI- zL^v{#W=&HW8pHbhgI)YH#Egnryz&~X)%RHQw(6Hvv9U*_P1`n%VwgG{Sjt_4%qxL8 z$-!J|wG|aPaiL0q86cQ{a9!NrWsmf?`dQVJl@{j?Z{jrnZKJH}6^eXIk)5mW(C^*+ z4g~OhqKJRx_q05EhxdTe*sT} z@e0B~4EzP7`#go%*yOC>cnsOk6CfAnj4Q$uFFsK9O!y7%%#5qHUxzCwT}4i1x45kB z!qK>_xJAD>}-F6J|xkJ9y-$7d;@ zSbgnne3?gB_^`Ppc(;Q01i?oXyfp|ut>Dc;@MQ&81i^g@&JTh{!OMeSlY)6cF!L&c zBfa2WCgHUxA+^C49knl?G1bvj^Cg{Z&bUR+^`i31rUlQpJY(a0G<%Dr*x~4h*|A;G<__7n zQ~(0Chg1FOeCG05!e=#~@A0{V&wYF#8AG0n0k&+I-4&3 zwzNCPQtX^mI_bOyI-N7Uv~3>I)5W_oq}z761Jo9`?9^P$IRRPENg*bCljQp|E!u$3 zJD{^5=lv#gt}j#(f2`xVgkgFyWw1RBT*w_@l3HSSv>MO3E4JVeGd2CI3sTKoBQrj&6O*w@7v}!22GPk zjwZG1Z`Nf1RKfkko8~Sm$$93L=6(I3*0Dn=!t>9zU5#eq+pb9$@m&|c`%Rj3l%K~F zXwx+BBG$3%toK-Af7f#?4Y76B=IOzCelKm?&eEoTepWae8zT*0PT5*x?gOFNx9lZ`oe8WzQS5 zC2(7v+z-pvz{=hQC72S?K}-l56OyCjR;=)vI-cHfiha!&wtoVD=NqRT_8W^6J8hru zzxr$K?LiaziKA$?8Kf?IKXDmxT@|<2aHiNgn}?BH+XrZ!=Cxf%`4i-<<|xOVJ1E0E zNgvYo2K|02^^Wn+iIGk64Zm00-+H}G+cgwz8~<6`6+dm|qBe~-k8#>^-*D!8Z@ajXo_}IB05Ruf7shv+Vz3wUO4s^3>vJPPxmE06%it1ff@1cGg`F7>c(_j)iJvN=Is0P zTUU0nR_i?D*P16=^TQdD_mQMHaH7qYFRVWm#=w63^XaO)7~&iAeTJ~7{n@`+cOsc4ZTj7x<=}<0TIxKA8IlhoLOsNL)kGKIKA%uI5y4nd~ zHoZCNE{?5hDaO$KOrCZx$bNE{x5~rd0CLX~)O#FMqsub} zy?f9PzF)Z(UwAfA6Q^ls<<0@VWd0`B&4ta@g7d*DtFW@zP7$^rgDq&rVcU!rGtf38 z`l{Cq?d(&1_tEdnQH{w7YU6dsDzpg?e8rrz!DzdE@l8dV?5sowosv=)boQ<0xYW9Q zADj|wKVn#G{<)p+y7(urP$y4VVyx@kmgUeo%+%5ziur}Pzz$hrJW!1Msd{-oe7i@#_+YhIJG-26&Fs==VHwV62o z8B39z|EO-B0jHxEV@>^nE^)FfgpTYAbcy!{HKP~`83B`c&nCu(wa(5YOXFRY&VPk-vr7QPn(7 zs%eD4-f;$+qYK}WG|r6fXfY42OR-$|If46|kzkmO@Yh-{pnp2*u;VQuoGDKQQ0KK@ zf7QBe4qJ3o3?2CNNer)2UNd~GPOTyXs+$D<5MYVkF6CgZP3c^nvyhZqNeLSM0I%j8H9)G*}1;z=Dzv|yXdh@AW@1*ogR`J*RWyRG&zYHMNT)D^V7kjvLUxU{# z%_e(oO1~UW;QkidFZ%mW`elL;J|#~8^veZk#;OEt)?Mh4yGZG$5g(BI1Y!bme*=k7 z7r*|+RB|7S-V4fZToL}?&|7=HDKqnwO@#a!p}l!ar^R+nY*o2Z6EV@XO#h-)K0n7y z)Ofg+dr5jB&q8D{trp1snbV{uX+0mgO(!(T+;5woT}p2I%(Lfr691{}Y`l_u9po8| z$A=zZ2#?-LXIS)`##mjl#kPxTM5sn8>b+(GF|i|@=4NlXo%V4^-OQIAwI+=u)aWU- zL=1HEYT1EWQs>Hy4)~hN&*Iyhu;02o7}mCg_*A`{?5wuV^pdQCo8zNbNJ|`VBYRYc z5Uip%eIMS=Z=R7|v5Fs>(eXN)>HF5Uys5KQx9j+EiO-rF=Se+ub9AiSMux&S;9Heb z_?`-xTai46+Rvjaa>AX(Rh_D+d;|7sLwqkSr%Q)4lQdt)GOe-pagaM#Egz5KVKCrv zk%_}=_mEq9_;|B8lj|a+an90g4lu$4maHN#6)-mwSr`8!0`EwGecT`$=h$b9+sA$O&*qZF=@UV;7RUBdZe4xebwh)$m+zD9BgfUMz=^S z*ERpN_@^2i6BbVjJ=(!6|D8r^^Co-86f209;!W+Z1@M}ytv3+bqJPw5{Z5^X!Dg}{ zdWfH!?okAOY{Yl?JC4n>TZ+lo`&}^m3iM$r%C7TjAUanw@>r8@YFAnD2ze2~&E}`f zKn3O{*#_ln!fFjqi`mqNx<$??U)PNnRUS%@^odpMR%z^*Dqglfu+Y>B{5yB?;DC>< z3BP6_LhbrAr$_~683CQsW^d?DLwvBkl@+SLxdoZveqyC`9UbEWwb#-Db2;IdgKKAN zcviB8*&CjNCR#q85;WE!H`l*!kHJb~`8_zfbf=dr_ZiS$p~u@oMY+nY4g7WI!8?hK zZMCtk%r}F&)h<MVe&jYwcrT+c6*l%l}uAGW2y#*amT?20AuRKS1zL1IaA6{&Uc zxzEFZp9HBhNOdQl?%47RwhH3b*R^GcpCjP?ZfS^9Z1Jkt;%q+tZ||&f{Z2VN5sxrk zly9n7ONcIGvCN{EXR<}I@i+VYVa9WJ)%?AfsiQG^q=a<)B z3A~xbg%!1FD-gTd%Zrn=81?O?#>YQxd9^kR=6ILI3`bJkFLl0BEb}$15CYbL!Bn-b zu)N9!e)%nz(ge6U*QHcz)n#@nPky;M5CYq351W)#=I36@i%MBbN@BFDl*j^R2HY*F z1-`>@4++M!c(M@2zX9!HwBleoNsKH$`?^n`9miH)b@rYD*x4Uar1`i%0Nx z_G7G)8_Y2B$8RP_Wqx@<(p8fHE5$L;Z?)*x!{zF0a}~IAH&IZ4MF7S}gQIq%SH@qt z{X-d9_3b5N(&DEo@h&g%g&cDq^ph%MKa3}=+l2LIVf{HAZQnLH3e`!hb&B|0-X#cBvjuK=*i#M)tV`qzM{SQ_d@g|8` zv0@wi=^p+|g@4n(!ruTtC-Ikg_-_;bt-|koG#<_B_bC@txmNhka`^j{$YFL{PXCTZ z%VmBQ+jQ489*Px0@z*ab3Hp?53{dzTb%9XmO-0*EktLvF9}h*jP~7jM(1OF&LibHX z!=`#ryhOmF&~3Q@#UDsgL+%iYYaI&I2DI1qtF*ns@M{Og=6VA|z&gE7tgGElCZ!H? z`8ps~(h|kBFMHA5T{J6*N2yX;;?l3T;3}{911kPc&6WrldHcot4H)6T%uDbebvW=g z8|8e{I&F7$#U*TsqhrMnp>XFa%NHNq$2sA;_e0?x+aygox0l$^vPBBVG}chpXjXXl z+y1N&UDptbWK}n-4s+gTdxh0{gE;})eSf-2d?UW}x9+ZuUXeUV)=hP>sTrK})@H6J z+dFJ+&9rCvb2opghbiuS5Y!g&i}skx=QO{S$9mc+U=iR@-Ih_i!2?+$5X{pB3DxU|7L733?~bk@1z& z%6WgnmjCu;b{L^JsL6@~cZw~c(cC=8D)CUWmdl1_OQ8kZ{zLN{JR5PW&05Gc;297v zNtf=#T~itIj|m}Du>l)`{DUHH)heI3v7Va9Wbt-3$(4m0YH}@49gOip(=V5Vau z)m0_c<_gsgvs|&GQgZfpIZq98K5H%!Ob_K$MP1Hk%}8Rs9Sd$??iVCEg&(a%zHa6!#Q zmXiBL$qaKpF6-vl^u9Lz%z_%-Q;79Ep!D`88l>mg^s@_UF0koF=^f01Abo&MA6if| z!=@ipdPkENqz|*{7Z%hM*z_i)cQU63>4R+g@PZooEake6(mR`WL3)6HoK0_0dKdE- zIbX5$?_=|yQBWh_b+MiyNVYx8)cv#c45fE9_Xp`g{ifRdnMyy-ME_ZOmeRA$0;N|U zARtF5RnWfLc!4_zXpP)rbxf0oq^~^LSGZL^ZWV51k!s*ItVspf>~AsyxP=xD{feId zFb`Td?^UPc7ZUvHFRLzVSai=|uAGmI$mwXWvvouf_nL;2DKW|`(me9?z7x-Zw ze~v$0Fu*s%Uj&hqgX*}Bh2|oNKgaJN!u9_jZ{Gq}Ws&}WP`p$YW?I_y)LL1YT3T6Z zfp8Ft%aMz>v_e6_5D3mGEp2hp5|5NyR_@l8cG;}lvT}>a%EHuIYpvX}va-!~hp>&^ zOvzOK-|sUs?|EN9b1%QYed4_H%*=C}XP&vwpmfKpcocuthzFobj6Zo_IZAluZ_tye zI4j2Y$ZW_=N18gz`evD0*bv`MVY8t5?miKF*UWd%!svJJ5WXWvHywa4??noFTH<{m zt{g$<;0yPxyAHBw_{g(keBv{fF;3OPhfA<>gt!o-o#~`Ko@ohoindR~W$^yBWLO0Y z@yOfvC}}kkWykH&zZd?wJz93%;3fC!`5XkUpFb0SkE*F*pl*?a|2g1yo)+)g*r(w$ zm{aYeh*x)ij287?BL5nHFv;q#-A4E=g#R9QayG_k0XkR#IH+Q~qI|DPA=geMlh?!I z7?Z-7zrCVku4Bw-6BA_2CKHp-m`hB|BE~#tVhR~^3St@u$hpD}XtX1}NMqIADxsRI z5|z(((7V?ZHUYJyggUAHxU_S*;;Zapq5U zwv}CqxwUw1ayEc#1<)Pa4U++ulw%G~(2yh#0vIcRo|cD+E*>QQ65*jYdAQEuL1NBv^B|C`0a@Q^7>dv5 zE|P(+B5}0%#U($s?2hjn!x=Z`h-vI<1llIbkxke4bQ+GRcNy`)_4^m*WJTQjoB^QyS7lI;F{Xkoo15kf6U6@PMA=nC*x9at9$ ztgD)d4cEB*10R^^n%`A=SO|1S;3s->#`H$uA36{T4%KId_FXJzhH6P)4aOn8hD}I8 zpY+Zg>ywbVa%P4v)U75LlQ-&FbU_=B#y8**pITTad$%{KIdBV@%v&et1nyZItPvN0 zT_2T^z$WzpMg^!T!5Zm96VgD4bgsFj`yskdV!VgGqBqv2RS=J#T2-Kzy$Y z@mUt}xm9x%w%yj?9^u5Z)U+yI3xdb@63@a;!ARn{)qyRB^211?WxN%MtcnU_Wg=yJ zP}P3Qw)N&`;kKePe5r`l!x=rpcLH2`4NBrWcwbH={at={s4wKVNqvOh`i6^$WTROW zMv=(ftpl^uhQLr{?vFk5foY}FY?#wy46~oc^c-UkG!GXs%pv4J*JDP6aS)A7O3q_O zgmJhHn0_<~--I2ZVa_Hc!ZF0r`N+wuxV~aUG+lZ@`LqH9 zH0gv!8jkGZVI(Vqz|3Pw7AA5grDoZ%$T=!2GdHO5i%fPNABo5tNBY>NB^UYH$Czw> ziOV*7kMsr)>~M3*loZHGNK6SNrDu-My9Kserf1baj;3lLg zo5k~FM29rIN_v3sPeqb`g~%v7`>_jDBMp~@3i2H?hllTupTpOmypcjt30G$!6d2aW zkwb;vE9pdU4*maFOp%jyhpkso$8qK;D?d^CUV#zcPvEpiCIMHF{#1<({<@)R7n; z;wj1Z9SlR4k8^Nsy{hUb-|Rs(I7jz^24nw6H?A+)unW`1MY!(_Eme54gJGyDZR8~$ z`+(6GI!YGwgX%l%;4wQi0OM|pp!yUrb^L1>bbb9Y&l_AKIZm_-$j8?9y&YN@{|?@i z>LhV$KW=NW=`N@ZG5Rt@+an)+a63r%v%P0NjzNpr*h#&-Dmuqlm<8?P))w_HimAS# zKguz>J4)Lj_aP<~6j{rr-_q3Tzg!CDBunD_F_=+I;w{F1R1u5w1m?uL{oZAiKrUdJn^9v@2r%l6k z7(gTVxc}5NZ!TN|bp7KxJ>M|P-6iMaG4mmp)7DICuEELNIoON0urqEwIPSbR_RMG+ z{SwYT$o@NmI=-=>%c$hU)G+Q8*k}48g|YBPtdYFlWigKaEMLU)Kl}fJAvZR4FIkJd zOfnwrG2N#&U|+4>3nuqFVK11%O&54ouSuQySaXZqhQPX*Qf+HHj@#F(31?uLzh2$c zHwJ6`+%6CknxsEEgpZOG@we~Ah6N3a4Il9w9uHRi0jqqO3(g(D2-axTbMOp$t#;!p z=w#MoCj~|qg0X9;=W`tZxqT539pNn5*We8#J<$A(+KMZ^FfKu&v)Ndc$3x_U;r{Z}S_1l+m#)@B+ zGcUuQ0^z#+S9_y<$xP^hm$1ACv&Z`H<23%tIW3secZTjb&S%O3`^E5V(ij*1yMQ0+ z!TU8g@0C+L`25!+V0Jw=cP^fLb1WGPcUEJta#pWa+`m`$2Ez4??1plJrQi;NbrC+Z zq;A7?(p#7Jh3W9DKGqJrSv8Q_GkOof+uOpiW&*K1aTr@U{A_Nr4a}W4nRB`iza4wkYuUB`Sxff;-4;NXueG!f=oDw;D zDfo@_D&yb8ZtBdFV|>dwU!fky$PK4vyD#jekdkq~?hUSvS=ei*3C~3s4C9Sv(dhK% z>CKRk{K0z0)`a?YubJJ~FB=lSf9%@nvD0G_-8ZPlV;d?88yFLz=fdu=L`3+5(_1v< zH=lxdwAsF7_IogkQDcj+(8HCXyOUvw$*@{7yx~ZP8_k!AbTf@~qtGZW?A2uWfBgh6 z|9hwJ)%-VOuRPfA2KG-j>=*XHK*4e;^FOB(^*axO;IZi5=WVXef&5-1 zvQt%5Fa{dZDv0j|74&eaK#;$IYD5+M^%qnD_bfUph;wBS6-b6(n+(rNhS!jxYTa-- zTn95`+roZ+f__qiHo+xm`NyU{Mf*DE4y|=H)~R9JWZgD|R1Io01HL;DC|rTN2yk$1 z1p4NQGvT=k3KTUt|IP|^?NfQ?I4{Yovq{a z5`S7=Udho%Cg6TrL0iF=6I-A$P~cF?#ZqA@Znr4IHM$sM6^24(mkk_v(@i%GD8h)U zf`g3#=>88BJ~@7NkHda}a8|*L%*oUFsuXrsSKw_KfA*B}BHTV6MJsu^<%J_S%6kgF zU6gncnMNU`t|;SJ68&I(O8gTxb)h@0Rn#uRr#gP!ez`o2_e)A6amw@XpeTn#;{!ULBXWDKD;C2b|u#IaPx*)DA!Y)P3@=9gcY4N^-0^ zN)|kM&81Wh+)EnSY9ShBv7E_nmG0+Pxr_Bx(lqD8o3d7#tP8;yT+wa7&+}Vfx`Lxj? zl#GSsO}e95$XJo+-8mWa;*kR_j||7ku+4ROEY z$ON(K&DSCM#)lyJ2@qelIOr!H#;xJ~j@-uR3!f+j7K!%<)pE3YI>C7lKz~Q-?~^_{ zVD^00Q(m5XkB%kB%Bw*DNgX)9ow)Wi7uALj%?FRS?2b>Z40Ra%{_glIV?w>`YS59j z(}mY*`1skgIy9^8NM1}oHg3X?@WBN`gB&` zV!uya?7ggHH9~e@t57=U?e#y zSh!27GDeNKlt>WxeOGg0{fSapH=v=s8-{>wq&OTDU@!nwJf!PK!9_?|5Jd3G^fe!#+ zoAGC1jhI;0v&~PyU4lOyct8T?1;RTKsBd`Zx1eHQrei(loYDE`qm9NyPzjC#`_DgL z>Nw}Ba%Pob7BMihV2ZByOsiqpygXhah=XZ)D>3hy;;bWKoF5M6VG0npPL<;*H-Z9h z-44tAmb}_wPKcXy9P=9pW~lH~f?RHo)95Ci?J#Nj^GgdVO3n^3QAKEgKl}QkvNDW{ zIanqiq*sdTu<#>cwgnFNc<3R3O9+_`<0Qd1FyFqiad6DySM1#e8|gT1{*84b%eSG= zENfEpQqgbNEnB?1hK{Hl!95_@Vm)|mV~15SIAJHlysmhJTCG^d;+ElhZeg|;m0rb* zTeJ{01?wI=U3b}$l3Iq7yWFcCXo7EzjhjD)9s}mv>tv8y-V=XR!YnQ)#?2dsD7oJ+ z4z1DFzm0?s%lQeJaZOnh*LOnKQS4;ZNxcPJ8jGf9i0i|^qbZ#UaY#teT z7ke`p-k-`Pp;d4>SmL7z^a{xiG;G$RnZ(pL^t}&SdQ2;G?F!e7!CX+R32amkp(fWi z?1$c+=`yiPdCw2+-41E;;8yp&%yMAS{_X)=w7AkqAfp`!7Rx@Cs{q5D)T94|6G5ZW zF;dx;Wvy0WE(P~W$I_Z^0$n6t^0pib>ZERpCgz*>nA_8daI>qxR*ppSLX$8pzNp;??$SQk_gXw!Akb2lpnbBZm(LB#Z8lYec>MJB5eJ# z1>5it>k$;N8o$_jIp>)lTXI#$eONzzHU{%Zz|a{O^t44xsJk9&6~ZFBs`m!{gor%U z&RFbHxc)ItiApCd#K#h!xr>FljK%ES8X`B2;N(79zFL%s`syX-(GDZNas+pH`@)yt zqU=?p)$?I!D0c@i)jWtVus9CNeJ(~l_%sxc;6xp~6TyasV5oA$Owf{*lY_UM&k+TU|*n^Ayu z3_LJp=4I`q>=ism%{IZ^R-tb3Y&6}p9A|#zceXAWpCxivI&#Y@K-{7QAcK_vcbX5> zbr-R#5t_!EXv2;(ej|gEwBXe>)K49BZ67Nz=XmAZFwc4!VVfVc!qSbbaYDk2 z`s_|j!)j~A9d{qVJvJgwQx{87l@ZXX+X{727IDHjXml z(WVzx#-Q>&%#@7-F%1?oy)zCfugX%Z%3=6{=4WG2F+;DJiD<#d)ACG@Ls~)r7hiXO z2nPM|>isRKw;d^U1~xM~rgnP6hC5xR_95Jf%hWbNHR@DsQM2g_TOd2n>zoezt8e(_ zudV82(u6j{e#F=!%v{LGMNjx!!}8~a@rEzPEtqO3o+b13qj9Vaoq+>2=?7|Z&8X}Y zboZr^h^w4~3yY6YGjVetHfiB5RghT~gFl$Njci>X10B=1VCbahV zJCM`=$~o+()^eA5+`K9WeuTgy0uPlM#na!ZYriCp(A5j8IEa_Kv(9TwmlRdC@u-DI zVdYAVfVfC?kyaQA%%}c^Er5-Eb*IN4I;nC5kC?!>VvAp#PK^TU%L2kZ1Z%6V?AD>a zCZ6*XnA)Dyb$WBQnumSl!*Dr9msdgA*N6$@Y!#0^=$z5!X+);QP$@b8;}Nr zp?I(xER0`XwUBzBZ^yCeGVAv#!}B_dVUZa@U4(kfrpeG2WL zqyfnVJGj@@^xAOWR+HB9JKJSl0Cb)}*6vUTF5Nm8YneT9O%}^UJtZmr0_`?pX+*>B z6WHs3T}`0Sdjje_2@SUx~2q1F-=Cfn7S~eGM73j50f;YrN zV{_EYFQ7zPK18A`tA^vcyCijfk+{EMg-Q}%s8RGUjC}-?p*`_Obpa@-`sj$`H1!xX zT3AR3s&fIJiaF!hsZ}bb{22W06gn1vJ7QP%N$Wdti)u_`AN|o0H$4hO?$KbBuWDUC zUVL#qo^vZGHkZkx2(f;cftq<^fqtX~yHZMhsTE`Sgr74oK^h$^;3PXxNTBubWe2%p z_o{+fftd-uy!;#U%8H`+rEkV1B)N0pr6mxPgS1L4V0=7O9wti031GH3a4)>C2LJC0 zV!>%GQo?No)vs1l)#2lDax*sE9Ub}D@R2x1+BEf%BovM$ISon7Jzttp`*0F36Dlt) z#wz1P^J!mgBJYXWNzS89!l(FuJ0O|&sCE8P?g6sgpQO1j!ga@W>j0;Vy+p?2p|rZK z0%%qTaIg`)!|x}v@;6>sr%cQaPfUl#-gWy-%-cE!4ug5I4 zuW$H1;_<~lD?ds#KRhLrDO(>ZIM!s4!&_dT5i*ja98|d`xAE82*`o)YL0?( z4V$};_YQA}?YjhtbJP=3U~%*ALkO#`u-MnP_r^MFPT#Jt|F!#3Z^XTbMWCbJc!c-V z*`o?2H0-M8PP4~sm?vl+K;|0#8B}8hV<;8a=Jo9d*YNswTp7M_N#AqvJ@u$Jv?(BN z0KyMbZBrxj`u1n!BPj?q##Pa36eed{R1fevcikXF>U#cs_g5c9pA}=n6_3XIROx)| zr0k6QT@L&y+-Q9P*9)6*Uux59+mZC;cvPqjV7LhmFEVicx1o#BKk9;4-ZH8V_-3CD z@ARf>!8MPOZ1CMM(fZ?onP79f&?w$FAzNlWGJ(`cGyoXRmFW{W2+ittGT)EIZT)Hpzqm(2oy#xoyik68sjJ~0YdLsO$1;NbQ`LoE9Al{c zm*GoB#NYEvP5?IW>jC=fFYu+;bEKPx8;l;ec3+#e6A30@T~(bj7-JY-h_Ald3mx*# zq79wq{XNCE3fq~XI=P&F$UK}CBT@_a1p%aI0X+yHD;5w#0J*e)rYZm^fCYR(fXFr) zL@o3!La6`?s3m~9ajMCakOTK0EkN~X#$v^*7UY@%mT!@&~ zJpZ@$(laMB9D<=^TWM>a+lkn8NS?R0;&~0i#s3F9_m1+Mjm&UT#c=e$-+k!EmWA?e#vsJt6|MU0F?N5`H&sv*Td$r%*u`dl&E|UbJm6q+y?U5gQ7&rE1CsNb z=_25Ibt&3LJk=s2u-EbETco+JyTj#<1K_ebW=oP#5Da zMzXX)b=54rq7iRUy>)o54R1yls;;ktx*Dis0%g3et5B8kYH8dnl&_}ZOH>jauO;TI zoq(daU9dv6)q#!GH>b(aZav3)AE{~g>$^&2Jm!x7y^g;r8t?Sq&6SKUBmg41&m7VX}IyBQ;<2Nuvy{f>HkQ zNX%h@ZobQ4#tZU}A7RA$;5~vXTjQ!%Pa|CSwWHaAlJdOlen|Q}qAKTf#ZJ22ovuX( zv;*#4e7~^+n5$QRJ`YsZtL=p%4eHJSOx9x7Z$WY)vxF~3g#a}6C|vOohk+LZ*$|_S zyGOObti$YG#K_KHwHZ>UV{|N{>Q?U!qJ1@Qfyf3p=aUbxX~OHVXt6( zKBD$^!vb+H4U+fqH264x4Gz=|RM_PFh-<2_nQ!`>Jql9+ACRj#r*nK9?x912B@~K{ z)HilX%nWa<+Q?=4dLUN45vBX?;s=@|qdaJvc<)tT%sv9qsC;#nMjJP*F>cB08gvD& z7RT1(FT_M6Yl*WzKpLm@Yg2D=`L(&I`PPx8&!S%|w86_ISZsp>B^YYQ&C%}RCnL!r zbs-W(l8e>3@>{6Rz_0kbNuXo=-5I1W{ti0V`)Xuo`6uY@m}fK-3)S`*SP?F_X$f6~ znv+W;oc&NWq6%(-@@#C47u+}|{Nh<3WmUji+6*<3M~qsrgS zv7<`#o9Wj^SHu0|1)Ac>xUPKZXL#aZ%taQXk{&MvG0R8?)#n*m9yw7AOV+L6x;Y^} zGlDxnF|l>bsH?&o^iIeh;HUIJ2R3$y`g_Vhb^V=boO?R!^Llk6oiUwz_%2WV-TkAf zzjFYW`diElQh$@_&EQYzA(7S8-CVKbTQl0W^lFM*!qbfl=E_`by1tV)Gy*?!c(k0Oa7buYiLcLwzE ze!%+1D{q7nY@e?nFX|gF2zmN^XGoB)QYHwFlOSEC1Y;#whM@Epf2d&I_B^N7qw$@) zkt~v2rv4$n#p-YJTc|#l-+c8Ue#Ms_3%-mm{V5n-DAc- z@G0(b;v(=?ua31+6(j6&kKcZ8qzVBpQcYo2y2s14V||LAkowq*D_yL6{M7^i-R|)* z;AzJ_p1XzaahJHqU21d0;~w*nhei+<3g_iEi+kLq-a;~fFVuvwi>#8A9rt+PU&cL- zu=$|-T;>5G?H;Ew1S7#10AFp~;{rw}=C^W>8E~3(k2|&Dop%o1<4)kX2oY}gxEj+J z;P0+$L^12tmsm7(xyRrBOS?z7XIMYaMertL*u8wB2IQ;jn^AqlY3A_@=i%T<$M7@i zG}BT3*sY~Lm`Pi{0F^W9G|}aB)_8!f7CF5>vrs+S1{P9_9auX)^Rzo1pUHlxI7`?; zy)xs7fu8tQW6K8>jE3EK)BSjtriiiIBx5_ft36hC6HHia>Hy$kb>A`r>(a(MP&UxH z$!Y3RzHU&D8h1bsne_RT(be7hiiiDn{-<&CxSt_9+U-V;nyYUul9v@vqw=Do}b;b)#Mr{JlG{#^}Yq!go@h_39cDSg(%L zsOnXTCAfe)QNTmJxte(K0B54D#4sCo?Jk&fa(I4(zbxWBK`+2j= zv|T-k$LwKIiDk0x8tElPaF?VG`ol-+y)dWG$A)|D7v{fpt3UD{yJE}8Kbu|kB)(uB z_*%RWp6*C6h3|Rzh8CVcSBE3Vwayp=7tHEQWu^J=wbr&q^k2V#C|rt+R1`)s`bWkj zu{nPFY&uLj-B?OmuX2IYX`fF90xrn0KU3c@xs2{ij}S0+YAt{01c(~R_G{t)P=lhW zSDk_G>iRkv3A}yJKAbIx`YFy8oYe!*C3FVP`rF@DbMeXv+kE5482_9TFMUEMlG|3c zIpSd$2+v%v)*K7HNe}yB_LXc`_A3!%pBe#ReZ&2zMs|A)`d^^?Qm;02e-BI!U*k_| z6aSK5aVI)f-29oZ{1fDZeD zPZvC<|FJ%DHy4xC98_rWAK7)wHo^U!1EjDa|Be9eE?g&Nlzb;lrvKLfjMIRN04NOM z`=!k!ycK^?l#c^y-m8iOJ$)$0*-s%n@hnrK>rvhn~OSbCT5AI>cz5spmB;Qn?neYSE** z-NM#HVVM@TItm+Q@znxm@Wt75tD@-|n+@HSPP**6rL|z}JroQ!*z9`~S{s5tb;I!o zTDt)f6?R__sGrb&8hSOMeF^PGXip6d5ITg=W+54Kk!^_;3MFR!1y z@uCC9&l;PqSET|n_Ph~hqsGH3Vb5hh!G!v55Y^nc2uc`^@4A)HggB>0f`SAsv7oI4 zT?f!hl>pT(z#pjf4M4A!I!gJHi%Rk{3TDCxr+IY6a3bF94j~QeGkp$WG*pJ^Hxj0B zW0KCP_FU+$n|LP$;p)yJhk9JcMJicejUMW{{{Y$Mpfq7q+sWhtGQSvqz~m`peHWp{ zgoZSoB01vBwox5bB7Q%?j5wAXcu9>c`b(L%58 z(UrK@G-acZIyZv)S@{$I<20ZT0M7est!?Bu;MF#hT2fJz4;{%4CNwf#P`RIm8P@Gv z1hy9gm-_QUr>;}i*@dMy;jOlC2(LFGi0&x2(P@3?DKz`N#sy#N`d;Vy#y$im?>-m2 z+4a54_1)z9-s$@0x`Cy;!}Y!0^}WsYz18)-#r3_}^}WgUz0vg@>*ASP_$^)T(6`^* zlW)I!y1sk6zE5_2`(59CUElp&-~C>pSH7p6U9Y?fR~Cea~}!FK~S?a(yp$eJ^o+ zFLixC;QC(X`hL{)y~6dq()GQ{^}X8lUF-T@UoO` zzSZ@;&Go(A^}WOOt(@=dIyo= zRuZ(%f(8<_j-bsJbTUEP2%7hnL4O26O$5!fpxw6t6#D@{#TN7xK_?S*odsH!x{sil1P!vFc?2ycsILXxK+r0JdRx#n1Z^g$n+07(kRr%u zK|=}JN6;=S_L&6r+yaoYpdJMECuo}mwaf=7iJ-+6*G_^a67+xteN0d>K`Sh1JwcTO zt+t@&30g|fS_@i6&?xEUf|@KShoEkM0cf8EB@lEn zL0#WAMLU3?p#=4`ppys+66Cj_t^^el)Zc=BmL1hFDB508XO(H0XprsacB|$j^J!(Oh z5L8CcDhujM&;o+iSkSQqEhA{71s$jYXf;7wEU1y7O$2SXpsfTcf_7Tan*{kj0;t)7 zo+GF)L9u@_#qkh9!wKqcL5m0q5_GZ!%_69fpneuKm7q$3hFDNGK}!jWx1e}}))16t zLFW^+ji7NBbRt2`1m#;$7lL|k1*pt|cKr&Vp#;sgpf3r^A!vaGy-QFTK}#&?Wr7wF zw9JB55cDWPD=p|Af;JLVYeByvXgfjcEU1(q-^T!LwxEdwolMX+3rZzuC_&1CE+#0A zpj{U93xXyR)NPX~j_w472fpy3v@j-V!jQY`3M zf=>PfAfE+22vFU`p2@zK1_6%#XeR;|5s;<h8GohfV*! zsG_hS-+%?q{AqZ%v7{oJpK0w_+nttk52W-+MrCm84PZw$C?$}Q?bWB$K@AsW62I6XbeVu@vn*Gc za?D8`3*4n*=3%*@u!5NxfsCB&wAAbzO}DoP-r9-yTXOBwA9Th-c%NIn(oFZz9OaCVlx4=OmD+lwFxyhMnNdb2nu4Cvl zF3EKD6WpAC(eXJ6sGYVLC5|>@^qr8H7zpMB^n5D75`RK8J|h!1>bjGVZ`O_6>_8Uv z-P#^W*B$4sr|!7StWh4G=(}t_#5sP0@2fk0N-pX3n6RVAU{)ZQ0FEqH@<}^r=ZEKY33`x-vIANA#2uNF9}uW8x@pYDQvCW-uuLXD%@~g^7VB z*MepL(E3Prf3<78UJJ)s2{*6km&dX2v3ep`Lvjo2&~-371F^bOuex2ql{K?b>2*YM zmE>9=sc(2CH@Zr~eTm$o1R8_X;)Bo#8XBj5>ZP&naufn$_Znx^-P#%q497!3@_;`2xaEXsM@kxwN zamOb~e2R%rV|>sZpC<7^6Q9HQaqjpWi61BN*>yZop^m*-#_U}`Lr-rav@K)y)iUAaW_8iwIpp=mHJ>1)(blT}|i;4LzFBb%bsqbfbpuxe?Iqgzh3#Y3P@LI`fy9 zxbV@)S%+AU6Z7O?p@iw@lL{*2ZaLh4=cLIFmruofGd~8vE zh{sk0&Ner*L}rHbLYPrzTGp-163)JBXOUQ3H064eo_;E`Br&gKNz1HQtS2D9%EeV zniWXM+Vlt1qxy!UvZ6J%CLa5)i^V@+UG_^{ZdjjP$KzwF2IYvk{O(Vq%woR~Gk7wD zLhO$3x?Lzqv8vO;0Qm{(1{wnDM$k}#W?RsY%oqgdrFj6=^~E1p)mMO;H7rbi`4aN= zd+qE42J(wS75JrYrN4=re9J=O8VMFSeO-2VvN03wHkqD%wlR6dVJ-k*KepTV)vMP; zoqDdn%lnX)d$t|f^s` zZPW2csBQZ4Y?n=sLPFZ~$FS!5hD$O%Hl1C^LwM>fSQyGGb~UuQ4e6orzuf@!Dty;1 zgN~(Wt}X|tnV?z=N+GE0Ujf=|K^GC^CrDY)83YXl=%prr>YDKf6uJRQr$*hn?V3JK zdk1|t%Ky^Nz2(#Sro1QpKyO0<_;2AwXzcU?RXNcp@>&{BfRENBHmD+n5A zLH7`}mY@X|^eck40`$^ifa;dw56Y()(Es1%WBpJak1VPSX*b<=fTitV4u@VoF2(8_ z?S*4IoPBiqfHq$wzEJxyEdK$)KVigJi!3CH-uNSGS^^}6l?3@MXf8k$Rcw*tudJde zh4igsiVAMBYsu}^|JHP^kIb&)(LZ&A(68(J8dN*{YtiZ*C7_;$@4Cg7dPg#J9YISi zsEMgU1TC|m&j6|`Bc=r!QxXBI2zWpP1{2VCEdVPu;0yrtx^OIHO2OJDendtY!&gkZ zz$%bBHLwfaF!m?xna7cN<&sy%lGx*5jzS8Ibr$;`a?r3#nDn?diXUHL^)Gp4xmt~# z`jL(L($N0AvV3p`c9_W?F}*PyyV3`pgyr4ipfz(HP#)(El>fez0y>5jLZ!_U7kLmDi17Bu-2R&giW<04=-0_t8eOmvn ze@6elZGPW1zn_@j9;0B!7c|}=E@FcGCEADN&TkauIP|IHR&>cDmIVc1%z`h^XEhl`3|EUGe0YklV5Kd z(r-Z!m%$=)jxJQgaG@lzCzu{se}96ji+-6OdrL5P*_I&bRko!Uz2M+KrU?$B9YQw) zQQYmw{?I{q(U%tdZ4}OAxurB(zQQyTdzH&_zV#qH^HPHUt!5qN zdG9-bg_93D>{j;e+$Zqg@PW44ZD$Tnwf6$NWQ=u{8g$#-fF zEYnnQU5^*I>Ec4HOjI=*Eo;>w=-MQ$$(k$19k%-WkrJyz{ryP=Q}e>bp}@=#*3Zx| z*qm;LjIJlSd4dgL=xA7B*T-hG9v@dcL7zGquY0m^GrBoM8C~F}Ly7RrP(`T1&}!vZ z9Ia`4805|iaSt=A*wV%Byri31e%Kgji|OwCC^INsyFbHuHcSE3K6R^QV=T;C;K0EeuLo;&s$Eh1O?LTiVq4 z;S-PAwdo18L$XyF2HZ5EM7iqCWdUA2{=4`pSS-3E0;spMT8r}Y_|n|`!C@S_oMk4Z z-BNamE%rCHE#AW`XCZMoWgDePd!5#n-eH!lA!yMZM#+-i6`)sEUOJ^9Ka4j6^)-Ib zU4ZwYw=M;#B5jI7`^Mqz<1vNW8dEz+ke~bvaLbSS8YsEZWX9K+JalW?R!HVMxmCWz z8TmPRMa4F`({7&PPA8YN%MN76^V#}+Zku$V+fOFnoV0Mq71C8U?b1MZ9!&0WHoBrX zucFY3Z@EE6>rKcz*KwUb4jyJHy|LhMvWmW__k-olEy2SP6jT(S@k$*8fZQ+4;i!47t;PcvmO*sTL>j>jdG zpD=6k zj$8n!%S$pFwfslKbaxi7Afk`xwH7ZAnB{W&hH1h>Ix?9q(EkrcsEfQ-d^nfIrj}qx zoe!&kZm%zxW!=pol!8HeH6w}cu3irMO(Q&V|Pn4FtZFVcmJPJroET6DtD3ff8h%cAu#E3eb?1L(>nfN z*_)oe&er(?=29UH=D!rPnQ_G&F{c&uBNq=G4U_>o;L2vv|TqbEZ;wc_F-*mf5! z-oqS&rg&sSimQmL^?21ac<$HN9&M7aj8sb@KE2>44 zT7gbH=YNXvW*5m;*Z^9^{G#%TgyM=)M=-Bj6M9#<>5VGDCV6a4$}K6nA*`nd+aucE z{GN7#y3Ee@;tX+DyKLcy9&|cK4B?^mm?}N#qRgp>&>_UIa1KCdOnH*PFaa^KU7=# zi&lD~?_d>ZPe*JAqV)(J(Erw$tpz0%sT)^%-t`4RER&h> zXqHU3Vm2Rj7IVQBvJa~wjHL&sdPo^^udd_M(@XP+pj^MQU`pk1U96?d5p^QEb$oV5R35Ejv`kI+M*KQ*<(8EH zUlVpJhp8LhImjpjY}#!#!6&OUED~QVdUs<0QK&x(6huzrP-!C&*Q^KK~Qd3#v^+$Jo?(a`UkIiPcgl$nV zPPzet%2Ux{E7lSzXGSYIwViN1C#`5Qy958GvCtBT*E4pG7Q=sm*j>_^#_4YT>V-zL z$`=i=9LbMo-YGq=sKlhSpEjM}jZ1CrdIIKSSvJgj;vh_l+V-N>M;;zvtYH3*=M`*Mg?KstKD*V^I|4Y4-A~#*2MJA z5TViEuLCmJY=;VIc>3^kUa}CYR}bCVVA@vwAM_6KN~&3sg)(Pw5!33=w)@!JlH*F3 zn$*h9bKNqsPZ7mAa#mt?YEqgJRMTnGF6!#*&~;(g_Lc3%kE=F#XfLxQr?9BPJPBmb zW2Mdj`uj6Wif4^1C@#IpKwPSGy6n`4XAK;@W5zTeM_HU)cDQD3*t>qxCWD#Xb+ThC zkQ*Osu$Ji@w@hu&XdALTTiTwrOwI`NL4l&l#RdQEdNMtvtYkYygEDZ`Bz2r;wVbvG zk4_bpTs*`nF)-Lhm!<_Y#f4TF{TpjoMhBiX5%e0SK%CO@gz_ncnBSNZ!a^4fkDChG zjdXPBso%P~qytrSV-@tnM#<{aZD8cv)9282$CI5~vNRtCt)~WP*}dy4m?bHlVXQKX zuem$wbSsv$N4oXOCWjXlnVfE(b!U;0Zd6f)5?35>McdVp1qEg8j88BSvz)>2RLF`4 zn9?6Q{dsPlm_Dsws%_v8md7*xW}Yk_5HW(Zm&w?`X>MAm2RMsWjzO#Rs@*(!#>FV3 zXgWi~l>_29ilJVHx@l-1Oife0CbJD%J-8HN_@uEp_OEf|W+d8tKaYldjPl};sevqv zqV>&5&ZNW0yb9q>_kFYxv|CQCWH=en;==90K)zT`z$G_`WtYw~iJ)z4-&b>e!r&f$|V zaa)j6WalXi77JuwHxK0p<}ggPJvhc@^VWepY-GdK2y@#YrbsX)2Nz?qh^=_a2Lopr z1lm@t-9fm`t;^T5cMCjCp%*|STFQC1eg`QaBky&sSAwx6m|_yrrlXE-4u-KZKZU)|^6PADf}WhsY1ESkcd)bq zr=;CIrhgZ=<1L7Lyjut48+Vyt4(5MELF>lTceGP5TBTk()VNE*juOBldG(Bk$Sd}# z=H*YxYpsxfN4FlF)a`$U)1%YTt##_)Y)`pA!>xl^>mb#QI}PF|rP&c1zT67bmA+kf zXcBg0dtw%Ys> z?Waf6GigpKave0i--AD~lw#$Ugewa2_52b%Ki!+~!hUuXH&*Nn-|*Jj>4ItU%z2+^ zx{++ta)20SiLL3pu{$Xu0uFcj$9Zi zgQp+q#V3>)C#O>>A8{uY*cHlH&1yuDchiRY{H>$ z243tAxNY9rgr^^q2sf(LoKtFgXsrz2sj@ad*H5Fgkl*B!{dO=$qqj6CV=KM$E`X^0 zCQQbrImZTD&-LJ>P=VZlU|NjUHo-A%6jxRrdJj$(!v`F#&4mhte=K`%UE^s+C!3+9 z%gZxwnp04YrFV22(Wtu$i}=!j*U<_3Ot>fJ#-h@21veBJKBOA4Je;W^!``E`5FY#pp=Pa*c6`qi55i>7!l_+c4OuT7-YDCpqOC#b41bf!5eT z&da|onnRKmx*p#dD9OW2Vsb@RLB0$e(3Ll~rDGhfz5L_OjH-3Ja5{eQ`*Oz(@3wjR z^b~u79Zy(QPujIU(0r6UtX8`YQEDG<&ftm5nLk7iVix`pF+9zFeGi^yf9n`?nw@VZ z(RR4^1UG|}l!p9RA}jWvac0FCen)B86c69v7tfFTjN0L8vKQ1s%8f3jS`=PwHR3z2GaK|zUsirhrc{S=_XhdG2! z_g{ccoR?1G&(hHi7KgTnq69sUt{ma(i2h^vdYr+oy*t6DuAYNeiURv+2d{#*zR3XZ zPj-zQy#&u;MtT+VFO+(3mCyH5S7fe>#UDaeqSI&(<`%w*%mhB)g}Q&K8|`6zClZUn zsa*Y*-)7n!-Ur!IJ!vzZa-GzbR73qO)ksCRjP-$*n8>K^b&CO2cf+>AmsE}zinqso zp{{@{zL6UF@JbvD{xE)DOHi%FJEe$8&+5lpClvvV%C2sy| zDA9xIHegb7`L^pu=t6E8+Vef0&ImMY^L_VzgrUOX629lB7EqrjS+YkHk zRGGwdM9gE+m}3y5IUFJ!o=OsYhHMU)wCch+=7*19t!h@k>Wm}Ilb|oP5`QA;%_2tG zNQe>aqQzKCF>ZrV$IXAYwHUAAytJyLRw#yCRI}!G++GpbMKRtuvmG&-uP|clQh{9_ zF+PvRj6#eSV+MdhHCE1J?;5XOh&x~<#{;73sc4q9pz9Lw^{y0fms;KlvdumUfBu9& z5qaOOUfr1h0ZTh;0k>1Y$GTI%#?}IUjsxQAW1b49fO6wZ=D%1@O%!nLS?vgTg5{}6 z<)cVl<+T5DBYKmXiWn{6A^?NxMv};F8n6Cx42%gS-Wk#b7-jNP+EDQgzj`V%V6RmWonhHg^q;DDF#1tY%OMeG|K{b;k za(9kbA06!!FBPzfSs-vt`ew>Z9lRu<&5jOEXBaxzIYHeO@#x?+m^RsXs3XL`8TPK; zqS2@C6cevODK*T9)jBwtI(P&gyB!nXhARWqM^J?5K<-I-=ML&XQ3sFpYexsY$P;y- z)Z~A9bnw$~Cng^;S_caO45|=G71c?L1+ZJ@4t3;b_WXCDb~g&g;J3oZ#&j^MtOp@kke zgOxFTo5;|EGW-h+vyog%8Tvtn@cHUvAfDcNIa_$tZ!%SSDHZ$P0A$t;>}4Xq$-6@2 zhhqz$tA5A4M=xg=!Q>q*dGCqlJ%Dm(oI|3u%=kPrP9OXh)FUr^eDERrBJyz9AhZa& zFM{{R0$bJ0_wb-yM}95*3a^CW_rc0&?*q+gHmV@OgIo5rsADMbBv#IJz7JckPAB15 zbS|PDmRmrfCa}2<=Ic{$O0T6O3cj&%VSsNCqa%yw5~bgLBvSA$+vKdwbbB8k$E}ID zpf)FvhN-^&}HDYxUA1nfKa@W$g3RvpQ>R_CahbU}Ae^2(%85I{$>+rJmRcvicdPiIxffPb)^ee-_GKp~qy?~{iS(Q>CXg9! ztrOff%wyv0-=jn6{Ku=gZ0GNafwq|4oxh2Is(ayR!X;HB*fsWrj#6nGlcNK>TlH!fs#n9) z;FOjbBJn;T9yk9!fLbxouRR7H2T`G^8_1;yf-2Z(vi*el0%{75tzqM*S-nAEc(azx zh17om=r?P--s>=Xx|i8IP^ns(axz$U9O1{xF$7_VXq2yjmywy-^JnL9OJ93&i%>u`22)5IR1qLl7gKb=JC6H@AiQz#TD%M%={dg`Z%&U>U!G4l zimJRp)j=IFfKP2tv+xSgtwBHYOSruHhAZIkJTIO`Z58!_Pq?}6nXG?Zot6?lCQ{F- zreE?g!+oJ6Yd2Gn$lvz0?5PJhCe&$t=a|N`CD0+%yK=-J4o5I1Y+|}8NVmRohsG|; zQW{fy3p&sJ3Ro(uPve7v$jy4e`kq>HV_tDlzTX^>!yF0jV>Iy`*PC&v88==$$?=MMfd)q4M9T7w-I}Q~i1Yr2_e7486^aubQeS?c|fddvWt@xEouW z_b#+WhO&URnqKn3@8Qw6MNrywIK_p5u94XJ!@o=M1)<9zM{;k`e{PgF1s6WKw`Km? zxcMie*&F$QvYI0zZuWv zqRXb{B6STK$n}vA)Q@|ZU>kbG>b6sUYDsK316Ul3dk*4@3?0B?eZ!{xK>i&R8{?$d ziWESr8<#@V#rlTdGZh+_pG@P@RhQXHQ)X+bC)HL@T3tP9RrREmd_r@Qs-Co?deZjl zN!uKEsZwk)y4_`LD(r9?BoCiklfFj#lAaf$66LO0b{T9{-TgUhlr)4}0B;xzi=?aT z&5Q%Q89%+imGQDqoQ(G~<%IF-)}?sgnc@TCbhwa) z8w|~fq?tmRH(G+f9Rw%D06T{@42a_NnD1kRBf^O=$o|)Q0f9j>M_2tv0jw4rY<5x^ z-Z*Z8+D9(5s*lB$W(_;hU{mliGEomh2v0PmD0oR*QdhSob!973&kZ!B&isu->HyL- z%r&Iuk<>VnN;jm)VaK+lnuv*Nw^Dr}fYngutSIh>iTg~0`vKzK2NxT@)ZnIi9+!M9 zJ7|pRxmRPJpyovJOdy`m(6^yFYKdnx@m%Lp$F*)ex{*xNm^6>NxxZ9E#wN&zq2;m=zH^5T91c)21 zG}yXd32dhm+j)YGS>KhUreG0%Rl>CsR4Q|JH#z$==id(?=Q)lAEYT@za@VNwWZzWG z_h!o zU+j-Q8K}R^42F6(u}&~KW-`YGUamh!Ce#S#yE+ohcM|iRVe&0zz8~StUDEzOn(xoQ zj^_J{9Dai?7o}ane6M@+l|=J3y7E26e9xJDo0zZKoA2UizMEX~RWRSpCf|1E8|}?^ z;5DG}kj>7Hh~KbmyInQoDj?k-ol+nBD#q|0Htd?(#MT$JOoR82bD~WSo%7VTG_zeaPk7LwxrQZgX;zWuLPK*Y zY37k;FZFgb!&ku5Fx8}4$uuLFCM4r0*70w^OQcr_qbtrvcU{PyUMOI-k%ZW)?Z1To z6$R1Tzr+j(<~D0%==C1L8~1#C(p!5zme#k7B){*5uHst~zK-Fq5T4)AlOa>vxuNXEB2j!EWe#KxqH+ZxO7yo>Xsr7c+tU( zL01nwTBY_N7s@Vo=fc1q^#TfV{@QS#XJdrPmnjv}sR1XU(|A#o`-c(HaHb*NOyc`~ z+=Id4o$PW-YnK*fVEOkR2JS$Nn}HkM3|yocxU41}vuWD)u0eWEw`DLL=BAp|xM)fC zu^cYKbXvpRM>+cSk;5v4so(Bt;BW#s45w-Co<7@APe(6zO^Bgdwj;Hp7TPzu`b%CH ztvm*X8u}U3Ly5YjIf^aZc6O-Upa4riDPPy8*(K(y5)beN05=Q; zQ^s^3LqtPA!(_3@zX$SPqg9(7WpKqmF+eq?I8nfBpNmm9H*y%UHV6}p)}L93mii-R zmbvVg?yauNI6nT|GwxrluyU=lmp62s8isjS^R#6Dz3?Y#bkh=vS9 z>`@Xs6U5@?KjWxB93}X6lc#iFM2y?4A3{#YfUbE!)IY(c{@VqUiX5o=E>^~qHv&LA zpURAzSz}@9x%WF>ZUDLdNITXCrB0x1?l}Qv^8i-%OxYYk2^N`^zO|HK%5JX&&-Zmy z*3~P)4~TI~@ELMC5hkl+(6 z>KO?}AyLEIW|40PC0PCgC3xE@gMa?Qks$dyPZ3@$5%G zk&_Y6QC z2JiH!#cyPRJRRI>@lhh%?B9N$RE-;4mZJotqmqviq(Ge<(Ov@!LE>axd5!_$Jq^4= zJ66D1AnyoRjDRHi0=o|y{?^eEFdGpKA0o_hpGX1!06KB=_c#LXKg|&^tI;Fi72u48 z)mp&Qz>*{2@9)*+elHNZgzV@Qau|t*95lLRg$x# z2uAcz-`PU`BX|u?@1ixaf&me7B!qNnq7<|oO-vSb!a@868yFh+VzVjgR75oJ^=E2g z5$QbwdU5k#cQo<+sg5R6zVT?{BCy|{CVGJ-M-va+BSoF>(!zdVw5ER#zN-V9r^nJ4 zPLI_xZ2=2frV_C0lIea>bY!{%0TDcgGIfp06h=e?UvZ~QD=5>Sp}V;G?>I7@7L_T~ z;E^d0G408ez*4a0yK#xgROXWD9KpEFighA_T=`4>2PA=`Q%6%IItp6vF0iBJy93)T zT=Kn)Y>s?S3l5ao=}6Sj5Av8Yqs|(78~N5zzVAQ=BaWTXuKNv4vx@>l2iutDPdd$( zXqt4U*=*7@GtJ{nbEfoMI4a3Gg;K0hLpUj*dn|pJ=K+(aTL$t}Fwb$S8(O=#7j>cs zSWGvQa$lwx%@k)jfE9>CleQIhW8=7r(Y<<;u2{fw<@LS(-=if0c{9(Im zj$DWdjKf=g*?JuToi%y8)PS6I8>YjPqhMJ9XMpkPRY#5;ro?HE^t$3V^cFw#x5L8J3c!nkgma!mO9k%v6*8p z9wIU1)#wF@gAR;ktgRz4B_SiaeoY*1xLxlhj$D-eC~)G|BkeCSGe|QK9(v*zkLQjF zWaR_{S$ID+$7_S6n-v(<#fE-sK-q;gYYSFt@&h~NzG13N>9y5%Y=H9GBX^#rDg{+#|E_$ANhnUx%v`jV;~F$5oSNQ(3A!th zMjatMZ&5{GgLm{JnhD$lV8aa@JR{#A<~xh|=GaVWz4o=tTN{dxu675RD7=9^GNR@T z8}O_|I&2+V)j@rum;5yP8ARU$=sk&lX%fe%SKNu?nfPlCgTc#ElKJi5z{_QYd!ZQl zqp^_QaH8M_Oe5Upo)k(ZA}6TKzq5y65UnDj(L|Il>|*m!R~1Hb=H=iA!Kn=DK9@^j zTZvQCFj8Lbrt*jPNfJniVIKHtILDA&OOl_%0>Y^rPjSzrqo^uDia~e!CIF>i$_UEc zB+QRj=e~`QsFrwFoB+JIsN5WKo=pj z1w9%)V|&zRD8;~VvXI1mqP;Sx!46wNy? zyU{eVKzkZA{fXwS9qa|yqdYk{ccCjLx?HffU9;BrTiRXRyxWj8s=QZwh&7(bk%`aO z-KTO_?S%websz+XVEffVL7O7&~$&AB24ZTnZqT zyTkxk3IGPHS`|-$v4$XeZ|M1I$ZrU_91s>s5~ce7D_bOg`N~}+jWmj$CgpV^KT^ic z|CJVsw00gV5+$~(U%l4Z`Xv^U0lB@FxElE)8&`FhpayIKk!R4ObZPU{HtFZ-^f43E zfe(=WmmFDx{Yo-5M3_1S?w)&bj8T5d3}!iCm-_Jr8BEUm0Gwl&-qyd3^r;!>#+%*O zsc^IQ?L+Mpq?X-B9JT^=qPXV(GCU@3$y#0c1lEhN4h~EzWDH=z!X|O1+!^JnKqHBi zfL+>Bp4&!En6lZANN4j!5L{t&ruuzEUp!!&_+nPX&fIzoZf;^phV+KIi>a^Jzp@bfJNh!t;fe0Z>u794nbz2Lm&S%+&cSGGL2he}iQEOm zL5)pnu4?QY`G5@k5a;Mj!e28S)tBh-J;1EKu*1gaOA4Wfp!7JL7Nm{@;D4}<|B}z~ zZPoWG(mLw96D(4F4S%8fzWc;cUl&fug0Z2nvWAQFpjWH!R??#Sx;W}Pj)}T+bPx4C zO7*?D9km5(ijG?Snn4mdza1K>1G21hht{Q zG4xfezSdI39Ft5fl@Z@S-1??l8&UKhk&|ML?=+_58}3P0$*?q=VIm`S;We(}>+Vdc zG}T}Ln3C+x^xSdb{~Pvoe)vov5~sVf2s?BWp59;c)~t+_6swQM%;Qrgr(|FqoIQC0 z<9K&ACtBG8GM-JsVwf0Y*g1tiL6^VgM)>QB*i?UPD7-hXvv_|t6@kx8PfSXg!u&Av zDmTuW*J#|#82h*|lwQoCelWeXN}e*({>#H&)UC)G?%J{dL{urMWESUJeFS(%wV$%dhE{-i0%6H=$APw*oyIo`aD zDO5@ZabZsB>ZG|@_GD&RoqSwB@r3;}qX^?Om^CG4kX7juNijP|xO%H1tWn^Evcq>z zYG>f>4zgdOst()6d`&M^qZZnS{T69k>Pm}rt$jt= zP1UQ&B8}TAb{ED0sLK_m1;7|)S6$Yp%`gd_kr9SZkEop$h{yjU33STCs@=T ztbKk<71rr1x5*w)^=$eY)m5iADmH_OP1yv`dm;fd{y#HfWbg(kx{i@`=E4{nwO4Gk zL*s_0c+rA99yoT#3Lf9qj``jH!y*Xm`tfo+O1Z$^LD z(R^Ab&!2i>&G{l?z;*2a zwNx?7JmQ_jeCK+-fTu=< zlzUzrerR{v&=CG$%6}^s|JNxyK|+@ja- zrV{+f=HsIEA^t?mFLC)FkZRV3g;IvbuH|o$9YSq<>I4GpsVTSu~lb!nbTnUgxOy6*rxQTz9z<`!uL|h%DFkV z=`Zh5%RVy)h+!xtcB2=1xG7M$TmAWSyHu&{dWa5)dugC}4|C(~ok@RNR_h0X_5{$? zH~KNRmMBwdj?y5Noz3~~&PUYqp)=D5D0c1U&%X;d0{PSM(Q)t{RO$MrA=076&jsZ{ zyuvQJxv2OSPGgsGRm!~hdG4)B@kLzCV9%^W;;tiY=(HZQt?IhEs_Pm5VnHGuWIhQ8*Mu=vG!ckoss1yBoJQBEEK?!uVPF5pTbW`Lj-G?K8LjCUg$_ z=9q|_7zDliA0o{9rnM9rR>#n_MRI;a5$Ur`8#|qJ{nsDDx?XB^wTA^)+!WRoZR?1U zwB2i-`&)#z{g2Z&cnek7?oM;uK@9X`?`#aI`x*?P66~tG*Zg~j)cx{ZU)>&aQ1>XM zN$YF7+;n-qi~7A?T1y%I=Wv#ou4Kuz3~d$7c=0ue?|Oe-i0yaT(#>pCxgjN5blp}}n;E8gcQ~-y6xe?>*CMbn3T(Op>u>HK6e>`k z!QJ#nk0whrmxyMR6jH#_rZP%{57(xR$B}Q(Fx&nS4yK=ix!V&_C=mzfWXmq{*$0H# zf5s!TgBfPb-@^R6DH2WNJ^q#A-z@&cnnu__Z-9&W2fdtW;VdrIy{{dc*+Tv%In>k> zZcFYeJltn6<`2g)+$RPZDpY41+9Q)lR7SqN!rdnf$n#Y^m1G;G%Mj_(FW5VQ6B9PT zDyh51BiSL6Xpvm26k9K|z%i=7+GA9IUG0~V#*S|p7-G8UnsL0X z*HAj1>ezG)1?2@TV*Iek*$Gq?1jH$C22y z(jyrvl0!77WhbrZeUVRcDenaZzb$|0QQD@BnjikC&v`F4i` zuWCo!t65h|Yqw^7s-weRV|S0Fblz*tq#41?&h2rIP+fJdle*^^)!q80^Eofu{CVVb z()PjHFSusHjKqv&_oSlw1eUCsw@jGqpIsDA^9k1MCroAT=Wjv?FaFyKy-(aMcKdRT z2Pb4|ddJ=GT*E!>cNEdXL$`{>ha5*>8N&qt7cJ zRHeuI2r*bp+=~7eLa{u(--`aJ_MtyCX=18MKc&7pLF0<68CAFkD}#|oDH95)9}iM? z%YLkual2{y_S+8IxCCSEiAd_xcC(ZUqLYyBK9k*MvT@TIf}8)Ls3|OsDi3RP#l$k5 z>ez&Q z*r9 zg}kmlSeH4KydTL-@zh}S=9#AF4XjE>S6e7UiaLv2gcrxYRob!xUblf$c=36z&BFg4vH0JDnRMO?& zF6v&f=**7G1FbyHVDY2*1hzaH%=uG~bVN6Xyvx2IP1A$#oUcWzR{U=vy|_=tZ6wU! zpeBO})pUyt{n@7#dRedLhqZ$C4pktOPQ^q5nQl70k57G5pEpUGW;bbQ07(OPKiK`N zTIt_a(6`J_fyl$RBfy$3h+0`MbIXshmb;kht}#x6Jl>ZFlLZd_%arW)gKE<_s?uU+ zaR|x34d~Uww2w!+x_s&4d!#d8YMAe~2);`3z3K7giZ7=#--%(qTO#cf!5*=20EpB{X_{O%;<{mM*gUM2YY#Q$IY!J`86v2oz zxYhF5G?;P?IVf2q%`0v29rWg~b>e%lGvBx{UonSUeZD)y_qxZoM|{_bkL_=J(SoKm zJzP%4$HrCrP^;87L}P~Oql=F`9Y#u4i6^T~vQFx(!|RsO>OL|;_is5Z-gKGA7q7FI`e)0b*OwsNAR5?z8M~0KzxVk9y_J+GcIR1jUTWGH;rG)2>W#C=o8AkToTHa$;^l&Oc~NJIT4{ zSUHP*ISFAoO^Qyt`Us*kKyn^KPM>AJ1GR2_E0=1d99*~2y5H#XiQfg(4(sxX2#p81 zA+3P;kcZY%N^c)svG|Y^=(!^M(DMEg$<{{KrzF#K=SH&1ZEb%UIOwrZGyQRkqHn8t zKMbJ#=Aj=E4s|6hXt5&Y8!Kc*%E6~3wZ7?%SLscRA~H%5`GCP?S-e{chagl9{|rnj ze2H%o^<&1Ar_<~(G;s$A!x=@(s;nDseN(Q4ciI(o$CET5&bXA6bR65C>zzGCMw{XB zrrsx}q_Pv{;XR!WFB^vD$DR#b2GeOxs?!s*(yX5=&)Ua{D`cnY&UeH3444q}eLRSE@$Ni0#AB6H z9FM_=!d4tzD_8|>#aQ{8qY9ImqDiDHTR3+!Q$Ar_#I~^IRT{f@M1|8*IM?Jves?=D9{LDo&mu%Bjn!!(lJA>|?z4_6@91&^j2*gz- z#W6hFW;T+3o1&V#vm=!hH?nTYwgiM;TfZuEs>j?CygrVB?+IC%rVfJ%P8Y2Nb&>vswzA8K# zucoEQW}?z=9zjPBJ9i4$6xpMiQWOoGD9cpt(_C$LQDa_;(iJ&9m`qt2V?@m(V^7qW zPP^yPPr1LnQwD_^wg*syHpd+!|E5+APxJ4HtGj)JIcvS0Cxq;3!}mg+daECSPKz0% zK${&TPuaQIUZ1?(1URf3>Tg+??U-)IkK4`2{qCYhNS`xdR~y*Hs&b=L>10{!))%!A ztl1^0)nK7#O2!0h#;ts)+~(gq+Y%bfKXY41)rkF?I~`j} z9<=E^-0dovnQ;HemypnNVpynzK8;uJ%-d{Y+4Kig^TrKR_5LF7w&zx8o5|BkIf{R;&+uty8oLg#0+3hU(w_T1}+}Mz^hicJgefBn_?9+?4_G}tb z_A`CnwUsfKQ`4?M&!@+LRpQ<#fMvz8J$)< zC}bU8JLN3~PR^b*jx|F9m!G#L*x4^)O;GKg)&#x(;rUqPOzgXg@5{XbONiQyloD3) zH9mRSuqJMv#8Rngl{dy7Dw44xxd4+2GSAM+41`(=YQ!VmOvTF2o6Ag5c4c|IY2uBt zydlmPJkBS?$!^r?Vcx#t9pLfii}$UqggagZMOXivD(&1-Q*V0tFPg4=_iyW?Vb=jY znqm7w8vULuX?oKeJui~fVo9CkOMS!Tb@!3B_%D+BtFY9yR%+2dBsF4?yA>sxW_z+% zNp{~(vh#d#c8|(`k?gC&vJvNuZhE0mxzZkqA(AQwL6K^8%#n*-r= ze5VP{UEWxEr#Kgj^XGoj{pnv`I!ci@-4`X@D|+PaFRg)ur7f1UJ3VRpCGA2<3te}y zBvM)+EUh3c?NTc(BHfmtded-EX6&8F{OpxTnHNOLj1SA~AC@`eSeX|{=BM7+dW2-& zEt#32^cn>-=~e4g5W%}|qLFW787oey(uL|jz5-)d7CMG8(h6RIHc=A_xKjeSiM*c*+!8}nLdHF$b!lZw?j zzd3I3r1)uIz(FkawZy5#Zt}EOlrM6)8MC2wzk)mMw{TwN`UI!VXOMrkUg~RaoRz>F zdcz@BTmyZyGTkGX8DqX6xaNVu_dJGG6@=hEuSi&A%ri$AD!bo_I18VlS^0S-dGTCr zSyYT6j{Tr$e4hWYmvh}QoWCEzx^%17rP~?EyVsEpUKUEG?ZJ;s5n(U;tk2SINY<`F zy$LKm+VMK=v-4^)_gm5)a3N3|>-#O~H3{%?3pFDqS)8#~z+j0_U+lF;7B!3THAlau z_A=zD-Hf{<*w^0kY06n1V}3JD1NXyAeFbV)!J+X{6BQU&gY*XU5&x~?-$m<7cFbkz zIyAuT1rNw{vjy{l`lj2TC++@QSsydG&$4uKCqy^QmF*79`w>8WQ-)~6i`PU^`8g6d zvv_vkmYkBjnUe};l@yoqHq*N-bf))3An!|lGs7Re5U=K^gG*-)F1?|k^de85%I*X{ zbc*Abt@w}JKfl*{75Q)cGc3spbyE!GCz<);RvB$?#@J*sj=M7=4e5Mi@0*Qp%? zjixnkzMy1kXP;#qM4IztiDs(#3Ihb)LR80|O_#96S^oJR<2RJ#`lih1h`u)&xUSyD z{ePpY_FIDow2HLPs;N~ZcZV^m^A6)SHWEEk%=bePl7hb~W;u;XH9JN9l%oyiH_G5$ z!FS|aFh9bKs1ZgX*F7U;fB9=E8;%Rsb5H(?ncrt-3(@fQaNW6;-Gk8_k^NUx{pa0E zQK_o8`q104itp6c=x1TYH(AONxmEGOXu4bKWtUGVcL$qCc$35W60CG4M+Kwh_pe5_ z8Cf*1rw$!?O7|AYdfD8)<48xUVsRJ5RPt@1^7snkOz$K9P{=|eOq4LldNod zsmj+~Z})}XzAq*tP9WnB+L*K*9~0}_==w_5?IBsH8pJYzzfO?5_djA3*mxCozUL*4 zJZLXfY9}v;uUB4jt8}Y*xtj=H($8Nw$c6a3m4jIH~CX-CA%Hn-S_!TMv#t97wO7S z;2E%H73HMtH1~9DY|Y^g_vwjO4tF$NK%XwUZKBH;9j8_OPsJp~nP(s7;@@>^Se~iS z4IR~7mS0lGYHrFN8hCSC0%?Kmyt>cJ`Nl}o=i0YJ+#ZQL?RarhCGKh~F4hxwPFUQq z2yy%Wg1CD(TWN0*7xgF9eDQ>|X`yj*waJ$@QPSqzPTE|7HWgzpz&ge0 z^WYmcMT<#;rh7E^Cl(drdz%JB26ZZ)mSmzxZuUslh(!HE*H@)fHkP5xt_;s@_1GrXJku4$v0XM^vcTP5|Q9hHj45#8?058@_ViVp0tClwF+kd53E-eR(%X zUKdZ@F;aId>XwbSsi$?K2E$FI%IZjk|7=l>>2B8E%o}3k4kFfVqN)kJX`@yTNU1DI z{Wpz&S*jK>y*S?wQ>Zj8bA!*xEAmYedk__iX4Y(>SL&K75vZueje{#+M1KUzAoHzUBDU zjOo*JtK#zSp}`HA$o`S4qHCg_vM%?yS+~X9k4yVUE7<&D_||$_A3M(0+QK+pER@Bh z7Ryk~+q8Q%MFy6dM`$n4wXJ1AKH_c@t<$^s@flOH(>`Y_rY^|T{Bt1X&@nl^a)?-2@CpTTAQXM(8^wJ}Q z&2(85SK+08~)njO?idIMRWAQMSYnt{_JZt zdn>)}?0Be37KYPF%QNm$eAX0hYDyVT%oRVSq5M2t7RxpEN-6niO)7C57Z&0AwCo|L zOiN0!pSAHM6 z$q)GhA3J%Q$B>9gb$T#*t1L}jBhfL`W+n=?L!mYGoVa1}qHnN1f?@^~%|G=RwG7}g zMth87#JIv`JPF1y#g9eNwj*6ZCNl_jxPHKg|0qo)E1e~D}&zD6! z>*Kn|tiMfaANh86{+|dtx8tJRsvidrEIYVpXlk%gE6JKUN1I!e zq@^XBvhZhVKC;TUnJXVxJG$W!UwO2zcK3&w0A+98bxxX7Gi^VIsz8TMo@(5NZ=(h{EOqS}R;52{v0 z)AVq$`5fl2sS}nF0^>Pt#Aa_@$-%jrox-Zxm_06bABQ$-2K>hgecMHq7l0ZF%2o3v z4_gFwkg(eAGmpF2wd^a`EOpsexTrL?c59Z0*aI%M$0D$+gjK_8u6MEPSYxf(<+5Mp zqV@~5+eM9bQQMf1)-;M&or5`BSk{~7V~n$P*BW*4|=&(;wh?mloTrlB&KT2PdmT2N9NKrNEqo-+|{ za$dPmo#>JZi%au7oZ7zBc>(V`)Gi%UIY-}m&4E+0l%afP+FRfA*7Z`#!G8a*93=7A81tE6ClAfv3PD6hn>ZK&A0OERo=egm(2<4bMq zqi*f|j(W*LG$#PDx4KuuX=}3Z-ec71N$viy{7+voET8dkMD1=z6iY#F$xB8^ebb!} zQA@O*DKi5bH}x5=M)7$iCB=Lh-PYG7+jfw(Xr<2>%P3vzuva|h>!!C{)N?h}0!c!Q zd3#HE&e^mLxlL!SMyHGai=G&TxJ%h%?z2nT;zNGxy7X+rIl8| zxGTh21ZnpCMXgs`@Y~>&nCkH{W&klaK}BU|goqstDLY*ecI&?SLB)W!Xm`%LeD3ds**Zy;aUsmVWlXqYHf+-TkC9LUM9*OZ2hh z!Smq_wWZ!!fy0#?hgtb5J}fR(&uoiX5j`xbA4V|B zb^IQbpX2jkA&BoOTi2}(C+SFvfO(z5z|JTp<2@D}>6lX4+@q4A-Li=!id!JD4tLY& zLflT(WH<}s>6t0zd9%`UN;o;pSgcf^UUxtF6<9bwPwAqy=jD?+SSRPJTs>A~cLbAS zOxr~$H|rrzVss0h!kM0xWk+mqG8nRH89Ix@H=*pBnaXz56Om#E19j%Oc2a>vxzd`avmqn2Zkk~zTT`-6n+a*y{X4KO?D?>fp_s*?t|mW<`(<%&s% z+%?zIz06@a<1mI8`8VrjW~I{jB(dZaV{*whn-0Bl@737esoWMDtPhX5SW;2? z(;;9g*rG_h86@LVdze~Wto*tYWPLR#_bd@*KATf#qWuu+V2_TgW0|xLUe?j)!TMlP z%<{*zk8iC5KMuZSvfoD|gg(fsMe~mk700pOts~Zj>+0Rj)YX$oo$DwVZXcmN#Lo3` zVsTEc*K5qqVX~7eePs*zk>Y6hRvm_oeIBfHZ68DRtZEXg_x6aB#&)*Tcn#WMW97FU zeU?5(Fr@doK1q)0j}fnTqt}nuhwCEsf#vl{*4Xd>nzJdSLrPZC73U$TES9n4@YInV z!RuNXFIHUMwd^!X%K0B_hj3%bk&cS;7+sS_^S8Xq_{#bokt52Xge1B(_aC8zOr_so zWs>3X{7w1Ff^q8&CD&btZ&eq5IM~RC{y5R2WcV8&!3(xj9_NMmL2|k>iiHm^IQaSKQe){oa@F! zhljjse$cAlWOV{oZf>bq97~l$>3Y6(!D46V)2p$Lx3A*sO~b4W1A;j>r1vep z-ggy;^nU26aCU_C&O7Ys-A%f3?p~SW>;247t2c`+(wk1hjwd{=HzH5_BIj7G|3=B~ zr1c)HIHk0Ei5=^<+0xm&$$~xV;C6D@d`yvbi(kPoKiwDk`ZpAX^uPA$PWm%Fn$!=4 zpCM6g!uN6`u#pIbBJhu&*a+;CE(F#Z%!n~_2rrcMzd)!Was4VK{Xj1gw2W@jp9-TF zgE&9k!~0pjsVZyIi|xlGFMQTlaYafyy?LKN+0h++mVQC~Xu3`-Ztsyz!HU(q2eaeM zKgk?yh5B_|nx6*eHU8 zk_+H#`bNTG83@beDQ#tQ^peDj5+%<3;s?U~id5+wrg+>i-(40FW?bhmx5C%7L}50V zg{pYv3h&8x+`x17@+mKF;H~85_eD5xT;Sqy15b|({DIp$MOb4}x}yfuL7fTZ>7}Hb z_TIh#S>KdK>+9ccLVpqJ8;7H_#&v49^Nr>xOLB^IgLvaot-_$ITI@q zos~(6PC{~`({{o*=b7K6IqSd~V9O$CaL4o+=M0^l=#=*#=d2nq&dEA;oHLDZ%kvVQ z4QGvWV(v)ffZ{kO$~nnd2Y;_DYkZ(-&#LYbFZynDVN{Yc+UXf0AeZXg_MUzvZmu(x z8O#XtODt^}*qkvp%FNm-BLmFBX7Iqp2p@14$glYDsO-_{uPV3cVi%KdNE7p?&5$(a zxAL56KGjQ0e$21*@~-vaIITTAI=4%9$49}I?J%h9iNuxkY)SrKL zL~F=Dt6s)+5VTKQv6pnrlN7k>2Q8-FJj&PU)u-H!+L$@;txFKvqiw2ymU2FpVQaN3 z=VDLJ$F7`fBIRUQIX%p!zMLo!%|EYRCUwoKv5br!)T1lH6>v(VfRj7{-$+v_Qg@^+ zTpiMgq9?17x=`PA>2hksm*JIb?|ZAdSJ^!VPyTQIon~5g^0+sYL`c5!FrTR<(&=XT z7L7?;)8~%LZ-K(%_G5cRN3m75X^$K_obZ0z!syCfPE|Lqr*yeKuoSOVaa6+VM*i(F z6X@U?srT^RQqOI5Stm#wmz126IzDZ}l~+xiG;H7ux8gVdOS#|@D_QUW!7*G0R@kj3@LA4V5f$G!L!yOf` zpGrg8rL3pLWELFOusCu!t&y=EbLtF5@GDISYp+t=>&-Hj;V6)ll2a*o8j4}?QTV)~ zDf^#bQnGpBpe>u&i|r>X8BYErHTYLP;2iB;?ZVKEp1y4~3zBvHE>CH{JsN>Ylgsvm zB3_C-Wj&!h^0La}3CmO#-C>MYUT9M?r!vpbka_9bWk1RyW*2@$ux0{U(XNdQ?nc=W z=-fP%#|91Shw(YKzx0l55l?pd`&_KLm<%I_;x7I7)^@immwmh5Ac2jz|6K;3i5+ z^#krkYO=Xjqv=Y$Rkn32>sk4#yn6=6`X zZovvElAdAyEK@C{Raj{m<}JOej8u+|jh=v+!O6j1m-p6VS&!}GVqtRX&4%l_$sU^g zMmleEHtpflqNu;REU#oCn;*0C3KPo$#p#7PY(Vi_`$C%2V^f;*J6!#CyqM1x4vOMR|og zc#n2^%WE=AO%rq2-P>t#{e(--E4Ayl1;s_yYZqQI&MDUv+?rF8n>jD1uy9;KU|!Dr z3G*P{jb~S<+c@?M3op`5S<%i3nSq=@S*hjS1E!mELV8K@94+vT%PHAwX<{uyUalqD zXJvG?D8qAiC)Um0ab%%DX-?lP*Ur=zrh!}!XGcql6ZcJulmFE?XV;U- z&YGGOXVHJgIRo}5JA;bGF^=p0eT?xG5)EKSJ0~A6mG$EEjFE5Gh=|p{f1?wXl=-`%UbMw%>v`E~099dud(CbGJ*et#^MlG7aWp)wTw6f}Dqx;k-kz?ZN)?FvfkezUDJtZ0uA{%q6gM zSIAxVC2NgM8CZgMshF5k@!ft`E0468;Z8Z$3#A{uYJF45?dp_|?LHY>*u52aL-U+? zp4~M-KUcflhB9B-RkG?zn`g|zdn2~GQkkJ^Lpm5$1mDxfMQ}vN)Is0B?&YriWl}&s zG@svexMRsxgH-o*?$ws7U*;axHHeGn-b5km`6u;~|9IgLsC>huYwj$tU%w~pyI}o( z!R_@ge@XEV^krS3QkBh|cRBW|7RiE(i#i_^5w?9Y;f;%_G&cphrUg!DKC7X!4W_7T z>un(S*g%HT%r{gXcJZ{o{%^;YG^dSv=>MMKU77qpZChJj{-3q2n||lEtv@v1>*>^@ zncIT)99NvX&^9tPXiAGJy9M3MX>n>nqnubDmy%l$sB_6C7SGBF_zj@iPsn_n$W&)( zQm5yYx^0x|Vi)H`-m{7mX&`OGrHa~RN;c>hAOd(G3^EFMXWd4r_! z7VRDmd1Gls!8@g|w&NJpwgoGcUS|D+RCw!EdUDuHX=LugOC!hMl^_}eQGGx9T8=-X#udV+D!d}p(S8IrOODO%$nLyfL)delk@ zt?g4zJJ;RRTfFt{*9&PeR6$KpHf@Y6w8m9$mdJUif|&ENb2XYzT@HpvzCEjd`J{5K``EiG87>^Hf*eSaIF zwm|K}>x_EB?E~6W!J&@YO|ufPjSOg}#CH~Gs_QQ}(owS(D)Y@_d|NPz`y#=9b;qHO zt+Hzg_FvSF-y_d*FQ%W{E1?$aYWl?brUT{5ZNI%$Lwz!Q;VnS#x?FZ+%q%>)J4`e> zYb8@7>JsyaYq;l{;eOk?A&mceb^Qr{12J49Fr(s*K~CA#)z=K7GwsdA!n%`raMh?m z4a_1=U_w(Lj9HfT1?O`ZxPyxoZu}r2|7($PAp4yV-0fbfIgtc2N7uG@tQbGIa@znk znbKtlx@6?dD_)QnUuvsq{A}uJ{NU1`$7i$j5?y)mojdc8vG=9pkl04bjoH{ zjvZqke!M=N0E6iR*2nX1utn*3T0X8R`Ylx$rR%k#My)Yp;LAS`#Bd?=K#Ogtu-M>7 z=YJS{&tlAX%oSYTUj+|$xN|{whuz-Jr<|R#)z8@#-W*oFv<@{dzmfq2`7?}ql+MD- zAYA(WNpaK6`%h#48QxW!iVWrCAE|5gO+%?sOmFQMskEVF=bv_smkspxs_gw$*~Yad zY72#Jp2w0X*octyDz@^nHTBN5D;xW1AlL)vedRFiXc^icniZQ9n{G5OO+d-;*8lGJ z*|NC-1wy5)!|G<-t^WxqC`Es46}@8tiu#vjdwT%(?&Zk4p`Wky(u1?v&!LJ&ogW-Ql&cDE+`SAM~>##`JYkjL~ z#>ZM|O4*oh=7J7hw;`neW`dK-MGKX-J82ocw6!~xDt9UhX9Ies<#EoASNW>kwlCO9 zgLz8j?J*~p>8^$|r<%do<4!emFf`Wz7X6!Q-exlbJs7uEZW~Au(H>4FixXV-xU2Gu zlLDibd@+VWVxUWN99lmQ^~k!XCsItCPY-7I%U}sS!!CWSA5FDIq^Qh;)smJIu+2_5H+g zA%&xI>;N9wb6qdj478{b7L~!}9x3fAPV0q8H+?bnC-q7Ae8)M7mJ!nW$9X0U%8!dcNxysaI>e8XUz8xDED zU={JPpINJ4cG%ryclQs^gey6(FfSkz$xwS6pPLiNv8_cZi|93)x7Th$n0bUoas4iy zp4N=sy)RL@rqx#x^3&Ht3Hh0Mp9w^;i9gONxHN*I8PNu>%Js<{_YV2oq>~6j2i>WDe$+gZOQ0E}iahT8XnDfQFl~Q*{ ztz9gDJOT2i3BDwyQApBYPg0yDZ45~oBsKDtj;mvkB` zNjJHYhFUVKi|ucau*D@a6JKOSK&7B*lcXfTr2x)#8Dkr|s<()0dO)7(o@cDrfn`R*y-cS%o6%uMm|O8*N}C$Lg%(br5)9&72< z|6UkjpR8zH$c-D*BXCNF3nv$6~WKPEmnR>Qo4(ksuPua@1Uz_NNLk;8@0pg(wz08HC21V zbH3&gO%KsR+mY2tH4~vRsSohIj+5wUoBPx(72*;hMw4*nZvN1@`*uyTFvNs9RBJN> zdGnL@thIiZ=LksV28t=IECM24Bf2Y119*!gw_kkmO&opyqDHTxjn0C`l zsh~)i7l|0-+*9+_9L*&{c9$l~6w@oD1@>x7!o2ig#F%3a(rqlhp$DmNI+Y^V{NGTI zz8YTzxt8Lk+*xhicC!+^?EXKcd6r3SK9x6T zQj9*B?5u^GE3nheg;X=0CF(EkO@VqdN?|ViKwnAN>(4JXJ#T(3DI7<$GmRUI8EA;}V8V~$0~h;9LIS zZs0&pjFW0_ycLmZ+{oQI)jqoD_*A>AAe?F+z-?3Q@aoQ~wv~~kQf=PXq}oP`95o?* zZr82O2~k~V*T#G46#T7iAA8l5lh@{}bd?a5bSH44E>7;hUkR{)3azglO(xYU+u{Sg zYIcaa9_rczi1FL18fZSbk?BC!rTAuGXweggNZX%S}?oNVo^Si`4&HGW*e zgV|Ajlq;L}VQKl6WL*~kxA(TA9W_IBO4ANKZM~?`$-ZEJo9`L@%!AaDh;hPGI@4J* zLL}MyO}VPjDErc4Zr00a`_gKz*UK3D!adNuP^e_RZNB`NNvL{K+nsJth&Acs{pYxu z8KLKX`QhgQ0iJ`sTSzSKn0EW&>l*2Y$=>(>=x49qriR}9u6>Ts?`-#pY-7(Lrz&N4 zLrUWbe0ZXE%)5TyUj0c&N62`vNAqb-H5{L-nTEe9;uO321qH*@@rUBrr)IVAQ-xnr z&mdr|#(j>?O1rc0q4|RtxKiS~`L!h2Ta{ze+2$>72V|d&PZ*7d(;9K;oL=)eb1#Cv z%Q5u7H4j3c2K8xBTTfH`qAgc{8u*`8XVTfxj4IpA;hOf2Mc}4j^r>u{Cq`LO-Z$4a}@|~B4eU?^HVrut=(y4$v#P(uA#p3Ur zve{~<$Gois)*S_IZ`vt=!;HhoG#F28Nck?RCgwe~IE8x-LJij7rtx_sc$z%EiCPTdSkH8>$2s>@+aa(AqLkrAKz|@Q(D@+?B znaxpr0{Y*aW3{ol+|S3`{Cq6QPhc6=wp_MOqz|y^x}svH)>dqmn%4i2dlM?gY7Fm` zjqq8|$xn7!k1YZ(nm6IlR%wjBfUN;!S+5%BPw3y37@|_N$wH-2%Jgfx0Q*)`v!C?n z`vy;!&50NwG*asQ@}92jc*Rx&KRY^Q#s~s&YtSG591*~2O*?0i^yyOJ&gCTiBn7pb zV#)mdszApLw=_qULSa>T_LDRC3hU5i%^ZT3Ck=Lvfq9=$@Fr~IX-s8?c{z@63!L&mTcf9dW8cp{9CH<4o@J8e2 zp5$+6P|dS&Iy2&)9hg;;#|k^M<-+1Qc8csDA+U5qp>wZ_S%4ut3-Pjr4_zPQ;o>hD ze$nuYbj6J28Gt*bq<~Y3IfW5(aK1RH6CW;(<~t#s;yLn%m-G^Ea$X>3Rz9QovZ4a_ zU}QX>4hi#$Cd@mlc;396qTKkxf+F`C8!IOT8t+`*Y>wu{mj#lF=gnuiFjrUJa6oTX zaY=6cY|c&u^0}7y&!0kwZ_!7?LDB(Rn@5~Qgx45!&7H9%yWCb~e1-Isf zVr;|F=-_+&zHc7XX+ER4T<}A@d4aN$BGNrIr?52d^7x#aic3^7G!YV?^2}X-WujGB z_;Z$8ExsT4kam;v@^V8nQI~Ht{?`-~7Lw|Ah8llU-mDyq<-%nnf(ar|i>#8eywDu( z+#d+z`y%Y?n+*^9@$ovK+i5u{GB{tCoRD_;WLr)lwIX*Rn&uV7=jP?jBUOs>X6cJ^ zB@2D|XGlKLjc0w_kD8Z>p|tslA9tJKUi|%>&cSMelV1f=5UEPz{?I4q6?{*wyJ>me z5BdKK67*H1!s2K5g~)?zn%-k3SXa0z|o7ku-g z-8?gd;d^%L)*hsX-V1qOvbc2uODBN~xe1{*O}g6JV`wci6#L9%DgP(yvw4K&m(>vwBre;&O`a2HYg8{O~vmTy6wYEg`3 z-V@4h?!>sLF6Pw`>ML4%J|G=!Hh^L}!g$b4;1Rz#OuyKST@t!a3+evN0atfBP1|`B zgD3m+#1RbJ>dMZX8>e19*jsYE+0bTlE*I09Oo=^`IU(`{90i@`(@q5>>sd29NaMht@e))%6}c5s`bfJtqO~=EY;h3);WCr zWy*R1s$p@tteol{O4-HeL-|TK9ZQw8QP+{Q;Z>1mt+qDim5fLT-`s{<-}DLD*8I%X1BTc`w75+ZA7uI9g|YSlM=OJft#-0s2I!YW1iL^hhfs`-FQcK=Vp z>h85x8s3@9q=mspxU%c4m;t!~v$1k1tL z^@VEhxtuN`KHcmM(mMQU`O%L2EPSPj>3^qPpkyt=CHXxhHVw{%d1BGwj)d+{mqefHNbmCvX6$b|U*Z`2m{ zSt=tQ8CI!8T|AtnjsCB(yn;G^zL~O2Q1^y{GPma+_4}Vm`{{ftwER>Zug=F_tyLBx zZMp)nwg+l8ap!2k#F%_Cs2I7zI2#g+fR-ha1kmk`$ zi@9olpPhJL$C6|75D&ANl>u{=F#Upj^!4$1JaKGkAJ}j14wt;%T49^S|wv$crFxLK01>Mm%d(UZTj-a zIaG~xrQ4pmxu5)=M@~q z$6SNY*UIZFS@=`_j>A=!)`#-RT!?+3&&)n)T{dO*V?_G6{3FoXB6>0nOS*Y}iA3?x z>kfs!RAEreywC@d21MQcIQbwN6Z(Hq_)UuK_w3#g7w{5Y`>uSxkavw^HICD}or~dW z5_W-oxgaBNPUeD=3npQrS{{;fTwhseuPX@od&k7po`-fj`+w>e6MN^WYlCv=YHO_@ zTQdw_vv48#Z|zY=o`5~dMB(zl*^3vHJMPuLb zj73utHSy@Yk)!zkki80Q-}_rlcuLb_??%WyKfyU6E4ggmyoE`HIi;nQmz|`$3#-P( zZi=cOSy!LG6UO}gireG2t800YzgWt5>DX1D>|XMM>8mCK-cWixh9{aR5mw|GAlp~k zGvEGLxL}W;!fG7N9fxRg_}u&LSK05XxyD={3CSnlDxfw0yeFc~9qbak>=CRM!L~3# zm*yCb2Gpt{=(B7Yy0{}^n5e83Vw%+A4~)M$Lv0g%OLqQepZPk~s-mgmei&a3hLw1F zzk&BqF8&>QAs?EeQoJ@xxk#+>_21*m7X6E$f2@PF! zXoS>E9XxMW(sCf-|wKS=FcCv zYQ_9+mm-&)pZ*s=-RaJ%7ZcJ_qFAFso1VXpzwSW(mN^8q86Q8&&F40aq)tZ8p6+Fg zWbK;WG;L@1#GFr3)NcFS7ZcB^*+`a|u-E`hBFIoceVWb@KS$#`%q1SfLm`IBu>tjnoWnMY zI*0lt1=zG>6mB{wVCzL@-eALl;$vRM4cY%hw!5hI|Ns7Pra%{L|8?iW^7sTN?(76- z>EHzC;R zISI}qxI1vy;!b2A;4$1DxR2tl#C^(hpZ45mJone0`<&-KkGl){jkwCMtn^g%K0o~H znHchWhUdFmmbX;3tY`_gtZb=nxu@mcmQ^kHwcOwGK+Ecu2U{L$dAMawix{+?qxABB z2|UF6FY@G<0K^0Oc_>HUri$dV85ttzLE4A&e)LZhoukBKBJOv%GjZE-3vrL&F2X&G zy9&1r_Zi$nxHY&3ad+Z=gS!{E6}J`lYuuR8iOvDs0k~h`4#RE1O~CyxZWiu;aPx7$ z#4X3&kGm50Tims{`aSGi!={V-^WFVx6P*fB?YMe~dz^RNcw8Yy=$(HFddDNn`d2u) zxOH`PP5_r6oaOT8VU6B#H|QP2Yu3NR*=hYdoW0h+!)dYp2!0|_I#u+;rCe7G!zH~d zl5t~jZ^WfsSIo!lhPxEEJMLOs@~C1HF6%@UJ8*m9?!~3AuV}+%{i34ZlZj4m++nyU z;wIp-eqAvQm#nQQ#KlIcq5_w3WyNY-)=4Wi;If`wu>+U!XvJP!?#HZX!^J+SB6eM( z!~R1>JT7C2vqs^Df4wJV#%Jafm2$g&Nx|$e{`e>2?){>Of3y>$!&_dNLay&=UC~CN z^$Ae)hVn#cW8vuoXHQb2yHeno-;I}$zO=bN^qbz~mfvC5|1gbsvs!IFDGzLYAa9fp z_E~!Q&%rxrlYr&G5#U>(9rzCD0FDA(fEZvYa3`<~s017!3W)Ze!8rdry>7g8oXGf9 z09{BQ#fO}=Ksn~g{=5n;N4_d_p&yZ{S>wu~3`Tf~G9DNK_#wFdY7?}cevUl!^W@2i z*E_#>``7*BOVXRd&@a@+=)vQ+9v(r3ed+v1-_6#q&i-{$ofwzce~;?d`Tak~yt{1t z?Ha60z=;PGJLz|8%WW+S`NyNPvw57H<9^D2{aPdZpZU_Kt-#06gK)c8&ixZ3F1mQ+ zs7o&W>FA%iXWt_>58Z9WWLf48wHt^d&Q%Ei>t6(aXv--cd&~HtH~k-QyYpu6+ZV_2 zdmC~8O9djr_wMm4^|Zg}|0w()mlYQOm|@7Rg*TmEkXw3l&d7^T-`zXO*$1=$?ZB1N zfJQ6|hz2xvVgk_ND^}+|99IVRUV3-V*fD=PX-TZ}oHP2dU-=U{qn_MHC=O^!qTrTjgzKVr#J%v|FnB}Br+4LrKsbTstyWKTEkAuc7^h-6 zE^(|_gDYJ(;F9hYTX3cGnxBk!HUis#JwOZK3?1*p0fT_iKst~QQ~+y$O~4Mor`^kQ z8xVUgJb-A&;HCl7fcd~uU@fo_7;xEmCmB$?qVl6SD;|oI_K9`RhSEiAJ!(^Ahj1F8 zJE-Yj)whOd&*52{iWdN90iyMPH~x}v3}FMUKt?dKkNV8EB? z3zP#bz|#MWclHBA{|hbf4A2ggw}1!6d^O%#3G4&14v>C8?AJU4D}gP*9w4q2xxi9j zClK=uyuc!09k2sv1qL1*?*sq?#2q3WU<)v?4LV@x;qlIDpbf}6GTwO&82v3Yz?k;& zP8~4nJJJ^zbacG40T|dp*g!c@1MC9^I^3TFYy=FD7R6b6Aht`Ib0e?{*agH!^Brbj z3otAu&8Y)!>;VQ1ga@bt4AAdKqz_OCYy|cLJbdH;-u++QD}?((xWD!B|6g{;4Cv|PpX9fA zuBK<7-qYE03~mg#eaGP50~d30XWlah_H@#Z!EHLHr_Tkkv*Lq$KXB(XO6)QAB8T*;BE&OM><6Qc7q#q4DKMfVaMQ3 zxumBv>KL3a=SuK50k;D811|ut0Xu<4;9o#H(Cf6G&H!LIFb>E7a)J54oxuIT6Tox8 zYrsz6Q{W4r4d_Nb^aJ!8?zvau-UyTc%YjFM=YU#3zdgAB0lJ*g(>Vng0$d8D0@Hwe z;8tKc@F?&C&;Wb{><114UC3+whT)C|CIf{)IdBiK7T5^94txOY1KI%RM?IaBfnmTH z;7VX7Py*Zu+z&hlybinvdB6lei@#P@Ut0waKN!1X`?SPnb^YzDRgyMcW` z8_?~?@BkMB6M>n)eBdtNQD76W4cG&;0A0@R>BIs9fs26zAOn~UECB8T)&S1{uK^zc z`+!!U8};jS;5;A!m<(JGlmNE_tAM8f{c3P`0DFOhKriZ?enW6a0~y|X3GPy06|fF? z0jL9Z1N(qBpv&N%&WXV3z))Z`kOpJ`*8_8b3ScGhD6kQz0bU1o0K0+D0RyxHCl2Z9 z!~>TClY#4ja$p7U5bzvO1MC2H1N(s^K(C*m127D@3`hpDfE$4TuoPGWYye&db^-qa z9NLysfFZzeU^H+Apx^bl^MOUc3g8Lg1>jAf5!esJoC`lN92f&k24(_;nz}&Mw2fTKX{2=oAk0G9z* z0@njYz#?D;@F=hWs0H2wJ_lNWE*GH#a3(MUNB}Z`TwnpP0$2n564(s94(tLx2U>tG z^ke!B!A$^W0*iqAfepaxzz2W<9Qv{Wz%U>I(CvckMH?3xR? zMAOAh%qb06lWp%EgJu~%PsHw7B-fB8_FJAj6QHgzNiQx?^hFOQr6_mGY@zj@5h%w4EN-KB-{qU7d(w5gL_xsY zD(5W;n_5>z>1)4?;E9dgHRtY3nc2?C}5Y`O>%+#Ecf}Em&dwf*d*l#HK*y8yMC)lWm=m^G5r-h}NffDxeC+4YGIhhMf zZT^OlIk^jR<`;xDlKF*~qbVrN4~)GU&F1nkINknvRo+6MZp!?;B3@l0_)?0>=24>gga z^%Lxpu4;0@teb7-d2}>5)^*3JW8nCK`nl?kn|nOihJG-K35sMYJ5k7A+_! zDK1hMXZtO_E#~E@Ra2ds|6Wjfvu$?g=gjhPUhQ_9rwM9~rA;SnXPg(fB@I)CRSM%e zWwn*c(JFgEW<<|$%;*H}#H4hEC`BXd-UPK5sz!Oaj63pm-GfKv)kwYB{>2*?*z%uR zSXP>^)Erkfdp0N2tYn5WzGM;k-(<3h?!DXZHu(rk;eVk?Nabx-ak%KaQhmJ5exD34 zx5oOy+>STY9eAT1Fa4~}E=8!>kHCdnMwdo1Y3cqi_TC3D%Hqr)pWST8CIqqpqCrs> z2p0cgaHEF5ZvN3kgRBG+tcVHuLjp^(W_L+Yk)?qex~6h>ZO`1`#VXn?^bRivH(uPl>N{d|5MJRJx+k`M#79)iI+MQk+6qji?Nen29 zG$Mkp9+j+33eD?~B)) zDT<+Y<2d}_pATv$q}u`v$EyH47h`h?aV*0)3t^Y`4ET%jTSch%^A@+YhOAs?LUb%? z`t!cJCD;OWLOhB~W|6|z=HJA3DOrlIg&tIz&KZux%i9!BIPX}_Awcl16z2o*=_>ki z5CxR@TLL|>;6Me4E^kHcoN~hqND}D8`Jxgp9MWl=pok4>zA*RS`r1;T+Pjjdrq452lS88b``m`EKaH4H87z-zfO zuhdq6K=gufy`vJVW;V5#PA18R#!+e5pJaXF5D2fN#Ylm#c-I@#YBOIY4xOz@NJof) ziDO7y2iCW@!3v6F#nDX&>((Ml)wKfdFf^(b!oAKC++nD1T-#3V7H5Hk)`tx`<5dS7 z{St2r%T`3F2xHGivmvV*aVBG1sHJI>)p8(I50h>j%BwgOhwAl=hgB_QH55tum|%fO z&eX%OXU0u-7+49~}7tG_O{HgM+)EhCTWctuob*4gh z2Sc}qt@2KYHNUU1alJLXw5cf=Zxpc<>o{#(!lG3r>m7&45Z;E>JCK~g1&m2Gn?}bf zS8dFYn*YLajRXAGx}~kwcg{+Fsgu( z;^Bn89EZkxE+9$;=_4`uV1Y>`rNYKg%TRcYA;Sz=dpp90uoDl?PgETN_o@a8zs^Xd zA`oX`tPHh=O)(%I7H2Gu7-2HiI$PCALTav^C_NzcrCuipnSlan5TfO3C__Nl+`5iJ zXapT3p}G#jJwDC9KGdcQwO&SPiBt@XrHKY#39YUR<6%8cstL3GWrrpSR6k71H247k%)^36z9~+Q9@b?-59x*Iq4*f0tSCJxFf}PG?15w-AxlatN}5~z4OW;W(*P*@ zNM%$jRtjPr>=nc)M}>@fs}Te9&U%g@EVYEk!!xnY&XPL6-z1C@k_aKGgzyC7xN#zi zxsI)}EyuUcrR7$Pkp+iO=nAt#t=-4 z=r&B5)LNPu2Md7Fs%=Nf%NfjYj9BTDU=tS+VOAi`8WV~~D2zy;NOE)-6tr08btZ;o zjR6{1defV5T`m(aD=CrG;(H*lt2eZ@>RkgvD4vYOA3~J0Ew2kgU^eJWiY1j*6{XT3 z#(5ud>8+$qmpOh=2kW%NTGGbkD_UVq>#Lt?)>P8Qt+B>;XH-ga(O%LMl)B^ND}X!s z2~Au(#iuHU&B7Hctmyy&M|3lUK}fD%$pwB9Y;N?MLQ%yKPvgbw!-`VMq*2lm zbTd2%gzPr>*Tx%w8k-9xq(fg6No*hJEoeEeju>o7evYJih>@HAo)^9g{z~|{@B{GS2@~%aiMJbY?m6BCU*d)DK=>&9RQNIY@?D0M#Qe;&I|H}@ zKL9^JDV{s!ZAeoNIMdd`C;m?O#J_V``bolu&Evb79)2Iw!#~FK@CV_i!go4A4}3TL zH28(^o$!6|)8RM6&w!6YB4gn{0zVV}UijnSAAvs&{s8<_@Q2{P2j7({BJabW1^*B5 zz3|V#UkRTd@(REQ*>V1Hul7;YyBqMg;O~MzVJr?pfIkcVQTSf?G5E{jWAk>T6@D)K zzlNU={~7q@@P7@z7XJ855$S|)Er+|l`F_w&!1<2QZuopps1H8h6*>l=?+OjV=X*oW zw8Z>ugDZg7odo9&S;iHP0{4voCtc0loQ}(sBVs|jjsou<1^&n=@ZF=p_l*KSG79|I z2=H_V@DDX!{f$ts# zzHb!xkx}5sMuEphfe(!WcdG483H&FYu`O3#)^;HP+x|v`7mfli9|gX01UTEhc@%i( zDDdu4;E#*|C*iwCf$tjyeqTXcp3Q@YJt;6EcL+KMAV66k!gk`sJLO!SObJ`KD)x zr!3*qGc&}mE#ZMHL9Ye>q-!$7&n@A>*%{(JOZdc`3}Lr~2R#|$NW3)IBn27rL`Vbl zo(A{La((o-3r98Wb(m>5|$zzsjtGHkuC>u)^w~#kxW&JG!>E-BQ4qhR9A>k z$P|oMbUWj9tN`6hQ6jHdaBes+oU-s>3*+9nEaJy^Bn`0grw+o;$IFv@k$JC3`@;xs z;a)N3Wx9w+{SMp#ysvpb)<%%C369&**r&Jj!A0b&>N1QZq7yCvR}1HbezRa)a>C?QYfr;$|)1rfDuXSs@@3S#VR~Zid?e2N>qzjo{b_JaWKUvvk-HOOxT84^tcB7ZZXEY5{&UhTZQmG3s(pIg)g_e@nUv9Yy+kp zj|CP(^paS0-a(4aAe7Spl+>YT@j+93DtIgUo@;1}mV5seZOVcz+T~NWXj3z{;N!Ym zw1@jN?ZE*}d-fHThk1#El{pvBtm*^=#_NAxHyOKCvT-X>@qG|NX!Mj?j2C@ET@l@f z$G(~B!+XlelQpE^Mt(CDMFZEHn)bU~P5b%ZYudXnY1$ibKZpC>d=<^#J_r&WnPfOt zd0=objC$~1)tREJlxsI4EvD0TNYrzAAArQIy#V? zh)}Sq7t(ibc@TCB;iR-f@!>GiKNx^5L3o@6{rybe8GzYhxfspbb_X;fh+kwW;hza; zveHb#izE>q1JB?+Ouk7tG64RW?mZn_0Av{uZnP2+b$%xH>96kJ@?b|tKsHZDr-DE5 zM)#gK_7e}H0K_HJAC7%mhZEG@z2gxb-o59mDt#in|6VIRqN)c%`w#DV zJxvzS-|@il{SPW6-CJ0?b4UqM$9?;|B_Z8}JLB;F!*SLm!cmHTp&m%nt?(E?_&Wba zfRm~b(vzv0PLCDOe+ztYIGv-Et8?Uj3yB}@mU_;mySScHjXA<^gvyPIO?mjm?Rn`r zw7V{C_he^N?6yws?ahWNfY;l5apzWgy?+J&G5q~i$K+n^ly<83;>o>_X&Mqt?gc>l zMp(w@>gl`n{5rl|9Y3XQYj!q%je5F4zERIU+>dxgP$xvNZt@N{@(;e$=cYPGyj0}6 zPN#O4qn}8N2(4!)0+Eh~cXZS5>`vb={itAg@V@A;r2pXlUk!Cf(gwRXA4}_qqy;F@ z9g!_3WtRw~b#%5*pMG5cQy=Av4&4{+UnE?J_C0(4iT)NyaNwb-pcv04B54)}TP1=7 zhQqDAAAmmyciQ3-`Q$_l>>K1C>534DpNM`F(F5dB-!J;a|M!DIfp1I-r_(7iGc!eY zcDA_aqKm|oDO1Gs>C?rPS6(SrtXLtIELkFoi;KnFxpRefKN#opi5JD+h<<#C@68vV z7r*=6i{dL^-YGmNj`PW0xPCYSJaA2Ly>R_-8XOaO;F{oi;rih;IA-*~HNo}5^}}g! zMCO5Og6oCrhtn8FbMjk_{jym-D9!`a9-#3ciwA9v!a#rrt_iLet{+Z=BT*i>Cb(X> zemD(|gnHnb;CkWu;WRiB?}2NA>xJuw)8O#If6xIKTt6H>1S=~DsQl~2Z$F#{$4YzP zn&5ij`r$MX{{BZqn=;J6GaJVK}KH#|5^hWZa zp_*{t3%?%@NR_-IJp5dKw{vU zPS|IcNYJt{1K!PJ{EnZfruCy|f?UG`20<1+GcrWV|N6 zB&LbG@4j0=pNLO=>QmzLpZ~o0;SYZ(zW(*Ei=Y1Vr{d+8Ul#xV@Bc1dfBkjw```aw z3=Itl?fpTqYuA(L(-GDLZI6Hb1|`V=^bBJXuMCt&}ac~8L+K9QEDrM;Ji2wWK%4JjnI&@YswX($f=@;ZU?aHXAS zyLZ`~C6yY&lDZRZzac<{nWXJE1n6NTX}gyIOSqDk86H&E3Gv6!vu+UOg)_#Zh;IbeeQoGjG!8T^{@|a-ctkX59dTqb*xBJ0>9j=09zi81kxTH`oqt9 zF*>RE2h%#YbpPxT6-In#2W;b?bw~Fa@icMMqx)r8j~8P9zDPX28zUdmFwFSQ{X6!i zJ@}xE-=YmZc;CLi|BhzFYlEE~JNAEP=;VV;j!|v!!3Y0-|H}_Q-0AEF2?%$0-}jxD zyGeI(o$Tn~aEPTqSfIM0j&1-FWLRS6PXsf?lg{om8Va}`WM4rB zK;=aefYzDz7RDwhwDo%GJWBGr}ST z_cl0@>>?CXILz2>uorAt_p(6?*tDUuxYHtK7Bacvyl^)86)rH{fxrk?gfRR-tmREa z4_vS(F4z+n>wI9Op=n45~_ibuGe4RzyFnkE9WGnIB`HbpzM;@)6!IY{$myt zClGx=z!G@%p@=v~g-~dvvTChK?@sj?NCtm++UW^|cM2g}0-+Jq@$5yTs;?0xV zpfx|o0D=5(A$D0X_{^Ip@wjZzlArM>kbu#huRQZ66U3uwLCO3lUthUwS@4xto&kcB zX(iI0lGLjBlP6EUF0&*4&66^F+MBem^!$hy$BzR&;!8?U0hnQFN%5NYAGnU=WIg?o z@k}a^{iL+r7&0!2A0h!eRmPK?gzL?*s(4K%py8Qt0lkh&V$jnXg=>;L;ya;=K)ilx zg7nOIJptq2zxUobxG;6KS>hFD#vfX3BuI!?bO_D1I-VdgURF!yHxi5-kNkRqk>l@; zCm1C@o?x_inE=%sIo`q`YyDNLNKuHhcX&JmB=N$u;(ypqxdczE>qIO5+C&HzOPvVf zuSKi{gdw+>iLe`SZI*COQm%T@j*}zmkg5@>nvmZw@0fRDQrb4Gj5kW`iRrSjCm^Kb z*#ImGV*~CQao>*e+wryi#55g%wdkdqsjkKjfH0tLZ zJ|OGg09Y$(ot!#oq3J5UCLfcyt!10sF{r*4<+XwfERnDv!eQLiv9pycY~lO>Mzm zcQN)eC1V;c1t#ZnMo6!CZ?u%DF)qdqDMRC#deD$Mw%u&mg7ZKyEdzDVb)kpDc>e{vp|~1IW`N@5td~xiC3+F*r)8V2?VV^f}m>)rd0cETclA%$c~e zhS5XWr0xy?!zQfiC5~0~Xb0*!MX{+1Tg1Jx4obT)1!+}O=V7l|t5^?54ZxUyj0;Ka zoH%;1^(b?#;IW}aX6d}YQcRJUg0gS3N1EEBUiS3>dUqS>YnMIKszEPK8lQrw8(WSw z9X?tF#btWE$tiMVxSW|fjj_~w94p9~3B!7TwbfWJ@+u43s11J{{m3u&3o~61tGpE! z+2B}7jbrk~pvsgoHCC{NteDs{l_nyc!?9!!qt-0f7zHkte5dYIHijB|IVMrZ)}fu* zie^4aY@!Y@;|!ckZ;UK?3BAv>Y>fV=ILkKZKsg+ZHlik~R3&3Vb1nLa9^Ze9i~RcXd*qqMX)4rrDyj{@6-E z+$nBzj8Xc96tmuxAfqL$oMB(3mY|)}2Fk3Oh`pBhS$pK04-Hi#>e>XoP~s*@;ZZQSUUtr+2(fq^Zn>Pc9+UhecHoRsnP zIz1dmM&}0mRU7DI>rO=(Y)f**58ko%vz8eFSu1BKscS;Jma7Bx%16#H`3EQ77h`mL4vfpSlM z(ymJ#^&H#Nkh*Dd>?GyvS>zTuZT23@E5}PEL(1kRcT^7kuEkz)j@MR*;)TKawK6}g zNqg+uUpiVpTH6GL%MDFmm10sdnhKTg4cidX7_m;Sg7dJ8%~iDYzqNQ{k7( zxB${#fz-62i9ZdY3e<-^mb_u?GWg`qCgdxE22j=yu@)hpU(PzMlB#SHj(C(zqg5|O zpWz%Xan`HGb2Tq*L|Sso=s!wob3q+tT4{XJMgEfBIynZEfQn@p8>(Qdskb05f}cDG z5VlYGucmTrBv@lctLCJ42Vn;Vs88ks~}gZt%yj zybbG#BQ$$UBi^rBf?w<0A_&PVL!Ff#q^y$@!&9ZA%@w^t$hUPC6og$*eW+GJD2r-7 zNl8(CT1hXtIDCy^xE0NI??4MOJ!{2M{gAT_ppsD5mKt1*5j@ArES-|i_~EM^=2$%k zd~HDrRZ}Z=RTd?hy<-E)q)fRXQ`Af&jT)onzB-`{Rih7%eR#fc3F96mU5z3$QR|7a zSE>=6T9j5a`A2S$@5ZQ_giusX_-Vq`vEB57lbDvMOrrXIEZGZ*$vW0i-qhG~wso+}p#$sCb7-4TN{unVlmxaQS6Mh; zXS-5&vQ6pIutH5a;2f2`EY&jdjFt5@Ms#y5OOs=CtL(X4IUa6tjAWPa6))2c$<}Q? zj$?jMN8TmR4IBwpi)o7_S}DmkjA^Mjp#9fFhXh~=EeHNJ@XMs6u$F8aayV6{P-_bg z^oq5RssQT5yHccL9`*uKLyNKzca`{ULVmkUn+l7BZQcxs19{ZyQ;Osst*}yA$1x~} zb6MuQ8l{%NZ%5s)Mjl#LgyI|;IWC)PSXaU(nmR^zVHtZF1vJ(hE6whg6KJw2eTo_~I0&Y771k`J^dZP4(+av3Fmu=Q`FEVHEy zJi|u|^SPSAZ8zrVYOQ#pZlO~jtEXVJLS|v^F&pkmald|-qNkfIxXOGd95HZ=pe8nK z7^REYYm{zdn!7OGt&r_(tP80Yqwb(q<4OW+K`lmDqqrVDkA0j^oz&QFjQEr$u0YZH zrY5CUrPdz40!p1lOF4vk(6VO^Lqa$!x*5Cus{o_^R64nI7+x28;qbCJKT?j!+!Ws9~(5rh=R6K$N`M zx};G$XnBxACDYU%R*jaJFWG8QYfQ}jO+(h<|M z_H1#pL_^yf<&2zh3H72CM%#vVhkBwz88V-Un=@RlpOA}gjC>{NA8Kt% z=>STHiX&HO$&iDKfmhAP6vq6dG1V={Yf?~#8Zw8P@sQh;B=d=op+}YMb4)Uyi?GM5 zXLVPiuU;o-qG}!1;E^GPq{5(=e5Xbw)tu9?m#CInBin?dDc3xxGg$}2`cj)vM*q## zEgYjJv@O`@sExULKrKaiBvxfpUN%g=$O-kFiZXaMn|9m?c?~(w9kHjdzO1P+La;rJ z@`htm78FxoIwH12dFD97RekC(WBxt)1LQO4xNHQuFvc+@XGRT-bqkZ5IV1L?N>HTM zt<+4G+MhF}%kiX7%liu!^hF#QSA8n&iU8kZPMoizh}k`UvG+DK`P z)f4t$_DSPukM(KM%u!0S(r(pv$-T&mOVK}C-&7d6;>PE7><`p2%&+E8tot;}lXr8R zp%!5s%-SoNAr9(AwwsEh?LOIl|^Uq<}qvv09 zqYUyy%{~kqAJ&dP|NJHm)_KG@SXb8FMTQka>oXI2?K;F;^(5t`0bc?!tUYrjm%3T4 zD!Yd1Lu2GHtaN@^C;2J-@ZECkS7tehnwwSxM@vfN#n4pL50p)gCYyj;ahYk9&BP}M z1{M5*5hZoKgmGr)A7SMqd6kPYrdDY9J}ogA&q0+%rbaA|-W*Y~K@;0rt)#Li(;8=q zrj}HEvi68J;AFg#a%%Ak;IQ_gv&;YRmD;J`;MsZ%NBpzZgBH};@+VWAdye!^Rcijy}a%oEl@Z z(HoO_L8^`CQp`IO67`x(pcUmXz6PBR=y-#3#8RdKW$igGfqkJ$TLan{#fo0QajtY zrpuX!n!9iYkk~sq7bK-{n&^{Nk64;aqzvnBL{M~bB4Chb# z-kFPK`1@z<@E5N7@|jDezfboMNPk&NeKYfnMxU=th=xz4iXS*1RxFq%#6!IC*+n54 z?zPKrD-raeF1PxA#b`KYhj91?BHv<#ND%98R1UYi+^F5`cAQ;SC&c}X13;$3XFjc$ z7gWzy$?y#@@FU+EYu+PW-)x?R27EFJ>MF=aD?<=OI`8cEpgfyR@&vq*v`s*y6J1i=ybyDx!mx(bwPJvoT{IPmy`;4jT^h@o42erFnre&kN-{O7jXCXs+CGe_lR= zv&wot?kI}BSP}gZVQwvF2R_kKH2-kc_9@6*H2+sc(KoX`wFB5nqfh1?m4zS3+lFv? z*YnQO=xvVD=$KDepCQ`L@}Apt+@$u8;QD7?FvDQ(#V@odFl=2-P&nxdboR0!0%|G5Atwe(6%AU%++VY;y=0%9% zhg!~S_`DtHjt+$jh@lqswbrsIv6kOJ>hdU1M2EDTizGF_+UPFtc{*=5@Rdi$SIqyH z&=@Tz$aG!LqwM3haEv(uTF!3)j2^D+c{GoWQ4zf}zaqN6up%1tRz&~3=b;CtkR zmh%{LZ|{p93%757SJE1uSmx;~kN#UvrycD?B90xuwLEHL*5>a~eQCZznd1hgZ|>=I zM2jYsMk`#US>GzUBvodOn9xKv(D4jfwW^2n_yTF$o_nt!Mq z4Lbqtfl$`B`m&yhxn6q+D7x;?YfcGeV0^TT*X{$LJX-G5az2Y>T|><>B1OEmMn)`k zRZ>V<(EW&?e<;j+4)I!vjJ`jw^EJNhN#W@l%FO!Y5`d%QdM~$$uD*BXAIaLjfPmBp z06Q*gy&S@NnV-L@tMMC6^-DPKul{~005`j9$R6IX^_0UcM7S|Jt_le%dr}LLqP!=k z0-@L-zE!#-bvhu&OShhS2pTrLpfoz}TEwwmcU%`uor(MCxQkWZDYI?Nn}ZNrGWL`A zng6$7?2c=Hf#2v2zr-*5MgYm4$9>oHXv=@0%(+XW&ucla<0y#vheGvpLwSL4wcd+z zp1KSL?#o1@7>Uu2GG*5G6Zp`Hmh&D$T|*l}Sy~QWX+;|x+xkO}!$_~?d;yT?A;?JK z-K+1q^AJ9%;S|Sz1Nk>oritS}0ep-&{v-B*t`oCj`%!te@WV*e55`}(;vD$N40U@& zp7IUD?3X(HUEMb_WUHHq5zf`)^K?H$_ltG^6S{w|?*Fy!@7Dc&x_@T6!uW>n=j(8z zoX6EoM)!^QN}YZq{GyKMdEGbQwyER9)P`eX>hhn8sRb{JskWmcckrTtNk=F2 zxdQk;#{{RCfP+aU;G69emW}Vr42-R{rKgJYHK_qdZHmthgU05-*J_G!M#?k;E57lL za`N3m?6Q>iYuq0L%xQr=k9v6lJ7USZh_nN?(~@otU`GH8SYWMy?FMY5>o2VxOO`Gv zSzc+Jn{|;5M?EfY!{M1X7L;|?h)d$(8l1~jSySYzkY|GjZ8%?xCp(t4xAWB7m3DO& zJB}~I?B9BJ`Pb|?(VC|#Hwt{4zoxw{$0h~wsH3oxK&EZf(TL%uzGtTH0VgloF#vBi~jGwuVvHLlepw82@ zfTu9Eq*@*LeL$YVsG}FRmMy!jEY6Kz3waD$OM~!`HhEBd6;3`wB{r$U&8{XK$I|h5 z>x$N*dOym&Oce1%G8`sa)Y@Pk(^dsE5P8rv0-mDMYOvO51?=-O8MC~tsD155;H@ez zt29VkT3J@KV!4riBssnS`)}p|=43yEQXg~+@eBBW2g|?(-Si~!&BiwBqpG zh0~W9w9QsWrUqwIE4H;>YaF?mlq=4g8)xV9FDV+UX&gb?+Hr<`Ge)6$o>RVX`c=uv z!fX63^*E4N9{jj)`i(ctyg${4G&Ch8_v7r!aNXJ@MAsSYxz6C2l|KvO zP|3#yp>~|a%JJkpTgWrrKp)fxBP-L}8}A9D?QlGOd&@=)yK5VRmS{45K|F~%#}fio z*|@RM@AmU|;q*ETWgFYpH?~iAhg*v3$+d;ko9g_*#_2}IB%15uc!m|V;5rLw3$BaT z5R@#q&JYU(hRgX!74ql2{wwTh;@cyw|6W!f}4_1LM4KSZ_)=R7ruo#=5Sgy%s?53R@2oE-x_54ypxZH)A4jOg9D2a(QJs zwN5-p_%1l6!zzXK@(QdcTi2cYtg+_3OlMtB9sn}d$8DzJomc)R!v0c2&b`~OkEHgA z>zfu2jB)+|>_1~0n-@vJyAZp^i04E~uE@RIHQ04M_L7OrJz}y`Jg_SV+_KBo@;be% zY$9*a(Sw~E-A>Uv`G~DpOxu+b5eL(1Q$(?I5NCV3gai2_X_(@s$80bvacZe3ul+c} z&LQ`L+(`q6<^ccpda*6N&^B32^BwdcJw$LDKAXKD*HsIRTRt$DF489Nd=~M8UnD)9 zI9e3(0WnQD+*9rm&fFV*JTX!?Sv;Q7Y!i=C_;RG%4dPknJ#*r12)jR>xsQ$);cwyfbrS8Qk%sz_ZLw< zo&$pZnC}z$llp8==DXdZ&$cbQ)9#8C4m{Z-UQ5fjgZ{`pO^@V=lq2q|#m{l%ZH6ee zd#?~F&mm0V&WQX~?amzG`Hmi*90{*NnC+A1)wElj$80|GKQ&V6PRj+oM_J##F7Vr1 zV0TB-hgjd*_o5FhcBg{>8H3Xv$erX8r}Nzd17pE&phAnuerfXCYj=|$-UYv&JjC`q ziuxT%+a=iEwq+>qIS0#gvOJqtOxrsH^_T5Gc8KyYP;`I(EFg7=Y^PX+@&_G}6v>bD zBh2p-189GTS8N*_bK8rqaN9%qZkaw~z+FoEx;?a`kJxSlKS~{+td!-Aj4vSZk-ynqnA6i_{bhPEmh|psd9^8fM0Ty1 zoHu)Cq+^Ric>#XIpBakNU!aieDjQ*cIXFhD%#gs zYg?7;$`|=m+KGd(z4t%vNZ*ner)RX^i-<|JP?bB?7{0tO7ZMM%R&_029`zU-$ z9&9*TviX%&kjI1Q&$R{Uk7EY~(jP7AH1k8>1Y(p&DepepEtJP6b$OgD?5>9k!CHGH ztq<~^?z2_qx(1&Ge`-tF{|6|~d!OBn^k2H&wk_kRcRBP=Q9#F^vGVsfrC;O{0lhsk zYHcf>uA}y5w;MmED6{Cl?sjQmnwb`~|8`3u0mBSwFOe4~BL{OMw6>CWs3o@Ez{ z0NOLV){FLr?WD^iQYKu^S=VMpQX}?=8}w6t%I9Ew7%Yl_|D}{4v8#9|I^~n@8QyKw z7csFY;Mz4E@mzM;>BQqe#y{kq(f6GA?9O!1?{W>)A>O-PAb;nW!pPi#NdfG8C?6>J z?MYjK=-Zi+FCveR89@6uhw`C+25h_CZg-gwe`WVhL-~PEBENX#t^8k4&bKYfSNtBc z7wIPs{=M+hW`OnP`h&J|vT!eE`Ov3grx0Ez=yPR@g7D?{cvEeV#{nPkM-E232YKRC zv9sI;`fBZ+weEp!h|h4QLO<@Z2Ws7Y>9^QkH1!MgGty@t`$v?w^CnwFh{zDj+s5*| z-R>E}jq)aoN8{y#3OC3QHu#ippB>||3X?vm4-ibaCbKem0F4swTv>5RB-Pc0@xhxa z`?t-G@j-YVSS*lpTYAK{M(^L=QugQ0X|?Rnedy1FBlPDKCl0ZkhMtbr=*kkk=wIj$ z$^ENV_Akmewqqduz*WLg9!Wv^jANkmid{DJ4-gIccG{rNq`_ouizUz=04`lto-`b*WCcVX|-(I8t8uYqF zabFquKQ=NgrRa)5JNPg0XAHSllimZ+C(=Fw6!H<*ACT8l7Zl1~$UF4wz~n&)_B6&v z(rO`pW4nu}Uv1AB_>Q>?i4XiA*gI1Fk<})4+1%5Gc;(;3-4^-d+4Nqg7(egfxe>^2 z`M~yZj^4?UX$vr(eX3wx?_EAkJpJ<@!@pWSQ&{|0So#(0bV3VW<5WbzmKGB9B9*XgvC zQon;gyVAYl*OR>bCnO z|AaeTj<*AL+Lzm4A11fIb4c8#w?{;l2P}Gfjq$=>&5qSVp86i&g8qlgJvP?{dcA9? zZ`mJUPu~J^SKWX4diR)2(VHExEk=Jsc?Z)5kv~`5Tlks6h+Va(a8D%uNJ>ng(YxQ% zu+zgys|?i$mbQdkj^aQ@~yfu)hqXRzSZoKOB0c8V`?&N}Ybiub3C( z!%_6VgUa3>a>Fsf@@eu6+eKY8vA>K|qO8ZXAzetJ8 zzp3B)lJ%QKU)d@D1?_VqR{lhU@QxiMJ$*Ll4-g6a{HWQVc8%1ZBt1K2e|q&t&V>Gy z4}4bqz=*IdU)Sfr5Bqk=3x1RTln=AJt({wKkU$7vOMUkczche zud_iTb8H7?jae!z=$6lOpFg8KHFz2g#B^TA2f`Pi}@` z8c%$<-qOR*>;5lwU&RW%pCGS@5yp!Z^2*fxxAd~F(!<5Nzee}()%~5izf1RjtLJ-B z_j7f)QO@J)X4L%}1v>pk`tRy^zN-5M{7?Oy-}-Fd`po~rbAIc7feX+14SD>t^W7N4 z@}RH0%J*G?Jx92&g@5#8*w=)6ynHJ1XG7279^-@92`8Z2=nulV0jFPkoe+=U{=)SU z;y|B1-g}krK4_D6fa{DZ`b2v+vYHGW_VN?eL$vfAG|&rT>cV|3>f44+X35YgLY zLgr&;>Bl_+h2M==J9(2Y)cc*h|6^QkJODcj9^?Jamu*NyxLSx&b=`V-CF87+3-=#Y4rn<}w^w}H>G|=t7ed!;|8Y1qa?1U{ zWsy_U!|9$Ew*NTmv(HBVulLi=Z7+m>eS8e!wxp@hJBRT4n#1$sw1~MfAk&w^voyXgQoU#vZ^6Up-4s-`=xi=yqT1 z9}&9a4qxmE>3=WREkupyrK+lRb}fvTC$B+{=-~Xf!xOcfS-8jBd3d?bCSFT{?61?b z@M$e45Ad!bEinmR*c(9m;AOONDi2=N`xgMZ7Nulue-<}$A8=%C#~XU0O3Nt(hWUrG z9(ou-Pv6|tld?XCHNyycx0d5ZT+gSlokJAnhSC6-0>CkMFpmaqY*|Hq&`aedL1^mb2?IEeRv{EcaPwKh66eorO0hz0wi5 z@CL|*H$akl-?@VyX8v~+=s)cIuj1ZYR*$6~^1_?OjfH>b#OdQQ^?3T6 z_c85gHB<9IhuHqJRr8HB17ggKv9{Dq;RXboK6$;1XB%?9#5s=m+&#wJDHS0)nrQNh z;1~0x!5;lNIAdS{${*>gpbO7G)&uIl67Re*+6y?IhYY&{c<;l8c_{KGy$&%fX#xQ0 zpGyEF28?;&eSCL9a=wUXJ=V($GtZa@$~pib)8aXh_43O3 zVk2G}hAoIX$t@Qg16Ep7NmdjmLN0_ZaNq(5{x@*om)8n$5bpoLeHQMkaO>b!!bRW; z;I4pM40q-l=s~y%xaZZ1S5UqPw-4?)xTA2thI&NDkT-VmnQrb?KO65CqUo-xhF z-E!tV;iIJ|O$Hv`3NS!rsutpUWd!{ zOz@|mk7XFVFz!h=uPVIc-BH)xxGMfy^(y_f>Q(x;GxWE;SCw@J{B7-x?WGNjRtL zacS@ilj3M9uspndBix9yxy|~`01S1DkWLrk+7OpN;dA#eEzBYr$L06alT_T!?9bi9 zdS9%^!4oGC_t(f*i#XParW0`z$5F&(TjH=hsF4;#4ZGC4_U@vF4OsRFhT7{wEgKu% z%iG%gLHTu(wpKURYxsT2c(}B!KD+^M`pc#?@&^K?^81A&B0{O_4tU2 zD5=Az2>_ShlW`Xr*@bbpWRrVIIM`B8f^qL_k?-*bg%9G{)>`K$9BXD+?9t^J;b61B zqb|@Qzg$yQjwmJ0zPeB|zN^A`$hf|KQ?+#Q@|vP$W#{ZC$Oi^A;SKxv*JX(7{QH@n zds$I+q2h4RCImk?!#r2bzDn^`eU3+zpt0KP{4#VEKE%*~#4}O)9dOH0 z<`PN4Qrxq2Z1TpJSU2F0-(xktmL9}Y6`t?Ii{F=S!xv%s72XXaq~O}Mr_blpLV1(A zZMS2oIh2=+V9q|*=k7U}$?v#1w)cgmFx~bSLX(=J*-blK`1N{=ikh&d{>E{;r|+Os zVD-D}#H8kj&_}c|J|4Fl`H^vU&yo{|%TC~RCvm%WbbDX;vaZd8sT~u-IdjY2=@=Ux zzjgD_FVHDBrmnNCB&rtjQ5|~}9Rv6#G(UmvQ60x`*N!5v z7YSE$0lvDX`2ezh&*l{oOa7~xcLQqXny7_yweTb@?9#%SB==}^NJkSrjIXa9oW%NU zJ@HwP{kSjxbN6%&T@{|yv)vCO4$EK0fJ={}U{7DyckV}oJ?pc5PcZQdq-5&}d`U}G zDSABk_M5ECvF$H~0@cm`gxpwXSr>LpP1Vsz;EJU}8}I*pZY(X*W%i1v|W zL~hqYmo~E)BPMg5=3D1nhgJ0_ff^-9#-K`fzHrc`s#H#@ddf0uqMI{)o|l@BfHBR~ zMu*Ez6IIiWsd&_Y+-R$C>|GQHu3r`{JDt+EqwI7~*=b)*RTawz<8lg+?)c)KvIFb9 zzV0vVlhiq5yYWdnChXZxh!3S5r~=7Ie+|-0f@@TqBo}0oTA3gpH(B3GBfV0jww`d3 z-fB|oc?r)S>^r7L%UpQcVBe7&TdAnKA{ur|tkuos7g25=0hXq&MKiOu{|y-3wBz#E zqVQ4aDqmIeROsHSs;Xuuk~RZ*r27j)Bs|BBT=<+}JxKp9IRW|^;X~SYD30OG9efPK zI)IS0Xj$ftwBzYqi8743AtuT3z_wPho|rOrC^QdaV!o^ zXzJ=bvnn*U>9AOZO_EJrZm}A@4_~u%L=QGaGn&xh3#*&DPOS=M;&)zX41TW*U(yt9 zxA)v)Z$if$-_!*RPW)aMvPYjSE>_vXKQIt^`f8%@>A2<%$2G-*%O!DTNL-HS;pnM2 zwj-3G113Y4iut!RWKkzGi>>OVJ}};;vUx z-hQ&FE6*kFjviWl=UwPVP>E23m3gkF9Z;Q66;PS3=9(!W0!lRQau%Rq#Jfb(-<%RUm$Y3A3AtPx*9L{ryyWcJV;h+1?Z~KL-`4QgeeI{(%g;@R$^sR>w8}?WkcU zR9lS?deB!Ld+a@_Xs(HFc4{5Y>e!c2r>@PJB2@zc$67?Lg7}pj$c(BtHP&J zqh-#n!qo7@rmhF<^TN;!4>(qZQ=7V)#t1C{Om_oQ*0;voy_!0_8Y(DromeNTW7o~B;&%fe_$;&wt%w)a(sE>qgFt1n|A z1vogPIe#KLWbAh!{2V zJ&sOa6~xj};)}fukZ!n1g#hh1t{e>8$DgiKT4?-yv}q_KT0W(#Z_4rifIgIpTvR8TOyhkb`-5 zJililhci?ZJ$JF$6cpm*C={68|5ie5$a3P z72AVqqx-?gSM)X?k@_@Kb~{95$*MCB80rZgQ66*zq(N*IYpW zx5BVip)(iF45tJ5LjaFwSI2$^yi{>|I+(1I?Ns5>veWYqJ&-XIqdd+M6=@NDQ{q@*VH6zXvNy66q;OWKRu`?idMMj1Sw!{4pHC4pQ2nG_yRS!Y|_)b%le z3EjKV=Z~lJe%~Dq(jK3PL?9(q(YrFSVJZv*a)$VB4YI}#aBRTLCTrXO58m{Yb+23C z!>qI;bI0aw=G3OAY+IEt_OGCq^QWwb#sQhuk*jrZPFEEhfV4yhJ$>^Bv$nrQG)tTq zOQh-V^ZA-%=ssG9L-iW4y(~6f)iev`u}3&#t4>1S=k;ul0FzRwRk5RkY<5C?a(r~g zRwI>EHEgI@+3z*&wJsFLt~Hbwc2>n^Kf#u*hNYJ4&8n`CJ85VoQz*@DKM zMDyHP9-b)2b{Nu~sO}CqMOcl2%9v|Sfib*~Bg~GnAvvvm2P%&<))PRD+acV(3Q2@4 zOyZ1cieeh1%d%*YGYL?&W+5ln)ioY%?q=76k_LpGk~PCuvI z6$tLn;TUoWEitlA%gI#uFG0>vkH>cmKHl|w=KRgB_Whul>k*mpfdu2c!`oBveJ(my zuk+$7{KzVo0y5Uwx%tq^FcvY?K!P~%9A*J6u8VB{KXlMI568N;C{BVegzOFQ;AVhO!S z?QtCT#q)o)RRoLc8sw+feIcG&RoW7)TjOtB-i-PfTP#cJ{8-t4)b??I+nPGR{DQf7 zLJ#pP=pyOc=-X^qftDY7=Q8v^Fm!vkv3-+VpqBeJcPGO@_oIX@#YcpZsYrB79FnOB zGt)N+!6(&qEXeWoL}W)wQA~u)w5<;Z5YZNfEVeY%h^GZO%1CiW zn42~6m3Gl@Lm}j~@i}*t^lyY2;nK!neS1p)d@Zd*dd-r5coMwCoACX1L+`lusOP7Z zcz9z25M!crg$VQg-*ULm;GtG3+#R@I2gj6E<%^eAmX<9W>48NNVksx`fn59v2J>CG z{wFzLV*{(tX~-KroN7FOHNxuYFs@{EOgs z!k-Mk8~&y6AAx@v{N3=U!ruo!5B?GO*TO#r-vL`P2LB@XL+~>)Q9h@u2^R>%l?!-a z9rmlJpoAS+i)Wjbu=`f*sj-BcD-*+emngo;%=mFG72;Et^hXv8d=ATqgF?fvy+xMvt`_V+vV;dJFm_qO zgLO*ojPhnJOXOdE3HBNdYhS{+fwUS=n(xLhpLbW`N%vBm5PCQK+wk-l4TbAFjyKP6 zOuQbuNl!ZuPcZzOWi0pJIOLeB2c`E8{cUq7*y zezDw|S&36>@%cCTq?@M(x8j`8+u-wLU0zFok!R7iVaEzjY37-_Ox=!6oBUPh4D$&& z_=>Z>ZSk^s(rHlUZ9!V&ykz36!WVlR_5CnB;n)uwO`S*0GgaH=so6XumDeJXWx-i3 z2poJVVXkexg zK3sx>(2#yD>gSjB4S+A??pmY|Aq{zu2y-J>iMSH{IUCPrBYuvU3tH!hYe6aLoCAEt zu=8w?0aXTDktG}L$dGE0WO`?VcidUT>jCV3vFW=KcnWnrC^c(3Qd`bKn~~xgDK`zM zQwQ3NHBoRyUp^p-r(>%ViL1a9o@va}Y|E_N3wX!}o}f)>@S}Bj z2K`!4sLE1%FG^)Pb?&jjB~#k@=~5_Qu^jxQOb3C-DybYV_A&vkOtjY~)UXt_uLsx2 zXG%*@jMZa&D4V?G8Mu^b7d~P$^4Z;`vXnY871Bd&>Re>jBZNP;>RRMqbxD+i*UB((3(yDkzPL14Rj8EqD2Js%CijQ&=o2At* z^o!B@g+n}k-~gRA)Otvw(MCLxdnrD6*)CoY_o6Rug3dQIhAGwS(W>?0 zKX91E68uu!I`P{8?$jknAuMLu2dr2r`%a8DJh7eQgt8vS>LZ`AACIS%lQ)-~ zLzgD*;xlsnsWq?@lE8N4PGIV*&?xo1cvLM+y~L4vvG}ddhakpso@}qQ@cJY^j)&FB zk|;aWqDt}_0V8BwQmo>x;%pXZXoY3KbR5^!D5f|?*yZQo@Y!?!sX3hndz*Zw1rUZN zAKot;!F!da18Mwd3suL=B%X}S+417Zl&__@#aB|kfxl;Q|9r|*2p>rKUds1V#*4>N zzKzf~@%v0lf68}KzL|0`9{cBKNt~Se{e<tTjc^vzdeep`X9|Z9=0M!$$ z7KYMLh9;@w>i94_pdR?%hV+}Zg+H#5&xY%o^TzdI^|NVF(8_C(vOTgzF$LP!v?!ED zpzb8U&TdnrOTM}>#+kOng?2f+_5Hu4U6!KNI7YhR*yhU04nfjGcpJ!!<=DGXrc6%t z(br#@m}Ry|3#1u7?JJ|Nq+^CNyuO@q`jMWaFMCJ`R@}R=

    (vvy!U46j(ww((P+3i8tOM#6Mp=f(e2!vE?c81!Kb*M`NORJzur`p ze=OxFzDu*Xh<*e*!-rXDa!3E>eOZu5r=Gj1hNz3WIC0|Al0%y)`%QA}daK&d*wrVj z$KSCz*KvH6u_=o=x?TP3%~Ztn=usK>d+BE%4Knpz&qx^48moi8%({tLjITpI9;?2z z56XSL$BSEOx4s7-^nsuI)~(ZOjeVlFPbs|j1`5LoY6!Ly2TIuow_X-uo3`%9VA2oc z%wt^ZNKgo)YHwnd!I@^SVX=mt**bmlu9R>Ii}KL&R#98fze)Azy-U-Nf(-*ng0R8V4p zZ!AwIZ$w6K{L12kH^t5yxt@66O>sn>_Qzk_wBHCX>s~S;etKNR>Lf}DtwVcu@1i5I z?3|&xMN6CiY{Ix9!?}K)avgs>&RpZ3qRL=Lu%9h*-Z(?>fg6#Vx`uhmy4cP+P%6?-_)1Pd;*I2NQS*HLCc_=>B-8V=8p(GYWQcBluy)>LTs$47I z<0?_#cP@*2^^uLLM1j1x;8T3x$B2@cqYgIhrYQk0M(~BLbIF_#1Y&PsakI`l+oBJb zfYU_lnHz9;5v`&SUM+K%uUQr!LUe2WN|_1fI>C~7Nn^>`hn?R(ToN!q6+zy8sODJD zA=vN@wEOok>NmhWLa9yaL1(Q6*HDeELi&pt{exTYR%M4*<6Ws@y*yCeTj@w4-ZEmu z>u-p-yB`NI4&f|JpT_c5mHMDiA9z;;oQxi%T zg6ih}HI=~f2D?_u(&L`3R~CKe8Ka&Cs49f68=!!o9PxR4a~@;6eg)y<>w`_|8Yj_4 z%Ig@F%HBYT4hvJguS4wytR_*b4hD{~5u;emz8h(OAmpKi(H}(!e|G~F2iwV9D^qJ+ z$gS`A*5}qpcAh|3*p2T74bLd$vw_LzMFdhRu#c*Ntr^ zif-Q@?(N5kIGR(~4Qga)=%z;Uy_u&G-aHWay4E@&;kX^nKQ38zxdPOtcMD__EgKSY ztM2nFVqgtT6dg`j6vucvq7kW^4N0*oeF>B&VU_BhIx)~Nus*wFcsb6NVWAIFJWhFaPyRB zi`66=FRxb(9W>jrtP;6q8wtbN!~4aZIF_KDWn+4H9r-AIk;qDJq#w1m)YHWIbq2a> zB@@{)M2UmAO5-rzpTk*{U>ma`vCwm`GVR`#pwkkTjK-bSg1fd*uq24ib|2kw%2rHejc_K|2}D3ykGqQFmr{U+m2Iv>LI1?WNKc7Wf)Sz8N;Hjbq(wn- zIzOerH)So+yz+YFuFqUi0#R?I7M-3HW!PLc$|ST^IeRv(K91J)Te7)a7^xeO^5)vK zj@tEEyW{$;+#uu11SQm&gBb&gZkMsUle9Q@0{vt5wqh%k=xxU95lVE%;2M@N?MC@K z7~7V>_)v7`hKaZn5GmP8ljsz_@-ncp0;4gd@UU|$#Wy%}t^{S&6W3mP_p*%q4f;_R z=syyxs&os*;>jdvY@!YK_##wu{BxAV?id@126=p$DEF}uk!IU@=H!xQ6IP;~GdU!@LZrIqN zEZn$;BNOOa^P+uWf4}{B4(mm zP;{N(!o~L~-(9&O8T@~_`5P3V$FNr8KT#CTAh8yyBW{UU{P8xaktLE2TG| z17fTn?(T}KS>-&@c36z_XyIU+avwn)0d<-4w#_>u*7O(wg?Y7nB42481N6Z52oiN5 zo5vEZCf1Q)QZFA+I)M!e*Iw-k&NB7#N~I&OD@(c;gPn_yC#N+tctyf8Y{lJVN{E6t~H5H zT(9GsIJgO=8Q8oBx{gKf>yBNYKn>fgy&<5!Dzf*QBeokqlGxgMSKNytdzAgu&3$#8 zP*SUpHkImD)IHIHK8l79NohqZ0*8+O)p#s`UAd0*vZO@A$V%y<&Mxs!9DTNA=dlV_6iMqvKW@0LYrd24TvW>shVdc+E z1f~JKJaB|nDE<0NHNvIb#yC~!o;6l6w<|2FvQRVHieWIWxZNt5@n~fcq<9e9=!F@p zbmlrLcCA7ghoDlGTV*o0%PyR1#Q@PXyy*oKK0s74i&(}9rY5+{%uc_$m?UNNI+yYp zTSv)57Q-1^2a0AIYus1vZ50zy9?h$qDb8-XHlg5<7Nv|WDqV!)h^J}#Y^c>FV__lO z^G-<`0T~zCq{0^0t23=hTG`YcntAo)x3L!4%#&Fd0M+1n8e5?z`KOnrXzVG|p(&je zP@?vUDgU~BSrMim@@ zxFFl9#eqnF(!}uCfUOp5L2nz3FX$c8hECCi7QY!sm=nS(ntr%Q>dyAbI1z|mGMni& z0g@K{AE~m?@FoMKKL{oPShbug<+@fpo%~KHOMtgYS$6Es=APfO&K7`0c|oTA#k4&T z`)}&@HMcPK?UFY>Gm*Dr?%MiE>k-S%Wy?y}e2NX58|L zrYM`taKLDssU~ z#x)e~Vy$hO-ZkSIL0h@G8(E`vD#hqR7xI`0XCv6l*tmD?LPU9etp{SGDqnh1y=W_7Z%VErnw8o zt(z&++bQp6#guV)ne^$V&|*7dXP}q}Hfxp1c=olTX}cUtGIpg^+9H{eO%)2$DwA{~ zbsE>Qrmsj{XK#N`n`n9^FHdFh5r;;+_Gi^Rh(>~*YjlZa5^=HP@lzFAit>LY58CNr$(YLg9+V+=>asWTqbLTdx zqnJtwyQDl7zAO*;Dat3{%k;jU;{MOCuIT2{YO##t-?E~Exw$l=nIeNVJuSNs(AXlj zCc}c--Hz9|d$#rsw6`g;f+`tu6OIr{(@POTk}{n|q`6RU2GV#rqz}Fo>c+^7kL0q1 zPw}!!Dp&q4Jz-NNAec5aEbsi@Roo&bc}b@=Fd!q<`CZ+nwVX40+kDaOyWdWQsL#mm zvg@7j!#BU3X~~jkL$s#ujR_}8S1;Q1_7$4rY)>kL^t+etEGyTO^f#JR!1RxO7wVT@ z0@K{zg$dV`uEjZvctN^FI5|y0SdkJUHwRY=OtJZ=S8_W=OZhIac#}yx*QDR&oG3}f z)2}eH_{O-HuTv3PR1q4bqCome42}NDB9eQxXz|~dH1sF z#_ksWVo8^H6l=BPnV+{2+C&B`dDNY@jqVgrL~oz?u4Llt_* zp<->q2Le&emnNC2Hrb16W~$4Cnd;}0sR@TXoBfZ=-qlwv{$IL0ndsUMyn@yBXn*fJ zW3aDUEVHi9D&TSD7BU1#ko?^%GP>-4rX0wPGAVultN1%6! zo{OjcrY>As^r4&aGDkOjjOd9fYOW~=PA-Z=IA0(Z3LF*qxe*8QY8gYF5_pwe6latM zeY)^)bSvZH4~$C;@siiQbxoPs6*7v8IOT+K86={ti!jtsr}kx95BRmG$m~)_THTwv zOdoZ-jLO@^Wh6AryYZPtGZcVDVm2MB~m~i%&KdP6++?GZ@v_ALSGi4v)eM{dNgLX8|n~S0WFJg4>>}u}ePxUn? zI(wzPChWTUG)0oj-6NiM-oe*etns^&A4=hc<+;j5+eTsLn=G?ZwPT3@^qkx6$t?-9 zN3p-+iLQh>XEF-nv~beaiIDdI^nuT z23b5`EIA)|?Wyf*fgN9GU$2;FsW^nm$wNKO9V8OyIbF^Q_04?eOzk2Twtb0hcz1%tf&TxZ9nU)1}Qf;id>?)9Ev?kPKFu%pL7EjSuy3TJKvu|FQ1* z%W(qhrA5JdAx$2^_-v5o0p$Bhtts7;czL&*I4EB5ykeS?t9j8?g0#yrt^v5dp~Z{4 zERH(Qt_1~QH@$#HQmf)Sd%op8yn?r8j)oB*!gMnnCF0 zIbDVeUfEE2MBBtT+>{=zOPO_(iAvYWob)1r>hflnTfjnIq%wKjHo0XMY?q5xNEc;; zqt0VxwTd3l9veQJGCgVrmL&Ht+~@8pR(1POw&t3weqKi*7I{NQV&Bjs|B07%`B5@ zD|hNaOG+0jUux8?>x8w5o;&rqKvVbgnxz~_E>Ti=fz%SK9C@1Ui|WPHT_dg@G!uGG zB=txl{z+cVkd5ws)YWQ4j7yj4D{s0uSn3wGU&7(JacFH)4`O@n44KW&<2F(PIrUhx zWzN7eU-Fbisz81leJw6=ZxIdWa&og)U(UzdKo+6M9doY_A?15li{}O9Fj}*A%?gg4 zZi8{rfTiw6wMS}=ow^(Cxj84Pdq!!p={k$&byQGOt>}4q*3^^3{W{Y{C5bzt9kq4! zHQUxV?buM)bl=7;_v~1^as9T&4fjEFyKXC|o?VGs9T?0*u`@| zFI>B&;oiEf$;Dh08hSA&k1fkX&UI&y?Repne{Zxb_Y0RU#(XWyr{Oo<9W!>QQiQ=w*414>Op&YG4!Trl3x*d_cGFyDG- zY+ImZd5)|czcOTOFFxfpZW7|2yn|)zLUzmYu=$mEhqEqKClTbig{Hc(xf7Ly7B6dh z%kt@so3^y|cJ=qb50tSv_yR&C?g&iA+VCmBweU~@qwe@~8dbKl2Y>CwUs<%Bcl)0t9kD*`-{i_rMkmlEEvmcsNF%&C2ZNTVPjK6{q|vY=A$C*peL5E66-c> zYg}{BT^nkL*-vHqlb%?CO0U`0v~lZNjJWl~?B_DWAy2GOW!So|ZvA?b#Ce(HDL`yp zw{c6;+HFlc8Zc&eG;FA?yMLH@Wrp{~@_E4>8)_Qswr;9fTeqVDEG+o;KUePt`!{1D z2%5DUcGPd&Qdis1)Ue^MVYaCJ|5W!Q(X$%07t@H;q%~W%)NJ3{@PRty*dlUxnI~3^ z2dV068h6}Vw`FSs7?34&8kA*6Lu1Wdbvv5YA#?4Hx_j$3G!3)xd+PT2jFtb1{|YcE zA8vhw8#Rbd6@vb)C8=h}i7by1xo`EC28_Jb#jl6oUvTR@J*&$cq!I_u{mz#jH}XD> z5~~Vsjp-#)PI)S~>_@-zr6D8lBFZfwKgWm(8@%53^s%6kp8Wnji(yFndjY z@>6E*f?=3lktuuhlWP%YZqJ&yZn!CEzv>}{FZC3|w;D%YP%;Ad_QVuSk4D_0Aq=2|fX7Ie;;73VO~mcdFxw=Pb7IpenJ$6WbUilA zw#x4_VtE?owk_)cd9O?h#d0W(;w{nD+%VfN6Y@plG$KM6w?7zWACxJDRk=<2=0z=f z;`FX%2aE*;RWoc!y_EK$r(gcsK_gZWE9mS^ax)%g|JZqb)|0%=XLR=JQ7wnrKglE% z?$p9vuHDtv@<>}N29iwo#d11(H$K|gE1c^vkYs{CHd9`XN@+qFl4D58JOPzQ^uoUWPSW$8YnAr@o|ByLCwj5^oUcz`& z=E#o~YZzt@4st_gDI{JMACv`~LgK?b59<y?>GVx{hxIFw)J zDvRZ#+fZG8WR#xt!z^1S&#uaAvWrkOB;qH2^Td-zw4f^FNaO?Nv%RtLL<fs&JF@ za`Op~@n;*C9(u|sMOla%LLn_XchF-Dd}Flp^&+e}y)9;N38FsC694w2UyX^G-PFw8zG6ETTJqKZl}%!XuIC>HE(;VTZTNQc?S z<>!2=lKJ_bHN)%^GNF*L%mg?}uDE@e4a>A*6N`kCVRk@%E{PRTlk%9A*b<>>Cc$Eu zeOjiMDO%h_ZpAiq|~uZ>-M!2dJyYo+`u_Kq*huT?QW8kKJ+UzML0#=^2~ ztkrv%eO;z5rfSlLA>2fV*|apGtU^g1+ko#WCpEb0qyxe)q?+Tbk8K`my{Pps#8q{X~8Z%CBN1os(a4Chl32bf zr}g}=WpY`pxTV>>=da2vvtvcTckB6UG6&{uOS9IwzmeY~=-j2$xm#+^-hbH0riI<1 zd7vJy`qq_)j~H3h!@ab;;7*F~C2!{X9vtUAoGlWtCJnP2@~aUGimzm7JIvS&k=ciK z>fPA6Ww?7`Oy!uc1;uU^vV5C ztv+U4&qp`d6FF1Wd-skUH?D%I-bd-(bF4bCJs+G9O!Yq6*!&m_ifA!9EwqD`Pqjx^-%~HFoi+p@5rxc{oY6Ef_s>KSAGg$G2@?9S53+koFYYvi4Ixk`!X#D z3mq?ov<+S2JdO24rp~~=!c#ZY46}cbA4Aw&#YdI@v`nJSP$p6MGaOcBLSa>)N$UTo z>1uxOvB?SJN`7owLhSm(?86^F{i_qab?|L{bI(Jl?c?&BQI)O24pDK>Pk(&>3FFoL zSTNqpw*$V5estd7ePxm(*EDxNiDC6)C!Kq)S z&4}d?V~euHgaRCVfIUzP#DVwotj4SKpAHL zBEJ^L3hni&ZQGM*L2v!5%uqt?N#il|;P$FaE7Q`pw)Mcqf0$jCX|rQ9R5>1+c9{Ji znKU<+uaamkY{c;l^Yaav9Ela#S(4O;*>#ztJQhYBtx?yH)7GtCmhu}LKG)MZ7Fvo#($JQv=wzmeIy_=jyZfpEl0rSLN_YD7A3JW8D}3 z==HP4Sz1fY^<7@EQ0ikX-6Q9W)A?1wCUsFm-yeM6we9DPQ&h@v-9xD>ez|Y;1>NO*e+yIdAml5i`RbYt?S0I{MhuJz4s*AyVeZA0uzVM{9kOpAqK?G-p00v zn&tN!@;hX&oxOJ@9!kjXtU%;PSM2O{d*ye3EU>dzgdE4tEI$UY?3oU5#LH0P z!gp^NN2%c)cZ-zzR`jE7SZ{1?E_n zVliF2a)y5K)~B<*hx4lnT{7@J`NmVLYI42Lplg%whH>b9@9`CPguP?b^LD`-SItD= z(L-P9FY-Q>OhAo|$M*c`PfNXrXrQWVa4Okx>CK5b-Y01&T9-Kz^~MK-&quun^Q*#1 zxANd=Yt0XT9P=JPDkcWJ0cp>nktz%Ss^NRzS>WAAa&8BrpvvGi!>p`(>z#{44dmNM6D`B6LM8?v zw|2z29V8Uo(9p{7LC)NUE+v;NlnEr{cf^IBV3@r}ex1Sj+R!CQFO{F6Lqlf%QPg9( zOvtY)l8uVRu}#E9GKa+2cej0Yk#}!?Rk3RpJ}4eII54Z)J4BOKN%X2iLo3VfU+#UJ zXkdR(wzjAr*B?{ger9py^i|%0{Hj^bESeDtW&G%y-~813z5V%BWzLM2l?&zjSkaQA z8t?A>s#0e@YFkD3)V=RHRp;%jXn(#NK4jy3M5-xr4Sn+h!L; zo{dhC_NA5c) zYV_tU`O4LBO@38@OD^g{|GB@pYqR(L`4!>Cnvo&DU?UKtyz&d%ym{XT$SS^v+ARhN zVcv$jH*NPW&#wsS2&7{ofS>O>`n3nVd97c)8m^|9U^ir>^1nIy;}0}@7v)#vFK%*L zPZGkf=OSi+H}4t{7SL+t%tIJ?_k8M&gg2I7QJjona`OD8+uJ(4d7u5-)o_%iofC)h z5!R`q`wDh@=j2z+SZp&?C0_dXX7~1c^Hv_Y8ZM=M8V7-%<`(g=E0z7s_-)YvZxOGH zR08m2nFa-w{~x0txc_l9C(4JZF3voJ@#U9(&p+hN6+J=*{gz=bK{P&7yKt{JZ`aqa zhO>E(*s~DA!>8gu+2_qdr#IClnG#cmzkbh)e|5m?$%k}Df}dR5Gy`SI^j8I++IrA? zBh06v%B0&qQ?9pG9gIHdy&mR^h05i$t)`q~KfcX4fMn7&wB50UWvuXnUQ<;}bQ zxvSwTVQg?}v7}O`=6)=H%=>DXdREhVai4s%XD|Q4^T0FSyk7#~QW!n!mXEMWMSkfAG_z-n_^+ zu7=NsA$ght50Z)6)xDSZ9rK4bN}8})5%YmfWc zgqKC9)x)(2x^q7p^Rkvv&&14WjD;q=c@^b060RN@#CvOg-b0h#yr2E~)$oaMRaCE~ zYZ3^l={W$VI8II&N*cPj>PnI+y-wcwZ>*W#s7(-x|r}Kxmbi{q3va z-QinjqJ(*~$9Dzkp=f37L&lEqd%cTSR-g2-bKXzPy3MzInsPI|FujG2v9#bftT(-x z89VQ#ebxM0x4XZ&9rh>QNS^v8CdQ->S-%I!$PAUjb0gt`ciQaRd=FPn*Bmfwe4%N_ zX8N!O=CG)byu9Nq=UP;lpy2F=zb;3o!5~E@UA)B)6$&O|1nK3V{Z*|YwZ%KT(sSipVqt{?r`d{3p%hw9>$tJXLRzGBv?nE6mHlF0)X zC|6JK2`_ocSB+&gi<|luv-Mids=a}h$~kF$fB`ah^*3(ZQC}EhS`AoBWvRNkH=V6b z4f2*c~NNKfEX56k5SHMDV+tuK)16(t`K1 zmWL~gIKzlYq3Dn)90tN&x0m`}_pLXp6lVvGx2&@38M+(RP7X(K)Wg{PldrBj?kiYr zppUY65H>!Df~5Zx%LRHQ5S>nTV2JKOJ%|s%=yZui^eaHEq&x@P6(TUS@j*e|Xwk=L zk@@KadtaRWuNU+WHF5Uhm77?56TNUxCKL$tO%bEdPVTzVy24FT(MOILpP40`${B0O(chGFp{S=ko*{k1h=&H_4jnr-*NWr znU>0uRF3`Vic536pLy_{fdLZrk*HG4+6*+jwq3^A`>sW^xH2Zr{FvK`Rvg89FrV+x zc=QJ&o--MqFNL52G$FX{FDolcUG?*YacLt%MBI{s=U2%w%mKonpn#Xzd*zQ zFLn>C0IZxh{^745`=Rey7EPYq&$0;Y{Q5gvY2m=^HrGZmhDf6bfUnR1iRXWYH<#^WiLNp=q1idT6ud3$a|3<1BPD;)PHdXTQGOQi<7Qg*HLy|2g?r z{V$%+67xgVFPcvW24VAQ+H?ZwM^?QEr#P?84ny!B;T(x+?bady_w*j|r$QJ^K8v4v3n z<9B`Wg|IQ?qal}sppU$k$}+4mxRB{{iFgE{vX4A*W`U8*>k}}u&?ZqHAj)Ks5odQ^ zHb)HahM*WxBJBe&w^ZhGEwGuN4qP`%ee1YjV15LMRkpQQ znNqDPnwnn>2|Ybzw-ry!+-KBe)94KfOd4)+w$FIY>>7#iyO?3Ip747ol<>>SpxIR79-+`Mv zY>Ol=)ZEwA^9U{xvAp8LY5-|&HTbeJ8mQq)m=1_|6ULJ0v>IU~P{9f-LBwt`P{EEH zk?4#XZsA6QlP*($QbLrK-CqUshhm<^L6(ET&i~8!7ug#W@?3><9Yck$djp2}Wry)2 zgE=a&_WyGvn;$=@(c)O|&x~9tJ5@Gvwd{1+$n~C1E!1EUPXkFo5zpQDClK*$BDpo< zX~I7k9$^zpr&hP+DC97pgQUI4M#j z4-~nz8#it}{qO+w_$rH>0VL~dnwBl4h4+(XKI{r4CG&l#m@N&Ihhe1yJCj~0vDdc4 zCYg5T^}+HP{E87DMRJ_2zgC_@M#eG|B>(j#<+)8=ea-FKCvEzM{IQ~Y?`znwZ0U~L zhK*}?)Nb6m1OGOy4>EFd$capc5kW(jc*+>k046i1DFo*>9P!p)mO{-9?+cMaxBA9W z--(-aXiSQki4k=C*+1D;>RryaFSEuKe)k#&oHgdH@OEq5QYm(LGC2eTkH6>6oNDji zW=D#xCa+M3qc|&Ok>ut_y+e`Y<}bnet2IAzMI!d*$EQjM1Lr>L?{4rOoCXn!#827l z75->|nwq#QW;YB&n~699&*0gJ7+2-WdNltx*CUw=s?5OKtxO@QTlu24Y-xReCwzyx zI&o@dcl}41ui0>%;%%D?)}$g!;k{TIF(RNX8szi8^FP0G(EHl{(3sTKl1hU`XQ+b| zKW6d6l)1ce;fSBk0?^`C&n7J{^q7@}4jMc*FG&0;NF4S)XD8v$NCMb(3VWsIY#u z07m`7Vnay`_RT%=mL*7zjL$wY8%#Z=n3`*2N?jJwVx*8T1JP25KwOs!=-fHxf)YuB7M4L4ds%E0ln(j+!AU3>^(-z1 zA?y#L3_p$p6tM~n<`9TQ6|p%<#OTp960V6H>hu&Sjr)eYPErAjl$jet=9(CzTuvMH zELUV^=wz@$X0a~=cM>i2Tl7MMg4M^F<<7}(xj^DDNSycWGxnd+N4)zIZ0(?DXffHY zNa!6c*WWDm6(C=S8v3_jKB18FwKkCp519TFK!>wV8P!?#F{IiX+zlv7b4791PxF$e9Z6z%!RwU!5JI}1m^!uG6_UONjA*+n*f zK+3h-vA${vJN>0tDO(PpE3F1JsFV0s5Z{t z_1Z=Br@MJhgW<4J0dAAx+)TytSBPi}peF8y<`aw%&pVDD4a%yce}O&4JS);BaZ zGzD2dPGe(vwz)G-bBFXfI8*4GHTbDk{J4xX#gEN~v==S(JlOL1YrLabYHQ>AZnH(O zzj>kH61Nwlo<>Dwc5`9Q2%T_QATq7Ktq-BZK)UQq#7F0fID7VGT5fwf z5}n{5Z2Z8s7Qcw`aYNNvUj`g?<}2`DqSj~qC)3rsn5~5PK+>kXaiJTPH|+I7HMM$0 zqJ`XCPRvYolQo|W3!N-{=F|#-s$Wd1I%g12Awk!|xf&qMuJ%`+E&{SfT_$}qbA zI2z%KzbI^941>7#qN5XSe$gPmf;80=#>HrXIV=*LtvFcYfY}K>{7O;5m9`3oz8ed| zhmElGBc1)8+GF5KRJ*xe3LTw+E~jH6Zn0m81ciw-T|LCvUvIuCkKmCke!Ro!@MYX9 zn7>~VpXmYudoz9Im&q6`--NQJ57DG?wT!=>kNEjHl+K{AIJm0~H;joE${%O5zdW*U z-d<|Xe$|}%LN4ZkRN4J6G-39%31fe;xsvk}R+PAIZckvv!vQ>GM00Ut*bkp}C58F9 zqCLxJYq8?XBd6z`BGM-m>D#m=N?PKleBKm&`UDt?P8)M9?l^A3{UQP7>-x4n=xlNE z67rjSDWr=aNS;$9_1Z#UlW(vBya?c{rkxqJ>9Lf8Qp%REDjZ!)KsbGHGu??dQhU)8 zxEBFnF#tDDyMNTCB+wb7)6sPWs4J)ds2pH{G!saPX&+C|T2{oIAC4-T+PW-O3Y?*7 zA5D(~6GW+wb8rM4b!saE(xFU9a}-iCNAfOe7I4Nh)oei;9CDjR3(Wz}WF~%=E1cw- z2^Vf4%>~l=Oh`2fNk7)0*G!Ko{_Zl+@_}}JTF5Sds&$g?I4}kp6`HR(Os9X&SVOlaL5P1N45NUkbE4Wdw&(LzC2DfrYcUqT(2j z$yCHnum@y3*>9K3RYgW`9MLimT*3bD0k<@}d~~JW#@gz#lKLzwYOd#Yxv{sur%g16 z2%>;1I>1$DhmAjWsLO;@lB4MZilGmnmIy2CDs5)E%Vg4EzHb*8|0pOmWY6(EVW$L> zKOv@&aHe#$kjj_iJS?TA(_V;{q?m}a(O1AiRI#8}4?~EQn52M(mKbXwhz^5jbN2D+ zTJ`wJG?FD%9-%jYw@TsZVy46s!m>W=D*-x?T{&vki(12+t3c}%W~tUpgxS{H(v#q> zqhN3WunuN#Hbzg{R}gEkpM=?7(n5a*TyIts95Y=W{gpBTWU4^saCT{$wVk@QSs^+$ zOXcDZsM`QFk)1(i>QG3I9fyvI!q@~*3juXDyFLAeGoYZHoui=i&RGP^E7@({(VyrO zMC}7{_7jIfXRpF{R2moVZJiWK0i3=EsM*0UreAuWR7j4697xI+3t&qD77eZ&9Z;$u z$Dw|Jd%BD%ILDG>!oixTMz8u3;I0Z@@s55yMb*FVsQQs9P`FR0Pz?&3iNbR!C_Lw& za9mN)m4}!G=A{RkV;Mjb!R1E!#yzQ!9NQ2fK_hGi!U5pz02~Tt5S`B|JjV!?csQX0 zYB`_|1v5y`7Zj9Z1Q8T%-lPEhA3z!p9-OAFM6%bF1qf7PRDu>U*q6nxNTW3R8wbD- zjbD+shnT5X6iJtMC4)CmTmg!c!9)gmA-mk%D)b$PdWZ)^0?vDZb3RiW6e*Z__T`T3 zC~UXGKwJsL>%owH-fMdp*HA_kqT?hXgDe4O6>!4SGxW|Ph2xl&>zaG%9v#LJILc+Q z_W^9d^vd*1tx5y7wI7G`_ExTNy8~b~nZW84n4{^1)(JelA28deXIN`DD;UQOo|n}&C#DIyf)XDE3DBp5_BRLB#J@8&`FrOHkiGEFgNRb zdFV~?n@l>#|GlMhnj}XG?lR+K%_f0?KwN#Em{T(oy2Iz(z{f%fg!vD6kkyuK#QrZ(uNA71M6XnOtG2M@tJz~?q zQ*BVwrUWToe+N8_P2Zhv6^;0XJwlvS&}nB6uO*XBD1)1rH`I zJnigJ1I$y?x1>LNTu_jXRmFm&^;Mic)&lX;^bDtuD+AF{f_fp5N>)fHdS}*e#<9 z#4%R5nL}$UMJ?RfOjix-0N0$eIQ?e6NWtlM(csArXGYotYy)5iGQqA=ur6F;x={dI zaXPyja0fHN)hRd^E-g5X%X@t;8 zzdosO9I8<6*a4Imfij*O82y}n=+MN)&ymXGv_jEOOV+K0JQSNx?_{yR0qSIKwb!AK zz}0y@?7(*kl|J1LLf1ss@}z4zuZZZ&y+x#HSAWM&lkM+;!1>&zPJtgVR}_pcR4Dlo z@gz~}^C*5jH^;80f)TTMr)Y4Ip^UNBrl3M{#7NeB&wP-$u1M&e0}^!gCdVgWNs_Sg&8R&*@1GriYq}`d2 z>J*ZLDI7+&!VLjIwE^}20BT<*sLcw>F^gd!h4Ar!Sq+%6OfU~97=56iZWcS8z&Vx) zC!ug0=W`RM6OTurhTy9Uc&9Sq^(#C_^)NB<-XLJQ0dpx6%#ec7&2>;cp;P6S@p5U< z6&?2j+mrW`(bx4QN4tD^omPVb3R_Gtw3Cg z2KWFVtHETpO?9YonQaj0GpRr~_qX*7&@NT+qpKtpUr#H82w6$-u{XM-V-xdeTQ0`!>iHW0^BQkPx{gfchfD+=F3L@on(pE z`$%6GwEa($8Dv4+C^_=*qM-;&Mc4V~Ssi z0=h$ru5&;sy7#OB(RL6W3Z3_*X1yB!w!r=@+ z7Zi|F>fmn%0Hzl(3&I(8pDPN+vBc0NCZxO`+7$bMR1?lHByK1q$8v7oJJX7;?zSHV ze$5^D9khZFm6w#O zSW)XjHdDT3aW;n=r&ODKz<8Qg7eqRTkFzkqBi;3@5#P6c`8cc9(6?gtK7=jd;cCdA zC||8w_>DLObRgrVLu55<8Utq6_II}@;1f@Fp>ITdco&N7?#KpPS9>&cJ`C?=;j4t9 zPSjBI1E~42@I>~0k8Sgk!F6~jooO<7F@-URW^d~1?(Y_?wi$u)X%eb}y|2W))vjP3 zZzvXMq(|3kw%#LrnD=Ph;t>`2d$d zJDb}vX0(pf<A%w0)r#5Tf7-I7ML&>j2}v~yev3xsD%c}<9*3CB{ttc)D$sWF&RJ2!^sKe?|1^k z^n@BN`iXqwBTZc*XcR`s4>3YY^G_Mp2oYAgh^yE2sA*J-WsWZ%%H;sD$jJRPhc18W zZZ$UneJ@vIQtF97>L5r}=b!c2N%<{3l)ByH#4O`?&FmZ2JJRAE4nAggK{O;QmhFlW zT^O@eYNnymcfdzOevQvXoi?B#>}#WGuuO_v{uU9ca{@5U`C-3fSAbzWg6`rLV;AjK zw9;x9a#{4P8e)cpb=(W+n4Va-43&?`C+9_&=86J-iZR55N>%Z6W#|n}hlH+Q&gKnoH3QRSSz@nBCCP(bk#}w&L1$$7Qt%MN$|06iL3CXR%38 zJDk7CNiD!*DPqCrUf^lzoK|#ftFEZp#<)7V^MemY#@~YCM1GOOL`scr8WR-Hhu2WK z=^_>+f^`$m{z_d)Cv6ifW4CcV0zfFg4M;{hF*C92X`j{lU*>|4&xNR=O`Fm+->M>93TT@7|4^> z?*~AN7G$XB0)?cDyA8dLxUjnr7Z#9z56D%SAeSr1n0CM83dvg#xGw{Db3ul-t5LYN zRYyJ*X`ef%0GKFv=X0k~(X|+ z*l!;j&XL=%ko1iP4EMHaetbYX4YcusudIqbtE-|kI7COq5;|459|3N%V8AGK;6+uq zSo2Z?j#yYL^^k@#t``L}bSk3`DEfMs3?B0Xb@(xeo-c?_voBlju@PW8(~IqzhuO#0 z@tWFj^x5T)csFc?;)0A}g>&f0vC5;BXo$m#5xrgMBxw30$b7ez@raj`kRpa|**KM-`YE*k{R1%*{fG_#<8>Tk=3DGsV|T_NhT z7l^d0bEjF$Xle+6HHC}Q17d zj^z9h2%V^+ruROvPw%p7lzswAy9-w*QSz@z^mR0M7qia=Akn8H6IEpN{Q+cX!{@%Y zKL!52!W&uk5$})Ewn&+Hhe`>QMo(;d&HD9t8+&~%9=BF;HF<T)N}+Gg|cQKMSt zF<@RQ%%DZut1$H@cf%BIF#u3cQ3lY13RK_zRSPRN1>{~pmKJ50mruDv(&<(DEGXd> z>($QySzUBKWDRFJdY_2~ZJ`gZMMF4}avKLNLgM9Uu0#|@%Z3WgZYqvs(+AzPWkkEXckF$RmyP5nQN8cZg-=KKw*l6@R_%23r z1UI50Pz1e#@T^@D6I1nvj$nu{MG!F8YBj-kG23SNM@}p_wqRs(!SMwnCl^dCz)U%; z8eKosfu1mY5o$U#_c=6oLlHvE*c~vXrlXjR2GVIdR;Sf;EXkP^?wAf2aB4$Nur!vR{(jRLe|%Pnua!H zb3nZU_`^lxP7kdV;%f;41#Df%%aS_63Q0#pJsRfL%`i_>E?~ALP8crjDm){w=R-E`a<3OivWO>gYfC{F`=C0mK0&gD$Q};=E;V z?TYvDZ#JIna<}I(3LG*rS#^TgIjY#vTN28}M4TVGgysgJ6?buC>m zq(%K((R`f<76R#r)()EwJzqD32tIP5>OApsTJfR}@%u#lf}SqCiQYphhBmdzeiqzZ zDf+ZS+JT;5hCV1}kI~WUio$i=;+O{tbnzZM>Dr^K<>vuAyZDAN8n)fyXhtYuZiI3} zf$Jw%5vbV2$87vVz(tFnGWK7y9Rj01c{F*&ypJem*T}Xd`!;jB>&hfDiKJkcwf!9( zbkp_;psp&evhOnRT`)sGP;~y42Ci$Qu<5f!e2YYVbTLrDW|x#(@j7Vem{S~`MEBXH ziW&WC10s>o+xFDsvZ-w&_x$VC+pq-eZ7vRHjTYJ3P`e2$a^8fkQlu(1r3OfGo1U89 z-mVs?-ze6nPUv?*C_#iuQxPh45^7L{99Po(G9PXG5nv9X$5Lwna39q3P`sgYV?W0D z9i)8Tu0ZwcTJwDuDAR!Z8Q>l&e#J3p#lb>$lNFecR^}jp6AHM{_5j*qG0*^e;?(M6 z$B!qI_gtvv;F|9h9`_R)hhVPGYmqtl( z_AsJ#h^J+W*&oweBgJ;Y=n~T&^hJ=KEQWo`=XA=Ng5z_6h(v9tRyt_%QF&_;rs)Dm zr#;ofWCZga5IJAmZ;ZaB6H!B{n7yTY!Gp?}qEaz6Dj@RLAacDp>KlF2l}Mbu>A1KZ zS47H^i16l-oACsI!!rk9IG_Wo#e^RwrAhS?jbEF{zr!7xLB8`J^V8u8UPR8c|Su^u%*p+oeY$uJl zc*1BDLfhOre+KB? zfWDam`X)i&P|#(`T$72Ow4C}!fbE;PJF-8dqXnWllunX@i(25HW5G4s>g%BrX!t;# zh{)y%(Ir_6j7E8E7vcJNIWpahZvmhSc=zdg$Rgbg6S0Y}V%WwyHCV~eVgw;=+ zb&qpLN@Wz(vzv^7vKP|ML7hA+xjNi)N7m;R)MsqwSkaX0BerZ@wBdz-wCw&e5;U1# z2MhB;7MYHaXt)WaC({vz{J3H83PBe{!)BG@7%#i3$1Z6MTFYDXNB{QgV>36<^46?I zce8DIYvwS`sQ7Fr3~2z&_@$UCD`ETwkYHX-J1D*(J+k!d>|OX zq>`~H9g$ zY!McB!KrgMGPdy0!jWedK1JLdP~4O`x!H;+ZFsl@H328{!HK8j zij|pKWARs8tzlZ%x#MDW2_L50)iB*|8>SaH&UOsbIY~H(tlHn)ht@IXryk@`-#OxipAt^bqv)8FnN#NP%FzB_*HrurI=X^RVj;we$_u`Sg{K^kkQwHTL`WDOUDj>INxY zgmmRyf{QEIOyH%%D1I%iz%T8*#5c5koa#QXK0k>n?gkMhMTABa>QpiYJqX&-(jPfV zo22}ll(?Z+Qn{ZF24jj8hMl8=#5doIV6Figp8<_kr8SQFacHeRq!!i`20W(M(J2s- zv7G)0L^hW`Yp)1s)HhYri&FFhfdlV+g(_4{ZCB#jigfCnR8%qPU8;ulN2tp`3z~`2 z_d6;Uh#Ff#6VZ2!tsseaGt-l#;c`KdEOjL*15i8(fdy|9=Ir+$RwEJb<=|pfsq|?q*gWb1Uc|u<1ALw- z`PsoS7~0Ku0+)ltc@@P(0e_8D2LB;(-_Nlp`1nbIZ5=ni1n`=&ZaQx2*!ppEufm(JKTfUl zx(0`trY>Reg;swMpxevp_ahkGABeZIi`fJQzOOsc+Frq)#obc(&K9U8+Isf1;VrJ& zk#Zls8e7hOURmz%?%o4cOryb0c$Zj13$HCf<)B!JrDw%->Vr!Hc-j4qc-i@|D=$YB zFXgFtQCkzuqn%)6U)h~Wjbc47TN2Hp2Euy!Y()ITw)AYJqYWk%-O7}7d+5cAdlPMs zsxD~(^)VOf*}EQ<4?ZHOY>DcIh^-r(ESy&?EK0=!g3fcxSk8%hX%{{#;Nw_XBG1tb z*o3=#?2?Zyx^_f?$$o=U(U`{s@HgzM6>RLZ4M;;O)H~W?c(Q#)mjt5V!gIY zhP)@0bwsM~;kLDTZKE*yUSvQyQ(NEIuokD_Y6Qd$;Nf}G#{CQ|N+2M-9GT8vgoU$s zF9qYi12(c$BVnf4Y`lo!cwM!F?b&vHX7DKF6p;}lU>E9ssw`itI-a5PhE$wx)D$yA zi_=}f$|Ex5b)^;Z8edmx6{dOd{`b&+L{mO3BWBRxPObjlCr25sl{xI+UDbI3-#F{g?~$`I?_FXG@}Ll4!}3e+NrfLt*ZX0 zeF{ed7(o1PsRB=sm1_^YVio&_b0!~FOr%^;Nl``HNONav0~s|Af{o@`U)hi0X07eG z&w^%)+(+)nDYwlNO$a6XZZlHBgd%)vs@g*aaonY~g7mO(s+Lp}K?@8Iqrndq$IDCN2ejx?Jg4y7A_+$H9+ld{QN3@JYZz9(kg>tGv?xZ1X&BoQH+*WTUxVXgfu z*w3&knr}U0bl<(CJgb}fAHSbnS#Epyxq{uT?-Dctmn-g5E}D?@sK0n~KLobV&f1WP zZL{NHyg~em?*3V2)EWj$z%+3QAqU&Lb1C0$a`kXkuxTAFEEIMaFXH9;D*ZTb(-&Xp zdqow#UFadTx&+DtX5M0CB}c6Hq?%a#LI%!E$@VTELmjWo8d_yd?l_j1=Pb{jFGuk* zH-(_5E3PVPU;W82mIf`XJ6~lwir**gaw8PzI41OtgcN^@}PeeQj z%IqJM=BJi(4X${I6X7zfN1V4g*U;6d=3K-7wCVN5Jw5K)uiQ*>wXyrv;B=a0yqxT6 z^OEjBa~`%9=qR*Rt`A17mM8fO^xh_SE0;}s>SiRDw=J4mHt(|&>KXCzn-SwaNH1_4 z^25{+HN|hZ{%q@fq_gYMP7D<8@Nwkk$TLgEmSD8+GshJ!jZ&NnP>7nB#!(jQz);AZ z{R5nw^mQI803?GHP5+{5bNZ*;!7NA;fjfa2on7X@3`BX06tn$wyBSrWDQ6`&2c<>? zWEUV;&CZANN@tU%_aX(9a{uN)RAq>Nz&Z@9&8}F>71rETjaQ5J|M>fJ-9SmqzUHVT zY&ZD{Pw0v$j6l@Bo?b4u05lt<1LcVWr<4^MSg6{acLU%yXP1D5)d`T*}K2V*UUFkCD4k(nAVofc= zne6F$q)p0Hfa?d``Pp&Dh{2=E=6R!-H5)J!66NR!Q_Q~L)BOW!yg#W(r<{$oU3{>& z;Vo^D-2<}MXVX=SZR$jQlnGA32F$%FqLKLX4qtfyB3^x>rx)AS9g*lXGBJhcEdId3 zRmwQk{Qbehij@Va2aaN8O;=xE7X{3D6byyuB)7vmXXu1tsA38XHSv?hW8h}Ne+f6| z6*p;m3fARftw6&JfR&m#@5YjHLy?}Bx*<$&kq?9H_IHJBcxlF+qPB~Zm6zHd0qNcE z3h9_4on}UI(%KsOdmz8>T_L|pkx#h`q2>tlE1t_mXFm?wWA6&>MnyZ#l14%xsD2bw zkIi|X%aYctP!^^dGASY)3<2}hoH4q^vnc{0M8NkKYK#&y!~s`yC`DK~lz_r!se-Lr zk}Ob>?2%AhElI@{-NFj<&n}93Ofr+mWemjc4?s_-Ulx(D!{cAJ_{Ib z)6$1b^LoD)@j@spW=C*~7QkA}cS4*qDAIDu5yusVoJ40I#6jK0^~mbFXbP@Iaqd0B-k}B@mj&a+yPiCpH|wP)6g*~YxCqOVjlQ>8fPH{xwa+_*ehB_8^CEO zD3?xwz2t*w1^7BR_cR+TSDSQ9nGgOC&mE$r&|U!>*Pype(X+|?YY-mep&oinP3tr3is*YEsy{L@HxZyK zqLZrQPNuvfYUWfu74X@3rmqVxV4V@q#1KMeQVAiu*dXYL7E<`afcxNLyJWz0(k02dT3+YOj|XW5Tk-vYs*c`K4C^UhB>*A-LCGWV;- zlsbUD0M-u8HTH)JBRJVW(oKbut^j@&(Z#CuF_ILEvJORPG= z15kEwkYnigd>aVYBLHR&U=~D5959;G0R%AcGN54WywDv{7ApftO=SLlJ1>x0xYTAh zQ4x516<(o@Ena}D`{x34djz&Sdi7w!K)p|5p}NikJXgOc#IOyKR3u-mgA zDX^jNXfPy{mjh?t+hA*40ovQ2t3H7@4|rpdA7QYW^^CJ)uy?X9>J)&TqlQjtViN(v zvB)Mz;|Hw9*KU!-m^i5*?VY)as}g4c?^J{gYD|ub!I8~mM|A?3yPQ*KIk>9C8?Ybd zjzy^3r3brDT#6KVqaj?Bw0z#E3^i`zO4x0EiFO1);_n{8=$m<>SG~~y&vdhv!AbU< zm)-E(@XFtwn>RdPsbz4Z#rNO*r}v6?J==_2-muTVo<;DZh<=3dqtyH{$LC*r+GAWP zVCM?<87y$ayY`^hh!(P|1qTdPc*A@5QeUi)u>;21(^*DaAzM)Rq`_w6`wCwI-=8$r zu|P*5^9BCk;b>qN-qxeXA^dD5ZhT-V;b%{?mbKdhhNp=27mgXM79|%3vx@Lkys>tb z&uA=S*+qv979qsIW_&+vtX*Un{Y7kB(YV28;QQ^y0KShKYx_OMfg<*J(J_PhDZg{QXD_;WJLfcfFMqLT)zMCzo+ zsDsg2@hJ|u_MpdjpqMojpXN<*_hJJvR@rHzt}}qJfl*)G&HyfkV+hU_z~oxst9v-G zyO=HVHP(lqiSz~-TS&Jf=DT#v$YHR);2r;}k+(1#W}WTL-MwwC%m@YG3Zhc{;;ABh z4#H}0Iqg9x&{EeEz?FQpuWnc1ad7EtEb^=zl7s@nMzjH)f6f4zEMDq5$e1BWm~q|! zm28!eYkCNB?Ey0`7$IDas^p+d#(-nS6{7@(&?*f@JCWRs$m1~YWX4q^g42?fEG=0C zPt5RF!i~>LHR*EO6{Id1^~^C-Th<=(7>A14UU)y!_(R)1Rm@iT>OLA6D`xNatv%;4 zjux|LinG1E*Y7lrp--~Cbu4ham=$>&H|0#=g9mNz=f0_ET)cRM8yZfb$jcjqdkdmJ z3>X!v?|8u;_D87fQ3K7s!2I4)wKjNeLdbF8P^pgj#$NFE9rLvbT1? zMTvrrpmJ#PYL$}9Q_S~^kct*xu2OT%w=k$fz#W==l}f~0>hP3nmq}>u_ghK)y1G>+ zp{;9FQjYmPDOtz@5=~vF5@+yLo;w4{Y)YGPta#V~|+zFsu*aIz`N)4H*=qtX7B1aTCI#iAsGJ3dt;er{Z z-fCpnZDwd`T(`}0QVt3PgdlUsW;{vHZx)#G42_I_o;iw$9dib-n^EzR}I56lbtPI#{we z+?gzL!uzm!(C|ZN!&=rQj8NDm!BRf?abJUTt94)FXJ26DW;{nfdE>6TZiI^5K=?7h zPa#Kui z9D-QOT@1_eX77vj?SY1wEbw7gQa6*`#4agPwtIhF9}jFs${-6h&YbZk_SJV>xn zv`yrZ#b7*)c#^zJ;1%*7zqrg~#%mWAR(oMOZl)~G(Oqf=4gZyePmFp_s^l4FvVb2n z0^vo-a7tweTJ9x-MsN`&o>qxDx?{(nk<&=YXU*j5TszN(|7IR!hQSldNp#>pA%vK@ zMdh2l*XmmX+fn(Cv&wBVLpPDrrScK@TJnPMcGD`~%qxGvOmS8|&_R{Iq>_^=A3Q)A zUR4=vmCrd$iC0vjqw+H*Dfz0IoT~EY^~zs2bBoF+ynk80E6|L}m$1+SG$v5_?0P7w z#Wv-mPQSs+B)oZx$*2Ws==8**KgK4#f;MSNm?l-xNZCy(S!RkLv)lX2`tCqNv~kVRU|?DOmuTAvr083jKB-i!4Q26ppmZ|V?J zVWGcXEMKe)buQ%v254Wa-_(=9j^8)HSQ&P%IVxpZ{kpcqL%aI$y#!mW`tGm4FVWh! z3!hP|nEE`u9t(L_PiQ5n<>>n zt?7+2fwEx50u5!G%8N*#@Py~}G;&1NiQBZXv|Z)Q5{+eiPUJeM=XyZpLf9tj$zJ7P z&x|)ksd2qjvno}rm(qILcuN!;(~GsKVq$w?W*tjclxlTMsBC^Ya?O0v6;Ul;hsq~3 zrOX)f3aZOjEZ6ewR`~*Ij+lsZD4*Fy{VHRYm>OoT*ov5jH(+KHvvdfq!dRUKFiroE z4SD)!mi*jTLCX`#OiM*LZzb3qOA&xf#iaRWeq#u0C9fFjlx52}e{yPQ3^)!v$n49|K4oH&YkW6RcJb zSVNt?c7^8kQTL2i_y8;bHz?yVl`-TDk-&Vfoxcq$|8XoU>{gFq{zgNjBqk#Y?AaE zS-j9b$V|D)fr)%j2MxAw5e9X(N-uEnf*mxBG0K&za^>g_tb>N{C?$uJlj-CP(SDMW zi&Qdq+l2%UA5n<)7bvk*B?btZj=>P>J&Tbv$4sggr)sK|F)6z#>%Cd;wf2vwnUx=z z_ReJULl5gAm$wv8?~^l67<8svm|Krnr(Nxcl}-2h*t0ND+IS0&VUrBhLlZ@YiHzY~ z3%!6!DX52avcvoUN+km_Vu#99=#mMNTb8j2`T;FhEiMJ+l0Yt1@#dB`#(r`?^a3hV zu1%U{Y`}}%d_X1p>!mFEIc(&QtIs+0s;8j$W26%qQi-MY2WZHT6sgzutf7-Dz?lIesHs1p(xmZXUQbnTea<9`id{E`XUP+1(p`~H$ zY1)CGRH?aoDjG1`pe^{2N-q%ULNHMc_!ZiYpHi8EA`=Nbj175*kT|9i!}Yd@&=GDM zF;lz;k>?qeXBrOqT>Zxm8DmH}tWtcCO&&t?j^pbQ^%W8eWG_*5XcUYIq>ii9g8JlV z02%w*DP%gTGUefP)VXY_8B?c*vDN31;aI8+kk-~*L5AZhLt*_^{(=%7r|gFUvN zkOzv*36-nNYCu!pWevn!BaF-^w9KY@HYqS2V__qT%#$kfoceS@*cdA^s*(Ss%0Ejq zi)$n`#!8JE2&AIZDoZx9n1lDV)0B4BOfzL*u8w2AsCP5K z&zY%9TNR7d1v`ITiM-q)iyh$f)44*H6>6H=~9;#?vw1|AH- zrO2SKq=VAKDxHqjnjw*O6dd%G?W3$ksj@CpYtx`__EVI#RArrMN7Zu99iW_ZR8ATd zram2BWo>-x_eG9VuBghDr{xkk%Eu{3Oy$UTS^ZN1T!deG5A%d6i10zOgp4 zLEqv5N`Jpf=j+H#o;T3Pvv<~`if09Z!sAOHc z0-4+jSBafGrqrpjtb%7ea@$0_S(m6f_oS27Ix-Zw@$wy7NO#8OZ34f^glNvYda zDs?CqN8#KfALJeM-FcQWJ)kmC3(8Emj34x^zCh{CD%~W(1w-GO>~f^GsZ?6%#Qr(x zt1Y6mgi0%PkGR{elzvlfJ&DLc!J5~b3+{=Jg#z39mEzj=-afJ(uPzT z4N|3gkdFim`nEhkx%R4DR0R^)niAcEzNSe^+@}%=UcAyg=)3m;V(x%SD?*xe+htAO z`!5j2L6z_SviJ5eZKZj-pnY<18J98sHc&uef(ax*#RO8JZk&QtoC%dU2??Z&?xL!k z#OXTKA$-&2(NJZ2huLAancMU%BQX-AM!NjLXt^4+%ScEUsnK4f<*xW6t7SEeE>~hD zR?F4U5?90MGP>04^Lx)ZuaDuxc2d)StkhWMIX>_6d%r(^@3$j`Cl}uzZV_jSb11r# zb`gga;7<>THhqf5y4Oh;Kg&G}+6<>rBbPGKmJq)n&oj z+W)DaOy;=>1&TC93|Ujv`Z(I35TDf&XMuBQEHag&PDUogFPn(F$hoS0IJ=Xk_oV38WVX%CsA%BS2jl>>(MIDsneK2? z3XrP%sdJqPF~{hqVzSF=6mu$#Hc=(STw^U!_Bf>!6j|e9I{iuAKOyGf25(60a|tRh z8VR*_aNu5U@D4bS%IGOxeM0o$u5AzxIk5!9SD(n65DSg1q*onr0kZkDKAsRujEiLR zF(*X>x z_hco+TH`L6=W%n=kl59<2{C9~48Y96&8Yo*MZ7l}56B)5=aOQe>31c>CS3XqMj>ZV zcr*;eb;wvvloC#%sAH6r?pH!=F&c^J=R{HiIg#ffrMs38!$yB4_yNwRSYUj)&T2I_ zl6}?OoQeZmyGs#GWicT}j2pzMxyzJ<>k{;&(GIE~}D zVHW3RxpLKp5g82J=aA|*!p$7v7Xw56%3y-hU;T~4kHP&>&UsgV_Y1!W0Ji%5e+*@b zOV}wuYX6xHbBVuMuY#rHoZ`k&5jvXV3@&nlRTG@&qNBsqc7tnYv&Nii&?Y&}2bvoB zsfj;_YkokT;?x3NDvQ>6qeR?k&Lv;!ME`;@PP`e;^CWp{$}4D^WgP5a8^}XMxk=o@_xDEK!@Uv)C zgu37F)(Gu!Aq#6x`EZv!8?^oYwuZdV$u7NtLv>Zb>ier2p#xP&v#KDk#DP@>hpLHo z>M>qIQ;$cg(R&`Huni4hzdSYMY-%APEE)aGl4H(v%1rgFY}V)t%f?1VGk&0IVOW^T zhR86JkPudk!D6Ih4mZsuQ!L3Q!&PIL40E}ml@FjX^EG1!ndfnHTGz_$l|`RF-r7f%Q;jT2;0$PKV#k{$g@`86SI8fVD3 zgd4jwBV5!%--UxsrsiZQLeGfKx;^jwtLHkLi6ie}4wilMr@| zttEI}%U|awi!Li931QFJNt7U`;5tD%!6G5-8znMnk|qSK2rof%+{z`26$z@5W6z>P&oS!w9Ctdh34(->BkYn35zfz5_~d-9a72b} z+z|8PbbI5#y=URC6GEQgp=!T_8~YUF)829j!BTjulT+1zaOxvzK*Go~4~R#IkVF@k za442DorJA#O$dcT7x^H{NtPQ>Hp9=JVdO6%ln6s)8snz9%#@}J5*YiRB||CIkR8vL z5CXyqIo{0;%_K=3frL;ktdn3LHxp?nF(K3nJM?~tzt88rU!|9b`GaGk#5o1JlF~tz zDHN-XLK8K%Bb2N{_32S6J#!acg<$6y7(-RBjFdygU ze3@862n(Ck<(}YXUKC56dyKHiVw2jPNltX@9Yl~2T7_UG8l5T5%THcu%_{kX5E0_% z(85o1Nm#3B~G=0s<|CHAxJ__6&TB$QJBhL2Uw{&uv>5td4-d6`AyCVp-(6w!&Po* z)!xsX5Qce1&l19j&_e7D&UUq)z9Bgwj0%w|MA}PE zLrlos5cyK$gfJ#ViLuEU@PG0)V&v5!a%YPhTkid&y+@w&O9%=|%K&Ele((DG_Ik5o`uQ{v1+Ei=fOWFw7#ao&-Z*T{LK@+yqBzXig=(+*)LgIuD-C4P zT&+W`Tr`Kx3mXKB%*xZUBAn&cH0sGdCbT$NszfW*#-%(OspQ150m_^#=Fy6E=!zvL zk+FkE5i8V+b#gIRQkT|v@o#0PYPB+5Tqbn^<%Z%wP)m+-GL$xTQ4vqRkd_+bR9BL! z@yp-IereIlNL(hD&(Lz)!&+uHXIi!MrUoIdtd8!`vimrjF93g{ox3#%|5o-*L@PC< zE0vtaH3)w#OSNgG;#^AJhsMS+c_5-%>IkRi)0hc5#OjDE=XYuOqnvM&bpuY5w6rl! zbDSDl;}YFhCYq8J)HoM;OPQeM#6GRn6P#z&&ed}Akd{2j$(H1_EvLq{)G1CSdwGk% z$s=0wG$-46BdZJva)GfclbYboa0!z9DOZ-YV#{1i zb%pdS3~h2(R@j&#l6z-eOI_zwJK4)r zL?wQ?z=l>}g9{X#6gcInms-J>T<~oYWaCVr*63$Z+^#+VQ z$TEjonLRG^jz&gNur$rVKghECTG@RrTlDJLR&0n>+&$9D9&lN<^MK}4d2|`6YEX5v zLr%16`mQg(6WqI7418y-DYYKl-MuSa&tHr zH@x%3teSW)(Xw+nTka#gGR8exsXQ)~%iNHw!BM46t=3WR92gyMsYgi7D^GzIE!EGd zeE0pd;(_`1=PB)#t!)8Ld`p=;fb2+CfN7+Q4MCHMdw83cQB92p&bX;PnX-4Bpmb}5qt|XZ+s^T7M)XKc%G8TEpIVDay zwbV^c&E+eMc!YFmnOmHh!=|=4E3Rd2t1NjN;XFHeVHR7&x^URjjC}NhywM-itk{$M zn?~A;x5K37vG2i5!^4VEtPZ25yWHpuIxrY__K?6Hf18W2$yXf0EI<MSxN5*KG-EE(@iSzjLBO&67@1)8KW=_zUPSEtp`mO+iJUW-{=(vi zu?BcJhw*VFUfmg-c!syz4e)Jl@~s>t-3^#8$m4Hw*ok=vTb$lI_mW^rAFVY0t_!_zKt9BxOjhS^$ zdgV?;BX*00I4utw7UlJ6ic1a{w{YXPX%nK{Si+kjwnIP6O|3U+T?RH6{A94F7rrcn zY%4d-yGh%lvBU4l5S?eHY$S|ubGvNLyXA18ksYMe#wq5Tv`G|4HR2GrGcB;agBzvY z%NPZ}>> z@WwdLq2;kTJmTztGtN0Fb}yy;v9+2 zas#mi#3@dsEI^ZElm((NndT<>*z5WNeOiimR!`Cvbj+A@LJoF_4m~y)iYM`UmcOQx zWU!}3BQ^{3Id1N`nY{ljIW1r?{OuxW^ZK;p;J)GSRzX`(X>~TGccS$4e=WLK>QTKd za>856@%pHt=ju@-E^!mHdP+Ww7RhLt8=acC1*P#K>|NoMw`tvla;+as=ih_rDmS%i z?^1>FB(-sC+&E7*R(tN^Zx+aWotv|s2u90VZ_u*Fbu!%GhH`g8b1^6=J4AWODYPy- z*-K)}E4Rplo18&wBa`U>8}cZ4Til$Mo1a{vc}P}lb4qe57~-8IzLPZL%Vb~{BDq~| z#uviCC`Lwm+=#8NVGC%;%J+~a``nDJk-_T`5;@?nJy?>&>IPQuKZ-to{urmMgLgzx za>#iWw8zAwvrEL^c!FrGkGSF6NkfWoKbanL(_DU470habXoii~NLfH*R%eoLjKb#3 z5DDdQ1N+HKov5so{7aVdY{MNo9XIPwy;brjgygs8^JlMuoGh01o^|m z4f0Q1NR$xEr%1GrGv3ym6^-qc^JH4WO&uCjxwcM-m21TDbB;~JL1m4dl{-WTZ~~m* zbs=_C9+PP`H+@UF90r>y9rZA&k(-oZeZ13{fV@lrmWS%jd2R2=F&`fUiGH4)A%pm8O(GC|gyNJC?mjB5E89cr>?AR3^i)#F-}jv zOgMzUq?aTvm3EnMQ>aNJ)XjygDN3N~v6fJahTX^67L86QhLk{uLtzbhh?C#es)(x1 zt)W&8InK!zjiM(0T<&gmg}OA{5zfUyiW==wRL|gwgd!UHD5vK$x<=U)8`;e>InJ3TMTHcb6k;?K)et8*G5@4SDTWk@SSY5EnB)>~YZXkf zMPW-JNyDDvY=?%e=$l-oJJhX_ndUM!jSQ)uT%a%1rxBRp0tf`x4VgA7h81rOg@!Z| zvs|K3E0I)ANo(V>@laeNJI7_=y`*befsxRNMqr)`AP%^IqPlWNMnj_-nFTK6*2wVM zJL$Kv(3nPSk&D?iVyt>jij0TGH6lw~MC%f-?~`H^p$U!HG8Zd2=@M6adDtdHlN!+# zF6z;WCbeKLHx-)F$gOfYWNM}q^GrP*n${54I8kIOuvjb?*V)jlhPBRFxT-islUA#O zna~XJ(Hq#{TpVnu)t*)ATxd?AzT{MQQi0Pb(xS4gWKR8p@Nl?5;hp#_c9 zmMW!gb@;X59jc?P4%@1UcB{i!9c^{kQH|;fUUiich9?e5P2c5ItM(R87&nr7v!@zA zX+|^|*wIECXQt2GG@8vXF$95ge0RhR-_`$Agv0-wH(Q1Vp*Rg<;WqNI(q%D<&>@*M zxU~X@x1vdpJ|{D_qsR~z93UKUg8gRe3+&)drT9TP5~r5cj;w%F{ZeZ^I?ugs*_9E zl2WV;aDm(pb2S28T)>+uko2GGQr?Go8o?+Rv}j5Q54__;hlU*Enu-mHY`}w@TDhyU|Nj?e?iA+G@A&5>>lHs!^Slh9-DVSoqDzB~-O>ZhU(2^#?P= z7*QEP$LX5XVi#F9+P}81N%&DNqN;%wgNgB2kd=%###yIyK#ReAiayTiDGH#)U^zvd z;8Y#$&tkBi5}4!yCsjX-!FGy0#o4*ZI^WWI#?F{W*N!w%G0nNE@?bGIPuV!bS+sCO zQ@dL1ZbtTe=%Ks?m0*@rv1CTCqP5t)Or-F`LPcbbi(nDVsXEtUFJSzV4@(sOyvmmc z_czbXoVmH3Yu=KZR-?FyrnR)vQ1|MJsDtXt1!fJd1+07JKBFrh%3+I~sFMeS#8^@p z!DNP#GoCg>Epyf>eOxd9t#Eo8Wn3>Ou5!VXnz&wOT;psVHC!()JD}y&eyt;)V}pH=_Z$Xwd!p#$oW<4))tq0h2Cv3$T?Okw9SQ1R-YDw zoL?Cm1!9LYPgI{4Ls7Dzfw;?w$)Z@CWUwbFmn!QC?&vWX#H#=9EB_fBN5D=DH9h?) zEe$XkoH#P{=}+15@ATuz4dQN}VRq#I^FROdx4(jPu)rXmhj#%l{-ClHj=I9J8SS~V% zkKnBN<`Aw|L6dGWJTg4N#Xpc+79xf#@pmAHWBcF2K+)&n>z^2eJ7|U+&7^Z4L+6y= z-=OzqsCFmbe?;$b3~1qr_bv3k0NUG$_cvPcz6^@niT4lbeHC;y{vN9pfBd;}BgmbL z(9u+rClSLZBZ{YKB|R+||D5L54T2j!uVp-=m|v5p8s3Qw$DYF!+GLQM7OJKX+3{@y z_hbDZJ;#3QSU*;kA*79*NoT1uN3O>)Jp!IA0U83{#A)2ZmSOB&rQ;11`{?QwL`8@* zX+=M?u)Sw6`dq_8#I$f$vC881-TyK^p!gP6BDTVuT%eMfm8nETUMnZ!6b9LCZY#E8 zD+hUZAbXH!uVB293vh2Rn@^LQG2+O{JUt!^3}doCD&E2{qiXu3g|cRjNOwwM{@q|$ zJA>Px;uj4uQO&fs_)S~}Tu-IG1z+=chg~xviT@}+bc+`DaHdbR$`3>0f0ZBN;yyC- zcgX1@qFsJ9DmvMNaZGf}M&qIfmwbVAW&&emw^&7jESdSP0#B3jy;o1t=a}Cut>2?OTvJNII=cgKKZPK|67GmO#ER)6>f|;X=Ek|LVjW;xAwj0xA zjNIMOWRsrjcmyjbyL;p@NZm_8oAswHSm^8DKb=?jn02%vWRpI86Bp&lALi}Oh8COj z`I}jybl)@kG|~{ZNq_ccj?e@p8#BXTG`Tb+4N2_Z<;(JFvE~34VO0!Xx^ggZD28)rJ2 zrX>#z?_TP#NuRt)&`ykKk!`)f1|=i3%WDs|E_K?ZAHBKlG=8EEhv+)6eyPhQJ^X$S z=vusdDQc7chc~g9`nH;k&TOy0NN@Uko)0v)W5!eY(VMnT=?&J?x@AbP#ilctVm4{` zO+2I>Zz10dNxi|~=dJDG2>Ju958E?%W4OO(9h2{)+Y0-rg@lWgO{l_Vuh@CsF$9HBs6P>^`kcFX7+BRuJeM;1N~n&e*SwM ztv7mySL(-X()-!lr7rv;TZR|w$8FN(*ARvhge&Ek>|FhXP5NQ>vaec;K@rs-d_RKI zh;jS|;!1g%uAj6?bJ^Sfs`Vpe{~KnH{!4292%IPgDOFrxtbWQS{a*H7)jQ;e;#88P zeo3mIwn>fITc*+RqV+R2>0iH&XmW_3qN(8`FZVcU>`RGn3auCn*0(YxOJ1B4xYYD& zX0SCmBOB=NiPX>9q+h<4r%pD^zZHKq)z8_aKYeX~QP1tS7FU7#d7JbnukEMbntvSi z3$GbRd<6Hm=BMM}qD>lqojCff_AGXSOE&4}Z{(fdQh#DCxNMXD=#6|tiS{qr@0t&; z*raE#;8eRS`3_@jG~NXy+Dt#@zUn+mSJX2r?- zDHFl9jQY5?(N`C#{?;;iJh*O?{`hs`4U4LNYrcsEH!^nXQ=>;dy;Iw{`mNOAZNZnX zSr^d4wclDig@T(l>0f1^YT9)_52Z#_{F`~Qh51kafpb4Q{Cdn7~M+kDR*An&p243jcIf_Qx4cuoEh$Yj5_>;-GdE{ z7Y|;`_bGcMWUEivn(T!PHs)PCv`Ih6K3Pxhu^=Z>;{(pU|M|oA2M@yShwmNPq_)?x zT)PEC_Wp?|K_qRxcWjgHXK!uFns`_$$MebNY4ts0zVzelZKV+uWit(r=k)qDNnmsZ z=Yj|3-^9j$u&G}fc`q+tcOvB# zm5O?NEV+Byw%B`){MV^9$u_pphO8Uze9x0F4ZKeHaYQa1g8O|VA@p8hzVw%`;jrFj zALfbd+twi|`((pVg>+O`lCL|7^ooR%+x$Chwsf^U;c(I)A>@nthmQAWq&3 zMmC)oS{$rjuM6Z$9obu#vh|E?Os#QxhgF{r)-Tjm=S%IcYjrZzueN!zt~Ot4$lm7U zC@0n!zgDrSc${u*bEvK{Uw3r-k<>pp6n#$fPdKyZNsKC*W_1HRVhwYfX~&jhbxrxY zwY9Frni`0cY*814DO^%xT{vHNbXZrEp9nyH zdeb4PKwWFT6w%2%x=t!{mgytFQy0nCRU6rW58Y3E3!_1?{$};6;>>Y67&O+kt2d365PKLSy-q)gd_5EfyV+rv^uBrF`j;dpI# zzH~7Q!Dg*svAmKt9o27FUS(Zc&mGi^2(KnO6K?ma9j}CsxoLarGoG*p45Yt+doXDXVTfDH6 zuRGzc6(N_kzqu9l%p0>8R`mQ~vsnuN)rX@pOIj~%=1VO)iI-wYx`XMN zHBA?`@})1*T0=tw{L(TKIyC^5Hg?bx>M6Xiov%Byob;^R-BV9_Cuh_SRPKcx{XCWw zM)azZn1&q20AWARWGtA+=XdpW-J~6_JE?qdelK6@NgH$eSGACb-f$MVXY>5Neh(uV zj+1vM$SKy-vvmF-U+PWkUm6!xrg7yvAlQ18@8jQ|sq=^Wx>?f0r(9(zHh%snU;1A% zdRH@wsVtt6D>qE+kkRX{WO~C?IWf2!J%5}pefQcvr%=Db*YOv<%rM=`PMyY8>hGx- z&PEo)Dp@l1T!Cmx#7T`GKdnA*w7*^){Qo)lCo({9@N)Yn_kMa%onx2oX2=IvPk!>E z7m5j;cpeP)^z_VE=h}70CpE>1-)gCzev5;7$|1v4rLc7BpR# z2D_uZJ^t$IEaH;iqo7_yMAk_?j_O*w?n~~I(RCR3`smB(iyzC;@O4j4bubHu zNwK9pT=#Ha%>e3PHck3<&rwyQUANns;;@`}DPGno4ZBrMcBwvXdQ$qUS^-_^K%pOA zuL{|9*W@Mrz;^W!Ii*(1e(hqX1E=st&vE+!VK@ z`PCPjvEa2-b!N)Bx;8N3#;UH&@fnHJpck$Ol-ChgS4Hj8g|s=8-}uHHDXEHOs^eaH zpB%HmQ6<@RhqJViq-aI=qc395nN&_yccw<+6?ft>@x60>nJPv_{FS+8^W2bKcg1yz zzrU28KfNC3ugLNAqm@0Y=i+uLo<0TmZH3xvBFOH`>J9;AtH|Y3TSX%G**HRnx*hEE z&o5~XI@2%%17l7P)@%YwS z<)mGAVj>x9Y8*f>O3q@ZbWM|1rd=1jSUF|aT?wG;mZn$qCXUTiPTO@icxfH`3Y&sI zVz)0NFVT8BIVNv?y32BR#yRxV^}P)HaH6npxk{Y-xvJ`OBq zYEUS^>}oO=x`V)yU3c_6nT#Z$sR@R61Iu>Zxs8(|%3USQovpx1CM|{B(cbXFrTg~`i+aBY+i0)lB0pmEV@=n2l?^%Oga+S$|j85T_)5L*v=vg@}Y7j(-_#v zCSJZwUS!0?ssp>36cd&~xEPai1opBhV7!2*RCL3}z<#FMMRoGzB}&ZkgNlPJVuxQB z#bkCX4zq|I3^Y?-V|(S8*jB|+R$|G^ADGxi#c>v;o2E_Znk*)=T48i#=z=3sPG3~R zgcmDvvJjR#2rNMR^e-XqI|nks4?8Pr!e#4icMAOjPttq3|YD9jo$b$o(} z`YRe88Jaq^oeML^hNQfTrc5D&h|nkilUP3+$s!xdcjhpGm9uS*45KhevAaDlXbvgX zPxnJGxy7>`nc|-0_zj9oXzpyMBf}6J31J8h^~ivF*`|88BeP=qY*!XJ?4%V;bmD9@ z8!y9kP5g|Wjb%{~$h{PA4xN=88Adymkm9aS3M_Qe6bq!Y-Hr?$!BZBnPj#%Iy;i3%Sj8EVC~sahwfo0 zDO#Jl_F&k5b}WlLbn+%D=91^^c&6F|$-+g^W8~}0hI7wOWKq<(thz33__%yBOE+7d zJVCT7S9vl29+XdI(d3hxvTTZncgv@je|kWtofxEJ_bimpWs%0*Ld_8Qa98ySGg{lIaFJ|oJ9uG9r7Rcm#<_I8Ja@uDPPUhj-!N7my3>^ zVE)T3U&}(PVIo+oDQ|B&@ULf4nUjpBJH6}Q$U-4hgi;j3E&t0bLq!>ug=)jUnMqkd zM5xPMkZ(^cWm@rXy`KDuRZI*1?JTmF>ORdBGH=iNcd|$fh{+d1F_|gX^Y3Mmlu2nO6!-6E;Z1%WB$Mg(A7oJ{D0X|c(O9pKT{)R{RJNe zOzzfu!|61?KgXFtmkGZZ80wG7QP1_|VTV80nW4ugcQ|ocB@20uKhK##K}RyF)8n#p z+DYcaGKVw!>Gh<%GRM4I=E>w=I4^sd`FFFd(3!c1dg2mPCb?c#;>_IBQYBNG^_4Qe zGjrcg73GckVp$-IxYdkXUrNo+GiBAUCtsf`KVDXwMcQcGPZf`s1)Z7u+cf`2s;Sb; z=`L$@X6~?kbmw8~4VEgMWlhe^y(x7{o2`ata*?u-GjqQleRTQ$1SZo`*5b@OM#1{^ z!*bQ$SQgGsf@{jvWv$uyOTJ@+`KzQXlASB+?(1PkSz8vau!WGc%AUEBQ`V71{!i}v z#ITS$?0@ubXBHk*u1aQ(?Z4aQl&+^8zY2fd`@E+=*8gxY{yfH=m0hKU++BFoJ3CNySM_9i9ysJEm z`1*@fD|&j>)p93~hpQNFdbist^}SAjC<=!ptl9cL{y8q~b4riXI!mezxt0BHOl+b& zxr=tEbjX=ueT8P@Y`=~T>!tBbt(SJQZ2#~|>4-DKj3x=F`(wXf_-0E-of$N+lxzCr z#G5D`%T(5x7oR=DTquc1L#5-HlodroWXr+X0xKriRXX9!FvzV4a@F#YG$7Ft%017A zx?jlsnn>wnrdIBxEn4wl=~Si~MiIaFOfIjIr*t}Fvd0E-+Vg1csnQ>-VW~8{m zRN`mRq346LA0G~4JcLEoZpmzxk%e0g$pRi{+R$#5%w=kB6`v@!C?QxYnRjLwolBLI z9c`Be<<>`9Dp|;+w<#8!l$wEW*Z0mYljL-X`0D@biw%_g#hFS+eTXJ=`-HdgaKQHw;Z{$y%mj$M>S>w5p9I>&^@d zL%Dc{ZIu3!4QGa>RNSi6wR`E;QstGrbV{G5ZHH8a><#1axOg*D*4Aj}*je$Ia`uq4 zUA*PYFtezUqYc-z1zDC|Dc;W1>M8qJX*Da!q{dl~G*i5jsbGEd9LIl>Y|ljTu2c7T z3{5_avK!NqXX)L0hV$e}`VFHsUcBd&V(Aku`hqQaZSVPhPD#c4PU&eTr{t>R`?=In zeBjjGrJWLyDAV81nQ-x8CglqqB+B>S&z)fLk!}a!Mn7HtjL=X~o7nxh}o&8*1LAfuHd3 zMefTXM429}r_bU$c`m(!gsCi2r>Jd6dh!!>dwK7rV5Ij6J2t)NF)dBQVtJHZoT9GM zzs~+>6G>`)$KjHGdOB=mS&F+^_K04~@xVJCm-OXn$8Yrv;()G5&r|7{6zd;gyTmEZ zF7vZCu?GUDn%AFNs@k3^s#&IbDNy)Mp-b=V74IDl|6?H2n{rF3!prb<`RL)Q*gM-4bOK(7r%rKrV?{GXJvs>8e(%TP=NsRE< zs4WK`h1)ZGw`a33;?h&6PFkarNqXiA+gy6RjMgwO8B`yz*^Qp5!VcXqQVrXVo641K zoGIt;jTLt4HYLP{jH09Ic&)pz%Oy#t^APtJbf3oq=t$#oDcB;PQI52IL#3;$FzV9V z=+rtOkKW6>venVZ^ckqFFy_)bHj56BOWO0Gr)N+Ne|q~`3Z+a@q1_7ceWM~+*sU8C zZ*tbTr?AhZcP4e@z8n!)43nHn*2x9bQZ@3^rscL$?_wR*y40ILf)@jNRpVa4kW246 zkZe7b+M^h(|9&1!wQZ#!?$Vne!i^Zck9(s1Ptg!yZ05y)vR<>lJ31&2Buy5Kxb)^^ zKe`!_Zyba2@gkYd@R z+`c}F_DgD^(MjG6HF2z9+@-fG?}X**IS@((q?hC!1rsj41w)bhpR1FDEOL}-(m=ta zOK(~S^o{}O_Dpxst_oHbM*0h;TvEm9_>kqG21cLXKy%ddyP`R-J}vI%)Ekm-M+%j=x|TJggfJ83v&w=boIPQ{DjLn1&g}&(T<7d2(n_Iv0%xi zHwAn*Hu%$?{-4~X2KaGL|E->$r?Ll*eapHbqI{0C1lX=QnR(<}(T(%_m?^>*E17iY zTh%4qLWA7XAD2l7zBQLrdOBg4hM@#x-?y&Yw9++p(i3Ea*uYN)dwOLH_k0_=DGl`@ z{^WTKCl|`RUEfPx-=$c#|{oB4R7v{_>zV5APL=S9$Duv_)X-XH2 zl?G*b08aA4crLFswtU+z-I-{)^Oi=kdDFM!!gM=xTBjP%f183iR4Iq)9Hw%4OKLl1!Z*6cc`0;xc!22 zniqUW)PW)E^lrV1mecCL#xPx*4) zXtr4V>U7RDvDESmMGf6d^_J#IU!EHc50li*jXd9xBC1MF_#E!E>B*%uPL2CKZd5HS zLUooB(t>BXl&P+a`3l{LP9|{abb_*+o;)FO)K}ux>+!aq;5Co<{BATx%-V+2)}B26 zD((xo^%|A-lf>pBU$qXTHNT^u&B@(T!9{gWBEukp<$^`UziHQX+NjZnmc^0 zY4ZcOlpX)q=8L={Kcw=SBfhpY`7-?IVY{-)fLdoNbFID(x8A6s4z)S#>r7uV`L%^q z_b7M$g@;k)m-xEeST;ma*q{@Ino3ZuwU}6;FY1Qw#Kd$8%?UBqsbF#*U(Ag`M<%CJ zDo)5DMtXh{V}cH!lrEE=5M&~GzV39ngV$@UE0yc(bE9j|vXV}<&PunYf@9+vIliHE ze$taM`r_$|!oyn_eWeUQtEizCYQ^tW;m4%E-Y@=yyI>(kxW9T-cOZ)PgcDX*}K4Ea@jkXrf{^UxTo zdT@N|3+DWYcRpRLtIN&ER>qHe7t&d+TMmJ&LJQ!~UF^{%DKNIEA&ba~g)=@_Ty`zgM|-i>rg zBM-M~mJJ8JFVp2D@;_-9Tb|8yG#c-w>6;DD7PaauHgt-kGP=L&*-jV3sS^(alb)S) znK+d_;n__`Ruhk{3mJ%e_R{6G6!MT~Kb@ah6~;a)uVr)4=s8a3ao*I(Q6jmGo-}GpDm&)R@uX=2_;3~~#esl3*ONvy)N=jqJWtv> zovqK2HD$_p2QG(4Z?FWT*Pq`A-)!l))BgG0aQhGLJ-Ge(NB8b@MDG3oV@kIkZn-=j zy{*k!xsUGMZGUj@&i$6V;X5h9o328S-kN5u@QnwpkHQaA#9q2eC~T)RJ*}A5j~gz( z=Xs(3p96GP`tSb#E(U%V1HX%b-^IZ1V&Hc%@Vgjz-5BW3d)r`L^@+xHhuPXuAQ~lL z3>X8(fl=TXunRZ|>;$d=JAiw@HlU|aG)90yU@Nc%7zVZhTYz1_5U?BA1RMi40;hmM z;2f|PxCyKV?g9hA1E3#x3@icW6^X_|U?I>03;-R#Ffb3;3Csm{19O0*KqGJgcx*RY z*MLXB!goaDAus?u0JZ}6fs4RB;0ACPxCh(;9s#$3o?_9s1q=c=fnnfFUa7fXl#b;1ci{xCqQE5seE#KX4w{2%H190%w7pz!{(foCd~$Q@}Cc zBya{e0bBx(1J{6Kz%Ae?a2GfNJOajno>I{`1PlWEfDvFfunQ;whk!BQ1TYGm1$F^f zfStf~UnIbd!%(jVvn&H(+uX<#jI3fKgk1creVz&7AGunRZ_TmX&& z*MTFzEnpnD3mgI-0Q-Q)z;0mfS)@PE1B?Ovz$ma5*ad6?b^^n|4qzLw4cG;Y03~26 za0nO%jsjbN6TlE~8rTG!12zH|fkEI3uok!utOjlZ1Hc`iA9w&P0UiMhfq4~3f1n@e z0M-KYfK9+$U>KMKYy%pBUBF`-{0BS&4gn8=qrd~;1aKcX4cr6H0e69mz#ZT!a2vP* z+yZU^H-Wprm%szy2GAHl`U4%nHDEPx71#(|0k!~_ff3*ma1^)*oCYoc=YaFTMc^E8 z1vm@b0L}onfYZQT;1uuxI0-xkP5^T&k^Vpra17`NjskPlF!ut|A6N)n1~vhgfUUqqU?*?^C;{hzao`+q5;zN-1WEO7dQ{x0j>hKfm^^W;304mn0FEB4{QW(06T%}z;WOj&=W-Z1O31iU@dSN z*a%z#hJcH}HsAs<2Al`RfpfqK;4E+oI0KvqP6O9~Q@|bIB=8tG0d&+O{ec1C7_bRA z3XA|pfKgx^C;^9nW57P(G_V^u2b6$|z!-1^7zG{zyMUfcNPl1u*a7SSwgIES2(S;> z3LF83fiu7s;4&}-Tn9D*w}6enU0@J+1gr&m8j$|LATR)o0R6yDUc{lw!Y^O-5q~L^T8{FC`=VJCg$A)+`PK+uiZw!kPyox! zrYcjp02C_(t7%CP?g|xRxloC(iuA1gP46>)omp@+_Q>`Z!`|e#!8GC)EP_pN3TF7z zjA!lFg5T_8b_+L5f?z__SqrKJ(P9?tf+$#FDt}Etd`*P(PWhcQx0w(lPN5WXCfMT? z?SdDvQ=anXiclbW1-tbbqTh{=MW_?aLX}VtHsbQ)SHdm9B)ah}6Fw0HM49Ek2zHD2 zzHnVA60O2jq2jwzlgV-)p%4WTvc-baTqJl!^FKQ66=D(m2NQ$>;r*{pTZP4vDrvtj z+!8G?MHs{zwol*(n@|Z`itxKZEVGiC8GbHCYL>#yauLyLX%@>0It1YnbJi+4MNzyA z(Hh~Zcm;S>yox9>3s%ejCDaS`=35ZAS*-YPw_AnF@Myi@7Ox9;#4__BoTi9XBhX5j zhCZUzLV@{k zzeiCkpe$r6`%W;`eqY!F1}UEvy%MMQxt`X|9! zfv0w%88yuVo%dH^0fk@Gn3kzhW}9$LD0W+fyC_0dWbLa|2oYy)R9H7nUg5HM7yiC$ zLjH7qCEP^XT}J*bLeabmKNXp-qqxSl86Pwc5YPl+WhFCV+N`)GeQP4VJ z`cwQWL%}(3`a0$PU!n%7L&mWNGvve zCRQO_NJx~(0{H9}GWQq4pNJnr9?6P$`9%C!xGq{PmrdpNHmVv>k%4|5x$}nj2zddu zh~)|@u+oa3Q&5rScJsCWX0^OPm0%a$RMiU=|5)byS}3sCO>XhpcUIFED4%6;*y{YH za09_O5BV!-8mj(Y@R}^QAkkoFRV;#l=&@K}lT)ePp%PWS3`>5W*g`Y*(ifA%bnC_!o!9R!%H>$0R|73E5TRtrO91N>iirj8R_CeJ~ zwGqnVMZ9yO98lTxqP&=`HpEZ4P=olginl2Fz_~_o0^gd=sIA#s*n&2I-W2_n@M)ch zRsn8$#fz}R$(~sX;GGp=xq)m~4xgD#e}@uYhI->BY^*Rnz!QAR8XRhLphwQHfU1 z%bMd#vB->~f%I1Vgc^}rDjV{G6PX+?T0}JE7NoLWEU?~3jfVmQi%=UOEp67D{7sGg z#{89V8Fdd8sVea*(g6Rd=pa4r!{&=7JK~j0ZD`ud>AzTPp-@pBT#6PI3IbXR6Z|0J zTZYDu{G&XR9!O0+LPDu?3spf8e%l52KOo{zK%K%DD6BPzcexh(0C@yC!`h29DiYD? z!`H>)MWj=)_`o!1{v)_cN{iiAamw_$`5V>LT4ADA!V8}^qXI$(^pWwKVd0-9_1WmM|pQuIFC5DqMoTRSHQlf zti>Ty8`7^-97ZUSerT)Ye5vL{)P~wONHYPI9vXD^{}uV%jFfZ=P~oV2Q=Vt4r}#tf z7f4B{YLxm&Ba*IwcI8IuSFj4#jHd#`P9 zha6HCF^l+<|GzqZlO_echADt%Eh3i*s0q)b20&^1M^s=aEnk?fA;zI;KvNRYzC#;? zLl;qIFT!8#P${jZ&sd#WL~q1);el9Sc0^6S;eyg@`BW~8@XcK+XM)%I zsc;28Kr0EozDA^m-ikLxXd~S)cbh&lT}I1WDc(U%VnhCPLmdYXF;UtaNwXtO>L+^BEe$Qj9;mC|-m&XVmwnN0BqOl**& znu2OK5k7warLEFL|1D@&i`{>K_R@;{54X#{LJtJ(Byuh3(G~wBSV$wa{%4`cYIUO3 zLhFb+!iyT4Vjrp^!X`i2k!m$))2k4>XkSo{s25NM4)LhgN1cH$+H3X}PxxJqJnV%X zR%k_K|3>)C34P`>_!7F5SZV$P@rLP#$Rloa!oEg&q4h#qQctPUJPfl>WU~+cLih{j zBXlq^l;CD34tbpNQ7KHU(9OJf;?2FzEbe}rJDeQ#LD!`@CR5l8nNdD?4kMwj`eNR1yHM$a9M?k#sa zG-Px*%<#U|iKZK>qv;MDh4-xuVmUg-CL|Vp)J}!`Oa5Pl$UtX?R119ERw#Y29StVg z1Fs?C@ZSQ3yBvyw6Lz2%z&;pnfMg{ikQ6ivA_M1aHuwf#1P$7~vlv|} zQYuB$Gc#3#MNnSKP$7zcUsQU{_5yBPMQ(Kpmyy@0OI(Hoqb@KhPeo{?E5L<4`0d2- z0I6*Bgg8MqFG8i6`aXqWBeg}b-DHMnDY6RlHR&xV{8wx@F~~%IcVgJ!6VYP*A!S8m z%wj0j72ka!notcP8=wn#6aUN2rOy9Hc!sKtMmnzZPZ2UtDb%+z#1O?6b=2z+$5dGE zqxjuIys;->rHD}m%hi7;+;pN@x`hzIb`)jve-XSDmcK;jkun}q7a=pj{To0t`5I~s zJ)zNn->JHwLdLrE=xoz(YQn8fGkQN}RGXzJc%%qh%!91hQKMf07L8S0FSs+SKeD0Eb~kV-{p*eK7Daz~YhlL{E6 zHTyX6Tm4X8L^UBgF&t2;NO~!@n4jngvWhf?lg6QvA643Fswnt1M!GH{*FCU*B|M|t zW9^51HMT!Sw@a&%)*%l|)CwyxPRvAbx`K^#Hl% zGsH*%QqzmFfV75v1uO;;i%`$1gug~^;2#tg8qK?maEn5jwHfJy_!QliFAxG!@5_)A zDV^QuQeH!8=M4TD~{z=xekU3^eS z-NG-*%cnjTD-_KesjfhlI+k!J?bB1mRNpdp+Rg{ZR(+MW8O)O(I9$61A;5?Sslt1)QoBdQvs&GLEzDRVU(H@){O#Misqxz zYq$QPtw#Q!YN7r+DjJNGc!esv)mB+qX{*HSgcX{B%~tR+Mgg?8K<7s>6N@}Z9G+aTm?nY%q4Hyk-(}+|B?5ac+W)^Rln@zs}^E&Lanm;K13N~C7iW+E; zkEsukpz49?W7H&|w_gUk=tKIL9R&}XIdhwu2TIaXBq`}uDc{l}Gff(xiA6=)Y17 zaBoYV-RBcuOrH8p@|wtNgtu!<>3qzf{Qka`Vh zyyfq8#20iynnuA`1L6pwhwg~6G!%Cfb+_3<|50(4AwM}WmW^f-;iu6v_O*VDn4n@V z#~BUA79i!|N1+t9B2B-8LS(vwafD`5GYZB6hO31dXFDY%hK%e;e~dk#esv4=Cv5gv1o=}U&41}?==h* zltWiSlu-SFFP{H1;@s4ZU({MwGR*`1Q-s7sQwQea7iJnpN0zY*PleL&E+dnEf#@qn zQbPSf2MRS5bcl=p4Na-t3(cb#;la=r%StyeuuhXlCjO=l`p#v<4u^El&rna$ za0e^uki*AGLvW-ERI!f3Rb;iR_(h*GGBN#(B@b#N)R#19Ppvrf5$vQ9Yq)Nzvmk3C zyOUN@W&!)R5o``v9rB|R0)S+uw4_zJuJP6w`ST~T===}b@P<)=;L8loV38Y8? z!c7^Zh!vlU$j$}K-xUZE^k(*@4*W$^1yukj`lKn^P=ufxAhJj=q&5?7W7wDU1bmUQ z;J{R=2w81xgCtdy6wk%qorg=P4#1>>V@8JrI^;!~mQ{Ner_u5^bttwJo777vr>v{@ z5pj^N@PUCMxYQslz9s%pFbD<{o=_*4K8^gT;g^^91%tupH5~y0UYqBP!La2ul>m;s z6@EacPpk&?`Ght=b%CK1&|2V*0!9kl5@5Z+(g!#wu*Ly_!YiYIrNX=80IA433&?$^ z#550_^g9;;Ipx-6Ky`V+Dj-(gDr^APDt^8R*b7u110wI+jH1C1f8Tq2X8s++{`*#= zxbTjl^NRI9990_TzbgL^OBW5hfA+zjNmq~mmck{N4A$c_4wK&$G_B=r=I!Rqx(uR0 zaul}AxnSPsm?s!=ED*#Uiv%N%B_fSE<}NMM!=%F#T5%anhG|D_XG`ZQab_KB^k&|% zFuL`#b$YYx*dSPSSPkyuGpmlMbHq96Z1RS@MqjP3$rmYjN#;@KCc%hvi(t}uK-R1} z7c28FZPVkLv+dIMr5$n?XQy7;rH2jY=%qb+cr>Ewa9`>CjHAdnbI0H2~^l<2`t;wZ_V`r!)j~=Z-EIYdp0vG6}dOSGC(Fw+dx)Ge9tEsoGw~^jAx(=?*-3@g&xeYc$lPf2*7~22L@p;MTbKN0&6>{Zjd<>GbrN*Cx(K>lQ4)!|;vHN4JN*)QRC2Yw6D#YcV2!wz z&;0`>;)rXpC{i*~(p@@K8ZRw8TXMGc>`snsvg-@Ivs%1Y94HHyMa!k~&a*bzptH2A zG+G)fl}dBYl8FCopW9$JOuCxhSt;Hvt}Tm{t$w=s*|^yt9G{tV<#^!YjH?qnq2Z-j z*G%VpXUmV`+TIb8o5qg|=?ROq^j#AhbT%(UB9vwX2=sxZra~mv%Mc3@3tw%ZC zJKf_%U2^UGsN~ZLdR%rbM~rtT>2bvs`oY)_rs#3imG?=r;r{a?(O!y_7Zw*b9dj4-}cjEhx_oh@lJpq zJKgKIH*Z(dW0!mPlY>uc=`rf|KdgNi^uRkY_u8GEI|p|fJ@BIBZX)P*hY0%IEd)dE zFhShiN}?m~mfMlrL*(NL_maDV-c7oPT09?h(&Lmn-s1nLi;Sn;BP~%6Qg6mR+A`a+ z*fMe>M(=0cV=WRr%(=%~y6IuwJ<-xf4-4+emNl5^T#l7hs@gM`P zx+9H;Bdy;C6S%jg{aJaAWkGxBYBB0M@zKM&ot z-;93SmuMYbpr1$X;5TF64kaR^i}dr@-T2M;xA8>V=o0-jdYZnO_;w`GF}h4Yb3CDM zCchm`bdIi&&vQNG!M%o-Z>GK-OLUEHQ1}WxqordVQyrTfU60o2MTuwQ()gq0N2`xE z9<5WF_&rM<#z$N9SnKI7nk;%raT@eYjBQfFHhO|yxE1yoi)Y{6zn|B(O~$RBYEtI zlODG{9l@z!%!|0#gO?`E2GjAGJ1p!LX zkXIB8IbJVWk>kzv7J9dQyRf1Qmc(Gqkk=#_a=md9^LT^a5qc=}HhM?N|9-FIo%NDY zvMPW#u&NpWiCTbJFa!Y>q&~nZ7@7b!!4UFJQ(kEG2G2E}+r1KO8Y8PB-h(Tlrg3^~ z^B!JlX_}zN4)4*GaML6`c6yJmv^Gsqkh;9nKJxImch$G&3m1+T4i&|VMv6v@#)|rU z2AeS9^%wfz2^25BTlk>*!3xOMN$10(q`H_RWcHbeOW*@ zPJ36+&BSt^9Y1UOa$X9IkN)ezKbs}jXT5EuZ8wUDGwa58G&Njr~A9;WGMP#6M zWQn3>(Yx-Qqo6H$8?TREpSwQZKTopD-j0@)mIZQb#k+rZvOi~Vk$$XtH||dK?+q-I z@Va-)yFzbYdXHNC_qzL6Np#b@@9n5ur3l{gu2KYV0}#PG-Zhfi_lA7y^l<3y!UJeW z@C0bb0MLwhiFC*TARTf6NQXQC(!l|+qa6V_(T)JzXh#5Ev?G85Br2c?iRvq+fLHs1 zzTA?L(ma3dxyEy=SGKO?HLZJ#k=me@BDDc!NNqqlQX5c#)b?#qKstPL?`)QAkPkcY z20rZay(EuIzQ{Y96z*GK(VFdX$Q`L;-W%-3?E^};qK{K`lJho^f2e^yKqDg^S=0nV|rNdjb6w>o-iySKg^w- zKf7?YG0+qU1y(DA7jns9)z?w7QgT#sTw*NEDa|b{DfO4;`H-^fzJ>DL^8b&m_YY3| z%JM^@Eqa<>;|x<~5rQv2guZGa3AIoQwUC4)x`kTEjnuRUdsr{ijb|7ed$7%Tu#Ihc z%#7JK%vfkP4}gic%pJUWHUhMXB)W@#^W-<5hU|*jiE{ z^*-m)o|)arU*~>5_uO;Oz2AG!J@?o5YnchnNaawgEiX-5XNtc^wbPc%rnCCCemFCl zk?>(Y!YBByh&pszp4D4^B}2m$bmZmf%5-(wHe;W0%=|f}>&WXP1WZf2~=UyLI} z(dpe%-Wd#z4V={AAiaW2E3v-kA2xm?$`sH>bTbW(o=? zThqQ73k5}!?P>pvm4f2Q)9JvBje?TN&UA3bL9dOU6mCl<$p7OfU2?n=`(%hc+VObq zqQE)X{;A_Cf$?GpSt8|C+ <1L34wP~_cJ45ewaTmFmxK!l9quyJt6Q#i{w!F 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 $pC>}f6;I1`hzm*KKpfs3d^vyvstfyl|fl6WOc z>{%|u@vmg$eyl`hxYz;b)CEcukwc0EA_7=y%yN$H&aEt4L&|X#PNb1(y7~e?;D>zZ zIC?BRM|l)bsS*v(VurlpRo6S|cj_dn#N{~d)r>p{Q8_OBPVpVjCBS7=ZSnPtJcO0r z5*Kq;byKa=rga%zPUj=nx(1C- zG2@P)#1-!3oxxMILRsVb`ucm_FZ;xD!qvF?dl`8YEHy3l#6JPW7~n*?Zxe%k<)12o`FDnKK&>53&I z&!e0}uDoR@P^cbpBY*{fBTljHCQzgns-+tlc@ggfyE7Ys?Et}IY}B{`m%uAhx8I5o zD8b%M7+@KoSRHwnbt8#d$~JTiYPULwb1zYKOr0cdsam40fV%>sA#HZ$@X1jy8<1aatrGE`q3kU~8o zNQc}DfKC8$Y6n#aPy0)#wgw=bTFhDvuQsR?>N7R3F>CU=ggY5|8<9qJmLM}sW(v?L>cymv@0AI(VDu2~ zX5<}!W_53;PM{S7iUVL5P2HjnU&~#yT(@0sQPgrESb=2 zUs9LV71T&w-6D&YLaTPdqM4rhmLQ?7Zt1q|+o5eyDF2S*-Qv63lzB=$uHcToy=V4U zelh%oA}KycwlSsd=*@oDmnO2#X?03%#(-glDk=5pdl9nD8FgCi{UOF;fN8ZQ*dhJ0 zP(}v*tN=4=b1+7nIp|jhr|qc=f~?vb^t|DIKSvRH9PSum70-^+VU75TC|>*x47=bfs9OY;P~HL{7oej0jG!_q-~^BxP)RK!ccX$DF};a#6Vl4+ z@(WS|tEeOwKri?zYL1{fYApoFhgOQvQh7q z(?VnIs$Ck3cD(p((3|u=Vs0ZJ$y*rkz}!-Y2|7i_MnDl1udP0N-A>iefi6)DI#KYQ zs$<00g-k#AV&LnjgKs4XJVQ1SfN`|_uDW_9_!iscJwwkBYOL^NQhb_kU20!)FBOQt zhZ5GnpTJu@QxD&Ye^vgfOA&qa5I@GnBr@!&rR04LP!~NwDL{R-j-VkbM*-I@4QQY? z5i~+=Spa1K4aXHqd6R9jK!dSA<<=C4SEL!KWANv);2o*^1j#fajR%8z4vIfb3??h434~gqZfF?N{YV!vz$@+{Hi_8&Qx^p(P2#}rj5`f*bOylF zz=xn2&=F`BR5*c-3@XCzP+pU@H|#^Z5%yI)@hw3C&p9AXU?ZR=;1ci`!7l|ZfyzM3 zpbF3mD2JVpswTNx-F0EDyMHKqu6nb5vxQYg9XM*^im7SpniEY!)6}#yZOy3$>qAJ& zBWYdZI;`CZ-)-I%zbyJ;^T&htq9~MM;)38rBehnn8I0sc2x@@eG=W*Z#)9`{2GRmz z0d0d?5p${$qq1y3Iza3b=rS7X-3}V01K1fbCuncHdehVNH3Q91GtvmPBCS{}(Mq+j zRAA_X(G5BP^?(jRy{Ma!#(n7dcFb4uiN0s~Uh4HA`k4>e3bm5kFgVCgq;2lHFeC?% zN(^biiDv{7ZQ=Q|=V>d_6t09}Mi56ig+XPY5zr@VH3}`KHEXR}n-=qMZBQH1hQSa8 z0|y#IUFo#;P1mOI`sg@z%iuD)$}eQloa2b$wfyGTB~x7U*!}kKK@jW2iHWBL2Ce6s z@7nO1___qHK@ur$$k& zTEqM3%iy(vHxFLBw!A;wFW+e1h~4yJ;+n>iD*7>E99qYYbEmn}+VR)LVew0BN-bbI_>8|wrmNOVDB8I|bP7Tk3VsTE)zU{z4Bmbph>ZBa{$)(ve_ z+tzlqVx3fnZU_b+80*N?ukCM_za4S+zAL<2`hNZU9UL1+{{u$=91YMQXcII9+5)92 zZi7a~6a5JD9}?Q6HlpncF3=m0bgIs~Qd zr4h=N)rwz~zKHGz*C_`~1eymGi?G_J?d_tYAym>v;Ce_ADr++c$-q?smjbj3$|0tv z<*;O+146p-peLXP&<3ax98K-%E_w?>Ep6kK}V&*DSZ5nU8WbkV!*yV92xFQW^A zPpWI}qT@igOvl=ROy|>g_2JpbY;=~krQ5Tov*=M^Rp?R>9sw(dmJ!8}q0{yD>o;<= zN1oIrevgh}C3R-nYtHD>I`jRU91eRLI{FFAVmcZEhPIvomiWDAFrUloME7MBo5xgj z^hY_`;mzrILJGRPP6~c(n&*)rn?AD=C#HLPKrnnN4dl84z97SDD{tTLg&Tu~u(Si}HN6WMob?KOPPP?Yv(*-(V zCY*N97HIolgl9B4*>p)Rz`6J7)UteIZb;}X??iN*dtVy)AXuYwe7owiJekoG(l%%;7WBtAuh&D`m9HbSvB zsFp-5Y6AgWBE%>>UCpK`&JLx^h(noeh@&z)rn#TiD9$l$pY9{>X)Kpb$J5NIcd+7# z^%9)(bI*Ea^PT+(zbYku6Igih204`p#&zyYC45bBz4X7d#1LJgfj=r?gj z0&z4kcTab-C5m%H_$lIW+R25wdKNny)8faw)Hr<8RXVa3m^Oay{@nX{;fpHOXmGkG zCXYKfJ<=y;yXGpjfe=_x)G!E26#>CZi-J6JUJ#qEe%bo6FQ&O?Y+5=~B|YNPtSiQ+ z&!+p+QGHAw*C+HPeOX`8S4o!y(&E%<5(KACQy`NU1?g$YXZczQ$OcaMOjqvv9#-XB7)ya{g^9Z;x=3&Rlj;g;T&x%A&3{s*4PTMII8(rN@zGOaeV*bZda+)NxP2^3u($q030IoVmUSixa}&Y79N7=usJsrh6Ek%@pzI|+Dzsk zVfYR5JL!yx5vNSL_eG!BKk+|EQD^0G^rU;gN?Xi2aI!l=yxsstI;u)p($vkVFA}o> z5=5U=X^WW$vy3Tkz=77>0{@BslM~`GA~6r1+gSVtPlqrQ#Myy;8~qhnn^ZI-12GEu z0(vPhc7Mr?>~K1kuU*P5IQJblEC<7*@pNUZN*8hdS+bhA)^$ljb!CB;eu()FJZy-O zo~MJG7QM@Ee=wkItSEyW@qd8sj(88Hu_GJlFRQdKZ3Si}J_pKK`9+oXrR~7{ggH_2 zA+Wnx?xwVaxlk8vU@v3K5g4m47nJU-)%QkwNqg0PhBbul{U|Yeu&AKGYxq9)BEdX9 z)9caym42hI=@sXwmwEL5Pli-qJ_z)qzJ7ouZGHK^%mgf?_vv}`lUJV+`1JA5lAonN z%YK&s%<@o2u@QYpPrc|h^l813kf=VQ4*>Zg`nCSaC9uETUy<)nZzbLsR7!#O4J=OU z!wDB*aWEHvy@h1~eJbH6EP?J`1NI~AE9yOo2w_PWfHtrnV_#8kO(Y4+>XZ6Duy-y9 zk~oTe`t!k8X~OgREDlarX_GpuH~gYNSOKS@gTUUuAjs=2eD9OUqdMV5oa0Uc|L}sK zpttg+Pb-f)gqLu-y8!&&1wm17s4Tw+Q5DaUqr9? zIZs#>rm7F@V=U3?{Xb{stct2=V>}klNM>X+v`BI?V*+VsS)YL+k@gvi1Bg0wlMq@915S`x$&1{qW0ynEG*7f2I%4wwFx5 zOnq6*bTSEQ(`QiMgf{*81wmKe$Os?0zKWBC9+*>*@CB@%{vaC$ZM=Y!^hHhR*d^Ma8+^?>`l zDu4X6Ksduc$bDJ+vi_wjTb2LyZwf>+)z4d>pMIYCBK&3K%Q!^-jq?KWO!@OP#-YFY zv_LXrdXWF}Wj@P&mQPjXfBS*}Z{mUBa|iPI zJD43{m?+*a-4~|BDQT*hYNm{6V1M^nfpMmi>19k`g};h@75^&#RSD|_Rr#MjEild0 z6757a)6bXz{5>23gCo)TWbn!GlhG%+Pb;5RKdpUQmH*j!fn{cx9zojQKQFM(IDh3r z>-Yy))SLUMlg=X9Kfw)`nNqrp;6H`) zKXa09Ao$PD3p_KObQi&YeqP|6Ir&us$^ON8fp4bst1g27^1Q%5GyK&E!GCpL5SWpE zDMMxbYpf8?7``+j_;1b&LNm56?Fjzcrv>4e^8Mz0>*tZrQ>YQ_3rA)GcuoHfU3R8~ z*YfXiNPQ;rp!`MUi|Q9+OB0(3&0DtyKn z&E)z1!vVFO!c1;vgc0sP<38w2@lof|*&{RS!ZU@LD9Zm|;3Up8som8;;Iy60gdaBL zm{BxlybpU1hhkcqZ_G4joV<&V&-&Ip54{g1Up3|D&kLF}o`+}PhMUqtYPcyw5V$EL z5O_^OzDbUW2n7Cz7zF-@1myRz^~(nyvJNie6+FlM*b+Zp{~Um065}f$glsq^93OhP zM5mc~-oP7q|5xd+>R(l^pmYYF$77QYdh>kk;R#_zFr|U1G05@thi$@4NLB}?#URI@ zJnRx?=1u%5F!(Vho?QYlvx_M~3~)uG6LZKG=8!{TweV&>^r%U`j+vK{i)RIE5(wNL z3vVLChC3~FAn<^!yps?+Z{tPTrhFcIx4iX{hcE|k=Q&{TjO@IR5GR~?2aqKUWV{pl zEMp4G3m=Id$sXw*86KG*c_0<%`CPo{kraUUkvVHYf>pFTKL4=%u=cR^umPU6rv(wd z@UZf*{;>J52>@q>qkQIJ@nPd(5sw>ag?#Q|9_$@FZlSI5*@p!%pFJ9H7smPErJ^z7 zSG?+eC-ctmPcjd)cmvzd2oikpVfEn&1mzwTkaib~z`O&>Uc>B$_hx-mOF2HvJHfw) zg&;meNS@E}9U%Ld(eP_DeaZ9gW&d(+)4b)zQQP2w3n$Z}#9BZL5JKR=c>w}gh0hXN z#O#I#dWcqvMsf4Jpu`WqGNSZHa6*CHf)fgI8%`+5x6z70UVsw{@}2X76JC;)f*ao@ zXaM;`-1y>Kk4_);P=@c~svsV^>;Y~>n@>M#(^23qA3Tm6ci-t_6_IrAVgJ%U8<>sF z7H375Y?sQH8gp*auFv;)$-_2Xv*_{l%rGn>v{Y1f5I_ zf=(s@K_`=fpp(f!(8&}aaPm2jNo;e0;A$BUqB<`y%+@jkNQOIa1Oj*7G}~1OCeFEM z^UFFmG}4qPzg%1H6YQC-E!!yIpS3Ny6woa&8(7LMc@=_-=V-8VZKvO@B}@vzv*)PP zwCUk^vh7iR$N6p$5f{U=yuoQO7>!2hW#_VQ`P4diD^5b;FJ8_==(*^ua5=r)A}ltW zTy`iSo$O70O^U8C_L69tCY3uQ$qVYTS?|7ylk!a~WWJ-74dY=?OEq$7r6kIr0pG_{H!#=8$y3N`ADqD8w%ywr7xWp{EWWrrd+a>!Y z*CmA#9KuUB^N4Clbg8{;cwaIF5#mcaQ}u@K4F!piTnd;9c$*k)VxGH1BSWATynuZ3H9uF;0$NP?7Ac~vO>9mndTf|8ZOB2 z>fM)x%T;2gZ$FrgGO91KIe$+2QowZ(@kjkxzv0;|_Q3(rB*uX6enwo6R?qk53*8@rDKYOQE^c ziQa&0xwT@xVj+2wxuhj+u~JYvmq5^io4EqRoNLZI=bQ7-1?GZtp}Fu}WX?+xO>?z5 z8*!L^Cq6!BA9Gmd9A5{VUk6+iFwa@$LKmqpmN^Bxp=g=oo=_iY;6S#ux$s453V${G z-rR65@;{A<&n4!fOssb<#;9+ON-=thVv=*Ix%6CSE<2Z-%g+_&;!MW>EQZR3Th70e zqWC1=zbdIXSE792p;4$jSAp)3j`f4DpCJ*3VH^kD@oI=GK=s#{qXLNxQUhnu8F+&Y zwlO$~w%C|EoipRnZSWdGRBO#SuOUoHT65jGuX_P+Fd589G7>)noxet@U!;z5cO-9y z-$pGWZ^|Hln7By3lMYh5cLzV_!^Q9mR8$iH7qSr>YewCYXQ{ZD`zou~GZFw`$lZfV2ly%QFbGc*`28k&q&3@t|M1}yI) zMU!bYdg|10W*8WR^OAYRJU?%mx6b?L#f;;WsfQcDhMr+)5Y0>Hxp~99dEPc3m>=u+ zyD3BS3btf%X7JsN-Q<{V14En1Q_M>k_0Lm%jGhY3N9Pms>G|AzalSHNpKs2e&Qpbq zo(j*$=9BZ8`TTrozB+$0-=e9vp?FX}5C+5n|7S*)v3J45sDHuCID)^$VPP@h1uLV`g*3JO)Ixf}fbTA$B`gHk z+Io7y_~bc579+P%UhFSsi8r@UUC50Cg@ruX#oR(+%u_*Bk)rYoy#*V~ptxXSa;gh< z_FP?XFj`-5GTK~lF?zZ%cG56*InWu>7`>=7)J!8&jf4*us*A(L`Z$7QL-po2DGe2Y;=1B-1^BeIxY%q(UXbBp=K@?sT=*B4`qA+mT% zO)0wATx_A_9lVqwN+mSLS#)%3UO=nd{`D-88%+SubxowsPBn-P(b|@qKE2X=Er|RjhWeo?W%<)OKvwMAv`t zn+Or2I2Jj&YFf82&o%=M&CBBB6dNk)R5G-$_TmpI*>F*8;#PyJ;nm93!g_fM z89x~D;5JIf4<0>)q=-Gb0_NnZ!w!bW4UMk_$m6<>gp%BQCn+COvW($I469rTUVG9`j2D z_E=kDCtC_jq01+i4a@!Ij;V3Qx2iCAuKI|tjlqwyA1(Pw*2`gHR$Mk97$G6tWz%H~9-_pcLm);By31w+lgt8| zF1wb~cQS7oKX-o4#$?Oo@a6FGXt}#mzEZmqS*@<7);pqe=nvM*`L~7-5+uq^Lo$i- zT=rj%Tuv$AH_$L0LgL8f*yRi{r7xE*XNf6uIe)o*IY(8QyM@;Rq zHRZXmjgE8z_KFOHKk=2o9$KUJ<-I^gQ;I&xkhoaWha2pa-HfxwroTu{^js;Wch@ID4382 zrQ?>(%U1SiXJ&v~Zd?sL@A5T?PY3Os%WS@)TMn42Cc}#1N@g{?O5c;}u4kC2SY!L-9ky8@{B2 z?G_Q%*z9ilwjx_W8y%b|Ue_^)Cj`ygR7pw9gipT?bSRJlaz=sta&fswfdT>p3e=WQ zmWLFmBOt`=P|#i;EDKFylL)g^K^LuEViFU6#!!hV%Z%S(Imb#i0_tS%Q*3fEDlxgA zQ0WvZR%bGr%qFYJX>yxnQ8+q@ zYMYD{sF`{u6DIM3x~XaEn9lHMrV^fjp=a{2dH9LRv=Uu0Fw=x&PpD~Zs!U#1te(k2 z$wnsYN@B%Il1C=dij4xo714@=A`L6n72ArFYR$OfTyd}XR$PReR_ydhK{FWaD?YY8 zWLrtD_*uxll3KB{6Qs_S%!-9&>|F6uf-tg6uJ}l11aY~Q;)GKE4C~7D-En;h*x#1NlLA|LSvfKw1NX_xX?lr)#jNPpuM8N_5M6Vny@74Mbsl_X-h)!Z0z zT=89rTuCu#ymxB4;=Jm*>b~l^>b>f_>c3jO+Ps>l%*~k1*HHWdJy1O~t~9R%SnnmV zK3B|@`v$oRV~KgD<2XEW7yi;y@f+l1M6SqQ2(oR_XZd<1F}zXP zIHBA#t0$|CaiFo^1w%I;<-R>}H4AW%ihT=78Ct#Ii}(EMBAI{)RQliex@LkL zYbGVyPuDy&3)jSJb^y*bGYKU~1jw~!A!T}qm#)dybWDnQ%?3W}I6?$D93n`#1rhc& z8)eXclB=DH)i)auJ6<8_n}cho8$Z!NqQ1y>ERCu<%m z96>QajWsWoA%OTKJg)2-Nhz&W!RH%C#BfC-g9s8{MnrARPZs37}P- zB!V{9f>`Vmbk-#Hu{X08yBfcmxSG70x|+V4xthJ2yBZ=@I%~r<;Z^Zf>D4ej_Mbc` zuEtoq9j;MSoVDiRn)E7vfx4maYIl#f8(3I;^=uCgFAGbr_V&zn6Z`&v;%aBlYA@JD z`LdtKr$De?o(92sc?JaQ(6^Xu_( zU~n}t4*1rS6sTVHuBXO(2GydX{49c+62uTQ{s5 z*UjsBifLj#QlP4(()aM-ST9nMs6fN3p7pV593Y%nKUtSq64&c@PhR&V?GK7<=$5W0 zSnZS8Bny#2OZ_^O{>BMm%mkJ3bGxUVOg)eB4*|U&ogRXe@qtAw(eSIezJ2t zYw24Y8{UoLMq$&sRobdp%cNj@J+n?TqsnhTROun{B&PP;5B1-EIH8B+dU`#-URp0P zry+$Wwp5*2udR3Si93@;w3XSiIINC_qs)q$TQ4vbOY2Rlxf&L@Thwyu>rH$VuT8-d zVD0tO-vm3vNoe;sSdXf^`|D-zKCyJyd+P(j&wh>DCulbE_2T%~OX1PGI^T#=NGv*w z5EqLCQVVC{Eg}lafbkabZ-SEF1f^I*XACNu_wp9oVd3rw!W=&4ZkjA~SFmAC?Fe@r zyG>i`n&P@b1%*t%UWMmKg2`gB=mMa;g{2dGEpg6OuTW3f`k zRZEjS^er}etXW#@v1?(Lq-IfUL^nDcIjeAITo#ed!6Z3J&5=d4;i7n$)apG&eGo zNfoYFbAye;osI0KX^ZmlZu2{p9q(@PdX6Q@Q>~w(4rQCVO)E}N7f42D!?;>?dYacySasJ`LF z7RBgI-CN1`YE1DuRZar0om$5U>6+ZEZq_$@n?p>_8>ChWKm)V&?q-u7GYC>c8g8~I zZFaMOw5`oH)m08DPd0NG&O=ucNR935Nzy1Fel5cmQcgCrjCM91?3m$TlNzMqwcH;U z+2m;4{dKR2eiX$g!}9nbSR>kD+IA^N+1B_{@=KJOCfo6e3%F zdNd+P4L-RwptPnfD=uUPwuYpw87aM6x%1?@c$uE30rwy0nadpB>IVXU%+@P1TgknX zgZ6>N;dR6vSqDBRdo1Lri-W$E z@m%uw^jJy>C0Yds|GB+ou$uARBM-iML|=YNSveBe-s*30>=m=+Rf+X4-xf{b+or7R za#l*-K_e(^m$&QNjvd!dfhkYke(3Q?d=XAc!s>b>|F-Xao@s34&@6NKP?KpKs9FD% z+7*4mh(2J%-BH|C_?>U1@a=UAOJF0uhV|5H=TLnu1UlBPRf2yeV6@+MG9DLcE!kFV z>$drAnk*KYI7a{^4DIdH?e6wq+x=4MhvgsIf;cYwFu{~aQh|g!He5?^@1#g$ZpXCa-wEslchVeu zKHZLm#rbw3JJFppw)CRgDev@c@#`55?U~=Pf`M)?cy9gm+&VbS2&WPc`o#J^m zIodh9&RSLkmnzyj^nEG%3YE`>3m@0U1}M7IyPi6NVL2+fxEJZ7QsK@>{488Qis4?& zv1-Uu$y2!G*@7m$odVTLX{U?eV5dlNWh~TETz98Lg|47=wAgix&Q9ebb;s@wT?)xu z3)(A8VwIYqa96rpVlqK|88@)wR^hT-96jw?GAQZq>vXM)=J~^TlL-cF3)xyy1S<=d54nA@R3V4 z=JB?sZGaJ*zwWvo*emSSal-VB@%2bg-sZ5;b?@MBUHI-(WteR?z!lqoxGc87U*e!E z;RXB&2bb&ov1y)(QqT$+g-wDM=aH?AKhl>J!F$jp5Da@V(|LYskb>+_&7w z-QW)*ul8THz8-wNc8*FR0iL@-SnKt(U)I^a!5AAOe?hkEH|;<4s_cFLC$UdzN!E(# z3exae{`%Q<-JZujzJFxUksq6sPHt@VmFlV9fWI=>wbIC z9=fS;if&19U?6=91wp+PuPHzUxJ!VR0`co1kHfd}&v$VZaT^s{hP*nMPqDr~x-Q(4?HTr-v=n~Nv}fOQ9GdaF03ZHL zkizc^*xrC)PjN$hP;|8YXMX38iti1Qfy`K%dC$6sTWyEF->PmGD~Fp3@81jUCHGQ$ z9#S!|7v78R#qoHL-YnrVhxwR)$@Pl&mF6p_uZ&)0epq48wV&9J;rzM(z;+lsEFT)5 z^D&uzDslnW(gPGIBM@PDlpgDQ5_^ojr9IBh+l_X!-D(d~OnXme50M6^d!4=R-q~Jn zFHY@ugcO`TL1~0`8G_?f?0X+VyTcyckL`zVL~aBQvhKi3(U+J*@35N>daCt66Wp|=^h3!#$mL6PoAMl{PBl;HJzTfVAFkUJ4+lTuS zTz(tfpmB=Eq^>K^%2Xg>346|7q(BmZ($|49DNjhjUZG%yxa|FJoI`WU*=sC$ogz+f z53`L38qS;c@xaoyi}$Vj(iclF4PPpMQu=xL)9$Ct+I4YuUa`;ZyZ4hgxEH_SIk4Vr zFj-B?xQqLot*--Zl70q6w0}y$0fOTF{x>F&(a7Fqsm_R5fg7N`uLFGwa6kr>h60xT zAq5QxTK8GEHtv`AtNWrGy4 zLC*cgzGNI|?Mo@(+CSZw5tj?XWH%Iqxe?$93-71*6*qJmyp{-rh;B%3@EWv%=>Exm zbHBac0cfBUF}xZhrHCUSyJ4afiTyfzFcY5KC(9Qb)+@0_)eru9Hb7?2U(l~Fk+uXc9k5li0dE&5GMv4Vh4AqJIoQc`=D}QcQ_p`N6K-+G;2FbSi59D!LbiOE{2RL(6Z_x^WhT9cfoS0D^TFrBKdvy(jnD>L78g27e#H+;pElX*kJ!=jSJ@JZ z)lp^h96Rc;_L}Gm-4`v!?}Ym0*M@)GW~+KGNBuSN7d0l6igwDDT@sG*9(>Kwb<_@v zHycjtQT^EIs@_gM&sGnPVcz?#QCnXX-nU6`kLd5&Ug-Zc=nnj+zO9>i;~2TQT#D99`tg_VGh4HB`P}{ zye52I^1APf;1`iEx~v4cL(A*!FW9`pd}up7JschW_Lch+*3ui)H*ANF!{#{PK5SFK zjzOx%YRi4tA;!PB29A0`jehuOpYp@9wB(L*Dn@k0}% z$wM=v=|c;n*~31|ctEYRim$bv;+w9c!!!1hS_reo(mxE|EZ?l&Y~pge#OZJ*oGs^w zr4!-Y%0G^-F zC3dx49hd9&*{_+#JHaGS{Od2OHSRcH!9oXq--zQYH$zOvFsYnF#n88V;a=el*YNRz zw$py(IBFbIFX*v`P`h~wo<;Cb3pl;mql3#wz9ZKynvO=9uox9X=#)4)XIu-DCUVN0 z3OpoPY>FV0)8%wKeaT2BX-OfIL`n=igc6(l|G2wL*t~lb38tk#DMMpEDeqE@)z)_olr^FM* zSEoCqTeq5-t4|Pc9L^QLp2U$G>mt;RjCKOR1O6NC64HagMiFIXXFN9Q7$! zJ*px2q#reodPjz1>v8MYb4!L_dD-#Dupy=UYajjBu5?8FZG0}NcO=BO-~^|5RlOsz zj#&c&Mn}S9@v)46a|!}DRIBxv)1fAG2-uG8$Btv3;uFgT9jd~2oH{mAz>k1QhdQB4 z4=J29GV93H;d^cI(Dg48}~hOv5Q#vDc_>_n5&D{=3u3CQeBfCa( zM-NqU|JDe9*YZ-3tc(PvBSWK;*i~}X-KAHuZ|B}Fyd8SS&yoa)PlxQyt`Gyl^mZI5 zQ~)_8Tu}zbD4zm4;DDLFqAS7RB*8U&tvyArs*dj2arIoRTy2-`w(GX{b^>3=`2Xp8 zAK-#jjKt0%tlkAY^VxVqy386F!eEC*cxU-RWuc*qNyR@DiyNPRJ1jk z`bZ6L_IK{H(wT2-se138d(OG%o_p`Pf8KqMd#HLy=Zd5mBZ+X9de$Mqz*M~C$5Gtz zn@Y9~uwi|N9q)^yMv9bb|@P?Ry-4QWE@$C_?+aN z4R2d_Ln9{+_$WaW7yb}ep9$ei@s*o75-ab>liUD1yE1vKKyrhK(1{?4V#QFRB#1)X`K~Z^)VYm={%q4@$&Kd zafQufbJ|k2@CjkG`)ZW19Jd{}A9rH3s4_{LB*}!nE@q!y41c`M3i82!-cZ!kSc7^$ zUjBIHJmH&oOj>yyhL2c7KY-15ho6ZI3DBSGiZ zdG+PgL;}YHi5qFpWb@;+Q{IWX|8M{OkfIZ1(IJx(Ga12P0vDDq7++_fnlb}Y67!q? zj-QIyL(qqvj)aYCS07HM;`gf5cjv-xdl7R^vJWb>a`6#(&xEVXUO z7DNN)35?ldCn_i0M2^{9Cp-d>wRr^~WAh0>-sUIvI1Dpy3y^vVTiUj2%OT1Jl4V=w zgzOXhC*DsApHx24o;00IoNQr*TD2)zn6qt5Xmyjf3HuXy+s?S*#$Q;gmz3kW@gU{4 zW^(RDDuoRj>GDo!Fep3RSNG845$31C3Th zqv_CS$&;>Ao>SgauNF>T)|Q@AkyH6o8>h5qEoXzThBzPEdE*lk^v#@HJsAQ=^i-9Z z-6ly-e3JZRn?-9>V`*ft2L8=Y#0Q{4m*fC=WG5Z3df_k}!8%y4Ou_AJ8pqp~?C;V; zoBO1k_(clh_nh>eR8sWKFU(bi>Hy@1pzt#C&z)pum|@zJGFd3R4wd7lS#K_#RG%`O zvYuK#)pD9P+=k9r&S;pZ=8IK@mZYztrd7-?Dkt?sY8WE4*eQc55GkruZ5 zS#C%E>L-c-iI1Zq+32^7+N{}CXB6kuBcYLsQ+Gb)VLOgl`-WY9$~lr8Nsnwhtrt{d zma!0%8YTfbdl}l$LtPme*6iX_#?z+L%cs+)GpF;Xql_^|j8%{lESjXK;#3Rl$4b4u z<rgf zUuGiLNdd`e+35`ytx~k*wEpzw0rVf$Y3g-DILVAnghQvP0z4zJ5w}x(J_whPlBsQ$ ztj_M@E+lrJ_MVmz-~piMqSkJqXaL6#s|W}J&@jA~qA}DZGv4Is^6BbnTG=dPZBuYi ziP+(4cz{5i6R~!>bf$JDM3{B@et*|c3S&tFshv1f)vRa`5Dz2?U?{8%-pz(}_&~J(^{6;ZMq+v|GYDTi2VIv>S#QrmpGs!cVGiitT?9f@; zS=J#PXS`={ko%dHGfBs`Lw?qEHhb2_gwX_VCt*&c)i7bMGfqZoefblGi%32QrMVwF zMLW{PXA5VS&ubaK|BQ$D8@$9DM)o>}j-2rm`oF$@WLJPF38&H;;OMrC6c#UPs6ganKobc<&i;xV;5$hB#i^`k!~LGKJvaC)2jS4gY}y)1%Wv~pHhop{gsowoDk^NtIWi;jy$x9alhWdr+{Z3tY<6e3_QoZUWa zJ?A|iJ->WjebIFB)hv@d>vg)$ht7L0#4og59J=Va7`a$w8IFwpO0h}B%OkCk6%R5P z=^OrEDQZM2pVghKcVR`a4(U`y^iUu_$INW~tm#}~#Bx4)K6hdLLhXX}BAu#_Gwty< z;VeDdxbSqdaVdF4do?u?xNc-B6NNlA;Y&??*PzCi4JpsEhn&e}%i@(C^R_8Ue!Qi|vxI#u^^eu?%*_HWYfwVEdeQ#Ka6;K4Kse&Yu9<054W%iVihf zDDK9HXC*+iK4R0L`BV4|O*j|NP6{m3p?FTU(?K-)NKNdds1t|Fi&jP|BO4*4QQD@8<2QlZ&I}5;8AS%J? z=ePgmuM|m=UUwSNY{aZQuR5JV(4Ne%?Y@G3f zrFya88oIQ4DKwTFGhZ&@IAa^FM#4xtfV2_t2JoRz$Rno=aQ+4KT)CLO_%`*M?8WlM zWtZ+!;*x62Iu^LHawR{mB)&KI{q0{VRK%OZ0iGI$`o`b>FA6Q8)-GyYx^8sOGIHO# zSi`#+g=>h3H*}+EhFne@_HX?xzNY3?TDW^-J@PS?zt|zFQ+c+Sqj}~WK?o#h{3`Rp@G$biDiZF^-tJtITL_v@lv4Ess{1=3DT0KFl~XqgEE?Mr|xCjM`aPqV`8at$|Z^$-!{t zQ6~#4qo_pK6j4xX;F4UDT~b_1GDAMu_A5n-s!4Onc*%uMF_o=f3Xes`R>tyU!oMP{`0yfsMSeAPwQ^N9;hOMISgsGV z5ygh&8Ol@Mu}X#t1@|GcG1GKtx;$N--k#Pk;>?`5<~dxHpy0|e*K~o3_~yHJf2l~gW0%!e zirv_;mW`3_v9Z)x#=UWQ_)3YGC~tjC z^XOo&)6Te0UY?}45s_T`kK2gNauRo$Cz?PcBNmLAlK1xl4+&AQ7*NL61^ z_CV9&u`+lBO;v=jVt{pCj({U^SxwTdV=<_la%*~^oo$T%#oyu<%Chd>Leg*02b8w4 zl`FX`lB=?-#T(l<;)`11wvT1T)NZX??>4&Wb&(&ht93+hjIE9h!%K<>Z?GkoWtZ!C zf2${gb1XY%hVv9Ba;QP}7OG~5%HkReqSmRLh8|R$n{{yy3hle>zicEuJ)qlxFi|ad z$NXcSEB{DV5+189W+e1Kopn^%@RD_jSvs||5&3waRoERzZj#F`He4#)z9sh`APY0K z7Po)t9hyw281)(BE033gqst$YGxcG21SV^}S$J4_=zr>A>6hKgM_vY{-ReiaKS2IJ zK*GC2vLC^E3V%3p9n}rxiNe%XT#jDeLOsc@sIExHHRJkmn+J7_QYpY9!`p9sZH-vV zW#6OVqsSu*Te}!97az@$+Lp_)E7ggu3H@Y#+BM_D?t^RbBDI?f<7C{M@Tz^wKKoMT zQGg9C-pebm6V-n?im&JlPZaSK4hLI#w(|PlLMi`c`xDqIpghb74-6=N>9W&feiVCD zf24eDe9VUAwae?5h0kx}5I=+raz1n$jF)Om;31m89ak(p7&t`3D6A-OC2_?{Eg8HL zxe`ajMv>5!=#?0vY=a|o#Xn)kBd_7Qe+p;)Pp{on1lTK}$dygZ>a}sXXUOBg$L$ih z=via0@Z(n;l*OAr^#5N9CuOs8MLF&w$*WgNNTnNhlYM2cC@}hHuxaTbrX28I!eht- zPCq_0?jyS@Tv@v^JdW=bQPl)h7iBTwi&*;mz4fXMf5G3nTDw}mD!wMa7GQ-F7M#9u z|9D_LI35}gk4MI%mt0jNnjr=maI4fNasXyjw(Dw^ z_!U<*Ksc^q9~y?J1-v|Am?a1GvRky@0z0-|4bMboyy&$>y!mp>lCx!uS*VsQ8cWXp z39)iLece8rX9^W4zaYp(0;u{*1jGQ88N)h7Q%GGQfa-RGfK>pSjA4tEFQal**S1MX zdXucWroL9A(W~;xLL}E@*A&<4#9DzC%4=dc&=750l>p1!LEzsSiyGv zI3*}`eFdT;KGk$!#_YGxGUEwdOI^!ftD=776Y2@wL~g?A)iDWr5*bD=@oNT#FcM-J zTCQF*GlYc@1t?t>?5%t)H?cNBj;nKC-K70`U@ACeWt=wBW&@en3835@1k?by7=xRl zGHBo-fK>4kpaS4$3;~MjVX@3U4HJn8x7Tq!ay@b*exrUPJX4$rF}^VIxhFgmQ5KC+ z)IX7$i1(t20u#}R<%#q}g0Mk=Nh(2TA_g!;4B?45B&Q};SmJaq=Jnh}d7?V8Jt6Uu zV;^#Omm$vFL~TOu)p)bLG=!kowF#o*EhMQ; zG%@+uy!s7xQiUG}EbR$&D(j^G&KT*Q9?kIJrfwuB)arQ?4nQ7Oe6PIdSGD*Cu~J?*S@c(OuU}d8S&3EK(A6bFwz65&-daHty9Y z)z@h!Sp_-Ufm)y*5YK5?0xj{iT-RLJ5um)Ty*|Y728tT4W4{WHY(&QEb`;-4I1_MY z!db5S09v$YYs+;%zz90*us}&+;Ia}pd_9403~U5iue+}2ujkm)iS>F>LN)BV?glQ; zaPI5E$|G>SKBN5)ilXAQFz3HcQWTvsl#U1+LQ+l)T2HoqEF z+&0{f-QKwEpt5+Hos@t1`UdL2MVRt+4+XhBULtH?7f(s1e1sv-jp9bwh6GLsN#S7{x_#idrxyu@<&Z(Fl@e>wxuX_l@F>;h7}yz4_Y)Jo*r? zeaZ=!EM3ULGqu7*q^Sn|IQUG9qtDX545{RwvijD2tCS!xRh-HSKzS-hyum4>&*m%m zHhd*5>?}Ezn~M1oFiPF@nigFxHMQ)^Vquf_6@4Xqr&#t?e8tyjk&~J#6T|Y98ky;_ z{xSGWKC{o_8}^l6qxK-mkZ)a!ez`K0hRc?$uR{8)Oszx624$C?%1@Q1%2V4@3SX7f z$xKzJwh*mPZIbX+^bx1e<#YQyKCjQ`^ZNom8GFS}luaL-=yOxaY55JRAma?GXvX6& z_{(ffKT{vf*ma(FatSf-LoyPpFsMkPd&ZP zbWQjwOfOnR+Sx|ks*iniTJc5Z;&Ur=t8>M<^4#WJZB9NpnN} zmZxPmJOr!*@a_P<9UwqJ1*9M;O~>ELZYXbr`mlDP$ME{J_=e<${6@=-gEUJhZ-{S) zZfox(@3h=?-IYHyy@*hHk@-fn4@RuNVY*?yVYxAU!*&Dz(M1CN4c86JjN)GODLu}6 zo+qBOao++XUAf`FN-aKP@tbCCv#OhMR#6F(cRM+NKj*>S@;Z>ZctyfY9g&Zb4OCpLlBr`)ZITBmEA)Cny zfNG{l#H|}cGsc-xA0DE&!KavMnbEM3acIWIy0QXsJ;um4FiQwyreRj~0B`aT*Q4L8 z`3hcAo!_K52N`O~OB6Lyv8v&zsd@^qoOFMD8qKvXum z8~qOds$V{9xEa7Ro;r}7&jwYL?VG>N{6wK9$mrKl_7LpX3UQqf=!Ia2s3yO~Z=|@$ zL{Ymxw|Tp7Q3)<#^b7%JENWsG?nc(~uj$fu!~ zv}M18*hJb{Cw$L}6qp}Pvn~Q#X7z}8NLanyOPJwV8qIvfPhefP2LkN$1cLE~NS;|N z!ZF_pu=Qc|F^;i)8DKhFSq;W!V=NZ$hbb)2ZqK&dRNhqGRNo8{dU@8#ru606FlDkl zo1TsIW2v|@o0(mm&Ccd#^RtE7;_TY2OF|8unN{9&vlOed9u{V2y)4Yl`dFBs^|P=r z8(?8^Hps%Y*#tFnb#`mEK8xJhRzY<(#@2E5S%>5diq>*7MOwXi^7p@1ER#Y*H(fVZ zD4pS^<)-zf{U)1~EH@)JO#yRY9qnqQ#lxM*U1o2?H$yk0H&ZvOHzT)JZ&hzu0?s)b zs|M@McW6|%-K0l5G8r1KufS8S2 zl7O6|BEjD8i$Dgn0*bK#jTLiFls3V}xpW{Q-3QJ*LN+)cd<*ePAjSsU z&46h>-bh2>PVp`C!}Hd8+q|7QdfE!s+ zXPY-Jv;_Ts@*etud~OrL5YHv2DJqG7C2zLSU`lC2^N5_0xz4F&u_6W;v#eT zMtV|MXDN>B+rwg1W-YyVYPY#B*vNTQrq-*YVvKiZN|GZ*K`#3?M#tuvvuxjGX} zB4|28_7ZAl`8{XKm`G07dnJw z7en)B>HL=+BOvEp=pvX51f%fd9DfXQ^Zq~iCd4}Dmlx6te=K@?VM{`d>;wnxrA6kW z^RapRf<9=La*!enP{QY6csMh#vDFsRFGd!Ni<+2`jSMCl8M5>B`PBt8^}^izI_iBH zBb$YKYkoe9Jo6|}5k*=j9Kao$e!(!A~ubV*Palm`_-2NBj_s?G)1f_uTU;9c-7_!j~T zY(l8aZ_X>B+txzp?rJ!Xf3znatg-oMW8U^UiQbq`NV_l=h|v!cQkq{S3m=e~eAP8* z(2hUSJWjAp2^rX^mK6xw5w;+t;aIhRt_4BXg%~hz17lqvYxU3f#j%YtR<72kFmnL?b;sK^Hacn+v|*D7*|B zyjxZHXbfEqZUy~>S`7v$$OgmIn5E!42(_U2wp>EPQwcHaZQt$MZRH*Bo#-70TNiEx zm3N%G=s9gG=mRBs2hJn^D8^Q6Ew_!g!=q-flvE}g!r5B}%+W@UH6gAvlrNDSQPX(~v zc7hPVvxkbUY<#z)cZw`kiBiQNaE%O|faTj|!o_bVkuSLfOx@1isWRqmcCQh60|l%L zfclPD$1v(Uavd_O-Im-@-cjGt-q}qCVL(aKcl>t)cQbdZceNpVC=_bZQHhn5%y7qY zMQZCiITX*YsWucZ(?mtHJI;=1@LEXM94#`0; zvP31S08PjkTH682q_-xd51B*j1Zo*rq2xM%L*O-mR$_|@W2nl+Y*K1l$P?Py0k$cv zE#wUOLNx;I46KtF2S68iy`V`BQd7#{ibxa+MMH_uawr{I4axsUgn|%Z#*qX^Cgf&& z7wHhQqWYgI?+vkf^WF>GFGNC%@ux~AS#=PK)&Ep-PfdXMp5≧dOBDBvRZ{-_zdH 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 O&FQe5(V=pK@xKAnLBkmU literal 0 HcmV?d00001 diff --git a/official/1.7.0/Common Library/Lib/D10/MPCommonLibD10D.bpl b/official/1.7.0/Common Library/Lib/D10/MPCommonLibD10D.bpl new file mode 100644 index 0000000000000000000000000000000000000000..6214c602e75580b427a08d6c8457b188a8ba7e4b GIT binary patch literal 44544 zcmeHw4O~=J-v2={5i!xww5%pWBQv`*%)r15<0zn*qNHGEzVR~3*f7vAAey!0ON$P+ zK0R*hy6&zO+gfWa72A?nI|UhA)UqyHl-5$YJu~UCWQvbVByPrfCc#q;aSbTRMiULVx*78fSMa(RyIJ84=d7+_EK4>jSZapTQso3Y zZYKVaL1rL8UWMGwuu6grl$9I+d1e`a;!=@ZQNA-Dyj#aC52+yR3k(S1jw05pGA@r%hC;*Yk|#x;xZ$5GaQnfSaw|qB>VOO zipwm@S!|_+yv$MdEDG4K5Q5Xp*z6gOatFkCo$